Inicio Trading Sistemático Publicación

Coin Flip: Un Sistema de Trading para MetaTrader 5

Archivos adjuntos
20836.zip (8.36 KB, Descargar 0 veces)

Idea de: Vladimir Gribachev.

Código MQL5 por: Vladimir Karputov.

Te presento un System Trading que no utiliza indicadores personalizados; las posiciones se abren de manera pseudorandom. Este EA muestra las estadísticas actuales en dos idiomas:

Informacion de trading Coin Flip

El sistema ajusta el Stop Loss de las posiciones abiertas. En caso de pérdidas, las lotes aumentan utilizando la estrategia de Martingale. Para monitorear las pérdidas, en OnTradeTransaction, capturamos la transacción con el motivo DEAL_REASON_SL, que indica que se activó el Stop Loss:

//+------------------------------------------------------------------+
//| Función TradeTransaction                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- obtener el tipo de transacción como valor de enumeración 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- si la transacción es resultado de la adición de la transacción en el historial
   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;
           }
     }
  }


Parámetros de entrada

  • Stop Loss - Nivel del Stop Loss;
  • Take Profit - Nivel del Take Profit;
  • Trailing Stop - Activar el trailing;
  • Trailing Step - Paso del trailing;
  • Lots - Tamaño de lote definido manualmente (si Lots es mayor que cero, entonces Risk debe ser igual a cero);
  • Risk - Tamaño de lote calculado automáticamente (si Risk es mayor que cero, entonces Lots debe ser igual a cero);
  • Martingale - Ratio de aumento de lotes, si la posición anterior se cerró por Stop Loss y la ganancia fue negativa;
  • Max lots - Tamaño máximo de posición; si se excede este tamaño, el EA termina su operación anormalmente;
  • magic number - Identificador único para el EA.

El testeo se interrumpió (el EA fue descargado del gráfico de forma forzada), ya que el lote de referencia superó el parámetro Max lots:

Coin Flip

Publicaciones relacionadas

Comentarios (0)