CrossMA: Sistema de Trading para MetaTrader 5

Mike 2017.01.26 18:05 39 0 0
Archivos adjuntos

Autor de la ideaGeorge F.Peskov, autor del código MQL5barabashkakvn.

Presentación del Sistema de Trading

CrossMA es un sistema que se basa en la intersección de dos medias móviles (iMA) y establece automáticamente el stop loss basado en el valor del ATR. Además, envía un correo electrónico cada vez que se abre o se cierra una posición. Puedes ajustar los parámetros a través de pruebas retrospectivas.

Obteniendo los valores de los indicadores

A continuación, te muestro cómo obtener los valores de las medias móviles en las primeras dos barras:

//--- Obtener la Media Móvil
   mas=iMAGet(handle_iMA1,1);       // media móvil larga 12
   maf=iMAGet(handle_iMA2,1);       // media móvil corta 4
   mas_p=iMAGet(handle_iMA1,2);     // media móvil larga 12
   maf_p=iMAGet(handle_iMA2,2);     // media móvil corta 4
   Atr=iATRGet(0);

Condiciones para vender

Ahora, veamos cómo verificar las condiciones para realizar una venta:

//--- Condición para vender
   if(maf<mas && maf_p>=mas_p)
     {
      double lots=LotsOptimized();
      double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
      res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
      if(SndMl==true && res)
        {
         sHeaderLetter="Operación VENDER por"+Symbol()+"";
         sBodyLetter="Operación de Venta por"+Symbol()+" a "+DoubleToString(m_symbol.Bid(),Digits())+
                     ", y establecer stop/loss en "+DoubleToString(stop_loss,Digits())+"";
         sndMessage(sHeaderLetter,sBodyLetter);
        }
      return;
     }

Condiciones para comprar

A continuación, revisemos las condiciones para realizar una compra:

//--- Condición para comprar
   if(maf>mas && maf_p<=mas_p)
     {
      double lots=LotsOptimized();
      double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
      res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
      if(SndMl==true && res)
        {
         sHeaderLetter="Operación COMPRAR en"+Symbol()+"";
         sBodyLetter="Operación de Compra en"+Symbol()+" por "+DoubleToString(m_symbol.Ask(),Digits())+
                     ", y establecer stop/loss en "+DoubleToString(stop_loss,Digits())+"";
         sndMessage(sHeaderLetter,sBodyLetter);
        }
      return;
     }


 

Lista
Comentarios 0