Diskussion zum Artikel "Adaptive Handelssysteme und ihre Verwendung im MetaTrader 5 Client-Terminal" - Seite 3
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Liebe Forexistence,
>>Liebe
Sie haben Ihre Frage beantwortet :)
>> Ja, vielleicht habe ich meine Frage teilweise selbst beantwortet, und möchte nur eine Bestätigung oder andere Meinungen.
Sie haben Recht, es gibt zwei Möglichkeiten, wenn Sie die Handelsbedingungen ändern wollen, von einer Seite können wir neue Bedingungen zur Strategie CStrategyMA hinzufügen (aber wir werden die neue Strategie bekommen, die sich von der ursprünglichen unterscheidet), die andere Möglichkeit ist, eine neue Klasse zu erstellen (zum Beispiel CStrategyMA34) und zusätzliche Kauf/Verkaufsbedingungen dort hinzuzufügen.
Aber natürlich sollten Sie die Datei mit Ihrer neuen Strategie einschließen und diese neuen Strategien zur Funktion Expert_OnInit der Klasse CAdaptiveStrategy hinzufügen:
Der zweite Weg ist besser, Sie können viele Strategien und ihre Variationen hinzufügen.
Es ist nicht notwendig, die Instanzen der Klasse CStrategyMA zu entfernen (wenn Sie welche haben), wir werden nicht in ihre Sandboxen schauen, da ihre Ergebnisse schlecht sein werden.
Der Markt wird uns helfen, die beste Strategie in der Liste der Strategien zu bestimmen, die in m_all_strategies enthalten ist.
>> Ok, ich habe den Punkt so verstanden, wie ich ihn mir vorgestellt habe.
Aber die Frage, jetzt, ist eine andere. Ich arbeite daran, den EA zu "inputisieren", um mit Optimierungen arbeiten zu können.
Also im Beispiel meine ich Codestücke wie diese:
wo (Deklarationen) :
und wo Variablen:
RSItempoframe, RSIappprice, RSIvarA_root, RSIvarB_root
arbeiten zusammen mit
Meine Frage ist:
Ist es zweckmäßig, den Code zu ändern, um die Eingangsvariable auf der Ebene der Strategie-Klassendatei (Include-Datei, d.h. CStrategyRSI.mqh) zu haben, oder mit der richtigen Hiearachy/Verbindungen/Bäume auf der Ebene der anderen Klasse/Includes (CAdaptiveStrategy.mqh)?
Mit anderen Worten, um das Kernsystem der EA-Idee zu beeinflussen, mit dem Hinzufügen von einigen Eingabeparametern für Optimierungsprüfungen,
sollte ich etwas wie dieses tun: (Eingabevariablen in CAdaptiveStrategy.mqh)
/* ... */ class CStrategyRSI : public CSampleStrategy { protected: int m_handle; // handle of the Moving Average (iMA) indicator int m_period; // period of the Moving Average indicator double m_values[]; // array for storing the value of indicator int RSIvarA, RSIvarB; ENUM_TIMEFRAMES m_timeframe; ENUM_APPLIED_PRICE m_appprice; public: // initialization of strategy int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe, ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root); /* ... */ //set period for the RSI (was //set period for the moving average) m_period=period; m_timeframe=RSItempoframe; m_appprice=RSIappprice; RSIvarA=RSIvarA_root; RSIvarB=RSIvarB_root; /* ... */ //Handle des Indikators erstellen m_handle=iRSI(_Symbol,m_timeframe,m_period,m_appprice); /* ... */oder etwas anderes wie dieses: (Eingabevariablen in CSampleRSI.mqh)
Mit anderen Worten, die Eingabevariablen sollten in der Include-Datei der Strategie vor der Klassendeklaration verwendet werden (Beispiel2, nur das hier oben) oder die Eingabevariablen sollten
aus dem "for"-Zyklus in der CAdaptive-Strategie ableiten und alle Klasseninitialisierungen und Eingabeparameter berücksichtigen? (ich meine für dieses erste Beispiel (gerade über diesen Code oben) :)
public:
// Initialisierung der Strategie
int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
Wie anders wird sich der Kern des Systems auswirken, wenn Eingabevariablen in der Datei CStrategyRSI.mqh verwendet werden oder in der Datei CAdaptiveStrategy.mqh?
Ich nehme an, wenn es nur um das Testen geht, kann ich Eingabevariablen in der Datei CStrategyRSI.mqh verwenden, wenn ich stattdessen sowohl testen als auch
das Kernsystem der EA-Idee (das adaptive System und der Handelssimulator, der virtuelle Trader enthalten) beeinflussen möchte, sollte ich die
Eingangsvariablen nicht im Strategie-Include, sondern in der Adaptive-Include-Datei deklarieren, mit allen richtigen Verbindungen und Aufrufen
von Input/Output der Inizialisierung und Deklaration von Klassen/Funktionen?
Richtig?
Ich hoffe, Sie haben meinen Punkt verstanden.
Tnkx
....Aber die Frage, jetzt, ist eine andere. Ich arbeite daran, den EA zu "inputisieren", um mit Optimierungen arbeiten zu können....
Wenn Sie die besten Parameter der Strategie mit Hilfe der Optimierungsoption im Strategy Tester finden wollen, ist es besser, den EA mit einer bestimmten Strategie neu zu schreiben und damit zu spielen.
Das Konzept des adaptiven EA und seine Struktur erlauben es nicht, seine Parameter direkt im Strategy Tester zu optimieren, da es keine bestimmte Strategie und Parameter zum Optimieren gibt.
Wenn wir den adaptiven EA im Handel verwenden oder ihn im Strategy Tester testen, haben wir ein Handelssystem als eine Reihe von Signalen aus den verschiedenen Strategien. Mit anderen Worten, der Tester hat keinen Zugang zu den virtuellen Sandboxen, die wir erstellt haben, und er weiß nichts über sie.
Wenn Sie die Eingabeparameter verwenden möchten, um die Parameter der zu verwendenden Handelsstrategien zu konfigurieren, ist es besser, die Dateien zu verwenden, die es Ihnen ermöglichen, die Parameter und die Liste der Handelsstrategien zu konfigurieren.
Wenn Sie die besten Parameter der Strategie mithilfe der Optimierungsoption im Strategietester finden wollen, ist es besser, den EA mit einer bestimmten Strategie neu zu schreiben und damit zu spielen.
>> Ok, ich habe den Punkt verstanden. Es wird keine leichte Aufgabe sein...
Das Konzept des adaptiven EA und seine Struktur erlauben es nicht, seine Parameter direkt im Strategy Tester zu optimieren, da es keine bestimmte Strategie und Parameter zum Optimieren gibt.
>> Ja. Der EA ist idealisiert, um mit noch optimiertenParametern für die Strategien zu arbeiten. Was ich verstanden habe, ist, dass es verschiedene Strategien in der Basis verwendet, wie/welche der Markt reagiert (oder umgekehrt auf einem anderen Standpunkt..)
Wenn wir den adaptiven EA im Handel verwenden oder ihn im Strategy Tester testen, haben wir ein Handelssystem als eine Reihe von Signalen aus den verschiedenen Strategien. Mit anderen Worten, der Tester kann nicht auf die virtuellen Sandboxen zugreifen, die wir erstellt haben, und er weiß nichts über sie.
>> Ich habe dieses Konzept verstanden, aber nicht ganz.
Ich verstehe, dass es keinen Sinn macht, den Tester mit virtuellen Sandboxen interagieren zu lassen, keinen logischen Sinn.
Mein einziges Ziel war es, den EA zu modifizieren, um ihn mit einem Addon zu verwenden: das Ziel, diesen EA auch für die Optimierung der Parameter zu verwenden, ohne einen anderen EA neu zu schreiben, oder alle Strategien neu zu schreiben, oder jede Strategie einzeln zu testen. Meine Idee waren nur für "Komfort" auf die Möglichkeit, die Parameter zu optimieren, innerhalb der gleichen EA, aber diese Optimierung ist nicht beabsichtigt, mit dem virtuellen Handel / adaptive System zu arbeiten. Es geht nur darum, die Möglichkeit zu haben, die Parameter der Strategien zu optimieren, indem man das gleiche EA-Eingabefenster benutzt, und nicht darum, für jede Strategie einen anderen EA zu schreiben, die optimierten Parameter zu erhalten und sie als feste Werte in das adaptive Strategiesystem zu setzen. Ich hoffe, Sie haben meinen Standpunkt verstanden.
Wenn Sie die Eingabeparameter verwenden wollen, um die Parameter der zu verwendenden Handelsstrategien zu konfigurieren, ist es besser, die Dateien zu verwenden, die es Ihnen erlauben, die Parameter und die Liste der Handelsstrategien zu konfigurieren.
>> ( Wenn Sie die Eingabeparameter verwenden möchten, um die Parameter der zu verwendenden Handelsstrategien zu konfigurieren, ist es besser, die Dateien zu verwenden )
Meinen Sie die Verwendung von CStrategyXXX.mqh oder die Tatsache, dass Sie für jede Strategie einen eigenen EA schreiben, ihn optimieren und die Parameter als feste Werte in CStrategyXXX.mqh kopieren?
Are you talking about to use CStrategyXXX.mqh or the fact to write another individual EA for each strategy, optimize it, and copy the parameters as fixed values in CStrategyXXX.mqh?
Ich meine, dass der Strategie-Container entsprechend einiger Einstellungen des adaptiven EA gefüllt werden kann.
Zum Beispiel kann in der Adaptive_Expert.Expert_OnInit() eine Datei mit adaptiven EA-Einstellungen geladen werden:
MA;15
MA;25
Stoch;3;12;20
Stoch;3;15;30
Strategie1;Param1;Param2;
Strategie2;Param1;Param2;
Durch das Parsen jeder Zeile erkennt es die Strategie, die einbezogen werden muss, und fügt sie mit den entsprechend angegebenen Parametern hinzu. Dies ist eine der Möglichkeiten, den adaptiven EA ohne Kompilierung zu konfigurieren. Der Einfachheit halber habe ich es in diesem Artikel nicht berücksichtigt.
Ich verstehe, dass es keinen Sinn hat, den Tester mit virtuellen Sandboxen zu interagieren, keinen logischen Sinn zu handeln.
Mein einziges Ziel war es, den EA zu modifizieren, um ihn mit einem Addon zu verwenden: das Ziel, diesen EA auch für die Optimierung der Parameter zu verwenden, ohne einen anderen EA neu zu schreiben, oder alle Strategien neu zu schreiben, oder jede Strategie einzeln zu testen. Meine Idee waren nur für "Komfort" auf die Möglichkeit, die Parameter zu optimieren, innerhalb der gleichen EA, aber diese Optimierung ist nicht beabsichtigt, mit dem virtuellen Handel / adaptive System zu arbeiten. Es geht nur darum, die Möglichkeit zu haben, die Parameter der Strategien zu optimieren, indem man das gleiche EA-Eingabefenster benutzt, und nicht darum, für jede Strategie einen anderen EA zu schreiben, die optimierten Parameter zu erhalten und sie als feste Werte in das adaptive Strategiesystem zu setzen. Ich hoffe, Sie haben meinen Standpunkt verstanden.
Es gibt eine Möglichkeit, die Sandboxen zu betrachten. Das kann man indirekt mit dem Strategy Tester machen.
Nehmen wir an, wir wollen die Ergebnisse reproduzieren, die in Abb. 2 des Artikels dargestellt sind.
Wir benötigen die Debug-Version des adaptiven EA adaptive-systems-mql5-sources-debug-de.zip (sie meldet die Sandboxen). Dann kompilieren und öffnen Sie Adaptive_Expert_Sample im Strategy Tester, wählen Sie EURUSD H1 01.01.2010 bis 20.08.2010 und starten Sie den Test. Die Sandboxen und die Ergebnisse der adaptiven Strategie werden in tester\files\equity_res.txt gespeichert. Auf diese Weise ist es sehr einfach, alle Zahlen zu reproduzieren.
Die Analyse der virtuellen Handelsaktien/-bilanzen wird es Ihnen ermöglichen, die Optimierung zu vereinfachen.
Hallo zusammen,
Danke für diesen tollen Artikel, ich arbeite jetzt nur noch an einem adaptiven EA.
Allerdings bin ich mir nicht sicher, wo ich eine Trailing-Stop-Funktion in diese Art von EA einfügen kann.
Ich denke, eine solche Funktion könnte in den CAdaptiveStrategy.mqh Teil eingefügt werden.
Könnte mir jemand von euch dabei helfen? Vielleicht habt ihr ja schon eine solche Funktion entwickelt?
Herzlichen Dank im Voraus!
Mit freundlichen Grüßen,
Patrick
Ich kann die Ergebnisse aus dem Artikel nicht reproduzieren.
Ich habe die Quelldateien heruntergeladen, kompiliert und über denselben Zeitrahmen (EURUSD H1, 04/01/2010 - 20/08/2010) ausgeführt, und ich erhalte ein anderes Ergebnis.
Ich habe die Debug-Dateien verwendet und die virtuellen Handelsergebnisse überprüft... die virtuellen Aktiengrafiken sind identisch, aber die tatsächlichen Trades stimmen nicht überein.
Ohne eine Protokolldatei der tatsächlichen Trades ist es schwer herauszufinden, warum meine Trades nicht mit denen des Artikels übereinstimmen.
Haben Sie eine Idee, warum ich nicht übereinstimme?