Diskussion zum Artikel "Techniken des MQL5-Assistenten, die Sie kennen sollten (Teil 02): Kohonen-Karten"
Eine Frage bleibt, wie können wir verstehen, warum der IN_RADIUS-Wert genommen wird, um die Daten zu normalisieren:
double _dimension=fabs(IN_RADIUS)*((Low(StartIndex()+w+Index)-Low(StartIndex()+w+Index+1))-(High(StartIndex()+w+Index)-High(StartIndex()+w+Index+1))))/fmax(m_symbol.Punkt(),fmax(Hoch(StartIndex()+w+Index),Hoch(StartIndex()+w+Index+1))-fmin(Tief(StartIndex()+w+Index),Tief(StartIndex()+w+Index+1))));
weil der Clusterradius eine Konstante ist und einen positiven Wert hat.
Vielleicht ist dies ein Fehler und der gesamte Zähler sollte modulo genommen werden?
Ich habe den Expert Advisor zusammengestellt, aber zwei Parameter Stop Loss und Take Profit sind nicht die gleichen wie auf dem Screenshot im Artikel:

Das Ergebnis ist, dass kein einziger Handel...
Mache ich etwas falsch?
Und wie kann ich einen anderen Indikator anstelle von ATR verwenden, zum Beispiel MACD?
Ich habe den Expert Advisor erstellt, aber die beiden Parameter Stop Loss und Take Profit sind nicht dieselben wie auf dem Screenshot im Artikel:
Als Ergebnis, nicht ein einziger Handel...
Mache ich etwas falsch?
Und wie kann ich einen anderen Indikator anstelle von ATR verwenden, zum Beispiel MACD?
Sie können es so machen:
bool CSignalMACD::InitMACD(CIndicators *indicators) { //--- Objekt zur Sammlung hinzufügen if(!indicators.Add(GetPointer(m_MACD))) { printf(__FUNCTION__+": error adding object"); return(false); } //--- Objekt initialisieren if(!m_MACD.Create(m_symbol.Name(),m_period,m_period_fast,m_period_slow,m_period_signal,m_applied)) { printf(__FUNCTION__+": error initializing object"); return(false); } //--- ok return(true); }
auch im geschützten Bereich:
protected: CiMACD m_MACD; // objekt-oszillator //--- angepasste Parameter int m_period_fast; // der Parameter "Periode des schnellen EMA" des Oszillators int m_period_slow; // der Parameter "Periode des langsamen EMA" des Oszillators int m_period_signal; // der Parameter "Mittelungszeit der Differenz" des Oszillators ENUM_APPLIED_PRICE m_applied; // der Parameter "Preisreihen" des Oszillators
und im öffentlichen Bereich:
void PeriodFast(int value) { m_period_fast=value; } void PeriodSlow(int value) { m_period_slow=value; } void PeriodSignal(int value) { m_period_signal=value; } void Applied(ENUM_APPLIED_PRICE value) { m_applied=value;
und wieder im geschützten Bereich:
protected: //--- Methode zur Initialisierung des Oszillators bool InitMACD(CIndicators *indicators); //--- Methoden zum Abrufen von Daten double Main(int ind) { return(m_MACD.Main(ind)); } double Signal(int ind) { return(m_MACD.Signal(ind)); }
und schließlich:
bool CSignalKM::OpenLongParams(double &price,double &sl,double &tp,datetime &expiration) { CExpertSignal *general=(m_general!=-1) ? m_filters.At(m_general) : NULL; //--- if(general==NULL) { m_MACD.Refresh(-1); //--- wenn nicht ausdrücklich ein Basispreis angegeben wird, wird der aktuelle Marktpreis genommen double base_price=(m_base_price==0.0) ? m_symbol.Ask() : m_base_price; //--- Preisüberladung, die den Einstiegspreis auf Basis des MACD festlegt price =base_price; double _range=m_MACD.Main(StartIndex())+((m_symbol.StopsLevel()+m_symbol.FreezeLevel())*m_symbol.Point()); //
Aber was soll das bringen?
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.

Neuer Artikel Techniken des MQL5-Assistenten, die Sie kennen sollten (Teil 02): Kohonen-Karten :
Der Händler von heute ist ein Philomath, der fast immer (entweder bewusst oder unbewusst...) nach neuen Ideen sucht, sie ausprobiert, sich entscheidet, sie zu modifizieren oder zu verwerfen; ein explorativer Prozess, der einiges an Sorgfalt kosten sollte. Dies legt eindeutig einen hohen Stellenwert auf die Zeit des Händlers und die Notwendigkeit, Fehler zu vermeiden. Diese Artikelserie wird vorschlagen, dass der MQL5-Assistent eine Hauptstütze für Händler sein sollte. Warum? Denn der Händler spart nicht nur Zeit, indem er seine neuen Ideen mit dem MQL5-Assistenten zusammenstellt, und reduziert Fehler durch doppelte Codierung erheblich. Er ist letztendlich so eingestellt, dass er seine Energie auf die wenigen kritischen Bereiche seiner Handelsphilosophie konzentriert.
Ein häufiges Missverständnis bei diesen Karten ist, dass die Funktordaten ein Bild oder zweidimensional sein sollten. Bilder wie das folgende werden oft als repräsentativ für die Kohonen-Karten angesehen.
Es ist zwar nicht falsch, aber ich möchte betonen, dass der Funktor eine einzige Dimension haben kann und vielleicht auch sollte (für Händler). Anstatt also unsere hochdimensionalen Daten auf eine 2D-Karte zu reduzieren, werden wir sie auf eine einzelne Linie abbilden. Kohonen-Karten sind per Definition dazu gedacht, die Dimensionalität zu reduzieren, daher möchte ich in diesem Artikel einen Schritt weiter gehen. Die Kohonen-Karte unterscheidet sich von normalen neuronalen Netzen sowohl durch die Anzahl der Schichten als auch durch den zugrunde liegenden Algorithmus. Es handelt sich um eine einschichtige (in der Regel lineare 2D-Gitter, wie bereits erwähnt) Menge von Neuronen anstelle mehrerer Schichten. Alle Neuronen dieser Schicht, die wir als Funktor bezeichnen, sind mit dem Feed verbunden, aber nicht mit sich selbst. Das bedeutet, dass die Neuronen nicht direkt von den Gewichten der anderen Neuronen beeinflusst werden, sondern nur in Bezug auf die Feed-Daten aktualisiert werden. Die Funktordatenschicht ist häufig eine "Landkarte", die sich bei jeder Trainingsiteration in Abhängigkeit von den eingespeisten Daten neu organisiert. So hat jedes Neuron nach dem Training eine gewichtsangepasste Dimension in der Funktorschicht, die es ermöglicht, den euklidischen Abstand zwischen zwei beliebigen Neuronen zu berechnen.
Autor: Stephen Njuki