Comprobar el mito: todo el día de trading depende de cómo se cotiza la sesión asiática

Игорь | 4 marzo, 2016

Introducción

¡Hola! Como un hombre con cierta experiencia en Forex y varios depósitos perdidos, creo que tengo derecho a hablar de este tema.

Que no un secreto que todo el análisis técnico, si omitimos la palabrería, esencialmente se reduce a la búsqueda de patrones. Por ejemplo, si hemos encontrado el 95% de probabilidad que en luna nueva, a la medianoche, el dólar empieza a caer en precio ante los primeros gallos, naturalmente va comercio en este momento, según esta información.

Navegando en los foros de Forex para encontrar información que puede ser útil para el comercio de granos, he encontrado muchas declaraciones diferentes, que se presentan como la verdad universal. Hay un programa de "MythBusters" en la MTV, sus autores comprueban la supuesta verdad universal en la práctica y demuestra si es verdad o no.

Tras ellos, también decidió comprobar algunas declaraciones, que han sido presentadas como verdad por los llamados gurús del Forex. Hoy nosotros verificamos lo siguiente.



"El comercio de todo el día depende de cómo cotiza la sesión de Asia".

Einstein sostuvo que todo es relativo, y como pronto nos cuenta detalles de una declaración, estamos convencidos de que inmediatamente él tenía razón. Por ejemplo, hay una pregunta sobre el tiempo de negociación de la sesión de Asia. Echemos un vistazo a la gráfica siguiente, el horario de sesión de negociación se presenta a continuación.

Región Ciudad Invierno
Abrir
Invierno
Cerrar
Verano
Abrir
Verano
Cerrar
ASIA Tokio
Hong Kong
Singapur
03:00
04:00
04:00
11:00
12:00
12:00
04:00
05:00
04:00
12:00
13:00
12:00
EUROPE Frankfurt
Zurich
Paris
London
9:00
9:00
9:00
10:00
17:00
17:00
17:00
18:00
09:00
09:00
09:00
10:00
17:00
17:00
17:00
18:00
AMÉRICA Nueva York
Chicago
16:00
17:00
24:00
01:00
16:00
17:00
24:00
01:00
PACIFIC Wellington
Sydney
00:00
01:00
08:00
09:00
00:00
01:00
08:00
09:00

 

Tabla 1. Sesiones de trading de Forex

Como vemos, la sesión de trading de Asia es de 3:00 hasta 12:00 en invierno y de 4:00 hasta 13:00 en verano. Pero Europa comienza negociando a las 9.00. Por lo es la pregunta sobre la pura sesión de Asia - ¿es de 3.00 a 9.00 o desde 3.00 hasta 13.00? Otra cuestión es la hora del servidor, porque distintos agentes de bolsa tienen tiempo de servidor diferente, por lo que no es necesariamente igual a la hora de Moscú, otra pregunta es los cambios de horario de invierno/verano - algunos brokers no cambian. Así pues, tenemos que tenerlo en cuenta en nuestro estudio. Qué significa el "... ¿el día entero depende de él"? ¿Si la sesión de Asia era alcista, el precio aumentará hasta la próxima sesión?

En primer lugar, echemos un vistazo a la figura 1. Las sesiones se pintan con diferentes colores utilizando el indicador "i-sesiones" de Igor Kim. La zona de tiempo de 3.00 hasta 13.00 está llena de color oscuro ("Asia"). La sesión Europea (desde las 9.00 hasta las 18.00 horas) es de color más claro, y la sesión americana (desde las 16.00 hasta las 24.00 horas) tiene el color más claro.

Figura 1. Gráfico de NZDUSD con las sesiones

Además voy a describir todo en detalle para ayudar al principiantes a entender todo.

Por lo tanto, mi asesor experto "sesión 1" está diseñado para resolver las siguientes tareas:

Debe calcular los precios de apertura y cierre de la sesión, que ha sido definido por nosotros. Vamos a suponer que si el precio de apertura de la sesión es más que el precio de cierre, la sesión es bajista y alcista para el caso contrario.

Si el precio de apertura es igual al precio de cierre, la sesión es neutral.

He intentado comentar todo el código del EA, para que sea sencillo para los novatos (yo soy uno de ellos).

//+------------------------------------------------------------------+
//|                                                    1-Session.mq4 |
//|                                Copyright © 2009, Igor Alexandrov |
//|                                                sydiya@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Igor Alexandrov"
#property link      "sydiya@rambler.ru"

