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

 
fxsaber:
Wahrscheinlich haben Sie es verpasst.

Sie haben es nicht vermisst.

Das aktuelle Format der opt-Datei lässt dies nicht zu. Sie müssen darüber nachdenken.

 
Slava:

Sie haben es nicht vermisst.

Das derzeitige Format von opt-file erlaubt dies nicht. Sie müssen darüber nachdenken.

Es scheint nicht nötig zu sein, etwas zu ändern.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

Slawa, 2019.04.19 15:11

//+------------------------------------------------------------------+
//| входные параметры тестирования                                   |
//+------------------------------------------------------------------+
struct TestCacheInput
  {
   wchar_t           name[64];
   int               flag;                    // оптимизируемый параметр
   int               type;                    // тип TYPE_XXX
   int               digits;                  // количество знаков после запятой
   int               offset;                  // смещение в буфере параметров
   int               size;                    // размер значения параметра в буфере
   //--- 0-start,1-step,2-stop
   union { INT64 integers[3]; double numbers[3]; };
  };
   m_header.header_size=sizeof(TestCacheHeader)+m_inputs.Total()*sizeof(TestCacheInput)+m_header.parameters_size;
//--- кешируемая запись содержит номер прохода (при генетике - номер по порядку), структуру результатов тестирования (если математика, то 1 double), буфер оптимизируемых параметров и генетический проход

Jede Eingabe wird durch eine Struktur mit den erforderlichen Feldern definiert.

 

Es ist jetzt sehr einfach, herauszufinden

  • Alle Testereinstellungen und EA-Eingabeparameter.
  • Alle statistischen Daten eines jeden Optimierungsdurchgangs.


Aber wir können zum Beispiel keine statistischen Daten über einen einzelnen Durchgang herausfinden. Es ist klar, dass es ein tst-Format gibt. Es wäre jedoch praktisch, im Strategy Tester die Tastenkombination STRG+C zu verwenden, um eine Set-Datei mit statistischen Daten auf der Registerkarte Backtest zu erstellen.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: TesterCache

fxsaber, 2019.11.11 04:45

; saved on 2019.11.13 19:40:01
; Experts\Examples\MACD\MACD Sample LImitTP.ex5
; EURUSD
; 2019.09.01 - 2019.11.13
;
InpLots=0.1
InpTakeProfit=200||10||5||500||Y
InpTrailingStop=290||30||10||300||Y
InpMACDOpenLevel=5||5||5||200||Y
InpMACDCloseLevel=180||5||5||200||Y
InpMATrendPeriod=8||1||1||200||Y
;
; initial_deposit = 10000.0
; withdrawal = 0.0
; profit = 479.15
; grossprofit = 479.15
; grossloss = 0.0
; maxprofit = 99.8
; minprofit = 0.0
; conprofitmax = 479.15
; maxconprofit = 479.15
; conlossmax = 0.0
; maxconloss = 0.0
; balance_min = 10000.0
; maxdrawdown = 0.0
; drawdownpercent = 0.0
; reldrawdown = 0.0
; reldrawdownpercent = 0.0
; equity_min = 9997.700000000001
; maxdrawdown_e = 253.6000000000004
; drawdownpercent_e = 2.457388152985982
; reldrawdown_e = 253.6000000000004
; reldrawdownpercnt_e = 2.457388152985982
; expected_payoff = 47.91500000000001
; profit_factor = 1.797693134862316 e+308
; recovery_factor = 1.889392744479493
; sharpe_ratio = 1.069726339729858
; margin_level = 1.797693134862316 e+308
; custom_fitness = 0.0
; deals = 15
; trades = 10
; profittrades = 10
; losstrades = 0
; shorttrades = 6
; longtrades = 4
; winshorttrades = 6
; winlongtrades = 4
; conprofitmax_trades = 10
; maxconprofit_trades = 10
; conlossmax_trades = 0
; maxconloss_trades = 0
; avgconwinners = 10
; avgconloosers = 0

Ich weiß nicht, wie es anderen geht, aber ich finde es praktisch, wenn die eingestellte Datei alle Informationen enthält. Es ist sehr schnell herauszufinden, was es ist, woher es kommt und wie viel es kostet.


Dies ist die Ausgabe der Felder der Struktur ExpTradeSummary.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Slawa, 2019.04.19 15:11

//+------------------------------------------------------------------+
//| Структура для статистики торговли                                |
//+------------------------------------------------------------------+
struct ExpTradeSummary;

#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"

  string ToString( void ) const
  {
    return(
      TOSTRING(initial_deposit) +      // начальный депозит
      TOSTRING(withdrawal) +           // снято средств
      TOSTRING(profit) +               // общая прибыль (+)
      TOSTRING(grossprofit) +          // общий плюс
      TOSTRING(grossloss) +            // общий минус
      TOSTRING(maxprofit) +            // максимально прибыльная сделка
      TOSTRING(minprofit) +            // максимально убыточная сделка
      TOSTRING(conprofitmax) +         // прибыль максимальной последовательности прибыльных сделок
      TOSTRING(maxconprofit) +         // максимальная прибыль среди последовательностей
      TOSTRING(conlossmax) +           // убыток максимальной последовательности убыточных сделок
      TOSTRING(maxconloss) +           // максимальный убыток среди последовательностей
      TOSTRING(balance_min) +          // минимальное значение баланса (для расчёта абсолютной просадки)
      TOSTRING(maxdrawdown) +          // максимальная просадка по балансу
      TOSTRING(drawdownpercent) +      // отношение максимальной просадки по балансу к её пику
      TOSTRING(reldrawdown) +          // максимальная относительная просадка по балансу в деньгах
      TOSTRING(reldrawdownpercent) +   // максимальная относительная просадка по балансу в процентах
      TOSTRING(equity_min) +           // минимальное значение equity (для расчёта абсолютной просадки по equity)
      TOSTRING(maxdrawdown_e) +        // максимальная просадка по equity
      TOSTRING(drawdownpercent_e) +    // отношение максимальной просадки по equity к её пику (+)
      TOSTRING(reldrawdown_e) +        // максимальная относительная просадка по equity в деньгах
      TOSTRING(reldrawdownpercnt_e) +  // максимальная относительная просадка по equity в процентах
      TOSTRING(expected_payoff) +      // матожидание выигрыша (+)
      TOSTRING(profit_factor) +        // показатель прибыльности (+)
      TOSTRING(recovery_factor) +      // фактор восстановления (+)
      TOSTRING(sharpe_ratio) +         // коэффициент Шарпа (+)
      TOSTRING(margin_level) +         // минимальный уровень маржи
      TOSTRING(custom_fitness) +       // пользовательский фитнесс - результат OnTester (+)
      TOSTRING(deals) +                // общее количество сделок
      TOSTRING(trades) +               // количество сделок out/inout
      TOSTRING(profittrades) +         // количество прибыльных
      TOSTRING(losstrades) +           // количество убыточных
      TOSTRING(shorttrades) +          // количество шортов
      TOSTRING(longtrades) +           // количество лонгов
      TOSTRING(winshorttrades) +       // количество прибыльных шортов
      TOSTRING(winlongtrades) +        // количество прибыльных лонгов
      TOSTRING(conprofitmax_trades) +  // максимальная последовательность прибыльных сделок
      TOSTRING(maxconprofit_trades) +  // последовательность максимальной прибыли
      TOSTRING(conlossmax_trades) +    // максимальная последовательность убыточных сделок
      TOSTRING(maxconloss_trades) +    // последовательность максимального убытка
      TOSTRING(avgconwinners) +        // среднее количество последовательных прибыльных сделок
      TOSTRING(avgconloosers)          // среднее количество последовательных убыточных сделок
    );
 

Seitdem es leistungsfähige Caches gibt, ist es ratsam, diese etwas zu verbessern.

Jetzt gelangt nur noch ein Benutzerparameter, OnTester, in den Cache.


Es wäre sehr praktisch, wenn ExpTradeSummary drei oder fünf Mal so groß wäre. Diese kann ausgefüllt werden über

double OnTester( double &CustomDoubles[] );


Jetzt analysieren Sie Caches und haben offensichtlich nicht die Möglichkeit, den Wert eines einzelnen Nutzers zu sehen, sondern den mehrerer Nutzer.

 

Dies ist eine Anfrage an Metaquotes, ich hoffe, dass zumindest ein Entwickler des Teams antworten kann (sorry, wenn er bereits gefragt wurde, aber aufgrund von Sprachproblemen kann ich keine Antwort im russischen Forum finden).

Ist es sinnvoll, eine Verbesserung des Strategy Testers zu fordern, um eine Handelssituation zu testen, die nie auf einem Demokonto, sondern nur auf einem echten Konto vorkommt? Denn es ist wirklich schwierig, robusten Code zu erstellen, ohne ihn vollständig testen zu können.

Dies liegt vor allem an dem zentralisierten Markt (im Gegensatz zu Forex/CFD). Bei einem Demokonto kommt es zum Beispiel nie zu einer teilweisen Auftragsausführung (soweit ich weiß), aber bei einem echten Konto für Futures oder Aktien ist das eine häufige Situation. Es wäre sehr nützlich, ein Werkzeug zu haben, das eine solche Situation simuliert.

Die Teilausfüllung ist nur ein Beispiel. Wenn Metaquotes der Meinung ist, dass es eine gute Idee ist, mit solchen Funktionen zu arbeiten, bin ich bereit, die Ideen zu zentralisieren und eine detaillierte Beschreibung solcher Funktionen bereitzustellen. (Nichts Spezifisches für meine eigenen Bedürfnisse).

Vielen Dank für Ihre Zeit und Ihre Antwort(en).

 
Alain Verleyen:

Es ist schwierig, zuverlässigen Code zu erstellen, ohne ihn vollständig testen zu können.

Um dies zu erreichen, testet jeder seriöse EA-Entwickler seine Handelsbibliotheken jahrelang auf echten Konten.

Ohne sie ist es nicht möglich, zuverlässigen Code zu erstellen.

 
fxsaber:

Um dies zu erreichen, testet jeder seriöse EA-Entwickler seine Handelsbibliotheken jahrelang auf echten Konten.

Ohne sie ist es nicht möglich, zuverlässigen Code zu erstellen.

Das stimmt, aber es würde helfen, eine Menge zeitaufwändiger Tests auf einem echten Konto zu vermeiden.

 
Artyom Trishkin:

Das stimmt zwar, aber diese Funktion würde helfen, viele zeitaufwändige Tests auf einem echten Konto zu vermeiden.

Es werden zwei Ziele verfolgt.

  1. Eine adäquate Trading-Biobioteke, die lediglich den aktuellen Handelsstatus, die Handelshistorie und das Senden von Orders anzeigen kann. Hier ist der Tester fast keine Hilfe. Die Demo kann sehr hilfreich sein, wenn wir Stresstests durchführen. Wir können sie nicht auf dem echten Konto machen - sie sind teuer. Daher gibt es nur eine Demo für eine große Anzahl von Symbolen/Servern. Solche Bibliotheken gibt es an den Fingern einer Hand.
  2. Einübung der Handelslogik von Teilausführungen, Weiterleitungen usw. Dieser Punkt ist viel einfacher als der erste. Und wiederholt auf demselben MT4 ohne Tester gelöst. Es ist wirklich ganz einfach.

Ein Prüfer kann nur beim zweiten Punkt, dem einfachen, helfen. Sie können eine Teilausführung durchführen, indem Sie die vermeintliche "Liquiditätsobergrenze" des TS messen. Aber das wäre eine äußerst grobe Schätzung.


Es sollte verstanden werden, dass alle Erweiterungen im Tester zusätzliche Bremsen sind, selbst wenn diese Erweiterungen nicht verwendet werden.

 
fxsaber :

Um dies zu erreichen, testet jeder seriöse EA-Entwickler seine Handelsbibliotheken jahrelang auf echten Konten.

Ohne sie ist es nicht möglich, zuverlässigen Code zu erstellen.

Ich würde Ihnen raten, mich mit Ihren nutzlosen und arroganten Beiträgen ein für alle Mal zu vergessen.

Leider habe ich keine Möglichkeit, sie herauszufiltern.

Bitte antworten Sie nie auf meine Beiträge, denn Sie verschwenden meine Zeit mit den Benachrichtigungen.

 
Alain Verleyen:

Ich würde Ihnen raten, mich mit Ihren nutzlosen und arroganten Beiträgen ein für alle Mal zu vergessen.

Ich empfehle Ihnen, die Angemessenheit der von Ihnen verwendeten automatischen Russisch-Übersetzer zu hinterfragen.


Leider habe ich keine Möglichkeit, sie herauszufiltern.

Bitte antworten Sie nie auf meine Beiträge, denn Sie verschwenden meine Zeit mit den Benachrichtigungen.

GUT.