L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2288

 
Igor Makanu:

Perché? Ora avete "in 2 clic" OHLC e spread su questi dati sul mio grafico personalizzato, sottraete lo spread quando aprite/chiudete gli ordini

Dedurlo da dove se il TP si innesca? Dalle linee di equilibrio e di equità disegnate dal tester? E dai loro valori finali? Devo scoprire come fare...
 
Renat Fatkhullin:

Tu parli di linguaggi di programmazione e del loro futuro, ma non hai idea che l'indice TIOBE è l'indice più autorevole della popolarità dei linguaggi di programmazione.

Per te, non è un nome.

Sono andato di nuovo a questo indice TIOBE
Ho trovato una menzione:

I prossimi 50 linguaggi di programmazione

La seguente lista di lingue denota dal numero 51 al numero 100. Poiché le differenze sono relativamente piccole, i linguaggi di programmazione sono solo elencati (in ordine alfabetico).

  • 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:

Per tutti gli Alti e i Bassi ho bisogno di mantenere il loro ordine di arrivo per tempo, cioè potrebbero non essere nell'ordine in cui li ho scritti.

Questo è esattamente quello che fa il mio script.

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

Stai testando in Python o in R? - caricare l'OHLC del personaggio originale, quindi rilasciare lo script sul grafico .... ops, scrivendo al volo, dovete mettere il tempo D'2021.01.01' nelle impostazioni

e caricarvi questo grafico personalizzato - questi OHLC sono completamente sincronizzati

 

In generale, la mia idea è grezza, e ci possono essere delle insidie - come il prezzo è sceso un po' prima di raggiungere Low, poi è salito a High, poi solo a Low.
Senza tutti i tick è impossibile valutare quale sarà il primo TP o SL.

Anche se, nei miei modelli MO, credo che se entrambi i TP e SL sono scattati sulla barra, il primo scattato era la variante svantaggiosa, cioè SL.


Ma è qualcosa a cui pensare, se qualcun altro oltre a me potrebbe beneficiare di tale OHLC reale...

 
Igor Makanu:

Questo è esattamente ciò che fa il mio script.

Stai testando in Python o in R? - scaricare l'OHLC del personaggio originale, quindi rilasciare lo script sul grafico .... ops, scrivendo al volo, dovete mettere il tempo D'2021.01.01' nelle impostazioni

e caricarvi questo grafico personalizzato - questi OHLC sono completamente sincronizzati

Li carico su file, e poi posso caricarli su R, o su python, o su una DLL, o su un server remoto.
 
elibrarius:

In generale, la mia idea è grezza, e ci possono essere delle insidie - come il prezzo è sceso un po' prima di raggiungere Low, poi è salito a High, poi solo a Low.
Senza tutti i tick è impossibile valutare quale sarà il primo TP o SL.

Anche se, nei miei modelli MO, credo che se entrambi i TP e SL sono scattati sulla barra, il primo scattato era la variante svantaggiosa, cioè SL.


Ma è qualcosa a cui pensare, se qualcun altro oltre a me potesse beneficiare di un tale OHLC reale...

Naturalmente senza il tempo di arrivo dei tick non sarete in grado di stimare cosa è stato prima alto o basso solo da OHLC

questo è lo stesso compito che ho fatto per mehttps://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;
}
//+------------------------------------------------------------------+

questo script scaricherà l'alto/basso nel giusto ordine a seconda di quello che c'era prima

 
Igor Makanu:

Naturalmente, senza il tempo di arrivo dei tick non si può stimare ciò che è stato alto o basso dal solo OHLC

questo è lo stesso compito che ho fatto per mehttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

questo script scaricherà l'alto/basso nella giusta sequenza a seconda di quello che c'era prima

Grazie, farò presto qualcosa del genere.
 
elibrarius:

In generale, è necessaria una seconda versione di tick reali, ma con solo 6 tick:
Open: Bid e Ask

Offerta alta

Richiesta alta

Offerta bassa

Richiesta bassa

Chiudere: Bid e Ask

Per tutti gli Alti e i Bassi è necessario mantenere l'ordine del loro arrivo per tempo, cioè non possono essere nell'ordine in cui li ho scritti.

Con un tale strumento è possibile stimare i Bar con una precisione di zecche reali. Con molto meno traffico. E il tester dovrebbe essere insegnato a commerciare con loro, naturalmente - ma penso che il motore di zecche reali farà senza alcuna modifica.

fxsaber l'ha fatto per MT4 qualche tempo fa.

Ora non è affatto un problema - da zecche reali si può costruire qualsiasi versione assottigliata in castum tool, e testarla.

 
Renat Fatkhullin:

Svilupperemo un'integrazione diretta con WinML, come abbiamo fatto per OpenCL e DirectX.

Inoltre, abbiamo un grande progetto per includere moduli/pacchetti C++ simili ad altri linguaggi. Cioè, sarà possibile convertire molte librerie open source in pacchetti.

Operazioni di matrice almeno su CPU/Multithreads/AVX, ma possibilmente anche con la GPU.

Evidenziato suona stimolante. Soprattutto se ci sono librerie Keras o almeno Tenzor Flow simili in C++. Grazie.

s.w. WinML riguarda solo il lavoro online, nessuna formazione, giusto? Ma è un bene, i modelli stanno diventando sempre più pesanti.

 
Maxim Dmitrievsky:

Dov'è il grafico reale e dov'è quello generato?


Sopra è il grafico generato, sotto è il grafico del mercato