Analysez les caractéristiques STATISTIQUES importantes du modèle et choisissez une méthode de trading sur ce modèle.

 

Disons que nous avons un morceau d'un tableau. Nous devons trouver (sur l'histoire) la meilleure façon d'ouvrir des marchés sur ce sujet. Où acheter, où vendre, où acheter davantage, où fermer, etc. Mais nous devons tenir compte du fait que les schémas peuvent être différents, et nous devons trouver la méthode la plus efficace pour calculer les positions d'ouverture pour n'importe quel schéma, tout en minimisant les risques. Il peut y avoir plusieurs transactions dans un schéma. Il existe une autre condition importante : le modèle peut varier dans une certaine fourchette, disons de 20%. C'est-à-dire qu'au début, nous voyons un motif et à la mesure suivante, il changera quelque peu, bien que ses caractéristiques de base restent les mêmes (mais nous verrons toujours l'ensemble du motif et tous ses changements futurs). C'est-à-dire que nous devons introduire un autre facteur d'erreur.

Avez-vous une idée de la meilleure façon de procéder ? Il est possible de calculer différentes probabilités et niveaux de prix, comment faire ?

 

Nous pouvons commencer par la direction opposée :

  • nous fixons la condition du nombre de points que nous devons prendre pour un nombre donné de barres
  • alors cherchez de tels endroits
  • après avoir trouvé les taches "poisson", analysez quelle combinaison de barres (motif) se trouvait avant la tache "poisson".

 
Maxim Dmitrievsky:

Avez-vous des idées sur la meilleure façon de procéder ? Il est possible de calculer différentes probabilités et niveaux de prix, comment faire ?

C'est possible, c'est dans le domaine de la reconnaissance d'images graphiques (vision artificielle).
 
Voici peut-être ce que vous cherchez.
Как искать паттерны в биржевых данных и использовать их в торговле?
Как искать паттерны в биржевых данных и использовать их в торговле?
  • habrahabr.ru
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли. Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения. В статье есть несколько приятных бонусов в виде кода...
 
Rafael Sahibgareev:
Cet article a peut-être ce que vous cherchez.
L'article n'est rien, mais il laisse un arrière-goût affreux pour MQL5 - il est impossible de faire une étude inutile, bien que faible , en MQL5.
 
Vladimir Karputov:

Nous pouvons commencer par la direction opposée :

  • nous fixons la condition du nombre de points que nous devons prendre pour un nombre donné de barres
  • alors cherchez de tels endroits
  • après avoir trouvé les taches "poisson", analysez quelle combinaison de barres (motif) se trouvait avant la tache "poisson".


En principe, oui, mais la probabilité de profit ne sera pas prise en compte lorsque le modèle va dans tel ou tel sens. Il est souhaitable d'introduire ces risques dès le début, et non de les corriger en cours de route.
 

Vous voulez donc regrouper les modèles aussi (calculer) ....

 
Maxim Dmitrievsky:

En principe, oui, mais il ne tiendra pas compte de la probabilité de profit lorsque le modèle évolue dans une direction ou une autre.

Qu'est-ce que tu veux dire ? Tout d'abord, nous cherchons la "place du poisson". La deuxième étape consiste à analyser l'état des bars avant la "place du poisson".
 
Igor Yeremenko:
C'est possible, c'est dans le domaine de la reconnaissance d'images (vision artificielle).

Il faudra du temps pour l'attacher à mql... Et je ne suis pas intéressé par les prédictions, mais par la recherche des meilleures entrées et sorties.
 
Vladimir Karputov:

Qu'est-ce que tu veux dire ? Après tout, il faut d'abord chercher la "place du poisson". La deuxième étape consiste à analyser l'état des barres avant la tache de poisson.

Je voulais attribuer des estimations probabilistes aux motifs et à leurs sous-ondes, il me semblait qu'il était trop primitif de se contenter de chercher des points à n points. Nous devons décrire le modèle statistiquement, mais je n'ai pas encore trouvé comment.
 
Maxim Dmitrievsky:

Je voulais attribuer des estimations probabilistes aux motifs et à leurs sous-ondes. Il faut décrire le modèle statistiquement, je n'ai pas encore trouvé comment.


Il faut y aller étape par étape. Au début, il suffit de trouver des bougies d'une certaine taille. Voir visuellement ce que nous avons :

Recherche d'un modèle, version "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);
  }
//+------------------------------------------------------------------+

Captures d'écran de la plateforme de trading MetaTrader

EURUSD, M5, 2017.04.02

MetaQuotes Software Corp, MetaTrader 5, Démo

Recherche d'un motif, version "1.000".

EURUSD, M5, 2017.04.02, MetaQuotes Software Corp.


Dossiers :