// --- Parámetros de entrada
extern string  Open_session = "01:00"; //Tiempo de apertura de la sesión a estudiar
extern string  Close_session = "10:00"; //Tiempo de cierre de la sesión a estudiar
extern int Day_kol_vo = 50;             //Número de días a estudiar
extern int Hour_kol_vo = 15;            //Number de horas a estudiar después de la sesión
extern int Profit = 20;                 //Valor del Take Profit a verificar

//----------------------------------------------------------------------------
string Symb;                            //Trade símbolo del experto adjuntado
//----------------------------Comienzo----------------------------------------

int start()
  { //Comienza el soporte principal
   int  Shift_open_H1,       //Number de barras por hora con el mismo tiempo de apertura así como barras diarias
   Shift_open_bars_session,  //Númbero de barras por hora, que se abren en la sesión     
   Shift_close_bars_session, //Númbero de barras por hora, que se cierran en la sesión
   STOP_LEVER=0;             //Distancia //Minimal de SL y TP

   double Open_bars_session, //Precio de apertura de la primera barra de la sesión
   Close_bars_session,       //Precio de cierre de la primera barra de la sesión
   Vira_session,             //Máximo precio de la sesión
   Total_TP=0,               //Contador de ejecuciones de los Take Profit
   Total_SL=0,               //Contador de ejecuciones de Stop Loss
   Total_day=0,              //Númbero de días a estudiar
   Total_SL_TP=0,            //Contador de sesiones neutrales
   Maina_session;            //Mínimo precio de la sesión

   datetime Time_open_day,   //Tiempo de apertura de la barra diaria i-th
   Time_open_session,        //Tiempo de apertura de la sesión (en formato de fecha y hora)
   Time_close_session;       //Tiempo de cierre de la sesión (en formato de fecha y hora)

   string String_open_H1;    //Tiempo de apertura de la primera barra cada hora del día, a estudiar
                             // formato del string "yyyy.mm.dd"
   bool   Session_buy=false, //Bandera de la sesión alcista
   Session_sell=false;       //Bandera de la sesión bajista
   Symb=Symbol();            //Nombre de símbolo

   // Distancia mínima para el SL y TP
   STOP_LEVER=MarketInfo(Symb,MODE_STOPLEVEL);

   // ciclo diario de barras
   for(int i=Day_kol_vo;i>0;i --)
     { //soporte del ciclo de barras diarias

      //Contador de días estudiados
      Total_day++;

      //tiempo de apertura de la barra diaria i-th
      Time_open_day=iTime(Symb,PERIOD_D1,i);

      // número de la barra de hora con el mismo tiempo de apertura que la barra diaria
      Shift_open_H1=iBarShift(Symb,PERIOD_H1,Time_open_day,false);

      // tiempo de apertura de la primera barra por a convertir en el string del formato "yyyy.mm.dd"
      String_open_H1=TimeToStr(Time_open_day,TIME_DATE);

      //tiempo de apertura de la sesión de estudio (en el formato de fecha y hora)
      Time_open_session=StrToTime(String_open_H1+" "+Open_session);

      //número de barras por hora desde que se inicia sesión
      Shift_open_bars_session=iBarShift(Symb,PERIOD_H1,Time_open_session,false);

      // tiempo de cierre de la sesión de estudio (en formato de fecha y hora)
      Time_close_session=StrToTime(String_open_H1+" "+Close_session);

      //número de la última barra de hora de la sesión
      Shift_close_bars_session=iBarShift(Symb,PERIOD_H1,Time_close_session,false);

      //precio de apertura de la primera barra de la sesión
      Open_bars_session=iOpen(Symb,PERIOD_H1,Shift_open_bars_session);

      //precio de cierre de la última barra de la sesión
      Close_bars_session=iClose(Symb,PERIOD_H1,Shift_close_bars_session);

      //encontrar el precio máximo de la sesión
      Vira_session=iHigh(Symb,PERIOD_H1,iHighest(Symb,PERIOD_H1,MODE_HIGH,
      (Shift_open_bars_session-Shift_close_bars_session),Shift_close_bars_session));

      //encontrar el precio mínimo de la sesión
      Maina_session=iLow(Symb,PERIOD_H1,iLowest(Symb,PERIOD_H1,MODE_LOW,
      (Shift_open_bars_session-Shift_close_bars_session),Shift_close_bars_session));

      //si el precio de apertura es mayor que el precio de cierre, la sesión es bajista
      if(Open_bars_session>Close_bars_session)
        {
         Session_buy=false;
         Session_sell=true;
        }

      //Si el precio de apertura es inferior al precio de cierre, la sesión es alcista      
      if(Open_bars_session<Close_bars_session)
        {
         Session_buy=true;
         Session_sell=false;
        }

      //Si el precio de apertura es igual al precio de cierre, la sesión es Neutral
      if(Open_bars_session==Close_bars_session)
        {
         Session_buy=false;
         Session_sell=false;
        }
      //contador de horas a comprobar
      int PEREBOR=0;

      //Ciclo de barras por horas en el dia i-th
      for(int j=Shift_close_bars_session;j>Shift_close_bars_session-Hour_kol_vo;j --)
        {//Abrir soporte del ciclo de barras de hora

         //Contador de horas (para comprobar)
         PEREBOR++;

         //Si la sesión es alcista
         if(Session_buy==true && Session_sell==false)
           {
            //Si el precio máximo de la barra de hora
            //es mayor (precio de cierre de la sesión + beneficio + distancia mínima)
            if(iHigh(Symb,PERIOD_H1,j-PEREBOR)>(Close_bars_session+(Profit+STOP_LEVER)*Point))
              {
               Total_TP++;     //Take Profit executed
               break;          //break the cycle(hourly bars)
              }
            //Si el precio mínimo de la barra de hora
            //es inferior al precio mínimo de la sesión
            if(iLow(Symb,PERIOD_H1,j-PEREBOR)<Maina_session)
              {
               Total_SL++;     //Stop Loss executed
               break;          //break the cycle(hourly bars)
              }
           }
         //Si la sesión es bajista
         if(Session_buy==false && Session_sell==true)
           {
            //Si el precio máximo de la barra de hora 
            //is greater than maximal price of the session
            if(iHigh(Symb,PERIOD_H1,j-PEREBOR)>Vira_session)
              {
               Total_SL++;      //Stop Loss ejecutado
               break;           //rompe el ciclo(barras de hora)
              }
            //Si el precio mínimo de la barra de hora 
            // es menor (precio de cierre de la sesión (beneficio + mínima distancia))
            if(iLow(Symb,PERIOD_H1,j-PEREBOR)<(Close_bars_session-(Profit+STOP_LEVER)*Point))
              {
               Total_TP++;      //Take Profit ejecutado              
               break;           //rompe el ciclo(barras de hora)
              }
           }
         //Si la sesión es neutral
         if(Session_buy==false && Session_sell==false)
           {
            Total_SL_TP++;      //Contador aumentar
            break;              //rompe el ciclo (barras de hora)
           }

        } // Cierre de soporte del ciclo de barras de hora

      double Pro_Total_TP=(Total_TP/Total_day)*100, //Probabilidad de ejecución del TP
      Pro_Total_SL=(Total_SL/Total_day)*100,        //Probabilidad de ejecución del SL
      Pro_Total_SL_TP=(Total_SL_TP/Total_day)*100;  //Probabilidad de sesión neutral
      int Total_no=Total_day-Total_SL-Total_TP-Total_SL_TP; //El TP y SL no se ha ejecutado
      double Pro_Total_no =(Total_no/Total_day)*100;        //Probabilidad de que el TP y el SL so se ejecuten
      Comment("Checked ",Total_day," days","\n",
              "Session Opening time  ",Open_session," Session Closing time ",
              Close_session," Number of hours to check after the session ",Hour_kol_vo," Profit ",Profit,"\n",
              "Take profit has executed ",Total_TP," times","\n",
              "Stop Loss se ha ejecutado",Total_SL," times","\n",
              "Las sesiones neutrales fueran ",Total_SL_TP," times","\n",
              "Ni SL/TP ejecutado",Total_no," times","\n",
              "La probabilidad de ejecución de Take Profit ",Pro_Total_TP," %","\n",
              "La probabilidad de ejecución de Stop Loss ",Pro_Total_SL," %","\n",
              "Probabilidad de sesiones neutrales ",Pro_Total_SL_TP," %","\n",
              "Probabilidad de que no ejecutará el SL y TP ",Pro_Total_no," %");

     } //Cierre de soporte para las barras diarias

   return(0);

  } //-el soporte principal finaliza 

