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

 
Mihail Marchukajtes:

Questo è il tipo di programmatore che sono. Nessuno può spiegarlo adeguatamente finché non lo si impara... Comunque, la gente!!!!! Ascoltate. Ecco che arriva l'importante post lungo......


è un'evoluzione ... do or die :) sono proprio come quel programmatore

 
Mihail Marchukajtes:

Comunque la gente!!!!! Ascoltate. In arrivo Importante post lungo......

Maestro, brucia!

 

Sapete tutti molto bene che ho un sentimento fervido per l'Open Interest (OI) in quanto è l'anello fondamentale per determinare la natura del volume scambiato. Combinato con il delta...mmmmm.... Solo una gustosa chicca.... L'OI non è certo una panacea, ma migliorare la qualità delle prestazioni del modello anche del 10% avrà già un peso elevato!!!! E oh, miracolo!!!! Alla fine ci sono arrivato nel budello della giornata, ma purtroppo solo MT5 ha tali caratteristiche, che è stato il fattore decisivo per passare da MT4 a 5. Un enorme grazie a Rafil che ha risparmiato molto tempo e ha dato un buon inizio alla migrazione. L'EA è già stato scritto e c'è una settimana di statistiche. Naturalmente non è sufficiente, ma potremmo iniziare a testarlo su M5, specialmente su Si, perché l'influenza dello spread è insignificante in questo lasso di tempo rispetto alla volatilità dello strumento in generale. Beh... i dati ci sono, l'unica cosa è quello che pensavo sarebbe stato. Per allenare il modello e vedere di cosa è capace la combinazione Delta+Volume+OI. Ho una buona conoscenza di Мкуль5, ma dopo averlo trovato credo di essere arrivato al traguardo e di trovarmi di fronte a un muro di incomprensione in una lingua così meravigliosa e potente. Il concetto generale di TC è questo.

In questo articolo cercherò di esplorare le principali differenze tra i valori teorici e quelli numerici del modello.

Per preparare il set di allenamento uso lo script dell'applicazione qui sotto. Questo script scarica i segnali della strategia di base in un file csv. Poi costruiamo il modello e lo infiliamo in un altro indicatore. Ne ho due. BuySi e SellSi, sono gli stessi indicatori che contengono AI. Per gli input questi indicatori si rivolgono all'insieme degli indicatori Delta+AD+OI. Indicatore da indicatore, specialmente in un pacchetto... Quale potrebbe essere il problema... Ma no... Sono .... e penso di essere l'unico a sapere così tanto di questo bellissimo e meraviglioso linguaggio di programmazione.... quindi... dov'ero rimasto... oh sì.... Il problema è questo:

Lo script scarica un dato in un file, ma durante il test al momento del segnale, la stampa visualizza altri valori. Cioè lo stesso segnale in un file scrive una cosa, ma in realtà al momento del test sull'input è completamente diverso. Ed ecco il paradosso. L'inizializzazione dell'handle e l'accesso al buffer stesso sono stati copiati dallo script. Ma BuySi carica dati adeguati al momento del test perché ho controllato a mano. E la cosa più interessante è che OM carica lo stesso file e l'input di AI, ma AD è standard, terminale uno. Nel file alcuni valori, in realtà altri. Penso che abbia a che fare proprio con questo parametro quando cerchiamo di chiamare l'indicatore per uno strumento diverso da quello che si sta testando. Penso che il problema sia nella sincronizzazione delle quotazioni e dei valori degli indicatori. Penso che questa soluzione possa richiedere una preparazione preliminare. Ecco perché chiedo aiuto alle persone. Perché lo script recupera gli stessi valori iAD ma quando viene testato questi valori sono diversi e di conseguenza i segnali iniziano a variare? Quando le icone sono sul grafico, cioè sono calcolate durante l'inizializzazione, l'immagine appare come segue.

Molto bene, secondo me. L'influenza di OM si sente subito, ma quando lo faccio girare nel tester, il quadro cambia... e non in meglio.

Inoltre, il tester fa due corse con segnali diversi. Gli induttori dovrebbero pompare i buffer in tempo. Il calcolo dell'IA è fatto con un ritardo e l'errore 4806 non appare più, ma i segnali di danza e la differenza nei dati, codice assolutamente identico con l'indicatore iAD STANDARD Sono abbastanza stanco che ero troppo pigro per scrivere questo lungo post, sperando in un aiuto. Penso che il problema sia nell'iCustom, quando l'indicatore viene chiamato su uno strumento diverso da quello corrente. Proprio lo stesso ha iniziato a piovigginare OI, ma poi l'ho costretto a caricare da file specifici e tutto è passato, ma cosa fare con lo iAD?

Questo è il modo in cui chiamo lo script, che crea un file con i dati.

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

poi accedo al buffer in questo modo...

  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());
  }

E poi calcolo l'input in questo modo.

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

Questo è tutto in uno script, ma funziona in un indicatore con AI, dove l'handle è scritto nel seguente modo

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

L'accesso al buffer è così...

  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());
  }

Il calcolo dell'input è così....

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

È comprensibile, perché tutto è stato copiato. Ma perché c'è una tale differenza nel risultato finale. Penso, però, che sia perché l'indicatore è stato chiamato con un altro simbolo. Non c'è bisogno di preparare nulla, come la sincronizzazione o qualsiasi controllo prima di chiamare l'indicatore da un altro simbolo. Cosa ne pensi ????

 
Vizard_:

Maestro, spara!


OOO È ovvio... è arrivata una folla seria. Penso che il dibattito sarà caldo :-)

 

E ora ho compilato un indicatore e questo emette sulla stampante esattamente i dati che invia al file. Ma durante il test lo stesso segnale sull'ingresso ha altri valori. Come mai?

 

Vedo che non ci sarà nessun film???? Triste :-(

 

È solo un'ipotesi, ma...

AD è dipendente dal volume, quindi il valore della barra zero cambia costantemente. Se si riempie il file con i valori AD generati in anticipo, e poi si legge quel file e lo si usa per i test, allora si può benissimo guardare avanti, usando il valore della barra zero già generato in un momento in cui non è ancora noto nell'EA stesso.

 
Ildottor Trader:

È solo un'ipotesi, ma...

AD dipende dal volume, quindi il valore sulla barra zero cambia costantemente. Se si riempie il file con i valori AD generati in anticipo, e poi si legge questo file e lo si usa per i test, si può benissimo guardare avanti, usando il valore della barra zero già generato in un momento in cui non è ancora noto nell'EA stesso.


No. Nessun file viene scritto usando AD, tutto viene preso direttamente dal simbolo. Penso che possa essere dovuto alla mancanza di controllo della sincronizzazione. Inoltre, l'errore 4806 era sempre presente. Ho introdotto un ritardo nell'indicatore principale e l'errore è scomparso, ma il problema persisteva. :-(

 

Ecco la stampa dal terminale dopo la compilazione.

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

e qui dall'agente.

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

Notate che questo è lo stesso segnale. il tempo 11:05:-116 è l'OI che è preso dal file, anche questo è lo stesso. Poi ci sono tre valori AD da simboli diversi. Poi mi barro bene e parametro pont.

Perché i dati sull'AD sono diversi. Controllo della sincronizzazione inserito....?

 

Non capisco niente senza il codice.

Abbiamo bisogno di fare un semplice Expert Advisor con un set minimo di funzioni per leggere semplicemente i valori dell'indicatore e scriverli nel log (o meglio - in un file csv, per un migliore confronto successivo). In questo caso i risultati saranno diversi e il codice deve essere inviato al Service Desk insieme al codice dell'Expert Advisor.
Puoi anche allegare il codice al terminale -https://www.mql5.com/ru/forum/1111/page2096 - e poi una persona esperta controllerà e confermerà o spiegherà cosa c'è di sbagliato.