Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1401

 
freemovpalm #:

Hallo alle, können Sie mir bitte helfen, Martingale zu EA hinzufügen, ich brauche nach dem Auslösen stoploss (immer Verlust) und auf neues Signal (Eule funktioniert durch Indikator) mit erhöhten Lot (multipliziert mit coeff) eingeben. Habe ich es richtig, zuerst muss ich das Ereignis zu schreiben - Stoploop-Ereignis (ich weiß nicht, wo und wie), und tun die Mathematik mit viel dort (ich brauche zusätzliche Variablen)?

Fügen Sie zum Beispiel eine Variable hinzu, die die Anzahl der verlorenen Geschäfte in einer Reihe zählt. Bei jedem Verlustgeschäft - um 1 erhöht, bei jedem Gewinn - auf 0 zurückgesetzt.

Und von diesem Zähler setzen Los (zum Beispiel - Multiplikation der Mindestmenge mit 2 im Verhältnis zu diesem Zähler).

Aber Martingale macht eine Verluststrategie nicht profitabel.

 
JRandomTrader #:

Fügen Sie zum Beispiel eine Variable hinzu, die die Anzahl der verlorenen Geschäfte in einer Reihe zählt. Bei jedem Verlustgeschäft wird er um 1 erhöht, bei jedem Gewinn wird er auf 0 zurückgesetzt.

Und von diesem Zähler ausgehend die Menge festlegen (z. B. die Mindestmenge mit 2 multiplizieren, um diesen Zähler zu erreichen).

Aber Martingale macht eine Verluststrategie nicht profitabel.

Danke, die Strategie hat einen Durchschnitt von 2 und ein Maximum von 4 Verlusten in einer Reihe, das ist, warum ich eine martin wollte. Hat jemand ein Beispiel für einen solchen Zähler oder eine Eule, der/die nach dem gleichen Prinzip funktioniert, wie ich es beschrieben habe? Ich könnte die erforderlichen Zeilen einfach von dort kopieren.

 
string Button_TP = "Panel.String1.Button3";

Print(ObjectGetInteger(0, "Panel.String1.Button3", OBJPROP_STATE));
Print(ObjectGetInteger(0, Button_TP, OBJPROP_STATE));

Können Sie mir sagen, warum die erste Option funktioniert und die zweite nicht? Kann der Name der Schaltfläche nicht auf eine Variable gesetzt werden?

 

Wie kann der Prüfer das Bestehen mehrerer Paare automatisieren?
Ich muss zum Beispiel 20 Paare durchgehen. Jetzt starte ich das Prüfgerät für jedes Paar neu.
Ich kann nicht herausfinden, wie ich eine Variable erstellen kann.

Gibt es Lösungen?

 
Evgeny Dyuka #:

Wie kann der Prüfer das Bestehen mehrerer Paare automatisieren?
Ich muss zum Beispiel 20 Paare durchgehen. Jetzt starte ich das Prüfgerät für jedes Paar neu.
Ich kann nicht herausfinden, wie man eine Variable erstellt.

Haben Sie eine Lösung?

Forum für Handel, automatisierte Handelssysteme und Strategietests

Wie erhalte ich ausgewählte Paare für die Marktanalyse in Strategy Tester?

Alexey Viktorov, 2022.04.14 17:11

Sie können das MarketWatch-Terminal nicht im Strategy Tester verwenden. Der Tester generiert seinen eigenenMarketWatch aus den Symbolen, deren Eigenschaften vom Programm angefordert wurden. Um einenMarketWatch zu erstellen, müssen Sie daher eine beliebige Eigenschaft des gewünschten Symbols anfordern.

sinput  string  Symb  = "GBPUSD,GBPAUD,GBPCAD,GBPJPY,EURUSD,EURGBP,EURAUD,EURCAD,EURJPY,AUDUSD,AUDNZD,AUDCAD,AUDJPY,NZDUSD,NZDCAD,USDCAD,USDJPY"
string s_arr[];
int OnInit()
{
  int i = 0, symbPos = 0;
  if(StringSplit(Symb, ',', s_arr) <= 0)
   {
    Print(__FUNCTION__ + " Error converting !");
    return(INIT_FAILED);
   }
  while(symbPos >= 0  && !IsStopped())
   {
    if(!SymbolInfoInteger(s_arr[i], SYMBOL_SELECT) || !SymbolInfoInteger(s_arr[i], SYMBOL_VISIBLE))
      SymbolSelect(s_arr[i], true);
    double price = SymbolInfoDouble(s_arr[i], SYMBOL_ASK);
    i++;
   }
 return(INIT_SUCCEEDED);
}/*******************************************************************/

Ich hoffe, ich habe keine Fehler gemacht, als ich den Code aus meinem Programm gezogen habe...


 
Evgeny Dyuka #:

Wie kann der Prüfer das Bestehen mehrerer Paare automatisieren?
Ich muss zum Beispiel 20 Paare durchgehen. Jetzt starte ich das Prüfgerät für jedes Paar neu.
Ich kann nicht herausfinden, wie ich eine Variable erstellen kann.

Gibt es Lösungen?

Wenn wir ein Paar durch einen EA-Parameter definieren, der sich während der Optimierung ändern kann, dann führen wir die Optimierung einfach anhand dieses Parameters durch, um einen Durchlauf durch mehrere Paare zu starten.
Dieser Parameter kann nicht vom Typ 'string' sein, aber er kann vom Typ 'int' oder 'enum' sein.
Mit diesem Parameter weisen wir bei der Initialisierung des EA einer anderen String-Variablen den Namen des gewünschten Symbols zu, der dem Wert des Parameters entspricht.
Im EA-Code müssen wir überall, wo Symbol() oder _Symbol verwendet wird, diese durch unsere eigene Variable mit dem Namen des Paares ersetzen.

Haben Sie das Prinzip verstanden oder brauchen Sie ein Codebeispiel?

 
Evgeny Dyuka #:

Wie kann der Prüfer das Bestehen mehrerer Paare automatisieren?
Ich muss zum Beispiel 20 Paare durchgehen. Jetzt starte ich das Prüfgerät für jedes Paar neu.
Ich kann nicht herausfinden, wie ich eine Variable erstellen kann.

Gibt es Lösungen?

SaberMultitester ist die Lösung, Sie können dort Pässe durch Werkzeuge und Einstellungen einrichten.

Библиотеки: MultiTester
Библиотеки: MultiTester
  • 2019.07.19
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: MultiTester
 
Yuriy Bykov #:

Wenn ein Paar durch einen EA-Parameter definiert ist, der während der Optimierung geändert werden kann, dann führen wir die Optimierung einfach mit diesem Parameter durch, um einen Multipaar-Durchlauf zu starten.
Dieser Parameter kann nicht vom Typ 'string' sein, aber er kann vom Typ 'int' oder 'enum' sein.
Mit diesem Parameter weisen wir bei der Initialisierung des EA einer anderen String-Variablen den Namen des gewünschten Symbols zu, der dem Wert des Parameters entspricht.
Im EA-Code müssen wir überall, wo Symbol() oder _Symbol verwendet wird, diese durch unsere eigene Variable mit dem Namen des Paares ersetzen.

Haben Sie das Prinzip verstanden oder brauchen Sie ein Codebeispiel?

Großartig! Es kam mir nicht in den Sinn, den Optimierer zu benutzen.

 
Yuriy Bykov #:

Wenn ein Paar durch einen EA-Parameter definiert ist, der während der Optimierung geändert werden kann, dann führen wir die Optimierung einfach mit diesem Parameter durch, um einen Multi-Paar-Durchlauf zu starten.
Dieser Parameter kann nicht vom Typ 'string' sein, aber er kann vom Typ 'int' oder 'enum' sein.
Mit diesem Parameter weisen wir bei der Initialisierung des EA einer anderen String-Variablen den Namen des gewünschten Symbols zu, der dem Wert des Parameters entspricht.
Im EA-Code müssen wir überall, wo Symbol() oder _Symbol verwendet wird, diese durch unsere eigene Variable mit dem Namen des Paares ersetzen.

Ist das Prinzip klar, oder brauchen Sie einen Beispielcode?

Was ist mit OnTick()?
Ich kann mein eigenes Symbol überall ersetzen, aberOnTick() wird immer vondem Symbol genommen, auf dem der Tester läuft.
Aus der Hilfe: "
Das Ereignis OnTick() wird erzeugt. wenn ein neuer Tick für ein Symbol empfangen wird, an dessen Chart der Expert Advisor angehängt ist".

Kann es hier keinen Konflikt geben? Zum Beispiel wurde der Devisenhandel über das Wochenende gestoppt, Kryptowährungen jedoch nicht.

 
Ja, das ist ein Problem. Ich habe nicht mit Kryptowährungen gearbeitet, daher habe ich mir keine Gedanken über die Unterschiede bei den zulässigen Handelszeiten gemacht. Es ist jedoch möglich, eine Kryptowährung als Arbeitssymbol in den Tester aufzunehmen und die Prüfung, ob der Handel im Expert Advisor erlaubt ist, hinzuzufügen (oder beizubehalten). Danach besteht das Hauptproblem in der Inkonsistenz der Tick-Ankunftszeiten für verschiedene Instrumente. Hier können wir versuchen, das Instrument mit mehr Ticks zu wählen, um den Fehler der Testergebnisse zu reduzieren. In Multicurrency Expert Advisors, die mit einem Chart verbunden sind, ist die Situation die gleiche - OnTick() wird nur für das Hauptsymbol ausgelöst. Um das Ereignis eines neuen Balkens für verschiedene Symbole korrekt zu verfolgen, verwende ich in diesem Fall meine Bibliothek New Bar Event.
New Bar Event
New Bar Event
  • www.mql5.com
Позволяет определить наступление события нового бара в мультивалютном советнике. В вызове OnTick() можно многократно проверять, наступило ли на этом тике событие для нужного инструмента (symbol) и периода графика (timeframe).
Grund der Beschwerde: