Diskussion zum Artikel "20 Handelssignale in MQL5" - Seite 3

 

Hier habe ich eine praktische Frage.

Warum ist es notwendig, den Indikator-Handle bei jedem Aufruf von CopyBuffer() auf Behinderung zu prüfen? In meinem EA habe ich diese Prozedur einmal durchgeführt (mit der Ankunft des ersten Ticks, nach der Überprüfung der Datensynchronisation), und später begann ich, den Fehler 4807 Error indicator handle. CSymTotal=7. Die Handles wurden in einem Array empfangen:

      for (int i=0;i<CSymTotal;i++)
      {
      H_Ind[i]=iSAR(CSymList[i],PSARTF,PSARStep,PSARMax);
      }
Die Druckprüfung zeigt, dass alle sieben H_Ind[0..6] jeweils die Werte 10..15 haben, d.h. von -1 verschieden sind. Die Handles scheinen gültig zu sein, aber als Antwort auf CopyBuffer(H_Ind[0-6]...) erhalte ich CopyBuffer=-1, LastError=4807(!!!).Manchmal läuft es normal, und manchmal gibt es Fehler.

Nachdem ich Überprüfungen wie in diesem Artikeleingeführt habe,

   if(H_Ind[CSymListItem]==INVALID_HANDLE)//--- wenn der Handle ungültig ist
     {
      //--- создадим его снова                                                      
      H_Ind[CSymListItem]=iSAR(CSymList[CSymListItem],PSARTF,PSARStep,PSARMax);
      //--- Beenden der Funktion
      return(0);
     }
   else
     {
      cb=CopyBuffer(H_Ind[CSymListItem],0,0,BarsCheck,PSARBuffer);
...

funktioniert bis jetzt alles einwandfrei. Mysterium...

Ich verstehe nicht, was mein Fehler ist.... Und vor allem, warum ist es notwendig, den Handlejedes Mal auf Gültigkeit zu prüfen, wenn ich CopyBuffer() verwende und ihn neu anlege? Wird er nicht gespeichert, bis der Expert Advisor seine Arbeit beendet hat? Ist dies generell notwendig oder dient es nur der Bequemlichkeit des Beispiels?

Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
  • www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
 
pronych:

Hier habe ich eine praktische Frage.

Warum ist es notwendig, den Indikator-Handle bei jedem Aufruf von CopyBuffer() auf Behinderung zu prüfen? In meinem EA habe ich diese Prozedur einmal durchgeführt (mit der Ankunft des ersten Ticks, nach der Überprüfung der Datensynchronisation), und später begann ich, den Fehler 4807 Error indicator handle. CSymTotal=7. Die Handles wurden in einem Array empfangen:

Die Druckprüfung zeigt, dass alle sieben H_Ind[0..6] jeweils die Werte 10..15 haben, d.h. von -1 verschieden sind. Die Handles scheinen gültig zu sein, aber als Antwort auf CopyBuffer(H_Ind[0-6]...) erhalte ich CopyBuffer=-1, LastError=4807(!!!).Manchmal läuft es normal, und manchmal gibt es Fehler.

Nachdem ich Überprüfungen wie in diesem Artikeleingeführt habe,

funktioniert bis jetzt alles einwandfrei. Mysterium...

Ich verstehe nicht, was mein Fehler ist.... Und vor allem, warum ist es notwendig, den Handlejedes Mal auf Gültigkeit zu prüfen, wenn ich CopyBuffer() verwende und ihn neu anlege? Wird er nicht gespeichert, bis der Expert Advisor seine Arbeit beendet hat? Ist das überhaupt notwendig, oder dient es nur der Bequemlichkeit des Beispiels?

In meinen Beispielen sieht die Bedingung so aus: Wenn der Handle gültig ist, fahren wir mit dem Kopieren der Daten fort. Wenn nicht, erstellen wir den Indikator erneut und verlassen diese Funktion, da die Berechnung des Indikators Zeit in Anspruch nimmt. Das Gleiche passiert beim Kopieren, während des Kopierens kann der Indikator neu berechnet werden, also gibt CopyBuffer() -1 zurück, sobald die Daten bereit sind, wird die Funktion ihre Arbeit tun, deshalb ist es notwendig, alles zu überprüfen.
 

Im Allgemeinen sollte die Frage etwas allgemeiner formuliert werden:

Welche Überprüfungen, Bedingungen oder Verzögerungen sollten VOR und NACH CopyBuffer() eingeführt werden, um die 400(0)-Indikatorwerte, die ich jetzt(!) brauche, bei sieben (zehn) Instrumenten unter Höchstgeschwindigkeitsbedingungen (in einer Schleife) GARANTIERT zu erhalten?

Denn, return(0) = "ach, jetzt hat es nicht geklappt, vielleicht klappt es ja beim nächsten Mal...".

Hier ist übrigens der Rest von Copy daneben...

PS. Vielleicht ist es schon off-topic. Nun, die Frage richtet sich nicht an den Autor, sondern an alle, die das klären können...

 
sergey1294:
In meinen Beispielen sieht die Bedingung so aus: Wenn der Handle gültig ist, fahren wir mit dem Kopieren der Daten fort. Wenn nicht, erstellen wir den Indikator erneut und verlassen diese Funktion, da die Berechnung des Indikators Zeit in Anspruch nimmt. Das Gleiche passiert mit dem Kopieren, während des Kopierens kann der Indikator neu berechnet werden, also gibt CopyBuffer() -1 zurück, sobald die Daten bereit sind, wird die Funktion ihre Arbeit tun, deshalb ist es notwendig, alles zu überprüfen.

Ja, Sergey, ich verstehe. Ich wollte den Artikel oder den Autor nicht in den Schatten stellen. Der Artikel ist ausgezeichnet. Dies ist keine Beschwerde, sondern ein Versuch, eine Antwort zu finden. Es ist einfach die beste Diskussion, die ich zu diesem Thema gefunden habe. Sie würden die Antwort wahrscheinlich auch gerne genauer wissen, oder? )

Vielleicht sollten wir es in einen separaten Thread packen?

 
pronych:

Vielleicht in einen separaten Thread packen?

https://www.mql5.com/ru/forum/1880.

Hier, fügen Sie es in das Thema ein. Sergey, ich entschuldige mich dafür, dass ich den Rahmen des Artikels gesprengt habe. Ich werde mich freuen...)))

ДО и ПОСЛЕ CopyBuffer(..)
ДО и ПОСЛЕ CopyBuffer(..)
  • www.mql5.com
Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!
 
Dieser Artikel gefällt uns sehr gut. Bis jetzt haben wir 10 Expert Advisors mit unserer Visual Wizard Software erstellt, die diese Signale verwenden. Sie können sie hier sehen: http://www.molanis.com/products/expert-advisor-visual-wizard/expert-advisors-mt5
Expert Advisors for MT5 - Examples
  • Molanis Marketing
  • www.molanis.com
Please note that these Expert Advisors were created for educational purposes and do not constitute any financial advice. Before using the following EAs, please take into account the following: THE DOWNLOAD FILES ARE IN MOL5 FORMAT (MOLANIS 5 FORMAT - A .MOL5 FILE FOR THE EA VISUAL WIZARD). TO OBTAIN THE EA FOR MT5, DOWNLOAD THE STRATEGY...
 
Ich habe versucht, einige der EAs herunterzuladen, aber ohne Erfolg.
 

Ich wünsche mir, dass jemand 20 Methoden zum Geldmanagement nennen kann !!!!!!

 

Für diesen Artikel ist die Idee sehr gut. Aber Sie haben das Konzept von OOP und Programmierung im Allgemeinen vergessen: ABSTRACTNESS. In Ihren Funktionen sind hart kodierte Indikatoren, aktuelles Symbol, aktuelle Periode, Indikatorparameter. Die Idee ist gut, aber sie ist nicht vollständig umgesetzt, sie ist weit von Perfektion entfernt. Ich möchte zum Beispiel das Kreuzen von Indikatorlinien überprüfen, jede von ihnen in einem anderen Zeitrahmen und von verschiedenen Symbolen - das ist das eine. Zweitens - was passiert mit Ihren Funktionen, wenn das Terminal vorübergehend die Verbindung zum Server verliert und genau die drei Balken verpasst, die Sie gerade verarbeiten? Es gibt ein Signal - aber die Eingabe wird verpasst. Die Suche nach einem Signal sollte mit einem CHARGE durchgeführt werden. Dann sollte geprüft werden, ob das Signal bereits verarbeitet wurde. Es kann sein, dass Sie so viele Überschneidungen haben, dass Sie selbst überrascht sein werden. Es genügt, den Funktionen Parameter (Indikatornummer, Symbol, Zeitrahmen, Suchbeginn, Suchende, Indikatorzeile...) zu übergeben. - und Sie werden Ihr System flexibler machen und der Expert Advisor wird in der Lage sein, das zu sehen, was für Menschen unzugänglich ist - den Schnittpunkt von Linien verschiedener Symbole und verschiedener Zeitrahmen. Das ist viel besser als die hier vorgestellten Funktionen. Sie müssen auch das Konzept der Benennung von Variablen ausarbeiten - Sie haben zu wenige Variablen mit Namen, die nichts bedeuten - aber das ist ein anderes Thema. Das nennt man Programmierstil. Jeder hat seinen eigenen Stil. Aber ich sehe, dass Sie sich langsam den Konzepten annähern, die ich versucht habe, in MT4 zu verwenden - das ist sehr ermutigend.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
1CMaster:

Für diesen Artikel ist die Idee sehr gut. Aber Sie haben das Konzept von OOP und Programmierung im Allgemeinen vergessen: ABSTRACTNESS. In Ihren Funktionen sind hart kodierte Indikatoren, aktuelles Symbol, aktuelle Periode, Indikatorparameter. Die Idee ist gut, aber sie ist nicht vollständig umgesetzt, sie ist weit von Perfektion entfernt. Ich möchte zum Beispiel das Kreuzen von Indikatorlinien überprüfen, jede von ihnen in einem anderen Zeitrahmen und von verschiedenen Symbolen - das ist das eine. Zweitens - was passiert mit Ihren Funktionen, wenn das Terminal vorübergehend die Verbindung zum Server verliert und genau die drei Balken verpasst, die Sie gerade verarbeiten? Es gibt ein Signal - aber die Eingabe wird verpasst. Die Suche nach einem Signal sollte mit einem CHARGE durchgeführt werden. Dann sollte geprüft werden, ob das Signal bereits verarbeitet wurde. Es kann sein, dass Sie so viele Überschneidungen haben, dass Sie selbst überrascht sein werden. Es genügt, den Funktionen Parameter (Indikatornummer, Symbol, Zeitrahmen, Suchbeginn, Suchende, Indikatorzeile...) zu übergeben. - und Sie werden Ihr System flexibler machen und der Expert Advisor wird in der Lage sein, das zu sehen, was für Menschen unzugänglich ist - den Schnittpunkt von Linien verschiedener Symbole und verschiedener Zeitrahmen. Das ist viel besser als die hier vorgestellten Funktionen. Sie müssen auch das Konzept der Benennung von Variablen ausarbeiten - Sie haben zu wenige Variablen mit Namen, die nichts bedeuten - aber das ist ein anderes Thema. Das nennt man Programmierstil. Jeder hat seinen eigenen Stil. Aber ich sehe, dass sie sich langsam den Konzepten annähern, die ich versucht habe, in MT4 zu verwenden - das ist sehr ermutigend.

Der Artikel wurde entsprechend der technischen Aufgabenstellung geschrieben, wenn Sie die Schnittmenge überprüfen wollen, wer hindert Sie daran, dies zu tun.