Guten Tag!
Ich bin daran interessiert, ob es möglich ist, die LR-Korrelation in die OnTester()-Funktion zu setzen, um den Expert Advisor nach diesem Kriterium zu optimieren, und zwar über Custom max?
Ich interessiere mich dafür, ob es möglich ist, die LR-Korrelation in die Funktion OnTester() einzubinden: ....
Die Beschreibung gibt ein Beispiel mit OnTrade(). Nichts hindert Sie daran, die Berechnungen in OnTester() zu verschieben.
Die Beschreibung gibt ein Beispiel mit OnTrade(). Nichts hindert Sie daran, die Berechnungen auf OnTester() zu übertragen.
Ich bin nicht sehr vertraut mit mql5, also entschuldigen Sie bitte offensichtliche Fehler.
Ich versuche, dies im EA-Code vor OnDeinit zu tun:
double OnTester() { double lrk=TesterStatistics(STAT_LR_CORRELATION); return(lrk); }
Es kommt der Fehler "'STAT_LR_CORRELATION' - can't convert enum" heraus.
Wenn ja:
double OnTester() { //--- wiederholte Anfragen in derselben Sekunde blockieren. static datetime time_on_trade; if(time_on_trade==TimeTradeServer())return; time_on_trade=TimeTradeServer(); //--- Statistik aktualisieren if(!m_stat.Calculate())Print(m_stat.GetLastErrorString()); }
Fehler: "'return' - Funktion muss einen Wert zurückgeben", " '}' - nicht alle Kontrollpfade geben einen Wert zurück".
1 und 2 Zeile im EA:
#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;Sagen Sie mir, was falsch ist?
Ich habe es durch Versuch und Irrtum geschafft:
double OnTester() { CTradeStatistics m_stat; if(m_stat.Calculate()) PrintFormat("LR Correlation: %.2f",m_stat.LRCorrelation()); else Print(m_stat.GetLastErrorString()); double LRC=(double)m_stat.LRCorrelation(); return(LRC); }Ich glaube, es hat funktioniert...?
Andrei, es gibt einige Kommentare.
1. Zeile 500
if(m_balance_data.At(i)!=0.0) ändern in if(m_balance_data.At(i-1)!=0.0)
2. Zeile 511
keine Überprüfung des Nenners m_initial_deposit auf 0
3. Geben Sie unbedingt an, dass Sie die m_sharpe_ratio-Berechnung für die Option "Jährliche Sharpe Ratio" mit der Option "RiskFreeRate" verwenden
verwenden, da dies nur eine der Optionen ist, die sich ausdrücklich von der Standardoption unterscheidet.
Ich habe festgestellt, dass dieser Code keine Statistiken zum Equity Drawdown berechnen kann. Hat jemand einen Erfolg bei der Berechnung des Equity Drawdown mit seinem eigenen Code?
Was meinen Sie? Ich muss Ihre Frage falsch verstanden haben, denn diese einfache Antwort kann unmöglich das sein, wonach Sie suchen, oder? ---> Equity - Balance = { Draw-Down wenn negativ, Profit wenn positiv } ziemlich einfache Berechnung. Mit MT5 Handelsklassen können Sie ein Kontoobjekt CAccountInfo acc erstellen; acc ist das erstellte Kontoinformationsobjekt, das Ihnen schnellen Zugriff auf alle Kontodetailfunktionen bietet. dann machen Sie dies acc.Equity()-acc.Balance(). Nun, um ehrlich zu sein, können Sie einen noch einfacheren Code verwenden acc.Profit(). Wenn positiv ist Gewinn, wenn negativ ist Draw-Down richtig? Negatives Eigenkapital Gewinn ist das gleiche wie Draw-Down. Profit() ist die Differenz zwischen Eigenkapital und Balance
Wenn Ihre Frage komplexer ist, fügen Sie bitte Details hinzu ;)
perfekte Arbeit!
wenn Sie Kompilierwarnungen vermeiden wollen
müssen Sie das Null-Element zum enum deal_result hinzufügen:
//+------------------------------------------------------------------+
//| Geschäftsergebnis |
//+------------------------------------------------------------------+
enum deal_result
{
NOVALUE=0, //<---- hinzugefügt
WIN=1,
LOSS
};
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
CTradeStatistics:
Autor: Andrey Voytenko