Expert Advisors • Indicators • Scripts • Libraries

MQL.RobotFX.org is the biggest collection of MetaTrader expert advisors (MT5 & MT4), indicators, scripts and libraries that can be used to improve trading results, minimize risks or simply automate trading tasks

MetaTrader 5 Expert Advisor | Coin Flip

Idea by: Vladimir Gribachev.

MQL5 code by: Vladimir Karputov.

An EA without using any custom indicators; positions are opened pseudorandomly. The EA can show the current statistics in two languages:

MetaTrader Experts, Indicators, Scripts and Libraries

Trailing modifies the Stop Loss of open positions. In case of loss, the lots increase using Martingale. How to monitor losses: In OnTradeTransaction, we catch transaction DEAL_REASON_SL - the sign of the Stop Loss triggered:

//+------------------------------------------------------------------+  //| 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;             }       }    }  

Input parameters

  • Stop Loss - Stop Loss;
  • Take Profit - Take Profit;
  • Trailing Stop - trailing;
  • Trailing Step - trailing step;
  • Lots - lot size is set manually (if Lots is above zero, then Risk must be equal to zero);
  • Risk - lot size is calculated automatically (if Risk is above zero, then Lots must be equal to zero);
  • Martingale - lot increase ratio, if the preceding position was closed by Stop Loss and the profit gained was negative;
  • Max lots - the maximum position size; if this size is exceeded, then the EA terminates its operation abnormally;
  • magic number - unique identifier for the EA.

Then testing was interrupted (the EA was unloaded from the chart forcedly), since the reference lot exceeded the Max lots parameter:

MetaTrader Experts, Indicators, Scripts and Libraries

20836

Best MetaTrader Indicators + Profitable Expert Advisors