Bibliotheken: BestInterval - Seite 17

 
Andrey Khatimlianskii:

Gibt es eine einfache Möglichkeit, den OnTester nach dem Anschluss von BestInterval weiterlaufen zu lassen?

Es hilft nicht:

Er gibt immer noch den Endsaldo zurück (und Sie brauchen Ihr eigenes komplexes Kriterium, BESTINTERVAL_ONTESTER_FORMULA löst das Problem nicht).

#define  BESTINTERVAL_ONTESTER // Das Optimierungskriterium ist der Gewinn des besten Intervalls.
#define  BESTINTERVAL_CALL_ONFUNCTIONS // OnTester wird im Modus BESTINTERVAL_ONTESTER aufgerufen и OnTimer.
#include <fxsaber\BestInterval\BestInterval.mqh> // Berechnung des besten Handelsintervalls

double OnTester()
{
  Print("Hello World");
  
  return(123);
}

Im Protokoll sehen Sie Print triggered, d.h. OnTester wird ausgeführt. Aber nicht mehr als das - das Ergebnis wird ignoriert.


Sie benötigen folgendes

#define  BESTINTERVAL_ONTESTER // Das Optimierungskriterium ist der Gewinn des besten Intervalls.
#define  BESTINTERVAL_ONTESTER_FORMULA MyOnTester()
#include <fxsaber\BestInterval\BestInterval.mqh> // Berechnung des besten Handelsintervalls

input int Input = 0;

double MyOnTester()
{
  return(123);
}


Ergebnis

pass 1 returned result 123.000000 in 0:00:00.468
pass 0 returned result 123.000000 in 0:00:00.469
 
Andrey Khatimlianskii:


ps: der neueste Build von MT5 hat eine Menge von Warnungen "veraltetes Verhalten, versteckte Methodenaufrufe werden in einer zukünftigen MQL-Compiler-Version deaktiviert werden" beim Kompilieren.

Was würde es bedeuten?

 
fxsaber:

Sie brauchen dies

Funktioniert nicht mit Amount of Delete Intervals = 0.

Beim Testen habe ich diesen EA erreicht:

#define  BESTINTERVAL_ONTESTER // Das Optimierungskriterium ist der Gewinn des besten Intervalls.
#define  BESTINTERVAL_ONTESTER_FORMULA MyOnTester()
#include <fxsaber\BestInterval\BestInterval.mqh> // Berechnung des besten Handelsintervalls

input int inputParam = 0;

double MyOnTester()
{
  return(inputParam*100);
}

Wenn Betrag der Löschintervalle = 0 ist, wird der Anfangssaldo in allen Durchgängen zurückgegeben.

Wenn Betrag der Löschintervalle = 1, gibt er die erwarteten Werte zurück.

 
Andrey Khatimlianskii:

Funktioniert nicht bei Anzahl der Löschintervalle = 0.

Bei den Prüfungen bin ich auf diesen EA gekommen:

Wenn Betrag der Löschintervalle = 0, gibt er den Anfangssaldo in allen Durchgängen zurück.

Wenn Betrag der Löschintervalle = 1, gibt er die erwarteten Werte zurück.

In Zeile 713.

  if (!inBestInterval_Action && inAmountDeleteIntervals)

entfernen Sie die zweite Bedingung.

 
fxsaber:

Zeile 713

die zweite Bedingung entfernen.

Es geht los! Ich danke Ihnen.

 

In solchen Universalbibliotheken lege ich die Eingabeparameter in einer separaten Datei ab und verpacke sie mit ifdef, so dass ich sie an der richtigen Stelle einfügen kann, ohne auf die Reihenfolge zu achten, in der die Bibliotheksdateien selbst verbunden sind (was eine Rolle spielen könnte).

Vielleicht gibt es eine andere, elegantere Möglichkeit, die Reihenfolge der Eingaben zu verwalten?

 
Andrey Khatimlianskii:

Vielleicht gibt es eine andere, elegantere Möglichkeit, die Reihenfolge der Eingaben zu verwalten?

Ich habe mich nie um solche kosmetischen Dinge gekümmert. Es gibt so viele andere Dinge zu tun...

Es wäre schön, einen Ort zu haben, um vielversprechende Dinge zu diskutieren. Es ist fast völlig still.

 
fxsaber:

Es wäre schön, einen Ort zu haben, an dem man über zukunftsweisende Dinge diskutieren kann. Es ist fast völlig still.

Es herrscht die Meinung, dass profitable Strategien nicht öffentlich diskutiert werden dürfen. Deshalb wird im Forum nur rudimentär recherchiert, und bei der ersten (auch zufälligen) Begegnung mit einem Goldkorn - abgetaucht.

Ich bin immer für die Diskussion, aber ich werde nicht viel in Bezug auf den Handel helfen, ich bin mehr auf technische Fragen konzentriert.

 
Andrey Khatimlianskii:

Ich bin immer für eine Diskussion.

Mit einer großen Anzahl von Abschlüssen und Wegwerfintervallen entsteht ein interessantes Studienobjekt.

