[MQL4] Вопросы

DozorFX

Постоялец
Команда форума
Модератор
Монет
14,386
Привет. Коллеги программисты, при тестировании советника иногда происходит некорректное выставление стопа. Какая причина может быть, кто-то сталкивался с проблематикой?
Скрин с тестирования на демо.
EURNZD_SL.PNG

Прогнал этот период в тестере- проблема не появляется.

Самое поразительное то, что ТР вычисляется исходя из размера пунктов между ценой открытия ордера и ценой установки SL. Но ТР выставлен правильно.
 
Последнее редактирование:

romanzif

Постоялец
Команда форума
Администратор
Монет
48,076
Форекс робот VolnaFX
тут не видя код будет тяжело понять причину
 

DozorFX

Постоялец
Команда форума
Модератор
Монет
14,386
фрагмент кода

Otstup = ОтступУстановкиОтложенногоОрдера; //внешняя переменная
ЦенаУстановкиОрдераБайСтоп = NormalizeDouble(SymbolHigh1 + Otstup*Point, Digits);
ticket = OrderSend(Symbol(), OP_BUYSTOP, LOT, ЦенаУстановкиОрдераБайСтоп, Slippage, 0, 0, EA_Comment, Magic, 0, Blue);

if (ticket < 0)
Print(EA_Comment, " Ошибка установки ордера BUYSTOP. ", Symbol(), " Лот=", LOT, " Код ошибки= ", GetLastError());

else
Print(EA_Comment, " Установлен отложенный ордер BUYSTOP ", Symbol(), " Лот=", LOT, " Magic#", Magic, " по цене ", ЦенаУстановкиОрдераБайСтоп);

//------------------выбираем ордер для модификации TP и SL---------------//

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
{
//------------вычисляю тейк и стоп
RefreshRates(); //обновление данных

SL_BUYSTOP = NormalizeDouble(SymbolLow1 - ОтступУстановкиСтопа*Point,Digits);
double RazmerStopLoss = NormalizeDouble ((ЦенаУстановкиОрдераБайСтоп - SL_BUYSTOP)/ Point,0);
TP_BUYSTOP = NormalizeDouble (ЦенаУстановкиОрдераБайСтоп + RazmerStopLoss*Point,Digits);

//-----------модифицируем ордер
RezModifyOrder = OrderModify(ticket, OrderOpenPrice(), SL_BUYSTOP, TP_BUYSTOP, 0); // модифицируем ордер

if (RezModifyOrder == false) // если нет
Print(EA_Comment, Symbol(), ticket, " Ошибка модификации отложенного ордера BUYSTOP. Код ошибки=",GetLastError());

else
Print(EA_Comment, " Отложенный ордер BUYSTOP успешно модифицирован.", Symbol(), " TP= ",TP_BUYSTOP, " SL= ",SL_BUYSTOP);
}
 

romanzif

Постоялец
Команда форума
Администратор
Монет
48,076
Форекс робот VolnaFX
я бы добавил в раздел //------------вычисляю тейк и стоп
print переменных SymbolLow1, ОтступУстановкиСтопа и SL_BUYSTOP
запустил тест на периоде где идут ошибки и попробовал бы понять по логу какая переменная заходит с неверным значением
 

DozorFX

Постоялец
Команда форума
Модератор
Монет
14,386
В тесте ошибок нету, писал выше. В том и загадка
 

romanzif

Постоялец
Команда форума
Администратор
Монет
48,076
Форекс робот VolnaFX
имел ввиду тот период где неверные стопы ставятся
 

romanzif

Постоялец
Команда форума
Администратор
Монет
48,076
Форекс робот VolnaFX
в смысле нет ошибки? на скрине же видно неадекватные стопы?
 

DozorFX

Постоялец
Команда форума
Модератор
Монет
14,386
Попробую еще раз. EURNZD_SL.PNG На скрине показана история с демосчета при тнстировании советника, где произошла ошибка установки SL.

Пробую прогнать этот же период в тестере стратегий- и этой ошибки не возникает (скрин с тестера ниже)
EURNZD_SL в тестере.PNG

Теперь буду вылавливать проблему заново. Добавил в код Print всех параметров при выставлении ордера и поставил снова на Демо-счет. Буду смотреть.
 

Проверенные Брокеры

Реклама

Secret Book
VPS сервера форекс
Weltrade 50

Заработок онлайн

Верх