Нужно организовать цикл для поиска последнего ордера:
datetime close_time=0; bool close_by_sl=false;//эта переменная будет флажком, показывающим закрылся ли ордрео по SL for(int i=0;i<OrdersHistoryTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&OrderSymbol()==Symbol()) { if(OrderCloseTime()>close_time) { close_time=OrderCloseTime(); close_by_sl=false; if(MathAbs(OrderStopLoss()-OrderClosePrice))<Point)//проверяем: закрылся ли ордер по SL? close_by_sl=true; } } }
Luptator, получилось, спасибо за код.
Возможно лучше заменить
if(MathAbs(OrderStopLoss()-OrderClosePrice))<Point) //проверяем: закрылся ли ордер по SL?
на
if(OrderProfit()<0) { //проверяем: закрылся ли ордер по SL?
Первый вариант у меня не работал.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот появилась идея проверить на убыточность выполненые ордера для оптимизации в будущем.
понял что использовать нужно OrderSelect(i,SELECT_BY_POS,MODE_HISTORY), а как получить последний ордер с выходом по SL?