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

 
Igor Makanu:

Warum? Sie haben jetzt "in 2 Klicks" OHLC und Spread auf diese Daten auf meinem benutzerdefinierten Diagramm, subtrahieren Sie den Spread bei der Eröffnung / Schließung von Aufträgen

Wovon soll ich es abziehen, wenn die TP ausgelöst wird? Aus den vom Prüfer gezogenen Bilanz- und Eigenkapitallinien? Und von ihren Endwerten? Ich muss herausfinden, wie man das macht...
 
Renat Fatkhullin:

Sie reden über Programmiersprachen und ihre Zukunft, aber Sie haben keine Ahnung, dass der TIOBE-Index der maßgebliche Index für die Beliebtheit von Programmiersprachen ist.

Für Sie ist das ein No-Name.

Ich habe den TIOBE-Index
erneut besucht und eine Erwähnung gefunden:

Die nächsten 50 Programmiersprachen

Die folgende Liste der Sprachen umfasst die Nummern 51 bis 100. Da die Unterschiede relativ gering sind, werden die Programmiersprachen nur (in alphabetischer Reihenfolge) aufgeführt.

  • 4th Dimension/4D, ABC, ActionScript, Alice, Applescript, AutoLISP, B4X, bc, Bourne Shell, CIL, CL (OS/400), Clojure, CoffeeScript, Common Lisp, Crystal, cT, Elixir, Emacs Lisp, Erlang, F#, Factor, Hack, Icon, Inform, Io, J, Korn shell, Ladder Logic, LiveCode, Maple, ML, MQL4, NATURAL, Nim, OpenCL, OpenEdge ABL, PILOT, PL/I, PostScript, Q, Ring, RPG, S, Simulink, Small Basic, SPARK, SPSS, Stata, Tcl, Verilog

 
elibrarius:

Für alle High und Low muss ich die zeitliche Reihenfolge ihrer Ankunft beibehalten, d.h. sie müssen nicht unbedingt in der Reihenfolge sein, in der ich sie geschrieben habe.

Das ist genau das, was mein Skript macht.

for(int i = ArraySize(ticks) - 1; i >= 0; i--)
   {
      ticks[i].bid = ticks[i].ask;
   }

Testen Sie in Python oder in R? - OHLC des ursprünglichen Zeichens hochladen, dann das Skript auf dem Diagramm ablegen .... oops, ich schreibe spontan, Sie müssen die Zeit D'2021.01.01' in den Einstellungen eingeben

und laden Sie dieses benutzerdefinierte Diagramm auf sich selbst hoch - diese OHLCs sind vollständig synchron

 

Im Allgemeinen ist meine Idee unausgegoren, und es kann Fallstricke geben - wie der Preis ging ein bisschen nach unten vor dem Erreichen Low, dann ging bis zu High, dann nur auf Low.
Ohne alle Ticks ist es unmöglich abzuschätzen, was der erste TP oder SL sein wird.

Obwohl ich in meinen MO-Modellen glaube, dass, wenn sowohl TP als auch SL auf dem Balken auslösten, die zuerst ausgelöste Variante die ungünstigere war, d.h. die SL.


Aber es ist etwas, worüber man nachdenken sollte, wenn außer mir noch jemand von einem solchen echten OHLC profitieren könnte...

 
Igor Makanu:

Genau das tut mein Skript.

Testen Sie in Python oder in R? - OHLC des ursprünglichen Zeichens entladen, dann das Skript auf dem Diagramm ablegen .... oops, ich schreibe spontan, Sie müssen die Zeit D'2021.01.01' in den Einstellungen eingeben

und laden Sie dieses benutzerdefinierte Diagramm auf sich selbst hoch - diese OHLC sind vollständig synchron

Ich lade sie in Dateien hoch, und dann kann ich sie in R, in Python, in eine DLL oder auf einen entfernten Server hochladen.
 
elibrarius:

Im Allgemeinen ist meine Idee unausgegoren, und es kann Fallstricke geben - wie der Preis ging ein wenig nach unten vor dem Erreichen Low, dann ging bis zu High, dann nur auf Low.
Ohne alle Ticks ist es unmöglich zu beurteilen, was der erste TP oder SL sein wird.

Obwohl ich in meinen MO-Modellen glaube, dass, wenn sowohl TP als auch SL auf dem Balken auslösten, die zuerst ausgelöste Variante die ungünstigere war, d.h. die SL.


Aber es ist etwas, worüber man nachdenken sollte, wenn außer mir noch jemand von einem solchen echten OHLC profitieren würde...

Ohne die Ankunftszeit der Ticks können Sie natürlich nicht abschätzen, was früher das Hoch oder Tief war, nur durch OHLC

Dies ist die gleiche Aufgabe, die ich für mich selbst erledigt habehttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

#define  OPEN   0
#define  HIGH   1
#define  LOW    2
#define  CLOSE  3

MqlTick HistoryData[];
MqlTick bar[4];
const datetime t_bar[] = {0, 20, 40, 59};
//+------------------------------------------------------------------+
int OnInit()
{
   ArrayResize(HistoryData, 1, 2000000);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   int handle = FileOpen(_Symbol + "_tick.bin", FILE_WRITE | FILE_BIN | FILE_COMMON);
   if(handle < 0)
   {
      Print("Erorr write array # ", GetLastError());
      return;
   }
   FileWriteArray(handle, HistoryData, 1);
}
//+------------------------------------------------------------------+
void OnTick()
{
   MqlTick tick;
   if(!SymbolInfoTick(_Symbol, tick)) return;
   static datetime LastBarM1 = 0;
   datetime d_minutes = tick.time / 60;
   if(LastBarM1 == 0)   // первый запускt
   {
      for(int i = 0; i < 4; i++) bar[i] = tick; // проинициализируем
      LastBarM1 = d_minutes;
   }

   if(d_minutes != LastBarM1) //--- если новая минута
   {
      if(bar[HIGH].time_msc > bar[LOW].time_msc)   // поменяем местами по времени тика
      {
         MqlTick tmp = bar[LOW];
         bar[LOW] = bar[HIGH];
         bar[HIGH] = tmp;
      }
      datetime t = LastBarM1 * 60;  // посчитаем вренмя, sec = 0
      for(int i = 0; i < 4; i++)    // подменим время тика
      {
         bar[i].time = t + t_bar[i];
         bar[i].time_msc = bar[i].time * 1000;
      }
      ArrayInsert(HistoryData, bar, ArraySize(HistoryData));   // добавим в массив
      for(int i = 0; i < 4; i++) bar[i] = tick;                // проинициализируем
      LastBarM1 = d_minutes;                                   // запомним минуты
   }

   if(tick.ask > bar[HIGH].ask) bar[HIGH] = tick;
   if(tick.ask < bar[LOW].ask)  bar[LOW]  = tick;
   bar[CLOSE] = tick;
}
//+------------------------------------------------------------------+

Dieses Skript entlädt die Hoch-/Tiefwerte in der richtigen Reihenfolge, je nachdem, was vorher war.

 
Igor Makanu:

Natürlich kann man ohne die Ankunftszeit der Ticks nicht allein anhand des OHLC abschätzen, was hoch oder niedrig war.

Dies ist die gleiche Aufgabe, die ich für mich selbst erledigt habehttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

dieses Skript entlädt die Hoch-/Tiefwerte in der richtigen Reihenfolge, je nachdem, was zuvor war

Danke, so etwas werde ich demnächst auch machen.
 
elibrarius:

Im Allgemeinen wird eine zweite Version von echten Ticks benötigt, aber mit nur 6 Ticks:
Open: Bid and Ask

Höchstgebot

Hohe Nachfrage

Niedriges Gebot

Niedrige Nachfrage

Schließen: Bid und Ask

Für alle High und Low ist es notwendig, die Reihenfolge ihres Eintreffens nach Zeit einzuhalten, d.h. sie können nicht in der Reihenfolge sein, in der ich sie geschrieben habe.

Mit einem solchen Werkzeug ist es möglich, die Barren mit der Genauigkeit von echten Ticks zu schätzen. Mit viel weniger Verkehr. Und der Prüfer sollte natürlich lernen, mit ihnen zu handeln - aber ich denke, der Motor der echten Zecken wird ohne irgendwelche Änderungen auskommen.

fxsaber hat dies vor einiger Zeit für MT4 getan.

Jetzt ist es überhaupt kein Problem mehr - aus echten Zecken kann man jede verdünnte Version des Castum-Tools bauen und testen.

 
Renat Fatkhullin:

Wir werden eine direkte Integration mit WinML entwickeln, so wie wir es bei OpenCL und DirectX getan haben.

Außerdem haben wir ein großes Projekt zur Aufnahme von C++-Modulen/Paketen ähnlich wie bei anderen Sprachen. Das heißt, es wird möglich sein, viele Open-Source-Bibliotheken in Pakete umzuwandeln.

Matrixoperationen zumindest auf CPU/Multithreads/AVX, aber möglicherweise auch mit GPU.

Hervorgehobene Klänge inspirieren. Vor allem, wenn es ähnliche Keras- oder zumindest Tenzor Flow-Bibliotheken in C++ gibt. Danke.

s.w. Bei WinML geht es nur um Online-Arbeiten, nicht um Schulungen, richtig? Aber das ist gut so, die Modelle werden immer schwerer und schwerer.

 
Maxim Dmitrievsky:

Wo ist das echte Diagramm und wo ist das generierte Diagramm?


Oben ist der generierte Chart, unten der Marktchart

Grund der Beschwerde: