Fehler, Irrtümer, Fragen - Seite 2174

 

Die Gewinnwährung (SYMBOL_CURRENCY_PROFIT) des benutzerdefinierten Symbols wird nach einem Neustart des Terminals zurückgesetzt. Aus diesem Grund ist der TickValue oft Null, was im Strategy Tester zu Geschäften mit Null Gewinn führt. Jedes Mal müssen wir den Wert der Gewinnwährung auf einen normalen Wert zurücksetzen.


Wiedergabe

void OnStart()
{
  const string Name = "EXAMPL";
  
  if (CustomSymbolCreate(Name))
    CustomSymbolSetString(Name, SYMBOL_CURRENCY_PROFIT, "JPY");

  Print(SymbolInfoString(Name, SYMBOL_CURRENCY_PROFIT)); // "JPY" - до перезагрузки Терминала, "MPL" - после.
}
 
Bei benutzerdefinierten Symbolen im Tester erhalten Sie Graals aufgrund von positivem Slippage von Limit-Orders. Bitte deaktivieren Sie den Schlupf von Limitaufträgen für benutzerdefinierte Symbole oder passen Sie den Schlupf (und die Provision) an.
 

Keine Option zur Deaktivierung des Core1-Agenten.

Keine Möglichkeit, einen einzelnen Lauf durchzuführen

2018.03.27 09:18:19.647 Core 1  agent process started
2018.03.27 09:18:28.380 Core 1  connecting to 127.0.0.1:3000
2018.03.27 09:18:45.562 Core 1  tester agent authorization error
2018.03.27 09:18:45.564 Core 1  connection closed

Ein Neustart des Terminals hilft nicht.


HH So sieht die Optimierung in nur zwei Durchgängen aus(Animation)

Bei den Agenten treten ständig Autorisierungsfehler auf, bis normale Verbindungen hergestellt werden. Und das bei nur zwei Durchgängen!

 

Die Liste der verfügbaren Symbole, aus der man wählen kann, ist sehr dürftig.

 
fxsaber:

Es gibt keine Möglichkeit, Core1-Agent zu deaktivieren.


Ich möchte auch den ersten Kern deaktivieren.
 

Darüber hinaus

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Kirill Belousov, 2018.03.26 12:30

Die Namen sind unterschiedlich und die Löschung erfolgt unter Berücksichtigung dieser Tatsache.


RETTE DAS:

_______________________________________

Beim Löschen des ersten Indikators in der Unterfensterliste wird das Unterfenster komplett von Objekten befreit (auch manuell gezeichnete Linien, Pfeile, Textbeschriftungen werden gelöscht)

Vervielfältigt:

1. im Konstruktor einen leeren Indikator für ein separates Fenster erstellen (oder einen beliebigen vorhandenen Indikator, z. B. MACD usw., aus dem Standardlieferumfang übernehmen)

2. 5 Indikatoren/Kopien zu einem Teilfenster hinzufügen

3. Manuelles Zeichnen einer vertikalen Linie in einem Teilfenster (oder einem beliebigen Objekt).

Wenn Sie einen anderen als den ersten Indikator aus der Indikatorliste entfernen, bleibt die Linie erhalten, aber wenn der erste Indikator in der Liste ist, werden alle Unterfensterobjekte gelöscht (gezeichnete vertikale Linie).

Wenn Sie nach dem Löschen der ersten Linie erneut eine Linie ziehen, wird diese beim Löschen der ersten der verbleibenden Linien wieder gelöscht. Wenn nicht das erste Fenster gelöscht wird, werden die Objekte in den Unterfenstern nicht gelöscht.


Wo steht das in der Dokumentation? Was macht ihn so besonders - den ersten Indikator in der Liste der Unterfenster?

Es sieht so aus, als ob eine vollständige Neuinitialisierung des Teilfensters erfolgt.


Reproduziert von MT4/MT5.

Der Unterschied besteht darin, dass im MT5 die Namen der Indikator-Dateien anders lauten sollten. In MT4 können Sie dieselbe Indikatordatei in ein Unterfenster einfügen, ohne den Dateinamen zu ändern.


Problem mit dem Indikator des ersten Teilfensters

Alle Objekte werden in einem Unterfenster gelöscht, wenn der Indikator zum Zeitpunkt seiner Löschung der erste in der Liste der Indikatoren eines Unterfensters war

Wenn der erste Indikator aus der Liste der Indikatoren in einem Unterfenster gelöscht wird, werden alle Unterfensterobjekte VOR OnDeinit() entfernt.

void OnDeinit(const int reason)
  {
  int window=ChartWindowFind();
  if(window==2)
  {
  int count=0;
  for(int i=ObjectsTotal()-1;i>=0;i--)
    {
     if(ObjectFind(ObjectName(i))==window) count++;
    }
  Alert("Осталось объектов в подокне #2 - ",count," _StopFlag=",_StopFlag," REASON=",reason);
  }
//....
}

Löschen wir nicht den ersten, sondern den ersten in der Liste

Alle Objekte werden gelöscht

Alle Objekte werden gelöscht, unabhängig davon, ob es sich um Kennzeichen oder manuell angelegte Objekte in einem Teilfenster handelt.
 

Ausführen des EA im Modus "Alle Ticks" auf MQ-Demo

void OnTick()
{
  static int i = 0;
  
  if (i < 2)
  {
    MqlTick Tick;
    
    if (SymbolInfoTick(_Symbol, Tick))
      Print(Tick.time_msc);
      
    i++;
  }
  else
    ExpertRemove();
}


Ergebnis

Si-6.18,M1 (MetaQuotes-Demo): every tick generating
Si-6.18,M1: testing of Experts\fxsaber\LimitsSlippage.ex5 from 2018.03.25 00:00 to 2018.03.27 00:00 started
2018.03.26 10:00:00   1522058400378
2018.03.26 10:00:00   1522058400013
2018.03.26 10:00:00   ExpertRemove() function called

Die Zeit des ersten erzeugten Ticks ist länger als die des zweiten - Fehler.

 
Der Optimierer geht in eine Endlosschleife mit folgenden (alle drei Durchläufe wurden gestartet) sich wiederholenden Meldungen
2018.03.27 23:13:54.520 Core 2  TESTER_EURUSD: history for 2017 year synchronized
2018.03.27 23:13:54.578 Core 1  pass 0 tested with error "history processing error (314 TESTER_EURUSD)" in 0:00:00.125
2018.03.27 23:13:54.580 Core 2  pass 1 tested with error "history processing error (314 TESTER_EURUSD)" in 0:00:00.124
2018.03.27 23:13:54.580 Core 3  pass 2 tested with error "history processing error (314 TESTER_EURUSD)" in 0:00:00.124
2018.03.27 23:13:54.600 Core 5  common synchronization completed


ZS-Wiedergabe


Kopieren Sie den Inhalt des angehängten Archivs in die Sandbox.

Skript auf MQ-Demo ausführen

#include <fxsaber\ThirdPartyTicks\ThirdPartyTicks.mqh> // https://www.mql5.com/ru/code/20225

void OnStart()
{
  THIRDPARTYTICKS ThirdPartyTicks; // Подключились к локальному архиву котировок

  const string Name = ThirdPartyTicks["EURGBP"].ToCustomSymbol(true); // Создали кастомный символ на основе локального архива  
  
  if (Name != NULL)
  {
    const SYMBOL Symb("TESTER"); // Создали символ
  
    if (Symb.IsExist()) // Если символ создан
    {
      Symb.CloneProperties("Si-6.18");      
      Symb.SetProperty(SYMBOL_DIGITS, 5);
      
      Symb.CloneHistory(Name);
  
      if (Symb.On()) // Включили в Обзор рынка
        ChartOpen(Symb.Name, PERIOD_CURRENT); // Открыли график нового символа
    }   
  }
}


Es wird ein eigenes TESTER-Symbol erstellt. Wählen Sie es im Tester aus. Einstellung: Optimierung langsam, alle Ticks.

Diesen EA hinzufügen

input int Range = 0;

void OnTick() {}


Registerkarte Optionen


Starten Sie die Optimierung und beobachten Sie diese Endlosschleife


Dateien:
Archive.zip  1729 kb
 

Im Tester werden Remote-Aufträge, die auf "kein Geld" lauten, mit einer Schließzeit von Null versehen.

Dies ist natürlich ein Fehler.

 

Bin ich der Einzige, bei dem sich ein Bild aus diesem Beitrag nicht in einem neuen Popup öffnet? Mozilla FireFox 59.0.2 (64bit)

Das heißt, das Bild im Zitat lässt sich nicht öffnen.