Я храню тикеты отложек в массиве и проверяю их тип на каждом тике. Если тип из OP_BUYSTOP превратился в OP_BUY значит отложенный ордер сработал. После чего перезаписываю массив. И естественно при открытии новых отложек дополняю массив новыми тикетами.
Спасибо за ответ! А код как написать?
А можно как нибудь через цикл for()?
Или выбор ордера из истории?
или прямо! Как OP_BUYSTOP превратился в OP_BUY, певеменная OpBuyOpen стала true!
int Ticket,Rorder; bool OprTicket(int order) { if(order==OP_BUYSTOP)Rorder=OP_BUY; if(order==OP_SELLSTOP)Rorder=OP_SELL; for(int i=OrdersTotal(); i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if(OrderType()==order) Ticket=OrderTicket(); } for(int i=OrdersTotal(); i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if(OrderType()==Rorder) if(OrderTicket()==Ticket) return(true); } return(false); }Alexey Viktorov:
Тяжёлый случай. Знания программирования равны нулю. Написанием кода я не помогаю, такие у меня принципы.
Вот код! Нашел ошибку! Все работает!
Выдает true при срабатывании отложенного ордера, указанного в передаваемых параметрах функции.
Тяжёлый случай. Знания программирования равны нулю. Написанием кода я не помогаю, такие у меня принципы.
Но тогда советы зачем даешь, если код написать не можешь! И дело не в принципах, а так же знания равны нулю!
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как узнать что сработал стоплосс или тейкпрофит
Vladimir Karputov, 2017.06.30 10:57
Теперь (начиная с билда 1625 и даже уже в 1616) Бета-версия платформы MetaTrader 5 build 1625: Пользовательские финансовые инструменты можно узнать, что сработал Stop Loss или Take Profit:
Новые свойства
- Для позиций добавлено свойство POSITION_REASON, которое можно получить при помощи PositionGetInteger.
- Для сделок добавлено свойство DEAL_REASON, которое можно получить при помощи HistoryDealGetInteger.
- Для ордеров добавлено свойство ORDER_REASON, которое можно получить при помощи OrderGetInteger и HistoryOrderGetInteger.
Причины создания ордера, сделки и позиции
Для получения причин создания торговых операций добавлено три перечисления:
ENUM_POSITION_REASON | ENUM_DEAL_REASON | ENUM_ORDER_REASON | Описание причины |
---|---|---|---|
POSITION_REASON_CLIENT | DEAL_REASON_CLIENT | ORDER_REASON_CLIENT | Операция совершена в результате срабатывания ордера, выставленного из десктопного терминала |
POSITION_REASON_MOBILE | DEAL_REASON_MOBILE | ORDER_REASON_MOBILE | Операция совершена в результате ордера, выставленного из мобильного приложения |
POSITION_REASON_WEB | DEAL_REASON_WEB | ORDER_REASON_WEB | Операция совершена в результате срабатывания ордера, выставленного из веб-платформы |
POSITION_REASON_EXPERT | DEAL_REASON_EXPERT | ORDER_REASON_EXPERT | Операция совершена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом |
- | DEAL_REASON_SL | ORDER_REASON_SL | Операция совершена в результате срабатывания Stop Loss |
- | DEAL_REASON_TP | ORDER_REASON_TP | Операция совершена в результате срабатывания Take Profit |
- | DEAL_REASON_SO | ORDER_REASON_SO | Операция совершена в результате наступления события Stop Out |
- | DEAL_REASON_ROLLOVER | - | Сделка совершена по причине переноса позиции |
- | DEAL_REASON_VMARGIN | - | Сделка совершена по причине начисления/списания вариационной маржи |
- | DEAL_REASON_SPLIT | - | Сделка совершена по причине сплита (понижения цены) акции или иного актива, по которому имелась позиция на момент объявления сплита |
Всё это хорошо, но можно проще.
То есть считаем количество ордеров по типам. Если убавился любой тип отложки, можно запомнить и время.
В итоге имеем и время и тип.
Записать это всё дело в глобальные переменные, на случай сбоя.
Далее должна следовать Ваша логика
Обращаемся к глобальным переменным до тех пор, пока Ваша логика не выполнится. Потом не желательно обращаться к глобальным, если жесткий диск жалко.
Ну и так далее по циклу.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте уважаемые программисты. Мне нужна Ваша помощь. Дело в том, что мне нужно узнать, когда сработал ордер BuyStop или SellStop. То есть после срабатывания отложенного ордера мне нужно закрывать убыточные ордера, а прибыльные тралить.
Вот как узнать, когда ордер сработал?
Заранее спасибо за ответы!