Fragen zum MQL5-Assistenten und zur Standardbibliothek der Handelsklassen - Seite 6

 
uncleVic:
Meister und Klassen bewegten sich für ihn bisher im "Wartungsmodus". Für die Erstellung der einfachsten Multivolutions-Klassen sind bereits angepasst (nicht fertig jetzt, aber später werde ich hier ein Beispiel setzen).

Ich habe eine Klasse mit mehreren Währungen erstellt, die auf der vom Assistenten generierten Klasse basiert. Aber ich musste die EXPERT-Klasse korrigieren.

Ganz am Anfang, in der INIT()-Methode, gibt es eine Prüfung auf ein funktionierendes Symbol und folglich keine Mehrwährung. Der Scheck wurde entfernt und alles ging gut. Schauen Sie sich die Zeit an - die Idee zumindest, dass?

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

Dateien:
Master01_ML.mq5  14 kb
 

Hallo Moderator!

Ich habe eine solche Frage:

MQL5 Wizard verfügt über 20 Signalmodule, die Analysen für Divergenz, überkaufte und überverkaufte Märkte usw. durchführen. Könnten Sie mitteilen, ob es möglich ist, ein solches Modul von Signalen aus dem MQL5-Assistenten zu leihen, um die Analyse desselben durchzuführen, aber von einem benutzerdefinierten Indikator Ihres eigenen Designs und was sollte dafür getan werden? Erfordert es viel Nacharbeit (Redesign) oder reicht es aus, etwas am Modul (seiner Kopie) gegenüber der Standardauslieferung zu ändern?

Vielen Dank im Voraus!

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

ForexMoneyMaker:

Wissen Sie, ob es möglich ist, ein solches Modul von Signalen aus dem MQL5-Assistenten zu leihen, um die Analyse desselben durchzuführen, aber von einem benutzerdefinierten Indikator Ihres eigenen Designs, und was sollte dafür getan werden? Wird es viel Nacharbeit (Änderung) erfordern, oder wird es ausreichen, etwas im Modul (seiner Kopie) von der Standardlieferung zu ändern?

Gute Frage! Und das ist der Grund: Es ist wirklich möglich, mit minimalen Änderungen der Standardmodule ein neues Modul zu erstellen, indem man einfach einen weiteren Indikator anstelle eines einzigen einfügt. Ich weiß nicht, wann wir in der Lage sein werden, selbst einen Artikel zu diesem Thema zu schreiben, deshalb schlage ich vor:

Wer Kenntnisse und Lust hat, einen Artikel "How to create your own on the basis of the standard module of signals"zu schreiben - schreiben Sie mir in der persönlichen Nachricht.

 
Erm955:

Ich habe eine Klasse mit mehreren Währungen erstellt, die auf der vom Assistenten generierten Klasse basiert. Aber ich musste die EXPERT-Klasse korrigieren.

Ganz am Anfang, in der INIT()-Methode, gibt es eine Prüfung auf ein funktionierendes Symbol und folglich keine Mehrwährung. Der Scheck wurde entfernt und alles ging gut. Schauen Sie sich die Zeit an - die Idee zumindest, dass?

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

Die Idee ist die gleiche, aber:

1. Es ist nicht gut, die Klasse CExpert zu ändern. Es ist gut, von ihr zu erben, indem man die Methode Init(...) überschreibt.

2) Sie müssen die Klasse CExpert nicht ändern. Sie müssen es schreiben:

