Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Delete pending orders - эксперт для MetaTrader 5
- Просмотров:
- 1314
- Рейтинг:
- Опубликован:
- 2020.02.21 05:54
- Обновлен:
- 2020.02.24 09:02
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Принцип работы
Основная задача советника - удалять отложенные ордера по текущему символу и с заданным Magic number. Сигнал к удалению - появление новой позиции. Чтобы поймать момент появления новой позиции советник отлавливает в OnTradeTransaction() транзакцию TRADE_TRANSACTION_DEAL_ADD (добавление сделки в историю). Если эту транзакцию породила сделка DEAL_ENTRY_IN (вход в рынок) и у этой сделки символ совпадает с текущим и magic number сделки совпадает с заданным 'Magic number' - это сигнал к удалению оставшихся отложенных ордеров.
//+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- if transaction is result of addition of the transaction in history if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry; if(deal_symbol==m_symbol.Name() && deal_magic==InpMagic) { if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL) { if(deal_entry==DEAL_ENTRY_IN || deal_entry==DEAL_ENTRY_INOUT) m_need_delete_all=true; } } } }
Формула индикатора RAVI = 100*(SMA(fastMA) — SMA(slowMA)) / SMA(slowMA)
Super Trend Hull EA 2Торговая стратегия на основе пользовательского индикатора Super Trend Hull. Доработка первой версии
Подсчет количества серий задаваемых в виде Морзе кода. Отображение итогов в виде графика. Сохранение скриншота полученного графика. Используется класс CGraphic.
iRVI ColorИндикатор iRVI (Relative Vigor Index, RVI) выполненный в стиле рисования DRAW_COLOR_LINE