Analysieren Sie die wichtigsten STATISTISCHEN Merkmale des Musters und wählen Sie eine Methode, um darauf zu handeln.

 

Nehmen wir an, wir haben ein Stück eines Diagramms. Wir müssen (anhand der Geschichte) herausfinden, wie wir am besten Geschäfte damit machen können. Wo kauft man, wo verkauft man, wo kauft man mehr, wo schließt man ab, und so weiter. Wir müssen jedoch berücksichtigen, dass die Muster unterschiedlich sein können, und wir müssen die effektivste Methode zur Berechnung der Positionseröffnungsplätze für jedes Muster finden, während wir die Risiken minimieren. Es kann mehrere Geschäfte in einem Muster geben. Es gibt noch eine weitere wichtige Bedingung: Das Muster darf innerhalb einer bestimmten Spanne, etwa 20 %, variieren. Das heißt, am Anfang sehen wir ein Muster und im nächsten Takt wird es sich etwas verändern, obwohl seine grundlegenden Merkmale gleich bleiben (aber wir werden immer das gesamte Muster und alle seine zukünftigen Veränderungen sehen). Das heißt, wir müssen einen anderen Fehlerfaktor einführen.

Haben Sie eine Idee, wie man das am besten macht? Es können verschiedene Wahrscheinlichkeiten und Preisniveaus berechnet werden, wie ist das möglich?

 

Wir können in die entgegengesetzte Richtung gehen:

  • wir legen die Bedingung fest, wie viele Punkte wir für eine bestimmte Anzahl von Balken nehmen müssen
  • dann suchen Sie nach solchen Orten
  • nachdem die "Fisch"-Flecken gefunden wurden, analysieren Sie, welche Kombination von Balken (Muster) vor dem "Fisch"-Fleck lag.

 
Maxim Dmitrievsky:

Haben Sie eine Idee, wie man das am besten macht? Es können verschiedene Wahrscheinlichkeiten und Preisniveaus berechnet werden. Wie kann dies geschehen?

Es ist möglich, es ist im Bereich der Erkennung von grafischen Bildern (Machine Vision)
 
Vielleicht ist dies das, was Sie suchen.
Как искать паттерны в биржевых данных и использовать их в торговле?
Как искать паттерны в биржевых данных и использовать их в торговле?
  • habrahabr.ru
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли. Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения. В статье есть несколько приятных бонусов в виде кода...
 
Rafael Sahibgareev:
Vielleicht finden Sie in diesem Artikel, wonach Sie suchen.
Der Artikel ist nichts, aber er hinterlässt einen furchtbaren Nachgeschmack für MQL5 - es ist unmöglich, eine nutzlose, wenn auch schwache Studie in MQL5 zu erstellen.
 
Vladimir Karputov:

Wir können in die entgegengesetzte Richtung gehen:

  • wir legen die Bedingung fest, wie viele Punkte wir für eine bestimmte Anzahl von Balken nehmen müssen
  • dann suchen Sie nach solchen Orten
  • nachdem die "Fisch"-Flecken gefunden wurden, analysieren Sie, welche Kombination von Balken (Muster) vor dem "Fisch"-Fleck lag.


Grundsätzlich ja, aber die Gewinnwahrscheinlichkeit wird nicht berücksichtigt, wenn das Muster in diese oder jene Richtung geht. Es ist wünschenswert, diese Risiken von Anfang an einzubeziehen und sie nicht erst im Laufe des Verfahrens zu korrigieren.
 

Sie wollen also auch die Muster clustern (berechnen) ....

 
Maxim Dmitrievsky:

Im Prinzip ja, aber dabei wird die Wahrscheinlichkeit eines Gewinns nicht berücksichtigt, wenn sich das Muster in die eine oder andere Richtung bewegt.

Wie meinen Sie das? Als erstes suchen wir den "Fischplatz". In der zweiten Phase wird der Zustand der Stäbe vor dem "Fischplatz" analysiert.
 
Igor Yeremenko:
Das ist möglich, und zwar auf dem Gebiet der Bilderkennung (maschinelles Sehen).

Es wird einige Zeit in Anspruch nehmen, ihn an mql... Und es geht mir nicht um Vorhersagen, sondern um die Suche nach den besten Inputs und Outputs
 
Vladimir Karputov:

Wie meinen Sie das? Schließlich wird zuerst der "Fischplatz" gesucht. Der zweite Schritt besteht darin, den Zustand der Stäbe vor dem Fischspot zu analysieren.

Ich wollte den Mustern und ihren Unterwellen einige probabilistische Schätzungen zuordnen, da es mir zu primitiv erschien, nur nach n-Punkt-Flecken zu suchen. Wir müssen das Muster statistisch beschreiben, aber ich habe noch nicht herausgefunden, wie
 
Maxim Dmitrievsky:

Ich wollte den Mustern und ihren Unterwellen einige probabilistische Schätzungen zuordnen. Es ist notwendig, das Muster statistisch zu beschreiben, ich habe noch nicht herausgefunden, wie.


Man sollte Schritt für Schritt vorgehen. Suchen Sie zunächst nur Kerzen in einer bestimmten Größe. Sehen Sie sich an, was wir haben:

Suche nach einem Muster, 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);
  }
//+------------------------------------------------------------------+

MetaTrader Handelsplattform Screenshots

EURUSD, M5, 2017.04.02

MetaQuotes Software Corp, MetaTrader 5, Demo

Suche nach einem Muster, Version "1.000".

EURUSD, M5, 2017.04.02, MetaQuotes Software Corp.


Dateien: