Fehler, Irrtümer, Fragen - Seite 1564

 
Anton Zverev:

iCustom+IndicatorRelease. Es ist wahrscheinlich keine Krückenlösung, komplexe Gebilde auf der Stelle zu produzieren. Über Geschmäcker lässt sich nicht streiten. Die Frage ist, inwieweit eine solche Krücke auf Mehrfachagenten zur Verschwendung von Ressourcen führen wird.

Nun, in der 5. Klasse ist fast alles cool. Die Geschwindigkeit ist erstklassig. Und hier, entschuldigen Sie, etwas total Haariges, wo man es nicht erwarten würde.

Warum ein Freigabeindikator?

Lassen Sie ihn bei jedem neuen Tick ein Chart-Ereignis an den zu testenden Experten senden.

Erstellung eines Indikators bei jedem Tick, gefolgt von einer Freigabe - hier werden Ressourcen verschwendet

 
Anton Zverev:

Vasiliy erwähnte, dass der Mechanismus bei FORTS (nicht in der Testversion) über Abonnement und BookEvent funktioniert. Damit entfällt die Notwendigkeit, den EA überhaupt mit einem Chart zu verknüpfen.

BookEvent ist in der Testversion noch nicht implementiert
 
Slawa:

Warum eine Freigabe für einen Indikator?

Lassen Sie ihn bei jedem neuen Tick ein Chart-Ereignis an den zu testenden Experten senden.

Bei jedem Tickeinen Indikator zu erstellen und ihn dann freizugeben - das ist eine Verschwendung von Ressourcen

Ich kann mich nicht sehr gut ausdrücken, deshalb verstehst du mich nicht. Klicken Sie hier für Details https://www.mql5.com/ru/code/280

Und wie viele Ressourcen verbraucht diese Lösung, um eine so einfache Sache umzusetzen!

Мультивалютный обработчик событий OnTick(string symbol)
Мультивалютный обработчик событий OnTick(string symbol)
  • Stimmen: 27
  • 2011.02.01
  • Konstantin Gruzdev
  • www.mql5.com
Упрощенная реализация полноценного мультивалютного режима в MetaTrader 5. Нет необходимости вникать в то, как это работает. Минимум простых настроек. Максимум удобства для пользователей. Работает в тестере.
 
Slawa:
BookEvent ist im Tester noch nicht implementiert
Was nützt es also dem Tester, wenn es auf dem Devisenmarkt gar nicht funktioniert? Vasiliy hat oben einen Vorschlag gemacht, den ich für sinnvoll halte.
 
Slawa:

Und zwar nicht eine Sekunde lang, sondern eine knappe Stunde lang. Mit obligatorischer Überprüfung von IsStopped()

Schlaf ist übrigens Pflicht. Andernfalls bleibt das Prüfgerät hängen. Und die Systemressourcen werden während des normalen Betriebs des Expert Advisors stark beansprucht.

Testen Sie Ihre Variante gar nicht erst

2016.04.26 19:39:05     Core 1  2016.04.25 00:16:48   infinite Sleep loop detected while testing
2016.04.26 19:39:05     Core 1  EURUSD : 2016.04.25 00:00 - 2016.04.26 00:00  1439 minute bars absent in total while real ticks present
2016.04.26 19:39:05     Core 1  EURUSD : real ticks begin from 2016.01.04 00:00:00
2016.04.26 19:39:05     Core 1    SleepPause=10
2016.04.26 19:39:05     Core 1    TimerInterval=1000

Code

sinput uint TimerInterval = 1000; // Через сколько секунд вызывать OnTimer
sinput uint SleepPause = 10;      // На сколько милисекунд делать Sleep
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   EventSetTimer(TimerInterval);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   const uint Amount=TimerInterval*1000/SleepPause;

   for(uint i=0;(i<Amount) && (!IsStopped()); i++)
      Sleep(SleepPause);
  }
//+------------------------------------------------------------------+
 
Anton Zverev:

Nicht einmal, um Ihre Option zu testen

Code

Und was haben Sie hier getestet?
 
Slawa:
Und was haben Sie hier getestet?
Ich lasse diesen Code im Tester laufen.Beim Testen wird eineunendliche Schlafschleife festgestellt.
 
Anton Zverev:
Ich starte diesen Code im Testprogramm.Beim Testen wird eineunendliche Sleep-Schleife entdeckt , bei der ich hängen bleibe.

Es ist schon oft gesagt worden: "Lesen Sie die Dokumentation".

Haben Sie nicht gesagt: "Ich habe die gesamte Dokumentation gelesen. Mehrere Male"?

Haben Sie das gelesen? Es scheint, Sie haben nicht...

Wenn die aktuelle Zeit im Tester das Ende des Testzeitraums überschreitet, wenn die Funktion Sleep() ausgeführt wird, erhalten Sie die Fehlermeldung "eine Endlosschleife in Sleep". Tritt ein solcher Fehler auf, werden die Testergebnisse nicht verworfen, sondern alle Berechnungen werden vollständig durchgeführt (Anzahl der Trades, Drawdown usw.) und die Ergebnisse an das Terminal weitergeleitet.

 
Slawa:

Haben Sie das gelesen?

Das habe ich und ich habe sie sehr sorgfältig gelesen. Der Punkt ist, dass der Programmierer bei Verwendung von Sleep in OnTimer nicht bestimmen kann, wann er/sie das Testintervall verlässt. IsStopped (ich habe es sofort in den Code eingefügt, weil ich die Dokumentation gelesen habe) funktioniert im Moment des Beendens nicht. Wessen Schuld ist das?
 
Slawa:

Und für fehlende Ticks in der OnTimer-Schleife brauchen Sie einen reproduzierbaren Beweis. Haben Sie sie?

Sie haben darüber in der Dokumentation geschrieben!

Im Prüfprogramm verzögern Sleep()-Aufrufe den Prüfvorgang nicht. Beim Aufruf von Sleep() werden die erzeugten Ticks innerhalb der angegebenen Verzögerung "abgespielt", wodurch schwebende Orders, Stops etc. ausgelöst werden können. Nach dem Aufruf von Sleep() wird die im Prüfgerät modellierte Zeit um das im Parameter der Funktion Sleep angegebene Intervall verlängert.

Der Expert Advisor kann also nicht bei jedem dieser Ticks aufgerufen werden. Wird der Beweis akzeptiert?

Grund der Beschwerde: