Diskussion zum Artikel "Lernen Sie, wie Sie ein Handelssystem mit Hilfe von ADX entwickeln" - Seite 2

 
Hallo. Ich habe gerade angefangen, über adx und dmi für paar Monate zu lernen. und ich wünschte, es gibt eine ea für diese. da dies ist lagging Indikator. vielleicht Zeitrahmen M15 ist besser geeignet. können Sie eine machen? wo kann ich Sie für Begriff und conditon kontaktieren? danke
 

Hallo Mohamed,

anstelle von:

   double ADXArray0[];
   double ADXArray1[];
...
   double ADXValue=NormalizeDouble(ADXArray0[0],2);
   double ADXValueLast=NormalizeDouble(ADXArray1[1],2);

Wäre es nicht genug?:

      double ADXArray[];
...
      double ADXValue=NormalizeDouble(ADXArray[0],2);
      double ADXValueLast=NormalizeDouble(ADXArray[1],2);

Mit freundlichen Grüßen,

Juan Luis

Learn how to design a trading system by ADX
Learn how to design a trading system by ADX
  • www.mql5.com
In this article, we will continue our series about designing a trading system using the most popular indicators and we will talk about the average directional index (ADX) indicator. We will learn this indicator in detail to understand it well and we will learn how we to use it through a simple strategy. By learning something deeply we can get more insights and we can use it better.
 
Juan Luis De Frutos Blanco #:

Hallo Mohamed,

anstelle von:

Wäre es nicht genug, ..:

Mit freundlichen Grüßen,

Juan Luis

Hallo Juan,

Du hast recht, es kann auch so sein, wie Du es erwähnt hast.


Mit freundlichen Grüßen,

 
Guter Artikel: eines der Standbeine des EA, den ich im Moment aufbaue.
Danke Mohamed. 🏅🏅🏅

 
Sie haben große article.I Liebe zu verwenden ADX für meine scalping.I haben Idee, dass, wenn ADX-Linie über 25 und dmi plus Kreuzung bis dmi minus, die Farbe der Kerze wurde grüne Farbe zeigen, dass der Trend ist bullish und vice versa.I'm trying to code aber nicht glücklich, so weit.
 
1
 

Ausgezeichneter Artikel! Allerdings habe ich einen Fehler in einem der Artikel entdeckt, und ich habe auch eine Möglichkeit für einen Tipp entdeckt. Der Fehler liegt bei den CopyBuffers und der Verwendung des gleichen Pufferindexes für das gleiche Handle. Ein Indikator-Handle in MQL5 kann nur auf einen bestimmten Puffer zugreifen, wenn der entsprechende eindeutige Pufferindex in einem Aufruf der CopyBuffer()-Funktion verwendet wird.


Wenn Sie also eingeben:

CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,0,0,2,ADXArray1);
CopyBuffer(ADXDef,1,0,3,PDIArray);
CopyBuffer(ADXDef,2,0,3,NDIArray);


Es sollte sein:

CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,1,0,2,ADXArray1);
CopyBuffer(ADXDef,2,0,3,PDIArray);
CopyBuffer(ADXDef,3,0,3,NDIArray);


Die wichtigsten Punkte zu Indikator-Handles und Puffern sind:
  • Einzigartige Indizierung: Jeder Indikator-Handle verwaltet eine Reihe von internen Puffern, die jeweils durch einen eindeutigen Index (beginnend bei 0) identifiziert werden.
  • Ein Handle, ein Index: Wenn Sie CopyBuffer(handle, buffer_index, ...) verwenden , geben Sie an, auswelchem einzelnen Puffer , der mit diesem Handle verbunden ist , Sie Daten kopieren wollen.
  • Mehrere Anrufe: Wenn ein Indikator über mehrere Datenpuffer verfügt (z. B. ein oberes und ein unteres Band eines Kanals), müssen Sie CopyBuffer() mehrfach aufrufen, wobei Sie dasselbe Handle verwenden, aber mit unterschiedlichen Pufferindizes (z. B. Index 0 für das obere Band, Index 1 für das untere Band).
Sie können nicht zwei separate CopyBuffer-Aufrufe für denselben Pufferindex innerhalb desselben Handles haben, die irgendwie auf unterschiedliche Daten verweisen, da der Index der eindeutige Bezeichner für die Datenreihe innerhalb dieses Handles ist.


Ich vermute, dass dies ein Tippfehler war, aber ich dachte, ich sollte darauf hinweisen, nur für den Fall, dass jemand anderes verwirrt ist. Es war im vollständigen Code korrekt, nur nicht im Beispiel.


Nun zu dem kleinen Tipp...

Keine große Sache, aber es würde Ihnen definitiv einige unnötige Tastenanschläge ersparen, wenn Sie schreiben:


 Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
   "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
   "\n""-DI Value is ", NDIValue);


Es gibt ein paar zusätzliche Anführungszeichen, die Sie nicht brauchen. Zur Vereinfachung könnten Sie dies tun:


 Comment("Simple ADX System - Signal is ",signal,"\nADX Value is ", ADXValue,
   "\nADX Value Last is ", ADXValueLast, "\n+DI Value is ", PDIValue,
   "\n-DI Value is ", NDIValue);


Abgesehen davon fand ich den Artikel sehr informativ und ausführlich.


 

Das Einzige, was ich hier noch hinzufügen würde, ist die Fehlerbehandlung in OnInit() und DeOnit(), und die Änderung des Variablennamens von ADXDef in h_ADXDef (oder handle_ADXDef), damit es beim Lesen des Codes klarer ist und es einfach ein besserer Bezeichner ist, der seinen spezifischen Zweck zeigt.

In OnInit():


  if(h_ADXDef == INVALID_HANDLE)
   {
      Print("Error creating indicator handles: ", GetLastError());
      return(INIT_FAILED);
   }


Und in DeOninit():


if(h_ADXDef != INVALID_HANDLE) IndicatorRelease(h_ADXDef);