Diskussion zum Artikel "Zeitreihen in der Bibliothek DoEasy (Teil 35): das Bar-Objekt und die Liste der Zeitreihen eines Symbols"

 

Neuer Artikel Zeitreihen in der Bibliothek DoEasy (Teil 35): das Bar-Objekt und die Liste der Zeitreihen eines Symbols :

Dieser Artikel startet eine neue Serie über das Erstellen der Bibliothek DoEasy zur einfachen und schnellen Programmentwicklung. Im aktuellen Artikel werden wir die Bibliotheksfunktionen für den Zugriff auf und die Arbeit mit den Zeitreihen der Symbole implementieren. Wir werden das Bar-Objekt erstellen, das die Haupt- und erweiterten Zeitreihendaten speichert, und Bar-Objekte in der Zeitreihenliste platzieren, um eine bequeme Suche und Sortierung der Objekte zu ermöglichen.

Dieser Artikel beginnt den neuen Abschnitt in der Beschreibung der Bibliothek zur bequemen Entwicklung von Programmen für MetaTrader 5 und 4 Terminals. Die erste Serie (34 Artikel) war dem Konzept der Bibliotheksobjekte und ihrer Verbindungen gewidmet. Das Konzept wurde verwendet, um die Funktionen für die Arbeit mit einem Konto zu entwickeln — seinen aktuellen Status und seine Historie.

Gegenwärtig verfügt die Bibliothek über die folgenden Funktionen:

  • Suchen, Sortieren und Vergleichen der Daten von jeder Order oder Position,
  • schneller und bequemer Zugang zu allen Eigenschaften von Order und Position,
  • Verfolgen jedes Kontoereignisses,
  • Beschaffen und Vergleichen von Konto- und Symboldaten,
  • Reagieren auf Eigenschaftsänderungen aller in Datenbanken (Sammlungen) vorhandenen Objekte und Senden von Benachrichtigungen über aufgetretene Ereignisse an das Programm.

Wir können der Bibliothek auch mitteilen, auf welche Ereignisse sie reagieren und Benachrichtigungen über die überwachten Ereignisse senden soll.

Außerdem haben wir die Möglichkeit implementiert, mit den Handelsfunktionen des Terminals zu arbeiten. Wir haben auch neue Arten von Handelsanfragen entwickelt — schwebende Handelsanfragen, die es uns ermöglichen, die Verhaltenslogik des Programms unter verschiedenen Handelsbedingungen zu erstellen, sowie den vollständigen Satz von Funktionen für die Erstellung neuer Arten von schwebenden Aufträgen bereitzustellen.
All dies und noch viel mehr wurde in den vorangegangenen Artikeln der Bibliotheksentwicklungsbeschreibungen erstellt und beschrieben.

Die zweite Reihe der Bibliotheksbeschreibung berücksichtigt viele Aspekte der Arbeit mit Preisdaten, Symboldiagrammen, Markttiefen, Indikatoren usw. Generell soll die neue Artikelserie der Entwicklung der Bibliotheksfunktionalität für den schnellen Zugriff, die Suche, den Vergleich und die Sortierung beliebiger Preisdatenfelder sowie deren Speicherobjekte und Quellen gewidmet werden.

Autor: Artyom Trishkin

 

Es ist irgendwie unkoscher, eine neue CSeries-Klasse zu haben, wenn es eine mit demselben Namen in SB gibt.

Документация по MQL5: Стандартная библиотека / Индикаторы / Базовые классы / CSeries
Документация по MQL5: Стандартная библиотека / Индикаторы / Базовые классы / CSeries
  • www.mql5.com
Класс CSeries обеспечивает всем своим потомкам (классам таймсерий и индикаторов) возможность упрощенного доступа к общим функциям API MQL5 в части работы с серийными данными.
 
Denis Kirichenko:

Es ist irgendwie unkoscher, eine neue CSeries-Klasse zu haben, wenn es eine mit demselben Namen in SB gibt.

Das sehe ich auch so. Danke, ich werde es korrigieren.

 

Ein sehr wichtiger Parameter jedes Balkens ist der Zeitpunkt des Höchstkurses und der Zeitpunkt des Tiefstkurses oder zumindest eine Markierung, die angibt, welcher der beiden Höchst- oder Tiefstkurse zeitlich zuerst eingetreten ist. Diese Information kann durch die Analyse von Balken aus einem niedrigeren Zeitrahmen oder direkt aus M1 gewonnen werden. Bitte fügen Sie diese Funktionalität hinzu.

 
Rosimir Mateev:

Ein sehr wichtiger Parameter jedes Balkens ist der Zeitpunkt des Höchstkurses und der Zeitpunkt des Tiefstkurses oder zumindest eine Markierung, die angibt, welcher der beiden Höchst- oder Tiefstkurse zeitlich zuerst eingetreten ist. Diese Information kann durch die Analyse von Balken aus einem niedrigeren Zeitrahmen oder direkt aus M1 gewonnen werden. Bitte fügen Sie diese Funktionalität hinzu.

Eine solche Funktionalität kann von Ihnen selbst durchgeführt werden - es gibt alle Daten auf den unteren Zeitrahmen, und es gibt alle Daten auf deren Balken. Dies ist nicht der letzte Artikel, und in den nächsten gibt es eine vollständige Liste aller Zeitrahmen eines beliebigen Symbols - Sie sollten also den bereits vorhandenen nicht mit unnötigen Funktionen überladen. Zumal sich dadurch die Aktualisierungszeit der Zeitreihe erhöht. Daher ist es besser, auf Anfrage Daten aus den bereits vorhandenen zu erhalten, als eine solche Analyse dort durchzuführen, wo sie nicht benötigt wird.

 

Hallo Artyom -- mit DoEasy anstelle der Standardbibliothek, was ist der beste Ansatz, um eine Klasse für die Erkennung verschiedener Kerzenmuster zu erstellen, ähnlich dem, was CCandlePattern in https://www.mql5.com/de/code/316 ist?

Ich frage, um zu vermeiden, dass ich etwas tue, das der zukünftigen Richtung, die Sie mit dieser Bibliothek einschlagen, völlig zuwiderläuft... Ich dachte daran, entweder (1) die Klassen CBar & CSeries zu modifizieren oder zu erweitern, um das zu tun, was ich brauche; oder (2) oder die DoEasy-Ereignisse zu verwenden, um neue Balken auf den Symbolen/Perioden zu erkennen, an denen ich interessiert bin, und von dort aus meinen Code zu implementieren, um nach meinen Kerzenmustern zu suchen und DoEasy erneut zu verwenden, um Aufträge zu platzieren oder Positionen zu eröffnen. Vielleicht ist Option #2 sauberer und weniger riskant in Bezug auf Ihre zukünftigen Entwicklungen, aber lassen Sie mich bitte wissen, wenn Sie einen anderen Vorschlag haben.

acandlepatterns.mqh

class  CCandlePattern : public  CExpertSignal
  {
protected:

// ...

   //--- Methoden, die zur Überprüfung der Candlestick-Musterbildung verwendet werden
   double            AvgBody(int ind);
   double            MA(int ind)                const { return(m_MA.Main(ind));             }
   double            Open(int ind)              const { return(m_open.GetData(ind));        }
   double            High(int ind)              const { return(m_high.GetData(ind));        }
   double            Low(int ind)               const { return(m_low.GetData(ind));         }
   double            Close(int ind)             const { return(m_close.GetData(ind));       }
   double            CloseAvg(int ind)          const { return(MA(ind));                    }
   double            MidPoint(int ind)          const { return(0.5*(High(ind)+Low(ind)));   }
   double            MidOpenClose(int ind)      const { return(0.5*(Open(ind)+Close(ind))); }
   //--- Methoden zur Überprüfung von Candlestick-Mustern
   bool              CheckPatternThreeBlackCrows();
   bool              CheckPatternThreeWhiteSoldiers();
   bool              CheckPatternDarkCloudCover();
   bool              CheckPatternPiercingLine();
   bool              CheckPatternMorningDoji();
   bool              CheckPatternEveningDoji();
   bool              CheckPatternBearishEngulfing();
   bool              CheckPatternBullishEngulfing();
   bool              CheckPatternEveningStar();
   bool              CheckPatternMorningStar();
   bool              CheckPatternHammer();
   bool              CheckPatternHangingMan();

MQL5 Wizard - Trade Signals Based on Hammer/Hanging Man + MFI
MQL5 Wizard - Trade Signals Based on Hammer/Hanging Man + MFI
  • www.mql5.com
The generic idea is the following: the class of trading signals is derived from CExpertSignal, the next, it's necessary to override the LongCondition() and ShortCondition() virtual methods with your own methods. The best way is to create the separate class, derived from CExpertSignal for checking of formation of candlestick patterns. For...
 
ddiall :

Hallo Artyom - mit DoEasy anstelle der Standard-Bibliothek, was ist der beste Ansatz, um eine Klasse für die Erkennung von verschiedenen Kerzen-Muster, ähnlich wie das, was ist CCandlePattern wie in https://www.mql5.com/de/code/316?

Ich frage, um zu vermeiden, dass ich etwas tue, das völlig konträr zu der zukünftigen Richtung ist, die Sie mit dieser Bibliothek einschlagen... Ich dachte daran, entweder (1) die Klassen CBar & CSeries zu modifizieren oder zu erweitern, um das zu tun, was ich brauche; oder (2) oder die DoEasy-Ereignisse zu verwenden, um neue Balken auf den Symbolen/Perioden zu erkennen, an denen ich interessiert bin, und von dort aus meinen Code zu implementieren, um nach meinen Kerzenmustern zu suchen und DoEasy erneut zu verwenden, um Aufträge zu platzieren oder Positionen zu eröffnen. Vielleicht ist Option #2 sauberer und weniger riskant in Bezug auf Ihre zukünftigen Entwicklungen, aber lassen Sie mich bitte wissen, wenn Sie einen anderen Vorschlag haben.

acandlepatterns.mqh

class   CCandlePattern :  public   CExpertSignal
  {
protected :

// ...

    //--- Methoden, die zur Überprüfung der Candlestick-Musterbildung verwendet werden
    double             AvgBody( int  ind);
    double             MA( int  ind)                 const  {  return (m_MA.Main(ind));             }
    double             Open( int  ind)               const  {  return (m_open.GetData(ind));        }
    double             High( int  ind)               const  {  return (m_high.GetData(ind));        }
    double             Low( int  ind)                const  {  return (m_low.GetData(ind));         }
    double             Close( int  ind)              const  {  return (m_close.GetData(ind));       }
    double             CloseAvg( int  ind)           const  {  return ( MA(ind) );                    }
    double             MidPoint( int  ind)           const  {  return ( 0.5 *(High(ind)+Low(ind)) );   }
    double             MidOpenClose( int  ind)       const  {  return ( 0.5 *(Open(ind)+Close(ind)) ); }
    //--- Methoden zur Überprüfung von Candlestick-Mustern
    bool               CheckPatternThreeBlackCrows();
    bool               CheckPatternThreeWhiteSoldiers();
    bool               CheckPatternDarkCloudCover();
    bool               CheckPatternPiercingLine();
    bool               CheckPatternMorningDoji();
    bool               CheckPatternEveningDoji();
    bool               CheckPatternBearishEngulfing();
    bool               CheckPatternBullishEngulfing();
    bool               CheckPatternEveningStar();
    bool               CheckPatternMorningStar();
    bool               CheckPatternHammer();
    bool               CheckPatternHangingMan();

Die Bibliothek wird eine Klasse für die Suche nach PriceAction-Candlestick-Mustern und verschiedenen japanischen Candlestick-Formationen enthalten.

Ich halte es für sehr sinnvoll, der CBar-Objektklasse eine neue Eigenschaft hinzuzufügen. Dementsprechend wird die Sammlung von Zeitreihen in der Lage sein, nach den gewünschten Kerzen und Mustern zu suchen.

So wird es in der Bibliothek sein.

Im Moment können Sie die Muster und Kerzen, die Sie benötigen, in den Listen der Sammlung von Zeitreihen suchen - dort befinden sich alle Balken, und Sie können sie verwenden, um das Muster zu bestimmen.

 
Artyom Trishkin:

Die Bibliothek wird eine Klasse für die Suche nach PriceAction-Candlestick-Mustern und verschiedenen japanischen Candlestick-Formationen enthalten.

Ich halte es für sehr sinnvoll, der CBar-Objektklasse eine neue Eigenschaft hinzuzufügen. Dementsprechend wird die Sammlung von Zeitreihen in der Lage sein, nach den gewünschten Kerzen und Mustern zu suchen.

So wird es in der Bibliothek sein.

Im Moment können Sie die Muster und Kerzen, die Sie benötigen, in den Listen der Sammlung von Zeitreihen suchen - dort sind alle Balken, und Sie können sie verwenden, um das Muster zu bestimmen.

Das klingt großartig! Haben Sie eine Idee, wann Sie mit der Implementierung all dieser guten Dinge beginnen werden? Sind Sie an irgendwelchen Code-Beiträgen interessiert?

 
Dima Diall :

Das klingt großartig! Wissen Sie schon, wann Sie mit der Umsetzung all dieser guten Dinge beginnen werden? Sind Sie an Code-Beiträgen interessiert?

Wenn die Zeit reif ist :)