Ahora vamos a mirar cuidadosamente el código para entender el método de comprobación que se ha aplicado. Por ejemplo, si una sesión es bajista, vamos a simular el Take Profit en algún nivel de precio por debajo del precio de cierre de la sesión: (beneficio + STOP_LEVER), donde el beneficio (puede ser cambiado) se presenta en puntos. Se supone que si el precio ha caído, seguira cayendo, lo mismo (sino lo contrario) es para la sesión alcista.

El STOP_LEVER es la distancia mínima desde el precio actual, permitido por el corredor. No es necesario definirlo, es calculado automáticamente.

El nivel real de Take Profit, definido por usted en la ventana de parámetros del EA (parámetro beneficio) será un poco más de precio por valor de STOP_LEVER, su valor es diferente para los distintos agentes de bolsa y de pares de divisas diferentes. Se ha diseñado para alcanzar los resultados reales en nuestra simulación. Por ejemplo, si intenta realizar un pedido de oro con 5 puntos de ganancia en el comercio real, usted no será capaz de hacerlo, la mínima distancia posible del precio que vi, era de 50 puntos.

Ahora vamos a considerar detener pérdidas. En general, simplemente se puede calcular la probabilidad de golpear el Take Profit, que se ha puesto en la dirección del precio, definida para la sesión. Pero parece incompleto. Es interesante y tal vez mucho más importante contar no sólo las órdenes rentables, sino también las órdenes con pérdidas.

Echemos un vistazo otra vez en la figura 1. Podemos verlo a continuación. Si la sesión de Asia era alcista en general, el precio no bajará por debajo del precio mínimo de la sesión. En la Fig.1 la sesión de noviembre de 2009, desde 3.00 hasta 13.00 está delineada con líneas verticales. Uno puede ver que es alcista en general, porque el precio de apertura es inferior al precio de cierre, suponemos que debe ser el nivel de Stop Loss al precio mínimo de la sesión. Para la sesión bajista, el nivel de Stop Loss debe ajustarse al precio máximo, como se ya ha sugerido.

La idea de nuestra comprobación debe hacerse en una cuenta con nuestro Take Profit virtual y calculados los niveles Stop Loss y contar la ejecución de ambos mediante el uso del historico.

Por lo tanto, los parámetros de entrada del EA (la misma que podemos cambiar en la pestaña "Entradas") son los siguientes:


Fig 2. Parámetros de entrada del asesor experto


Open session – horario de la sesión,

Close_session – tiempo de cierre de la sesión,

Day_kol_vo – número de días en el historico (por ejemplo, valor igual a 50 significa que ese experto utilizará los últimos años 50 en sus cálculos, no recomiendo usar valores demasiado grandes),

Hour_kol_vo – número de horas. Este parámetro define el número de horas, pasado después del final del período de sesiones (el experto utilizará en los cálculos). En los datos que adjunto he utilizado el número de horas para la próxima sesión. Si estudiamos el tiempo desde la 3.00 hasta la 13.00, su valor es igual a 14, para la próxima sesión.

Profit es la distancia en puntos desde el precio de cierre de la sesión. De hecho, es el nivel de nuestro Take Profit virtual.

El cálculo de probabilidades es simple - para tomar ganancias es un número de ejecuciones el número analizado de días, dividido por el número de estos días y multiplicado por 100, para representar en porcentajes.

En consecuencia, las pérdidas de parada es el número de ejecuciones para el número analizado de días dividido por el número de estos días y multiplicado por 100.

Lo mismo es para las sesiones neutrales.

Algunos detalles sobre el trabajo del EA y su instalación. En primer lugar, como de costumbre, copiar el asesor experto en la carpeta de expertos y compilarlo. Después de esto conecte en cualquier período de tiempo (de hora es preferible), definir el tiempo que necesitamos y otros parámetros, que se han descrito anteriormente, y adelante con el comercio. Sin operaciones porque no estan todas las funciones del comercio, se dispondrá la información en la esquina inferior izquierda de la tabla (calculado el número de días, sus parámetros, número de ejecuciones de Take Profit y Stop Loss, número de sesiones neutrales y las probabilidades de ejecuciones SL y TP).

Vamos a recordar - no es necesario realizar la prueba en el probador del histórico. Sólo fijese, espere un tick, analizamos los resultados, cambiar sus parámetros de entrada si es necesario, esperar una nueva señal, guardar los resultados en algún lugar y adjuntarlo finalmente. Tal vez debería ser diseñado como un indicador, pero en este momento no quiero cambiarlo, y probablemente lo hará en el futuro.

Si los ticks son muy frecuentes, puede deshabilitar el asesor experto utilizando el botón de "Asesores expertos" en el terminal de cliente.

Ahora vamos a discutir el tema. Echemos un vistazo a la tabla siguiente. Se ha llenado con datos calculados por el experto asesor el 10 de noviembre, hace varios días. Yo no he utilizado el histoco más profundo, se han utilizado los últimos 50 días. El tiempo para el "comercio" (para comprar o vender) fue elegido desde 3.00 hasta 13.00 (la sesión completa de Asia), de 3.00 a 9.00 (sesión asiática puro sin la sesión Europea) y desde las 9.00 hasta las 13.00 horas (sesiones de asiáticos y europeos).

Período de tiempo

3.00-13.00

3.00-13.00

3.00-13.00

3.00-9.00

3.00-9.00

3.00-9.00

9.00-13.00

9.00-13.00

9.00-13.00

Pair Descripción

Profit-5

Profit-15
Profit-25
Profit-5
Profit-15
Profit-25
Profit-5
Profit-15
Profit-25
USDJPY Take Profit ejecutado %
74
58
50
78
64
52
70
52
44
USDJPY Stop Loss ejecutados %
24
36
44
22
36
48
30
48
56
USDJPY Sesiones neutrales %
2
2
2
0
0
0
0
0
0
USDJPY Nada ejecutado %
0
4
4
0
0
0
0
0
0
EURUSD Take Profit ejecutado %
100
72
64
68
62
54
76
66
62
EURUSD Stop Loss ejecutados %
0
28
36
32
38
46
24
34
38
EURUSD Sesiones neutrales %
0
0
0
0
0
0
0
0
0
EURUSD Nada ejecutado %
0
0
0
0
0
0
0
0
0
GBPJPY Take Profit ejecutado %
72
62
54
72
66
50
78
64
56
GBPJPY Stop Loss ejecutados %
28
34
42
28
34
50
22
34
42
GBPJPY Sesiones neutrales %
0
0
0
0
0
0
0
0
0
GBPJPY Nada ejecutado %
0
4
4
0
0
0
0
2
2
NZDUSD Take Profit ejecutado %
80
66
56
74
58
50
68
58
46
NZDUSD Stop Loss ejecutados %
20
34
42
24
40
48
30
40
52
NZDUSD Sesiones neutrales %
0
0
0
2
2
2
2
2
2
NZDUSD Nada ejecutado %
0
0
0
0
0
0
0
0
0

 

Table 2. Las probabilidades finales (%).

Como vemos, yo no he utilizado los beneficios de tomar grandes - valores 5, 15 y 25 puntos.



Conclusiones

Uno puede ver en la tabla 2, las conversaciones que "el comercio de todo el día depende de cómo se cotiza la sesión de Asia" está mal, al menos para estos 4 pares en los últimos 50 días.

La probabilidad de ejecución de Take Profit con 5 puntos es cerca del 60-70%, en este caso creo que es como una probabilidad de lanzar una moneda. IMHO.

Para el EURUSD se encuentra al 100% probabilidad de Take Profit con 5 puntos. Es decir, si he negociado a las 13.00 dependiendo de la tendencia de la sesión de Asia, durante los últimos 50 días, con 5 pequeños puntos de Take Profit, siempre se operará con éxito. Qué puedo decir, es una lástima que no sabía sobre él. Para los cazadores de pips los resultados pueden ser utilizados como información adicional, el estudio con el historico más profundo (100 y más días) produce menos resultados inequívocos.

El valor del EA presentado no es sólo el hecho de que sus resultados demostraron la ausencia de cualquier dependencia entre las sesiones asiáticas y otras sesiones durante el día. Algunos tratan de encontrar las relaciones de comercio para unas horas de comercio, ahora se puede realizar sin los cálculos manuales tediosos.

El indicador TradeSession.mq4 (tal vez alguien quiere usarlo en el terminal de cliente) y el asesor experto 1-Session.mq4 se unen.