Profit = 55367.00 = 54785.00 + 582.00 (1.06%) - Amount of Delete Intervals = 20
00:00:00 - 02:29:28 : Profit = 8460.00 (15.28%), Total = 293 (88.74%), PF = 4.95, Mean = 28.87, DD = 298.00, RF = 28.39
02:34:20 - 03:06:49 : Profit = 763.00 (1.38%), Total = 74 (79.73%), PF = 1.64, Mean = 10.31, DD = 696.00, RF = 1.10
03:12:43 - 03:46:29 : Profit = 1067.00 (1.93%), Total = 76 (75.00%), PF = 2.07, Mean = 14.04, DD = 440.00, RF = 2.43
03:54:37 - 07:15:26 : Profit = 3641.00 (6.58%), Total = 327 (77.68%), PF = 1.66, Mean = 11.13, DD = 1183.00, RF = 3.08
07:30:54 - 09:16:59 : Profit = 2452.00 (4.43%), Total = 253 (79.45%), PF = 1.57, Mean = 9.69, DD = 877.00, RF = 2.80
09:34:03 - 09:42:17 : Profit = 865.00 (1.56%), Total = 42 (83.33%), PF = 3.03, Mean = 20.60, DD = 177.00, RF = 4.89
09:42:19 - 09:51:57 : Profit = 1389.00 (2.51%), Total = 51 (84.31%), PF = 4.99, Mean = 27.24, DD = 93.00, RF = 14.94
09:56:38 - 10:04:58 : Profit = 1351.00 (2.44%), Total = 75 (82.67%), PF = 2.52, Mean = 18.01, DD = 350.00, RF = 3.86
14:22:11 - 14:46:12 : Profit = 2167.00 (3.91%), Total = 110 (78.18%), PF = 3.33, Mean = 19.70, DD = 488.00, RF = 4.44
14:51:09 - 15:01:51 : Profit = 1511.00 (2.73%), Total = 69 (79.71%), PF = 2.68, Mean = 21.90, DD = 353.00, RF = 4.28
15:04:47 - 15:46:23 : Profit = 3605.00 (6.51%), Total = 297 (76.09%), PF = 1.75, Mean = 12.14, DD = 670.00, RF = 5.38
15:54:05 - 16:04:53 : Profit = 2051.00 (3.70%), Total = 103 (82.52%), PF = 2.65, Mean = 19.91, DD = 299.00, RF = 6.86
16:08:24 - 16:15:39 : Profit = 896.00 (1.62%), Total = 56 (78.57%), PF = 2.22, Mean = 16.00, DD = 167.00, RF = 5.37
16:21:19 - 16:44:18 : Profit = 2159.00 (3.90%), Total = 184 (79.89%), PF = 1.71, Mean = 11.73, DD = 352.00, RF = 6.13
16:54:29 - 17:01:09 : Profit = 1457.00 (2.63%), Total = 68 (82.35%), PF = 4.70, Mean = 21.43, DD = 118.00, RF = 12.35
17:10:30 - 17:30:56 : Profit = 2858.00 (5.16%), Total = 178 (78.09%), PF = 2.07, Mean = 16.06, DD = 431.00, RF = 6.63
17:41:23 - 17:51:28 : Profit = 989.00 (1.79%), Total = 88 (76.14%), PF = 1.65, Mean = 11.24, DD = 478.00, RF = 2.07
17:53:57 - 18:51:41 : Profit = 4399.00 (7.95%), Total = 449 (73.72%), PF = 1.53, Mean = 9.80, DD = 635.00, RF = 6.93
18:56:38 - 19:41:09 : Profit = 1646.00 (2.97%), Total = 181 (75.14%), PF = 1.51, Mean = 9.09, DD = 474.00, RF = 3.47
19:44:55 - 20:03:20 : Profit = 1492.00 (2.69%), Total = 70 (78.57%), PF = 3.25, Mean = 21.31, DD = 130.00, RF = 11.48
20:11:31 - 23:59:59 : Profit = 10149.00 (18.33%), Total = 659 (77.24%), PF = 2.12, Mean = 15.40, DD = 645.00, RF = 15.73
SUMMARY: 00:00:00 - 23:59:59 : Profit = 55367.00 (100.00%), Total = 3703 (78.50%), PF = 2.04, Mean = 14.95, DD = 1247.00, RF = 44.40

Wir müssen herausfinden, wie wir aus diesen Daten gute Abschnitte von Geschäften identifizieren können. Es muss eine Kombination aus einer angemessenen Anzahl von Trades in einem Chunk, ernsthaften Gewinnen pro Zeiteinheit usw. geben. Ich habe dies noch nicht formalisieren können.


Die Aufgabe lautet in etwa wie folgt: Bestimmen Sie bei einer großen Anzahl von verworfenen Intervallen wahrscheinlich Systemchunks und berechnen Sie nur auf deren Grundlage ein individuelles Optimierungskriterium.

Die Lösung des Problems wird es erlauben, das Potential von TC viel mehr zu enthüllen.

 
fxsaber:

Ich habe es noch nicht formalisieren können.

dann ist dies eine Aufgabe für ein neuronales Netz, bereiten Sie die Daten von Hand auf und trainieren Sie das NS, dann werden Sie in Zukunft die Ergebnisse mit dem trainierten NS auswerten.

FN: wenn an den Fingern, wie bringt man dem NS das Einmaleins bei https://www.mql5.com/ru/forum/8265/page2#comment_333746 (mit diesem Beispiel habe ich wahrscheinlich schon alle gelangweilt )))) ) - Sie geben den Inputs Daten, der Output ist Ihre Bewertung, und zwar auf einer 3-Punkte-Skala: ausgezeichnet, gut, unbefriedigend - der NS bewältigt diese Aufgabe perfekt, aber Sie müssen die Daten von Hand aufbereiten, oder besser gesagt, klassifizieren, was Sie für ein gutes/schlechtes Ergebnis halten.