Analice las características ESTADÍSTICAS más importantes del patrón y elija un método para operar con él.

 

Digamos que tenemos un trozo de gráfico. Tenemos que resolver (en la historia) la mejor manera de abrir acuerdos sobre ella. Dónde comprar, dónde vender, dónde comprar más, dónde cerrar, etc. Pero debemos tener en cuenta que los patrones pueden ser diferentes, y debemos encontrar el método más eficaz para calcular los lugares de apertura de posiciones para cualquier patrón, minimizando los riesgos. Puede haber varias operaciones en un patrón. Hay una condición más importante, el patrón puede variar dentro de un cierto rango, digamos el 20%. Es decir, al principio vemos un patrón y en el siguiente compás cambiará algo, aunque sus características básicas sigan siendo las mismas (pero siempre veremos el patrón completo y todos sus cambios futuros). Es decir, tenemos que introducir algún otro factor de error.

¿Tiene alguna idea sobre la mejor manera de hacerlo? Se pueden calcular varias probabilidades y niveles de precios, ¿cómo se puede hacer?

 

Podemos empezar desde la dirección opuesta:

  • establecemos la condición de cuántos puntos tenemos que tomar para un número determinado de barras
  • entonces busca esos lugares
  • después de encontrar las manchas de "pescado", analice qué combinación de barras (patrón) había antes de la mancha de "pescado".

 
Maxim Dmitrievsky:

¿Alguna idea sobre la mejor manera de hacerlo? Se pueden calcular diferentes probabilidades y niveles de precios, ¿cómo se puede hacer?

Es posible, es en el campo del reconocimiento de imágenes gráficas (visión artificial)
 
Tal vez esto es lo que está buscando.
Как искать паттерны в биржевых данных и использовать их в торговле?
Как искать паттерны в биржевых данных и использовать их в торговле?
  • habrahabr.ru
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли. Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения. В статье есть несколько приятных бонусов в виде кода...
 
Rafael Sahibgareev:
Quizá este artículo tenga lo que buscas.
El artículo no es nada, pero deja un regusto horrible para MQL5 - es imposible hacer un estudio inútil, aunque sea débil , en MQL5.
 
Vladimir Karputov:

Podemos empezar desde la dirección opuesta:

  • establecemos la condición de cuántos puntos tenemos que tomar para un número determinado de barras
  • entonces busca esos lugares
  • después de encontrar las manchas de "pescado", analice qué combinación de barras (patrón) había antes de la mancha de "pescado".


Básicamente, sí, pero la probabilidad de ganancia no se tendrá en cuenta cuando el patrón vaya en esta o aquella dirección. Es conveniente introducir estos riesgos desde el principio, y no corregirlos en el proceso.
 

Así que también quiere agrupar los patrones (calcular) ....

 
Maxim Dmitrievsky:

En principio, sí, pero no tendrá en cuenta la probabilidad de beneficio cuando el patrón se mueva en una u otra dirección

¿Qué quieres decir? En primer lugar, buscamos el "lugar del pescado". La segunda etapa consiste en analizar el estado de los bares antes del "lugar del pescado".
 
Igor Yeremenko:
Es posible, está en el campo del reconocimiento de imágenes (visión artificial).

Se necesitará tiempo para adjuntarlo a mql... Y no me interesa predecir, sino buscar las mejores entradas y salidas
 
Vladimir Karputov:

¿Qué quieres decir? Al fin y al cabo, lo primero que se busca es un "lugar para el pescado". El segundo paso es analizar el estado de las barras antes de la mancha de pescado.

Quería asignar algunas estimaciones probabilísticas a los patrones y sus sub-ondas, me parecía que sólo buscar gráficos de n puntos es demasiado primitivo. Tenemos que describir el patrón estadísticamente, pero no he descubierto cómo
 
Maxim Dmitrievsky:

Quería asignar algunas estimaciones probabilísticas a los patrones y a sus subondas. Es necesario describir el patrón estadísticamente, no he descubierto cómo.


Hay que ir paso a paso. Al principio, basta con encontrar velas de un tamaño determinado. Ver lo que tenemos visualmente:

Búsqueda de un patrón, versión "1.000"

//+------------------------------------------------------------------+
//|                                          Search of a pattern.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"

#property description "Индикатор поиска свечей с заданным размером тела" 
#property description "Найденные свечи отмечаются символами из набора Wingdings" 

#property indicator_chart_window 
#property indicator_buffers 2 
#property indicator_plots   2 
//--- plot Arrows 
#property  indicator_label1  "Bull candle" 
#property  indicator_type1   DRAW_ARROW 
#property  indicator_color1  clrBlue 
#property  indicator_width1  1 
#property  indicator_label2  "Bear candle" 
#property  indicator_type2   DRAW_ARROW 
#property  indicator_color2  clrRed
#property  indicator_width2  1 
//--- input параметры
sinput string  __1__             = "";          // Параметр тела свечи
input ushort   min_size_candel   = 15;          // Минимальный размер тела свечи ()
input ushort   bull_code         = 226;         // Код символа бычьего бара(32-255)
input ushort   bear_code         = 225;         // Код символа медвежьего бара(32-255)
sinput string  __2__             = "";          // Параметр смещения
input uchar    vertical_shift    = 15;          // Смещение стрелок по вертикали (0-255)
//--- индикаторные буфера для построения  
double         BufferBull[];
double         BufferBear[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping 
   SetIndexBuffer(0,BufferBull,INDICATOR_DATA);
   SetIndexBuffer(1,BufferBear,INDICATOR_DATA);
//--- зададим код символа для отрисовки в PLOT_ARROW 
   PlotIndexSetInteger(0,PLOT_ARROW,bull_code);
   PlotIndexSetInteger(1,PLOT_ARROW,bear_code);
//--- зададим cмещение стрелок по вертикали в пикселях  
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,-(int)vertical_shift);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,(int)vertical_shift);
//--- установим в качестве пустого значения 0 
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
//--- 
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static datetime prev_time=0;
//--- работаем только в момент рождения нового бара, внутри бара не работаем
   if(prev_time==time[rates_total-1])
      return(rates_total);
//--- на новом баре запоминает время его рождения
   prev_time=time[rates_total-1];
//--- блок расчета значений индикатора 
   int start=1;
   if(prev_calculated>0)
      start=prev_calculated;
//--- цикл расчета 
   for(int i=start;i<rates_total;i++)
     {
      //--- если предыдущая свеча имеет тело больше минимального
      if(MathAbs(open[i-1]-close[i-1])/Point()>min_size_candel)
        {
         if(open[i-1]<close[i-1])
            BufferBull[i-1]=high[i-1];
         if(open[i-1]>close[i-1])
            BufferBear[i-1]=low[i-1];
        }
     }
//--- return value of prev_calculated for next call 
   return(rates_total);
  }
//+------------------------------------------------------------------+

Capturas de pantalla de la plataforma comercial MetaTrader

EURUSD, M5, 2017.04.02

MetaQuotes Software Corp., MetaTrader 5, Demo

Búsqueda de un patrón, versión "1.000".

EURUSD, M5, 2017.04.02, MetaQuotes Software Corp.


Archivos adjuntos: