Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 538

 
Mihail Marchukajtes:

Das ist die Art von Programmierer, die ich bin. Niemand kann es richtig erklären, bis man den Dreh raus hat... Wie auch immer, Leute!!!!! Hört zu. Hier kommt der wichtige lange Beitrag......


es ist eine evolution ... tun oder sterben :) ich bin genau wie dieser programmierer

 
Mihail Marchukajtes:

Jedenfalls Menschen!!!!! Hört zu. Demnächst Wichtiger langer Beitrag......

Meister, brennt!

 

Wie Sie alle wissen, habe ich ein ausgeprägtes Gespür für das offene Interesse (Open Interest, OI), da es das entscheidende Glied bei der Bestimmung der Art des gehandelten Volumens ist. Kombiniert mit dem Delta...mmmmCOPY00 Nur ein kleiner Leckerbissen.... OI ist sicherlich kein Allheilmittel, aber eine Verbesserung der Qualität der Leistung des Modells, selbst um 10%, hat bereits ein hohes Gewicht!!!! Und oh, Wunder!!!! Im Laufe des Tages bin ich endlich dazu gekommen, aber leider hat nur MT5 solche Funktionen, was der entscheidende Faktor für den Wechsel von MT4 zu 5 war. Ein großes Dankeschön an Rafil, der viel Zeit gespart und die Migration gut eingeleitet hat. Der EA wird bereits geschrieben und es gibt Statistiken für eine Woche. Natürlich ist das nicht genug, aber wir können damit beginnen, es auf M5 zu testen. Außerdem ist der Einfluss des Spreads auf Si in diesem Zeitrahmen unbedeutend im Vergleich zur Volatilität des Instruments im Allgemeinen. Nun... die Daten sind da, es geht nur darum, was ich dachte, dass es sein würde. Um das Modell zu trainieren und zu sehen, wozu die Kombination Delta+Volumen+OI in der Lage ist. Ich habe gute Kenntnisse in Мкуль5, aber ich habe sie gelöst, ich denke, ich habe die Ziellinie erreicht und stehe vor einer Mauer von Missverständnissen in einer so wunderbaren und mächtigen Sprache. Das allgemeine Konzept von TC ist folgendes.

In diesem Artikel werde ich versuchen, die wichtigsten Unterschiede zwischen den theoretischen und den numerischen Werten des Modells zu untersuchen.

Zur Vorbereitung des Trainingssatzes verwende ich das unten stehende Anwendungsskript. Dieses Skript entlädt die Signale der Basisstrategie in eine csv-Datei. Dann erstellen wir das Modell und setzen es in einen anderen Indikator ein. Ich habe zwei davon. BuySi und SellSi sind die gleichen Indikatoren, die AI enthalten. Bei den Eingängen beziehen sich diese Indikatoren auf den Indikatorensatz Delta+AD+OI. Indikator von Indikator, vor allem in einem Paket... Was könnte das Problem sein... Aber nein... Sie sind.... und ich glaube, ich bin der Einzige, der so viel über diese schöne und wunderbare Programmiersprache weiß.... Also... wo war ich... oh ja.... Das Problem ist folgendes:

Das Skript entlädt einen Wert in eine Datei, aber während des Tests zum Zeitpunkt des Signals zeigt der Ausdruck andere Werte an. D.h. das gleiche Signal in einer Datei schreibt eine Sache, ist aber zum Zeitpunkt der Prüfung am Eingang völlig anders. Und hier liegt das Paradoxon. Die Handle-Initialisierung und der Pufferzugriff selbst wurden aus dem Skript übernommen. Aber BuySi lädt zum Zeitpunkt des Tests ausreichende Daten, weil ich es von Hand überprüft habe. Und das Interessanteste ist, dass OM dieselbe Datei lädt und die Eingabe von AI, aber AD ist Standard, Terminal eins. In der Datei einige Werte, in der Tat andere. Ich denke, es hat mit genau diesem Parameter zu tun, wenn wir versuchen, den Indikator für ein anderes Instrument als das zu testende aufzurufen. Ich denke, das Problem liegt in der Synchronisierung von Kursen und Indikatorwerten. Ich denke, dass diese Lösung einige Vorarbeiten erfordert. Deshalb bitte ich die Menschen um Hilfe. Warum holt das Skript die gleichen iAD-Werte, aber wenn es getestet wird, sind diese Werte unterschiedlich und folglich beginnen sich die Signale zu ändern? Wenn die Symbole auf dem Diagramm sind, d.h. während der Initialisierung berechnet werden, sieht das Bild wie folgt aus.

Sehr gut, meiner Meinung nach. Der Einfluss von OM ist sofort spürbar, aber wenn ich es im Prüfgerät laufen lasse, ändert sich das Bild... und nicht zum Besseren.

Außerdem führt der Tester zwei Durchläufe mit unterschiedlichen Signalen durch. Die Induktoren sollten die Puffer rechtzeitig aufpumpen. Die Berechnung der AI erfolgt mit einer Verzögerung und der Fehler 4806 erscheint nicht mehr, aber die tanzenden Signale und der Unterschied in den Daten, absolut identischen Code mit dem STANDARD iAD Indikator Ich bin ziemlich erschöpft, dass ich zu faul war, diesen langen Beitrag zu schreiben, in der Hoffnung auf Hilfe. Ich denke, das Problem liegt in der iCustom, wenn der Indikator auf einem anderen Instrument als dem aktuellen aufgerufen wird. Genau das gleiche begann Nieseln OI, aber ich dann gezwungen, ihn zu laden aus bestimmten Dateien und alle bestanden, aber was mit iAD zu tun???

So rufe ich das Skript auf, das eine Datei mit Daten erstellt.

AD_H =iAD("BR-12.17",   0, VOLUME_REAL);  Sleep(1500);

dann greife ich auf den Puffer wie folgt zu...

  double AD(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(AD_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

Und dann berechne ich den Input wie folgt.

      double AD=(AD(i+1)-AD(i+PNT+1))*Cont;

Dies ist alles in einem Skript, aber es funktioniert in einem Indikator mit AI, wo der Griff in der folgenden Weise geschrieben wird

AD_H =iAD("BR-12.17",   0, VOLUME_REAL);  

Der Zugriff auf den Puffer ist wie folgt...

  double AD(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(AD_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

Die Eingabeberechnung sieht folgendermaßen aus: ....

      double AD=(AD(i+1)-AD(i+PNT+1))*Cont;

Das ist verständlich, denn alles wurde einfach kopiert. Aber warum gibt es einen solchen Unterschied im Endergebnis? Ich denke aber, dass es daran liegt, dass der Indikator mit einem anderen Symbol aufgerufen wurde. Vor dem Aufruf des Indikators mit einem anderen Symbol müssen keine Vorbereitungen getroffen werden, wie z. B. Synchronisierung oder andere Prüfungen. Was halten Sie davon????

 
Eidechse_:

Meister, schießen Sie los!


OOO Es ist offensichtlich... ein ernsthaftes Publikum ist eingetroffen. Ich denke, die Debatte wird heiß werden :-)

 

Und jetzt habe ich einen Indikator kompiliert, der genau die Daten auf dem Drucker ausgibt, die er an die Datei sendet. Aber während des Tests hat das gleiche Signal am Eingang andere Werte. Wie kommt das?

 

Wie ich sehe, wird es keinen Film geben???? Traurig :-(

 

Nur eine Vermutung, aber -

Wenn Sie die Datei mit den generierten AD-Werten im Voraus füllen und dann diese Datei lesen und zum Testen verwenden, dann schauen Sie möglicherweise voraus und verwenden den Wert des bereits generierten Nullbalkens zu einem Zeitpunkt, zu dem er im EA selbst noch nicht bekannt ist.

 
Dr. Trader:

Nur eine Vermutung, aber -

Wenn Sie die Datei mit den generierten AD-Werten im Voraus füllen und dann diese Datei lesen und zum Testen verwenden, dann schauen Sie möglicherweise voraus und verwenden den Wert des bereits generierten Nullbalkens zu einem Zeitpunkt, zu dem er im EA selbst noch nicht bekannt ist.


Nein. Es werden keine Dateien mit AD geschrieben, alles wird direkt vom Symbol übernommen. Ich denke, es könnte an der fehlenden Synchronisationsprüfung liegen. Außerdem war der Fehler 4806 immer vorhanden. Ich habe eine Verzögerung in den Hauptindikator eingebaut, und der Fehler verschwand, aber das Problem blieb bestehen. :-(

 

Hier ist der Ausdruck des Terminals nach der Kompilierung.

2017.11.27 20:59:17.625 Kaufen_Si (Si-12.17,M5)2017.11.23 11:05:00 1.0 -116.0 64.0 2292.0 -206.0 413 4

und hier von dem Agenten.

2017.11.27 20:59:38.318 2017.11.23 11:10:40 2017.11.23 11:05:00 1.0 -116.0 140.0 -1889.0 -993.0 1 4

Beachten Sie, dass es sich um dasselbe Signal handelt. Die Zeit 11:05:-116 ist die OI, die aus der Datei entnommen wird, ebenfalls dieselbe. Dann gibt es drei AD-Werte aus verschiedenen Symbolen. Dann bar ich gut und Parameter pont.

Warum die Daten über AD unterschiedlich sind. Synchronisationsprüfung eingefügt....?

 

Ohne den Code verstehe ich nichts.

Wir brauchen einen einfachen Expert Advisor mit einem Minimum an Funktionen, um einfach die Indikatorwerte zu lesen und sie in das Protokoll zu schreiben (oder besser - in eine csv-Datei, für einen besseren Vergleich später). In diesem Fall sind die Ergebnisse anders, und der Code sollte zusammen mit dem Code des Expert Advisors an den Service Desk gesendet werden.
Sie können den Code auch an das Terminal anhängen -https://www.mql5.com/ru/forum/1111/page2096 - und dann wird eine sachkundige Person das überprüfen und bestätigen oder erklären, was falsch ist.

Grund der Beschwerde: