MQL4 como herramienta para Trading, o el Análisis técnico avanzado.

Andrey Opeyda | 12 febrero, 2016


Introducción

El trading es, ante todo, un cálculo de probabilidades. El refrán que dice que la ociosidad es un motor para el progreso, nos revela la razón por la que se están desarrollando todos estos indicadores y sistemas de trading. Resulta que la mayoría de los principiantes en el estudio del trading, realizan teorías de trading. Pero, afortunadamente, todavía hay algunos secretos de mercado no descubiertos, y se utilizan herramientas para analizar los movimientos de precios, básicamente, como los indicadores técnicos o matemáticas y paquetes stat. Gracias a Bill Williams por su contribución a la teoría de movimientos de mercado. Aunque, quizás, es algo pronto para dormirse en los laureles.


Manteniendo las estadísticas

Podemos preguntarnos: "¿De qué color son las velas que predominan en el gráfico de una hora de EURUSD?" Podemos empezar a contar las negras, teniendo en cuenta cada cien nuevas en el mismo en el bloque, y luego contar las blancas. Pero podemos escribir una docena de líneas de código, que hará esto automáticamente. Básicamente, todo es lógico y no hay nada inusual. Sin embargo, vamos a intentar responder a la pregunta de arriba. Primero, vamos a simplificar la identificación de color de las velas:

bool isBlack(int shift)
  {
    if(Open[shift] > Close[shift])
        return (true);
    return (false);
  }
//+------------------------------------------------------------------+
bool isWhite(int shift)
  {
    if(Open[shift] < Close[shift]) 
        return (true);
    return (false);
  }
//+------------------------------------------------------------------+

Utilizando el código que ya se ha escrito, continuaremos el experimento.

//EXAMPLE 1
      //Calculate black and white candles
      double BlackCandlesCount = 0;
      double WhiteCandlesCount = 0;
      double BProbability = 0;
 
      for(int i = 0; i < Bars - 1; i++)
        {
          if(isBlack(i) == true)
              BlackCandlesCount++;
 
          if(isWhite(i) == true)
              WhiteCandlesCount++;
        }
      
      BProbability = BlackCandlesCount / Bars;

El resultado es interesante y algo predecible: El 52,5426% de 16 000 son blancas. Utilizando el recopilador de MQL4, podemos resolver también el problema de ciclicidad Por ejemplo, ¿si se ha cerrado una vela negra, cuál es la probabilidad de formar una blanca? Esto, por supuesto, depende de una gran variedad de factores, pero vamos a referirnos a las estadísticas.

//EXAMPLE 2
      //Calculate seqences of 1st order
      //BW means after black going white candle     
      double BW = 0;
      double WB = 0;
      double BB = 0;
      double WW = 0;
       
      for(i = Bars; i > 0; i--)
        {
         if(isBlack(i) && isWhite(i-1)) 
             BW++;           
         if(isWhite(i) && isBlack(i-1)) 
             WB++;
         if(isBlack(i) && isBlack(i-1)) 
             BB++;            
         if(isWhite(i) && isWhite(i-1)) 
             WW++;
        }

El resultado obtenido:
- Blanca seguida de negra - 23,64%
- Negra seguida de blanca - 23,67%
- Blanca seguida de blanca - 21,14%
- Negra seguida de negra - 20,85%

Como se puede ver, la probabilidad de que una vela esté seguida de otra del mismo color, es algo menor que de una del color contrario.

Utilizando MQL4 y teniendo un historial de datos, un trader puede hacer investigaciones de mercado más profundas. La terminal permite dibujar histogramas. Utilizaremos esta función para dibujar la distribución de los colores de las velas según los valores de los indicadores WPR y RSI.

//EXAMPLE 3.1
      //Build histogram by RSI
      //RSI min/max - 0/100
      
      double RSIHistogramBlack[100];
      double RSIHistogramWhite[100];
      
      for(i = Bars; i > 0; i--)
        {
          int rsi_val = iRSI(NULL,0,12,PRICE_CLOSE,i);
          if(isWhite(i))
              RSIHistogramWhite[rsi_val]++;
          if(isBlack(i))
              RSIHistogramBlack[rsi_val]++;
        }
      for(i = 0; i < 100; i++)
        {
          ExtMapBuffer1[i] = RSIHistogramBlack[i];
          ExtMapBuffer2[i] = -RSIHistogramWhite[i];
        }
 
//EXAMPLE 3.2
      //Build histogram by %R
      //%R min/max - 0/-100

      double WPRHistogramBlack[100];
      double WPRHistogramWhite[100];
      
      for(i = Bars; i > 0; i--)
        {
          int wpr_val = iWPR(NULL,0,12,i);
          int idx = MathAbs(wpr_val);
          if (isWhite(i))
              WPRHistogramWhite[idx]++;
          if (isBlack(i))
              WPRHistogramBlack[idx]++;
        }




De todos modos, sería más objetivo, en lugar de contar las velas blancas y negras, mantener las estadísticas de los trades beneficiosos y los que tienen pérdidas con diferentes valores de StopLoss y TakeProfit. El siguiente procedimiento será de ayuda para este propósito:

int TestOrder(int shift, int barscount, int spread, int tp, int sl, int operation)
 {
   double open_price = Close[shift];
   
   if (operation == OP_BUY)
      open_price  = open_price + (Point * spread);
      
   if (operation == OP_SELL)
      open_price  = open_price - (Point * spread);
      
   
   for (int i = 0; i<barscount; i++)
    {
      if (operation == OP_BUY)
       {
         //sl
         if (Low[shift-i] <= open_price - (Point * sl) )
            return (MODE_STOPLOSS);
         //tp            
         if (High[shift-i] >= open_price + (Point * tp) )
            return (MODE_TAKEPROFIT);            
       }
      
      if (operation == OP_SELL)
       {
         //sl
         if (High[shift-i] >= open_price + (Point * sl) )
            return (MODE_STOPLOSS);
         //tp            
         if (Low[shift-i] <= open_price - (Point * tp) )
            return (MODE_TAKEPROFIT);            
       }
      
    }  
   return (MODE_EXPIRATION);   
 }

Estoy seguro de que los resultados le sorprenderán. Los mapas de Kohonen, la distribución Gaussian, y el coeficiente Hurst le sorprenderán aún más. Hay muchas cosas asombrosas. Lo principal es no olvidar la esencia y el sentido del trading.

Conclusión

Básicamente, todos los trader utilizan sus propias técnicas de trading. Por supuesto, nada le impedirá representar la efectividad de su sistema de forma gráfica, analizarlo y utilizarlo en el trading. Que no haya resultados, también es un resultado. El conocimiento que tenga el trader simplemente mejorará su productividad en el trading.