Bilder erkennen ( Rhetorisches Thema ) - Seite 9

 

Wie Debugger bereits erwähnt hat, ist neben den Mustern selbst auch die Wahrscheinlichkeit der Beendigung des Musters (oder die Wahrscheinlichkeit der Beendigung des Musters) von Interesse.

Die Klassifizierung von Mustern ist recht breit gefächert, daher müssen wir zunächst entscheiden, welche Muster wir hier betrachten wollen (Wellenmuster, Candlestick-Muster, Formen, ...).

 

Meines Erachtens ist es besser, die Muster zu analysieren, die die meisten Marktteilnehmer sehen und auf dieselbe Weise interpretieren.

D.h. bei EWA gibt es imho einige Schwierigkeiten, da es eine ganze Reihe von Interpretationen zur Bestimmung des Beginns/Endes von Wellen verschiedener Stufen gibt.

Ich persönlich bevorzuge "im Geiste" Candlestick-Muster und Figuren (Durchbrüche von Dreiecken, etc.), die praktisch jeder sehen kann. Aber ich denke, dass der gleiche Bruch eines Dreiecks in Bezug auf EWA und Candlestick-Muster (zum Beispiel NR4) bestimmt werden kann.

 
DDFedor:

Ich habe einen Vorschlag. Vielleicht wäre jemand bereit, ein Muster zur Sezierung (Beschreibung) zu posten? ein einfaches, aber ausreichend, um anhand eines Beispiels zu zeigen, wie man das Muster selbst findet (definiert), wie man Bestätigungen des Musters findet, wie man das Signal/die Signale implementiert. es ist möglich, dass die Betrachtung eines solchen Beispiels in einer "Live-Sendung" jemanden dazu bewegen kann, weiterzumachen.


Warum das Schlüsselwort im Titel des Themas "rhetorisch" lautet

Bilder->Muster->Nur Zickzack

Und beim Erkennen eines stückweisen linearen Graphen (Vektorcodierung + Fuzzy above/longer), einer Anordnung von vier ... kürzere Kerzenständer und ihre gegenseitige Position (begrenzte Anzahl von Kombinationen, vor allem mit dem gleichen Fuzzy) und "Brownsche Bewegung Bild" (wie ein schwarzes Quadrat - hier war eine geometrische Figur) sind drei völlig verschiedene Dinge.

Und die Tatsache, dass "Zickzack-Bilder" mehr ... informativ ist auch keine Tatsache.

Und alles warum - Fernkollektivarbeit AKA Swan (schwarz), Langusten und Hecht (nicht auf "ss" )

;)

 

Bei der Mustererkennung mit einem Zickzackmuster wird der Kontext nicht berücksichtigt. Aus diesem Grund wird es Rauschen geben (1) - einige Muster werden falsch sein.

Außerdem werden einige Muster nicht gefunden, weil das Zickzack einen Korrekturabschnitt markieren kann. Die Zickzack-Strahlen im Korrekturbereich werden vom Mustersuchalgorithmus möglicherweise nicht berücksichtigt. Dies ist auch Lärm (2).

Nach dem Finden des Musters muss der Einstiegspunkt gefiltert werden, um das Rauschen herauszufiltern (1). Der Filter kann z.B. aus verschiedenen Indikatoren bestehen...

Um das Rauschen (2) zu eliminieren, ist es notwendig, den Algorithmus zur Mustersuche auszuarbeiten. In diesem Fall kann auch eine Variante von Lärm (1) auftreten. Nennen wir diese Variante Lärm (3).

Das Rauschen (1) kann geglättet werden, indem man versucht, eine Wellenanalyse zu erstellen, die im Moment sehr subjektiv ist.

 
Gibt es irgendwelche Statistiken oder Arbeiten, die belegen, dass die Fische hier schwimmen? Der Autor dieses Themas arbeitet verständlicherweise auf Provision, aber er gräbt nur, weil er eine Schaufel hat .......
 
DDFedor:

Ich habe einen Vorschlag. Vielleicht wäre jemand bereit, ein Muster zur Sezierung (Beschreibung) zu posten? ein einfaches, aber genug, um anhand eines Beispiels zu zeigen, wie man das Muster selbst findet (definiert), wie man Bestätigungen des Musters findet, wie man das/die Signal(e) implementiert. es ist möglich, dass die Betrachtung eines solchen Beispiels in einer "Live-Sendung" jemanden dazu bewegen könnte, weiterzumachen.


einen einfachen, ich würde sogar sagen, primitiven Algorithmus zum Auffinden eines doppelten Tops (Bottom) treten Sie mich nicht für den Code, ich lerne gerade, ich stelle den Code nur zur Verfügung, um den Algorithmus zu teilen, es ist interessant zu wissen, wie jemand diese Tops findet.

extern double ExtDepth  = 12; // шаг зигзага
extern double Lot       = 1;  // лот
extern double Accuracy  = 95; // точность совпадения в %
extern int    SL_TP     = 2;  // соотношение SL к TP

double ZZ;

int start()
{
   double SL, TP, zz, zz0, zz1, zz2, zz3;
   bool BUY, SELL;
  
   for (int i=0; i<1000; i++) // ищем 4 точки зигзага
     {
      zz=iCustom(NULL, 0, "ZigZag", ExtDepth, 5, 3, 0, i);
      if (zz!=0 && zz!=EMPTY_VALUE) 
        {
         if (zz0==0)           {zz0=zz; continue;} 
         if (zz1==0 && zz0!=0) {zz1=zz; continue;}
         if (zz2==0 && zz1!=0) {zz2=zz; continue;} 
         if (zz3==0 && zz2!=0) {zz3=zz; break;}    
        }
     }
  
  if (zz0!=0 && ZZ!=zz2) // если образовался новый луч ЗЗ 
    {
     if (zz2>zz1 && zz2>zz3) // если ЗЗ образовал /\-фигуру то проверяем точность совпадения в %
         {
         if ((zz2-zz1)/(zz2-zz3)*100>Accuracy && (zz2-zz1)/(zz2-zz3)*100<200-Accuracy) 
           // например если Accuracy = 98 то разность ног ЗЗ должна попадать в диапозон от 98% до 102%
           BUY = true; // если двойное дно найдено покупаем
         } 
    
     // Тоже самое для двойной вершины
     if (zz2<zz1 && zz2<zz3 && (zz2-zz1)/(zz2-zz3)*100>Accuracy && (zz2-zz1)/(zz2-zz3)*100<200-Accuracy) SELL = true;
     // Как видим все условие образования двойной вершины умещается в одну строчку :))
    }
   if ( BUY ) // покупаем
    {
     SL = zz1-Point;           // стоп ставим на дно
     TP = Ask+(Ask-SL)*SL_TP;  // т.п. в SL_TP раз больше чем с.л.
     SL = NormalizeDouble(SL, Digits);
     TP = NormalizeDouble(TP, Digits);
     OrderSend( Symbol(), OP_BUY, Lot, Ask, 20, SL, TP );
     ZZ=zz2; // запомним значения ЗЗ чтобы больше сделок на этой ноге не открывать
    }
  if ( SELL ) // продаем
    {
     SL = zz1+(Ask-Bid)+Point; // стоп ставим на вершину
     TP = Bid-(SL-Bid)*SL_TP;  // т.п. в SL_TP раз больше чем с.л.
     SL = NormalizeDouble(SL, Digits);
     TP = NormalizeDouble(TP, Digits);
     OrderSend(Symbol(), OP_SELL, Lot, Bid, 20, SL, TP );
     ZZ=zz2; // запомним значения ЗЗ чтобы больше сделок на этой ноге не открывать
    }
   return(0);
}
Dateien:
 
RomanS:


Ich würde sogar sagen, einen primitiven Algorithmus für die Suche nach einem doppelten Top (Bottom), treten Sie mich nicht für den Code, ich bin nur lernen, ich bin nur die Entsendung der Code, um den Algorithmus zu teilen, ist es interessant zu wissen, wie jemand findet diese Tops.


Und dann. :)

D.h. Sie fügen Ihr Fragment in das Skript ein. Dort fügen Sie auch einen "Lehrer" ein, der in die Zukunft blickt, und erstellen, indem Sie die Geschichte durchlaufen, eine Datei mit "Muster - Lehrersignal". Danach sehen Sie in Excel, mit welcher Häufigkeit nach dem Muster welche Signale erscheinen.

Und wenn Sie Ihr Muster aufzählen, z. B. DV (und es als Funktion bilden), dann "einige Inder" (3I) usw., können Sie aus der Datei Daten wie "es gab mehr DV vor Kaufsignalen" oder umgekehrt "es gab mehr Verkäufe nach DV" herausziehen.

Es war das "öfter sehen", das mich dazu brachte ... ... abgekühlt auf ... "Anerkennung".

ZS: "Meine Version des Lehrers".

extern int     PredictLeadB    = 5;     //Число баров "предсказания"
extern int     LevelTrend     = 60;     //Выше этого - "сильное движение"
extern int     LevelFlat      = 30;     //Выше этого - "так себе бвижение", а ниже - на заборе
extern double  LevelFC        = 2.0;    //Грубо говря скорость/просадка (из кода ясно)
    
. . .

  {//Содержимое "Trade"
   int BarHigh  = iHighest(NULL, 0, MODE_HIGH, pPredictLead, Shift - pPredictLead);
   int BarLow   = iLowest(NULL, 0, MODE_LOW, pPredictLead, Shift - pPredictLead);
   double fHigh = iHigh(NULL, 0, BarHigh);
   double fLow  = iLow(NULL, 0, BarLow);
   double dLow  = (fLow - cClose) / Point;
   double dHigh = (fHigh - cClose) / Point;
   double fLevelFC;

   if(MathAbs(dHigh) > MathAbs(dLow))
    if(dLow == 0.00) 
     if(dHigh > 0)
      fLevelFC = 9999;
     else
      fLevelFC = -9999;
    else
     fLevelFC = dHigh / dLow;
   else
    if(dHigh == 0.00) 
     if(dLow > 0)
      fLevelFC = 9999;
     else
      fLevelFC = -9999;
    else
     fLevelFC = dLow / dHigh; 

   int signalTrade = 0;
   int fBar = Shift;
   if(dHigh > pLevelTrend && MathAbs(fLevelFC) > pLevelFC)
   {
    signalTrade = 2;
    fBar = BarHigh;
   }
   if(dLow < -1 * pLevelTrend && MathAbs(fLevelFC) > pLevelFC)
   {
    signalTrade = -2;
    fBar = BarLow;
   }
   if(dHigh > pLevelFlat && dLow > -1 * pLevelFlat && signalTrade == 0)
   {
    signalTrade = 1;
    fBar = BarHigh;
   }
   if(dLow < -1 * pLevelFlat && dHigh < pLevelFlat && signalTrade == 0)
   { 
    signalTrade = -1;
    fBar = BarLow;
   }
. . .
ФилеВрите(кодПаттерна, signalTrade);

In diesem Fall (für einen solchen "Lehrer") ist es möglich, durch Schleifen über externe Variablen (die ich in meinem Code hatte, daher haben die Variablen andere Namen) nicht nur die Tatsache der "Vorhersage" des Signals zu bewerten, sondern auch einige seiner qualitativen Merkmale.

Die Hauptsache ist, dass "diese" Wissenschaft falsch ist (an einem Ort namens "xforex"!!!), dass "Trisigmen" nicht rollen ;)

SZY. Shift - es ist nur für das Skript - auf Shift's bar in der Vergangenheit "erkennen" wir ein Muster, und in der Zukunft von ihm (Shift's bar) - wir bewerten das Signal.

 
gip:
Normalerweise kann ich nach etwa zwei Tagen sagen, ob es erfolgreich war oder nicht. Eine einfache verbale Beschreibung reicht für den Anfang aus.

Großartigkeit ist nicht in Sicht.

 
hhohholl:

Großartigkeit ist unübertroffen


Was zu was? Was hat Größe mit der Bestimmung der Musterleistung durch die Methodik zu tun?

Oder glauben Sie, dass eine einfache Prüfung in irgendeiner Weise mit der Verarbeitung in einem Expertensystem verglichen werden kann?

 
gip:


Was zu was? Was hat Größe damit zu tun, die Wirksamkeit eines Musters mit einer Methode zu bestimmen?

Oder glauben Sie, dass eine einfache Prüfung in irgendeiner Weise mit der Verarbeitung in das Expertensystem?

Vadim, was verstehen Sie unter einem "Expertensystem", was kann es leisten?