Ребята, подскажите как запретить в коде тестирование советника в тестере стратегий?

 

Есть такая проблема - нужно запретить советнику тестирование в тестере стратегий в МТ4. Подскажите пожалуйста, что и где нужно прописать в коде, чтобы советник не мог тестировать в тестере стратегий?

Допустим есть стандартный код советника MACD Sample, что и где нужно прописать чтобы он не тестировался?


extern double TakeProfit = 50.0;
extern double Lots = 0.1;
extern double TrailingStop = 30.0;
extern double MACDOpenLevel = 3.0;
extern double MACDCloseLevel = 2.0;
extern double MATrendPeriod = 26.0;

int start() {
int l_ticket_52;
if (Bars < 100) {
Print("bars less than 100");
return (0);
}
if (TakeProfit < 10.0) {
Print("TakeProfit less than 10");
return (0);
}
double l_imacd_0 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
double l_imacd_8 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
double l_imacd_16 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
double l_imacd_24 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1);
double l_ima_32 = iMA(NULL, 0, MATrendPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
double l_ima_40 = iMA(NULL, 0, MATrendPeriod, 0, MODE_EMA, PRICE_CLOSE, 1);
int l_ord_total_56 = OrdersTotal();
if (l_ord_total_56 < 1) {
if (AccountFreeMargin() < 1000.0 * Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return (0);
}
if (l_imacd_0 < 0.0 && l_imacd_0 > l_imacd_16 && l_imacd_8 < l_imacd_24 && MathAbs(l_imacd_0) > MACDOpenLevel * Point && l_ima_32 > l_ima_40) {
l_ticket_52 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, Ask + TakeProfit * Point, "macd sample", 16384, 0, Green);
if (l_ticket_52 > 0) {
if (OrderSelect(l_ticket_52, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ", OrderOpenPrice());
} else Print("Error opening BUY order : ", GetLastError());
return (0);
}
if (l_imacd_0 > 0.0 && l_imacd_0 < l_imacd_16 && l_imacd_8 > l_imacd_24 && l_imacd_0 > MACDOpenLevel * Point && l_ima_32 < l_ima_40) {
l_ticket_52 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, Bid - TakeProfit * Point, "macd sample", 16384, 0, Red);
if (l_ticket_52 > 0) {
if (OrderSelect(l_ticket_52, SELECT_BY_TICKET, MODE_TRADES)) Print("SELL order opened : ", OrderOpenPrice());
} else Print("Error opening SELL order : ", GetLastError());
return (0);
}
return (0);
}
for (int l_pos_48 = 0; l_pos_48 < l_ord_total_56; l_pos_48++) {
OrderSelect(l_pos_48, SELECT_BY_POS, MODE_TRADES);
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUY) {
if (l_imacd_0 > 0.0 && l_imacd_0 < l_imacd_16 && l_imacd_8 > l_imacd_24 && l_imacd_0 > MACDCloseLevel * Point) {
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);
return (0);
}
if (TrailingStop <= 0.0) continue;
if (Bid - OrderOpenPrice() <= Point * TrailingStop) continue;
if (OrderStopLoss() >= Bid - Point * TrailingStop) continue;
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, Green);
return (0);
}
if (l_imacd_0 < 0.0 && l_imacd_0 > l_imacd_16 && l_imacd_8 < l_imacd_24 && MathAbs(l_imacd_0) > MACDCloseLevel * Point) {
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);
return (0);
}
if (TrailingStop > 0.0) {
if (OrderOpenPrice() - Ask > Point * TrailingStop) {
if (OrderStopLoss() > Ask + Point * TrailingStop || OrderStopLoss() == 0.0) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, Red);
return (0);
}
}
}
}
}
return (0);
}

 
if(IsTesting())return;
 
скажите, а в каком месте это нужно прописать?
 
alex1111:
скажите, а в каком месте это нужно прописать?
сразу после int start() {
 
Спасибо Вам огромное!!! Всё получилось!
 
alex1111:

Есть такая проблема - нужно запретить советнику тестирование в тестере стратегий в МТ4. Подскажите пожалуйста, что и где нужно прописать в коде, чтобы советник не мог тестировать в тестере стратегий?


ради любопытства - а зачем нужен запрет на тестирование советника в тестере?
 
abolk:

ради любопытства - а зачем нужен запрет на тестирование советника в тестере?
Чтобы кому-нибудь впарить кота в мешке.
 
Bicus:
Чтобы кому-нибудь впарить кота в мешке.

мУдро
 
нет, это для демо версии советника..чтобы люди могли его тестировать на демосчетах, потомуччто сделки в тестере не совпадают с реальными..а на реальном счете отличные результаты
 
alex1111:
нет, это для демо версии советника..чтобы люди могли его тестировать на демосчетах, потомуччто сделки в тестере не совпадают с реальными..а на реальном счете отличные результаты

Есть еще функция IsDemo(), проверяющая работает ли программа на демо версии
 
alex1111:
нет, это для демо версии советника..чтобы люди могли его тестировать на демосчетах, потомуччто сделки в тестере не совпадают с реальными..а на реальном счете отличные результаты

Интересно, как же автор советника показывающего "на реальном счете отличные результаты" не знает такой ерунды?

Демо версия готова? Выкладывайте - будем все тестировать. Пользуйтесь моментом, сразу столько клиентов.

Причина обращения: