Diskussion zum Artikel "Adaptive Handelssysteme und ihre Verwendung im MetaTrader 5 Client-Terminal" - Seite 2

 

Ist es ein Problem, die Dokumentation ins Englische zu übersetzen? Ich freue mich immer über gute Dokumentationen. Toller Artikel, vielen Dank für Ihren großartigen Beitrag.

 
Lugner:

Ist es ein Problem, die Dokumentation ins Englische zu übersetzen? Ich freue mich immer über gute Dokumentationen. Toller Artikel, danke für Ihren großartigen Beitrag.

Wir werden die beigefügte Dokumentation so bald wie möglich übersetzen.
 

Um mit Eingabeparametern (Variablen) zu arbeiten, ist es einfach, sie vor der Klassendeklaration zu deklarieren und

dem Aufrufpfad der Klasse (includes) folgen.

 
Lugner:

Ist es ein Problem, die Dokumentation ins Englische zu übersetzen? Ich freue mich immer über gute Dokumentationen. Toller Artikel, danke für Ihren großartigen Beitrag.

Danke für den Beitrag. Die Dokumentation ist übersetzt.
 
AM2:

In der Klasse CAdaptiveStrategy versuche ich, nur mit Stochastik zu handeln:

Ich habe den Rest deaktiviert, aber der Chart im Tester ist immer noch derselbe. Soweit ich verstehe, ist dies, wo Strategien verbunden und getrennt sind?

Ja, Strategien werden in der Funktion CAdaptiveStrategy::Expert_OnInit() verbunden. Der Einfachheit halber ist es besser, die Debug-Version des Expert Advisors zu verwenden, da sie die Speicherung der Ergebnisse in Dateien ermöglicht. Anhand der Datei direction_res.txt können Sie herausfinden, welche Signale von welchen Strategien im realen Handel verwendet wurden.

Bei der Verwendung einer adaptiven Strategie, die aus den angegebenen 5 Stochastiken besteht(EURUSD H1, Test von Anfang 2010 bis 1. September 2010), werden folgende Ergebnisse erzielt:




 

Dies ist wahrscheinlich der am meisten zum Nachdenken anregende Artikel, den ich seit sehr, sehr langer Zeit über programmatischen/robotischen Handel gelesen habe. Ein großes Dankeschön!

Aus dieser neuen Begeisterung heraus habe ich Eugenes Arbeit ein wenig angepasst. [Entschuldigung - zumindest werde auch ich Ideen teilen ;-) ]

Ich habe einen bestehenden EA (leider noch nicht objektorientiert) angepasst für:

1. Mehrere Zeitskalen: M1, M3, M5, M10, M20, M30, H1
2. Mehrere schnelle MA's: 3,5,7,9,11
3. Mehrere langsame MAs: 17, 27, 37, 47 usw. 97, 107, 117 usw.

Angehängt an einen M1-Tick, in einer foreach(period)-foreach(fast)-foreach(slow)-Schleife. Jeder Tick prüft, ob ein "virtueller" Handel erforderlich ist, und führt ihn gegebenenfalls aus, wobei ein logisches/virtuelles P/L-Gleichgewicht beibehalten wird.

Die Ergebnisse sind sehr überraschend und sehr positiv ...

Die Optimierung besteht nun darin, kurze Zeiträume (z. B. M1, M3) zu entfernen [da höhere Zeiträume schließlich "gewinnen"] und auch zu bestimmen, wie oft der "laufende P/L"-Zähler zurückgesetzt werden soll, um die Erkennung von "sich schnell verbessernden" Parametersätzen zu ermöglichen.

Ich muss außerdem eine Schnittstelle zu meinem bevorzugten Handels-EA einrichten (um ADX/RSI/MACD/RVI-Prüfungen usw. hinzuzufügen), damit er immer optimale, gewinnbringende schnelle/langsame MA-Paare verwendet und außerdem eine gute Markt-, Geld-, Positions- und Handelsmanagementlogik hat.

Nochmals vielen Dank,

T.

 

Quantum,

natürlich, wenn ich mehr Kauf- und Verkaufsbedingungen (oder Paare/Kombinationen von Kauf- und Verkaufsbedingungen) hinzufügen möchte, abgesehen von den noch begabten

if(buy_condition_1 && buy_condition_2) new_state=SIGNAL_OPEN_LONG;
if(sell_condition_1 && sell_condition_2) new_state=SIGNAL_OPEN_SHORT;

Beispiel in CStrategyMA.mqh,

um andere Gelegenheiten auszulösen für

new_state=SIGNAL_CLOSE_SHORT;
// und 
new_state=SIGNAL_CLOSE_LONG;

Es hat keinen logischen Sinn, diese Kombinationen in der Datei CStrategyMA.mqh hinzuzufügen, aber für jede neue Bedingung oder jedes neue Paar/Kombi

von Bedingungen sollte eine weitere Include/Klassendatei angelegt werden,

Ist das richtig?

Ich meine schnell, wenn ich zum Beispiel diese Bedingungen hinzufügen möchte:

// Kaufbedingung 3: MA neu 
   bool buy_condition_3=(m_values[0+5]>m_values[1+7]) && (m_values[1+5]>m_values[2+7]);
// Kaufbedingung 4: vorheriger OPEN-Kurs ist höher als MA
   bool buy_condition_4=(p_open>m_values[1]);

// Verkaufsbedingung 3: MA neu 
   bool sell_condition_3=(m_values[0+5]<m_values[1+7]) && (m_values[1+5]<m_values[2+7]);
// Kaufbedingung 4: vorheriger OPEN-Kurs ist niedriger als MA
   bool sell_condition_4=(p_open<m_values[1]);

und

  if(buy_condition_3  &&  buy_condition_4) new_state=SIGNAL_OPEN_LONG;
   if(sell_condition_3 && sell_condition_4) new_state=SIGNAL_OPEN_SHORT;

   if((GetSignalState()==SIGNAL_OPEN_SHORT) && (buy_condition_3 || buy_condition_4)) new_state=SIGNAL_CLOSE_SHORT;
   if((GetSignalState()==SIGNAL_OPEN_LONG) && (sell_condition_3 || sell_condition_4)) new_state=SIGNAL_CLOSE_LONG;

sie in Unterklassen innerhalb von CStrategyMA.mqh hinzugefügt werden können, ohne das Kernsystem des

adaptiven Systems zu beeinträchtigen, d. h. mit der Fortsetzung der korrekten Interaktion dieser Include-Datei CStrategyMA.mqh mit CAdaptiveStrategy.mqh

und CSampleStrategy.mqh, auch unter Berücksichtigung der neuen Bedingungen (3 und 4 des Beispiels) im logischen Kern

der EA-Idee?

Oder sollte ich für die Bedingungen 3 und 4 beispielsweise eine Datei CStrategyMA3und4.mqh umschreiben und hinzufügen?

Ist es möglich, diese Bedingungen innerhalb der gleichen CStrategyMA.mqh hinzuzufügen und alle korrekt zu arbeiten?

Vielleicht habe ich die Antwort selbst und ich bin ein bisschen dumm, aber ich möchte auch Ihre Meinung(en) fragen.

Danke

 
Automated-Trading:

Ja, Strategien werden in der Funktion CAdaptiveStrategy::Expert_OnInit() verbunden. Der Einfachheit halber ist es besser, die Debug-Version des Expert Advisors zu verwenden, in der die Ergebnisse in Dateien gespeichert werden. Anhand der Datei direction_res.txt können Sie herausfinden, welche Strategiesignale im realen Handel verwendet wurden.

Bei der Verwendung einer adaptiven Strategie, die aus den oben genannten 5 Stochastiken besteht (EURUSD H1, Test von Anfang 2010 bis zum 1. September 2010), werden folgende Ergebnisse erzielt:

Nach dem Chart zu urteilen, haben Sie wieder einfach ein optimiertes Modell, auch wenn sich ein Teil dieser Optimierung als automatisiert herausstellte, aber ein angepasstes Modell ist ein Modell, in dem es einen Berechnungsblock gibt, der den Ein- und Ausstieg während des Strategiebetriebs an den Markt anpasst, und die Parameter in der Initialisierung spielen überhaupt keine Rolle. Unter solchen Bedingungen wird nur die Equity-Linie im Verhältnis zur Balance-Linie ausgeglichen, denn wenn sich die Verteilung für die Schließung einer Position durch Gewinn verändert hat, wird ein solches System trotzdem neue Werte berechnen und eine neue Zone für den Gewinn bestimmen, und daher die Parameter für den Gewinn neu aufbauen, und die Gruppe der Equity-Aufträge wird erhalten bleiben:
Dateien:
 

Liebe Forexistence,

Sie haben Ihre Frage beantwortet :)

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:

#include <CStrategyMA3and4.mqh>

int CAdaptiveStrategy::Expert_OnInit()
{
.....
--- adding new strategies
   for(int i=0; i<10; i++)
     {
      CStrategyMA34 *t_StrategyMA34;
      t_StrategyMA34=new CStrategyMA34;
      if(t_StrategyMA34==NULL)
        {
         delete m_all_strategies;
         Print("Error of creation of object of the CStrategy3and4 type");
         return(-1);
        }
      int period=3+i*10;
      t_StrategyMA34.Initialization(period,true);
      t_StrategyMA34.SetStrategyInfo(_Symbol,"[MA34_"+IntegerToString(period)+"]",period,"Moving Averages with new conditions "+IntegerToString(period));
      m_all_strategies.Add(t_StrategyMA34);
     }
.....
}

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.

 
dasmen:
Nach dem Diagramm zu urteilen, haben Sie wieder nur ein optimiertes Modell, auch wenn ein Teil dieser Optimierung automatisiert wurde, aber ein angepasstes Modell ist ein Modell, in dem es einen Berechnungsblock gibt, der den Ein- und Ausstieg während des Betriebs der Strategie an den Markt anpasst, und die Parameter in der Initialisierung spielen überhaupt keine Rolle. Unter solchen Bedingungen wird nur die Equity-Linie im Verhältnis zur Balance-Linie ausgeglichen, denn wenn sich die Verteilung für die Schließung einer Position mit Gewinn geändert hat, wird ein solches System trotzdem neue Werte berechnen und eine neue Zone für den Gewinn bestimmen, und daher die Parameter für den Gewinn neu aufbauen, und die Gruppe der Equity-Orders wird erhalten bleiben:

Der Artikel verwendet das Konzept und die Anwendung der adaptiven Strategie wie in der Mathematik, nämlich als ein System zur Umsetzung von Managemententscheidungen.