...
   if(!ExtExpert_EG.Init(Symbol(),PERIOD_M10,Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert_EG.Deinit();
      return(-1);
     }
   ExtExpert_EG.Symbol("NZDUSD");
...

Im Moment...

 
ForexMoneyMaker:

Hallo Moderator!

Ich habe eine solche Frage:

MQL5 Wizard verfügt über 20 Signalmodule, die Analysen für Divergenz, überkaufte und überverkaufte Märkte usw. durchführen. Können Sie uns mitteilen, ob es möglich ist, ein solches Modul von Signalen aus dem MQL5-Assistenten zu leihen, um die Analyse desselben durchzuführen, aber von einem benutzerdefinierten Indikator Ihres eigenen Designs und was sollte dafür getan werden? Erfordert es viel Nacharbeit (Redesign) oder reicht es aus, etwas am Modul (seiner Kopie) gegenüber der Standardauslieferung zu ändern?

Vielen Dank im Voraus!


Schauen Sie hier im englischen Forum nach
 
uncleVic:

Die Idee ist die gleiche, aber:

1. Es ist nicht gut, die Klasse CExpert zu ändern. Es ist gut, von ihr zu erben, indem man die Methode Init(...) überschreibt.

(2) Sie brauchen die Klasse CExpert nicht zu ändern. Sie müssen es schreiben:

Bis jetzt...

Sie sollten die Init()-Methode neu definieren und die Prüfung auf das Arbeitssymbol daraus ausschließen. Aber S.2 passt nicht, da die Init()-Methode unter anderem eine Überprüfung der Anzahl der Ziffern Digits enthält, und wenn das Arbeitssymbol 5 Ziffern enthält und das getestete Symbol 3 Ziffern enthält, gibt es einen Fehler bei den Stopps/Gewinnen. Ich habe geerbt und außer Kraft gesetzt. Jetzt funktioniert alles.

Natürlich bin ich kein großer OOP-Experte, aber es stellt sich heraus, dass man, um das Programm flexibel für eine unterschiedliche Anzahl von getesteten Symbolen zu konfigurieren, stumpf z.B. 21 Codestücke (alle Symbole) ausfüllen muss, und dann durch die Wahl der Eingabeparameter diesen oder jenen Codeabschnitt übergeben muss. Ich tat das gleiche ohne OOP, aber alle Handles und Indikatorwerte in der Init wurden in dynamische Arrays geschrieben, und dann OnTick bereits diese Arrays verwendet. Ich habe also noch keine Vorteile von OOP gesehen?

P S. Ich habe es nicht richtig geschrieben. Vielleicht gibt es eine Möglichkeit, die Daten (Handler und Indikatorwerte) während der Abstimmung für die Anzahl der gleichzeitig arbeitenden Zeichen dynamisch zu verbinden. Das Problem ist, dass all dies in Init eingesteckt und in OnTic/OnTimer verwendet werden sollte.

Dateien:
Master02_ML.mq5  20 kb
 
Erm955:

Die Methode Init() muss neu definiert werden, wobei die Prüfung auf das Arbeitssymbol ausgeschlossen werden muss. Und S.2 passt nicht, weil die Init()-Methode unter anderem die Anzahl der Ziffern Digits prüft, und wenn das Arbeitssymbol 5 Ziffern hat und das getestete Symbol 3 Ziffern, dann gibt es einen Fehler mit Stopps/Gewinnen. Ich habe geerbt und außer Kraft gesetzt. Jetzt funktioniert alles.

Natürlich bin ich kein großer OOP-Experte, aber es stellt sich heraus, dass man, um das Programm flexibel für eine unterschiedliche Anzahl von getesteten Symbolen zu konfigurieren, stumpf z.B. 21 Codestücke (alle Symbole) ausfüllen muss, und dann durch die Wahl der Eingabeparameter diesen oder jenen Codeabschnitt übergeben muss. Ich tat das gleiche ohne OOP, aber alle Handles und Indikatorwerte in der Init wurden in dynamische Arrays geschrieben, und dann OnTick bereits diese Arrays verwendet. Ich habe also noch keine Vorteile von OOP gesehen?

P S. Ich habe es nicht richtig geschrieben. Vielleicht gibt es eine Möglichkeit, die Daten (Handler und Indikatorwerte) im Zuge der Abstimmung auf die Anzahl der gleichzeitig arbeitenden Zeichen dynamisch zu verbinden. Das Problem ist, dass all dies in Init eingesteckt und in OnTic/OnTimer verwendet werden sollte.

Es ist folgendermaßen. Übrigens, danke für den Hinweis zu Punkt 2. Ich werde die Kontrolle hinzufügen und die Anzahl der Zeichen ändern.
 
uncleVic:
Es ist so. Übrigens, danke für den Hinweis zu Punkt 2. Ich werde eine Kontrolle und eine Änderung der Ziffern hinzufügen.

Scheiße, ich habe gerade alles eingerichtet, und als ich auf 485-Build upgegradet habe, ist der Fehler wieder aufgetaucht:

2011.08.08 17:13:04 Core 1 Tester angehalten, weil OnInit kritischer Fehler
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 OnInit: Fehler beim Initialisieren von Indikatoren
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpert::InitIndicators: Fehler beim Initialisieren der Indikatoren des Geldobjekts
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpertBase::InitIndicators: Parameter der Einstellung werden nicht überprüft
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpertBase::SetOtherSeries: Ändern der Zeitreihe ist untersagt
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpertBase::SetPriceSeries: Ändern der Zeitreihe ist untersagt
2011.08.08 17:13:04 Core 1 EURUSD,H4: Historie beginnt ab 2009.01.02 04:00
2011.08.08 17:13:04 Core 1 EURUSD,H4: History-Cache reserviert für geschätzte 4692 Bars

Dateien:
Master02_ML.mq5  20 kb
 
Erm955:

Scheiße, ich habe gerade alles eingerichtet, und als ich auf 485 aktualisiert habe, ist der Fehler wieder aufgetreten:

Wurden die Agenten aktualisiert? Wurde der EA in der neuen Version neu kompiliert?
 
Rosh:
Wurden die Agenten aktualisiert? Wurde der EA in der neuen Version neu kompiliert?

Das war's, ich habe neu kompiliert!

Grund der Beschwerde: