Slawa: Sie haben vergessen anzugeben, dass der Beginn der Messung am Anfang des ersten OnTick liegt. Das Ende der Messung liegt am Anfang von OnDeinit.
Oder beim Start von OnTester, denn
// После окончания бэктеста сначала вызывается OnTester, затем OnDeinit
// Возвращает true, если полностью выполнился OnTick() на последнее событие NewTick в тестере - окончание бэктеста. Иначе - false.staticbool BACKTEST::IsEnding(void)
{
return(::TesterStatistics(STAT_BALANCEMIN) > 0);
}
Slawa: Und geben Sie das Messergebnis als Rückgabecode von OnTester zurück
Ich habeGetTickCount noch nichtin der Testversion getestet.Ich bin davon ausgegangen, dass diese Funktion vom Prüfer emuliert wird, was in manchen Situationen logisch sein kann.
Übrigens, wie kann man die aktuelle Zeit im Prüfgerät auf die nächsten ms genau verstehen? SymbolInfoTick+Tick.time_msc ermöglicht es Ihnen, den Zeitpunkt des OnTick-Aufrufs des Hauptsymbols zu ermitteln. Und so auch, um die Korrektheit des Schlupfmodus des Testers zu überprüfen. Aber es scheint keinen anderen Weg zu geben.
Eigentlich wollte ich nach etwas anderem fragen. Um einen Stapel in Optimierer mit Abwurf der ersten und letzten Werte zu automatisieren, sollte ich durch Frames handeln (OnTester-Ergebnis übergeben), oder es wird das Ergebnis verzerren?
Eigentlich wollte ich nach etwas anderem fragen. Um die Bänke in der Optimierer mit Verwerfen der ersten und letzten Werte zu automatisieren, muss ich durch Frames handeln (um die OnTester-Ergebnis übergeben), oder wird es das Ergebnis verzerren?
Das sollte sie nicht. Sie wird nach der Messung gesendet. Versuchen Sie
Verlangsamt GetMicrosecondCount das Prüfgerät mehr als GetTickCount (oder wird es emuliert)?
Oder war der Ausfall von EventSetMillisecondTimer gemeint?
Ich meinte GetMicrosecondCount. Ich kann nicht mit Sicherheit sagen, ob es den Server verlangsamt. Sie kann eine indirekte Wirkung haben. Daher ist es besser, die systemeigene GetTickCount
GetMicrosecondCount wird verwendet, um kurze Zeiträume der Codeausführung zu messen. Um eine große Anzahl von OnTick-Ausführungen zu messen, ist es besser, GetTickCount zu verwenden.
Versuchen Sie, GetMicrosecondsCount anstelle von GetTickCount zu verwenden, wenn Sie stabile Ergebnisse erhalten. Sie werden mir hier davon erzählen. Vielleicht mache ich mir zu viele Gedanken darüber.
Es gibt zwei aktuelle Historientabellen, auf deren Daten über die Historienfunktionen zugegriffen werden kann - die Tabelle "Aufträge" und die Tabelle "Abschlüsse".
Ihr Inhalt kann nur durch HistorySelect-Funktionen beeinflusst werden. Und das geschieht folgendermaßen
In Bestellungen ist es möglich, das Feld Request.expiration bis einschließlich LONG_MAX + 2 zu setzen. Sein Wert ist über ORDER_TIME_EXPIRATION vollständig verfügbar, wenn der Auftrag aktiv ist (nicht in der Historientabelle).
Der PositionIdentifier von Balance Trades ist Null. Daher ist es einfach, z. B. diese Funktion zu schreiben
// Возвращает сумму всех балансовых не торговых операций (начисления + списания)double GetSumBalanceOperations( void )
{
double Res = 0;
if (HistorySelectByPosition(0))
for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
Res += HistoryDealGetDouble(HistoryDealGetTicket(i), DEAL_PROFIT);
return(Res);
}
DEAL_ENTRY eines solchen Geschäfts ist DEAL_ENTRY_IN (0).
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Sie haben vergessen anzugeben, dass der Beginn der Messung am Anfang des ersten OnTick liegt. Das Ende der Messung liegt am Anfang von OnDeinit.
// После окончания бэктеста сначала вызывается OnTester, затем OnDeinitZum Thema
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
fxsaber, 2016.08.25 11:13
LebenszyklusOder zu Beginn des OnTesters, als
Und geben Sie das Messergebnis als Rückgabecode von OnTester zurück
Ich habeGetTickCount noch nichtin der Testversion getestet.Ich bin davon ausgegangen, dass diese Funktion vom Prüfer emuliert wird, was in manchen Situationen logisch sein kann.
Übrigens, wie kann man die aktuelle Zeit im Prüfgerät auf die nächsten ms genau verstehen? SymbolInfoTick+Tick.time_msc ermöglicht es Ihnen, den Zeitpunkt des OnTick-Aufrufs des Hauptsymbols zu ermitteln. Und so auch, um die Korrektheit des Schlupfmodus des Testers zu überprüfen. Aber es scheint keinen anderen Weg zu geben.
Eigentlich wollte ich nach etwas anderem fragen. Um einen Stapel in Optimierer mit Abwurf der ersten und letzten Werte zu automatisieren, sollte ich durch Frames handeln (OnTester-Ergebnis übergeben), oder es wird das Ergebnis verzerren?
Eigentlich wollte ich nach etwas anderem fragen. Um die Bänke in der Optimierer mit Verwerfen der ersten und letzten Werte zu automatisieren, muss ich durch Frames handeln (um die OnTester-Ergebnis übergeben), oder wird es das Ergebnis verzerren?
Verwenden Sie keinen Mikrosekunden-Timer für Massenmessungen. Verwenden Sie die reguläre Millisekunde GetTickCount.
VerlangsamtGetMicrosecondCount das Testgerät mehr als GetTickCount (oder wird es emuliert)?
Oder war der Ausfall von EventSetMillisecondTimer gemeint?
Verlangsamt GetMicrosecondCount das Prüfgerät mehr als GetTickCount (oder wird es emuliert)?
Oder war der Ausfall von EventSetMillisecondTimer gemeint?
Ich meinte GetMicrosecondCount. Ich kann nicht mit Sicherheit sagen, ob es den Server verlangsamt. Sie kann eine indirekte Wirkung haben. Daher ist es besser, die systemeigene GetTickCount
GetMicrosecondCount wird verwendet, um kurze Zeiträume der Codeausführung zu messen. Um eine große Anzahl von OnTick-Ausführungen zu messen, ist es besser, GetTickCount zu verwenden.
Versuchen Sie, GetMicrosecondsCount anstelle von GetTickCount zu verwenden, wenn Sie stabile Ergebnisse erhalten. Sie werden mir hier davon erzählen. Vielleicht mache ich mir zu viele Gedanken darüber.
Ihr Inhalt kann nur durch HistorySelect-Funktionen beeinflusst werden. Und das geschieht folgendermaßen
DEAL_ENTRY eines solchen Geschäfts ist DEAL_ENTRY_IN (0).