Asesores Expertos: EURUSD breakout

 

EURUSD breakout:

Comercio según dos sesiones comerciales con ajuste del inicio de las sesiones. Stop Loss. Take Profit.

EURUSD breakout

Autor: Vladimir Karputov

 
<br/ translate="no">

No puedo averiguar en qué estrategia se basa el algoritmo, los parámetros de entrada son sólo las condiciones de negociación...?

 
Alex_Pushkin:

No puedo averiguar en qué estrategia se basa el algoritmo, los parámetros de entrada son sólo las condiciones de negociación ...?


La estrategia en sí está escrito en estas líneas:

//--- puede ser una buena idea evitar también los días NFP, primer jueves de cualquier mes. 
   if((!session_found) && (str1.hour==Start_hour_US_session))
     {
      //--- la primera vez, calcula los máximos y mínimos de la sesión de la UE.
      TopRange=iHighest(m_symbol.Name(),Period(),MODE_HIGH,24,1); // 24 barras M15 durante la sesión de la UE
      LowRange=iLowest(m_symbol.Name(),Period(),MODE_LOW,24,1);  // 24 barras M15 durante la sesión de la UE
      //---
      if(TopRange<=0.0 || LowRange<=0.0)
         return;
      //---
      if((TopRange-LowRange)<=ExtSmallEUSessionPips)
         small_session=true;
      else
         small_session=false;
      session_found=true;
      string text=(small_session)?"true":"false";
      Print("Identified new EU session + ["+
            DoubleToString(LowRange,m_symbol.Digits())+","+
            DoubleToString(TopRange,m_symbol.Digits())+"]"+
            " DayOfYear()="+IntegerToString(str1.day_of_year)+" small? "+text);
     }

Tenemos un parámetro de entrada"Start_hour_US_session" - tan pronto como encontramos una correspondencia de la hora actual (comparamos sólo horas) con este parámetro, empezamos a buscar el valor más alto de los precios máximos para el período de 24 barras y el valor más bajo de los precios mínimos para el período de 24 barras. Si la diferencia de estos precios es menor o igual que el parámetro de entrada"Sesión UE pequeña (en pips)", significa que se ha detectado una"sesión pequeña " (en pips). - entonces se ha detectado una "sesión pequeña" (con volatilidad pequeña) -"small_session".



Cuando estamos dentro de la "sesión USA" y se detecta una "sesión pequeña" (con volatilidad pequeña) - "small_session"

   if(session_found && small_session && 
      (str1.hour>=Start_hour_US_session) && (str1.hour<End_hour_US_session)) // ¿Dentro del horario de sesión en EE.UU.?
     {
      //--- Calcular el intervalo de sesiones de la UE
      //--- Print("Estoy en US session.... sesión_pequeña, comprado, vendido = " + sesión_pequeña+comprado+vendido); 
      //--- Print("RangoAlto = " + RangoAlto + "RangoBajo = " + RangoBajo); 
      int h=str1.hour;
      int m=str1.min;
      if(h>Start_hour_EU_session+5 && h<Start_hour_EU_session+10)
        {//--- debe completarse al menos una barra de sesión en EE.UU.
         //--- Print("Podría estar comprando/vendiendo... "+h+": "+m); 
         double low=iLow(1);
         double high=iHigh(1);
         //---
         if(low==0.0 || high==0.0)
            return;
         //---
         if(!RefreshRates())
            return;
         if((!bought) && (low>(TopRange+Point()*3)))
           {
            if(OpenBuy(m_symbol.Bid()-ExtStopLoss,m_symbol.Ask()+ExtTakeProfit))
               bought=true;
           }
         if((!sold) && (high<(LowRange-Point()*3)))
           {
            if(OpenSell(m_symbol.Ask()+ExtStopLoss,m_symbol.Bid()-ExtTakeProfit))
               sold=true;
           }
        } // fin si en 2ª hora US. 
     }// fin si sesión pequeña

esperamos a estar dentro de la "sesión EU" y obtenemos los valores Low y High de la primera barra.


Condición para abrir COMPRA: si no se ha abierto ninguna posición de COMPRA en este día y el Mínimo de la barra número 1 es MAYOR que el valor más alto de los precios máximos para el periodo de 24 barras en la "US_session":

         if((!bought) && (low>(TopRange+Point()*3)))
           {
            if(OpenBuy(m_symbol.Bid()-ExtStopLoss,m_symbol.Ask()+ExtTakeProfit))
               bought=true;
           }


Condición para la apertura de VENTA: si aún no se ha abierto ninguna posición de VENTA en este día y el Máximo de la barra número 1 es MENOR que el valor más bajo de los precios mínimos para el período de 24 barras en la "US_session":

         if((!sold) && (high<(LowRange-Point()*3)))
           {
            if(OpenSell(m_symbol.Ask()+ExtStopLoss,m_symbol.Bid()-ExtTakeProfit))
               sold=true;
           }

ds