Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я думаю, я подтвержу, что я видел ту же проблему в тестере стратегий, не уверен, как именно это может произойти, я попробую снова, добавив еще несколько отчетов об ошибках, чтобы убедиться.
Хорошо, одна загадка решена... Я не знал, что спред, используемый в тестере стратегий, берется из исторических данных, в частности, из данных M1. Причина, по которой у меня недействительные стопы в моем тестере стратегий, заключается в том, что спред больше, чем мой SL. Я добавлю тест для этого.
Konstantin83:
2013.03.10 11:19:18 2012.01.04 15:00:00 failed buy stop 1.00 EURUSD at 1.30505 sl: 1.28375 tp: 1.30375 [Invalid stops]
Я не понимаю недействительный стоп. sl находится ниже buy sl: 1.28375 <1.30505?
CopyHigh(_Symbol,_Period,TimeCurrent(),5,hg);
Top = NormalizeDouble(rates[ArrayMaximum(hg,0,WHOLE_ARRAY)].high,_Digits);
- Непонятная конструкция.
Выбираем среди значений максимума double и используем его вместо целочисленного индекса
спасибоKonstantin83 :
но я не понимаю, что вы говорите.
top - это максимум из последних 5 свечей и top - это двойной, а не целочисленный индекс
dan5:
Я не понимаю недействительный стоп. sl ниже buy sl: 1.28375 <1.30505?
Не воспринимайте "Недействительные стопы" слишком буквально. Это не только Stop Loss, это также может быть цена входа и/или TP. Когда вы получите ошибку, распечатайте следующую информацию, это поможет вам разобраться, что пошло не так:
dan5:
2013.03.10 11:19:18 2012.01.04 15:00:00 failed buy stop 1.00 EURUSD at 1.30505 sl: 1.28375 tp: 1.30375 [Invalid stops]
Я не понимаю недействительный стоп. sl находится ниже buy sl: 1.28375 <1.30505 ?
Вы заметили, что вход 1.30505 > TP 1.30375?
спасибо за помощь, я изменил свои sl и tp, теперь все в порядке.
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Digits);// Take Profit
вместо:
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
спасибо за помощь, я изменил свои sl и tp, теперь все в порядке.
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Digits);// Take Profit
вместо:
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
Это хорошие новости, надеюсь, вы не возражаете, что я подмял под себя вашу тему, но я думаю, что мы оба получили что-то полезное из этого в конце концов :-)
Нашли ли вы другое решение, которое я предлагаю с помощью OnTradeTransaction, чтобы продолжить sl & tp в случае рыночного исполнения (ECN брокер)?
Код, который я предложил в этом посте https://www.mql5.com/en/forum/11051#comment_446272 работает нормально, насколько я могу судить, я предположил, что он не работает в тестере стратегий из-за того, что мое предположение о фиксированном спреде (как в MT4) было неверным. Теперь мой код работает в тестере стратегий и в демо для символов с типом исполнения Instant или Exchange, мой код определяет тип и посылает соответствующий запрос(ы). В идеале я хотел бы, чтобы мой код автоматически обрабатывал любой тип исполнения.