Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Опубликовал:
- Vladimir Karputov
- Просмотров:
- 1612
- Рейтинг:
- Опубликован:
- 2018.05.22 14:50
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Автор идеи: Vladimir Gribachev.
Автор MQL5-кода: Vladimir Karputov.
Эксперт без применения пользовательских индикаторов, позиции открываются псевдослучайным образом. Эксперт может отображать текущую статистику на двух языках:
Трейлинг модифицирует Stop Loss открытых позиций. При проигрыше лот увеличивается с применением мартингейла. Как отлавливается проигрыш: в OnTradeTransaction ловим сделку DEAL_REASON_SL - признак срабатывания Stop Loss:
//+------------------------------------------------------------------+ //| 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; if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { PrevBars=0; if(deal_reason==DEAL_REASON_SL && deal_commission+deal_swap+deal_profit<0.0) last_lots_sl=deal_volume; else last_lots_sl=0.0; } } }
Входные параметры
- Stop Loss - Стоп лосс;
- Take Profit - тейк профит;
- Trailing Stop - трейлинг;
- Trailing Step - шаг трейлинга;
- Lots - размер лота задается вручную (если Lots больше нуля, значит параметр Risk должен быть равен нулю);
- Risk - размер лота вычисляется автоматически (если Risk больше нуля, значит параметр Lots должен быть равен нулю);
- Martingale - коэффициент увеличения лота, если предыдущая позиция была закрыта по Stop Loss и при этом прибыль получена отрицательная;
- Max lots - максимальный размер позиции, если превысили этот размер - тогда эксперт аварийно завершает работу;
- magic number - уникальный идентификатор эксперта.
Дальше тестирование было прервано (эксперт был принудительно выгружен с графика), так как расчетный лот стал больше, чем параметр Max lots:

Индикатор ATR_Normalize_Histogram с возможностью изменения таймфрейма индикатора во входных параметрах и подачей алертов при пробое зон перекупленности и перепроданности.

Торговая система, построенная на сигналах индикатора ATR_Normalize_Histogram

Набор из 4 типов цифровых фильров, которые размещаются на основном графике.

Работа с Buy stop и Sell stop отложенными ордерами. Канал из двух индикаторов iMA (Moving Average, MA).