MetaTrader 5 Strategy Tester: Bugs, Bugs, Verbesserungsvorschläge - Seite 21

 

Im Tester werden Limit-Orders beim Setzen/Ändern des Ticks nicht auf ihre Akzeptanz geprüft.

Aus diesem Grund wird ein Limitauftrag, der zum aktuellen Kurs erteilt wird, nicht ausgeführt, was nicht den Marktregeln entspricht.


Wird es in dieser Situation irgendwelche Änderungen im Prüfgerät geben?

 

Das Testgerät läuft jetzt seit 27 Stunden in 12 Streams. Dies ist ein seltsames Erinnerungsbild. Sie können hier sehen, dass die Anwendung nicht viel Speicher benötigt.


Insbesondere der Status der Agenten ist mehr als frei.



Es gibt auch eine Instanz, die ihre Arbeit bereits in einem Thread beendet hat. Swap-Speicher wird zugewiesen.


Beendet die laufende Instanz:

Sofort wurden 26 GB frei. Ich denke, die Threads halten den Speicher im zugewiesenen Zustand? Process Explorer zeigt genau das. Jede Instanz fasst 4 GB (außer einer). Allerdings ist eine Person ausgeschieden (es sollten 12 sein).


Das Problem ist, dass derselbe Chrome, auch wenn kein privater Speicher verwendet wird, anfängt zu fluchen, wenn die Auslagerungsdatei voll ist, weil der Speicher nicht ausreicht. Gleichzeitig ist der Arbeitsspeicher zur Hälfte frei...


Die zweite Frage ist die folgende. Warum stehen während der genetischen Optimierung Threads im Leerlauf und warten auf das Ende eines Threads? Ist es sinnvoll, sie zu töten, indem man mit Vorhersagen rechnet und verschiedene Ergebnisse des Wartens auf das Ende des erwarteten Threads feststellt? Oder versuchen Sie, einige Parameter wieder "auszuschütteln" und nach anderen Lösungen zu suchen?

PS. Wenn Sie die Agenten deaktivieren und dann wieder aktivieren, fressen sie keinen Speicher mehr. Aber es scheint mir, dass der Festplatten-Cache auch beim Start neu erstellt wird?
 

Es gibt einen Fehler bei der Stornierungszeit eines schwebenden Auftrags bei einem Geldmangelereignis.

Anstelle der Abbruchzeit gibt es eine Nullzeit (im Screenshot hervorgehoben).

Und den Status "platziert" statt "storniert".

 

Analysieren Sie nun die Situation in dem hervorgehobenen Teilstück


müssen Sie den Cursor bewegen, sich das Pop-up-Datum merken, den Run-Chart öffnen, zur gewünschten Stelle in der Trade History gehen und auf die entsprechende Zeile in der Tabelle doppelklicken.


Kann das alles durch einen Doppelklick auf die Stelle im obigen Diagramm ersetzt werden?

 
fxsaber:

Kann das alles durch einen Doppelklick auf die Stelle in der Grafik oben ersetzt werden?

Ich denke, das ist fantastisch, ein dringend benötigtes "Feature" - ich unterstütze es!!!

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MetaTrader 5 Strategy Tester: Bugs, Bugs, Verbesserungsvorschläge

fxsaber, 2019.10.14 23:32

Im MT5 können Sie eine Position schließen und einen Verlust erleiden (der Saldo vor der Eröffnung ist geringer als der Saldo nach der Schließung). Aber zur gleichen Zeit MT5 Tester (Terminal nicht überprüft) wird dieser Handel als profitabel zu betrachten.

Ich habe einen Expert Advisor zum Spielen erstellt

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  if (!OrderSelect(0, SELECT_BY_POS))
    OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  else if ((OrderProfit() > -OrderCommission()) &&
           (OrderProfit() < -OrderCommission() * 2) &&
           OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
    ExpertRemove();
}


Führen Sie ihn im Strategietester von einem Handelsserver aus, auf dem eine Provision anfällt (ich habe ihn auf diesem Server ausgeführt: ForexTimeFXTM-Demo01).

Das Ergebnis ist in Bildern festgehalten.


Auf dem Screenshot können Sie sehen, dass es eine BUY-Position gab, die mit einem Totalverlust geschlossen wurde - der Anfangssaldo ist gesunken.


Und das ist es, was hier in der linken Spalte hervorgehoben wird - der Expert Advisor hat einen Verlust erlitten.

Und nun sehen wir uns an, was in der zweiten Spalte hervorgehoben ist. Alles ist großartig dort mit positiver mathematischer Erwartung und 100% profitablen Trades!


Es stellt sich also heraus, dass der Expert Advisor Verluste macht, während der Indikator profitabel zu sein scheint. Daher ist die Berechnung der PK verzerrt.


ZZY hat in einer Minute ein Beispiel geschrieben. Ich habe mit Schrecken darüber nachgedacht, wie lange es dauern sollte, es in MQL5 oder SB zu schreiben. Wer nicht faul ist - probieren Sie es aus.

 

Im Tester bietet die Registerkarte Übersicht eine sehr praktische Liste der bisherigen Aktionen mit einem interaktiven Filter.

In dieser Liste werden die Namen der EAs ohne Pfad angezeigt. Wenn es zwei EAs mit demselben Namen, aber in verschiedenen Ordnern gibt, wird in der Liste nicht angezeigt (und kann nicht gefiltert werden), welcher EA zu welchem Eintrag gehört.


Ist es möglich, in dieser Liste früherer Aktionen die Namen der EAs mit ihren Pfaden aus dem Ordner Experten auszugeben?

Ich verwende keine Indikatoren, aber wahrscheinlich wäre es sinnvoll, dasselbe für sie zu tun.

 
Der Tester berücksichtigt bei der Berechnung der Anzahl der Abschlüsse beide Seiten der CloseBy-Abschlüsse. Daher die falsche Anzahl von Geschäften, die mathematische Erwartung, usw.
 
EA
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

int OnInit()
{
  return(OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 
2, Bid, 0, 0, 0)));
}


der Bericht zeigt nur Nullen an. Obwohl der Handel im Gange war.


Warum = 1 ist auch nicht klar. Sie ist im Quellcode nicht vorhanden.

 
fxsaber:
EA


der Bericht zeigt nur Nullen an. Obwohl der Handel im Gange war.


Warum OnTester == 1 ist ebenfalls nicht klar. Sie ist im Quellcode nicht vorhanden.

Sind Sie sicher, dass es in OnInit gehandelt wird? Und wie werden Sie GetLastError mit Ihrem Code verwenden? Und noch eine Frage. Sind Sie sicher, dass die Funktionsargumente in der richtigen Reihenfolge berechnet werden?
Grund der Beschwerde: