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

 
Mihail Marchukajtes:

Alexei, grazie mille. Controllerò sicuramente tutto e vi farò sapere il risultato. Per quanto riguarda il guardare nel futuro, non è assolutamente importante e non accadrà se l'EA scrive come legge l'indicatore. Se non c'è differenza tra loro, non avrà importanza. In alternativa, quando appare una nuova barra, aspettiamo il primo cambiamento di OI e registriamo il nuovo valore della prima barra precedente. Possiamo anche registrare non un nuovo valore, ma il vecchio che era ultimo per la prima barra. Cioè, in effetti, inizieremo a scriverlo alla fine della barra precedente.

La cosa importante non è l'OI che assegniamo alla barra dei minuti, ma come l'indicatore sarà letto dal file.

Pensate anche non solo alla formazione, ma anche all'uso del modello quando i dati saranno presi dal mercato - i dati più affidabili saranno disponibili lì. Per ora i dati saranno salvati all'apertura della candela, cioè sulla barra zero non ci sarà nessun cambiamento dopo l'apertura (se ho capito bene :) ). Se hai bisogno di dati su una barra di chiusura, puoi modificarla in ogni caso. L'unica differenza è il valore dell'ultima o della penultima barra.

 

neocognitron - una specie di rete convoluzionale ma senza insegnante

https://habr.com/ru/post/214317/

Chi capisce come funziona, per favore me lo spieghi

 
Aleksey Vyazmikin:

Inoltre, pensate non solo alla formazione, ma anche all'applicazione del modello quando i dati saranno presi dal mercato - in modo che ci siano i dati più affidabili. Per ora i dati saranno salvati all'apertura della candela, cioè sulla barra zero non ci sarà nessun cambiamento dopo l'apertura (se ho capito bene :) ). Se hai bisogno di dati su una barra di chiusura, puoi farlo dopo. L'unica differenza è l'ultima o la penultima barra da cui l'EA dovrebbe ottenere i dati.

Anche se l'Expert Advisor inizia a lavorare all'apertura della barra, ottiene ancora dati dalla prima barra. Nel mio caso è addirittura preso dalla seconda barra; bene, questo è il mio bug perché non dovremmo aspettare 30 secondi per l'aggiornamento dei valori sulla prima barra; la seconda barra è già stata calcolata da parecchio tempo. Ecco perché scrivere il primo valore di OI nella barra aperta non è così spaventoso. Si scopre che scrivo il valore attuale nella storia. Non si può guardare indietro. E non importa, non lo prendiamo da una copia. La cosa più importante è che l'indicatore lo legga correttamente. Avete una funzione aggiuntiva nel vostro indicatore per leggere un file che contiene la condizione "True Date". Per il corretto caricamento della storia dal file ho dovuto aggiungere la seguente linea

 if(New_Data==true)
            {
               ArrayResize(oi,x+2,1000);
               if(cnt==0)
               {
               Arh_Time=StringToTime(str);///////////// Если честно в обще не понял зачем ты так это всё разделил
                  oi[x].time=Arh_Time;                 //если запись первая, т.е. дата, то конвертируем из стринга в дататайм
               }

               else if(cnt==1)
               {
                  oi[x].oi=Arh_oi;   //если запсиь вторая, т.е. ОИ, то конвертируем в инт и
                  New_Data=false;
                  x++;
               }
            }

E l'indicatore ha iniziato a lavorare con i dati registrati al minuto e per tick, tutti in un file. Ho anche controllato come sono costruiti i diversi timeframes e tutto si adatta bene, ma ho dovuto cambiare anche questa linea nel corpo principale

for(int s=f; s<count_size; s++)
            {
               //Print("Test_02");
               if(oi[s].time>time[i])
               {
                  //Print("Test_03");
                  if (s>1)BufOI[i-1]=oi[s-1].oi; /// иначе всё бралось с минутой позже
                  //Print("s=",s);
                  f=s;
                  break;
               }
               if(s+1==count_size)
               {
                  BufOI[i]=SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST);
                  //Print("OI=",SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST));
                  if(BufOI[i]<1)BufOI[i]=BufOI[i-1];
                  if(BufOI[i]<1 && BufOI[i-1]<1)BufOI[i]=100;
                  f=s;
               }
            }

Ho cambiato questa linea nel corpo principale, altrimenti ho messo l'EA sul grafico e sto aspettando l'apertura.

Ecco un indicatore e non ringraziare :-)!!!! Sto solo scherzando con grazie mille. Che ne dici di 37 sterline? Vuoi guadagnare?

File:
OI_Test.mq5  16 kb
 
Aleksey Vyazmikin:

Se l'Expert Advisor lavora in base all'apertura della barra, anche se è in ritardo, è corretto fornirgli i dati in base alla chiusura della candela, cioè per guardare nel futuro? Ecco perché si usano i dati più freschi prima di questa candela, cioè un piccolo ritardo, invece di anticipare.


Dov'è il calcolo dei 5 tick? A volte succede che un trade non viene concluso entro un minuto, quindi si perde una barra, ed è per questo che ho rimosso il confronto per la variazione del volume OM, per i dati da scrivere immediatamente all'apertura di una nuova candela. Forse l'ho dimenticato, devo testarlo su dati, non ho avuto dati ieri ed è un giorno feriale :(

Ci sarà uno scarto e dovrei riscrivere il suo valore dalla seconda barra. Ma la mia domanda rimane senza risposta: la nuova condizione della barra sarà soddisfatta quando la palla si apre e passano alcuni tick, per esempio, e solo allora l'OI cambierà?
 
Purtroppo, né la prima né la seconda barra sono registrate in modalità tempo normale. Quando si ricompila l'indicatore, la storia viene caricata ma solo fino alla terza barra, né la seconda né la prima vengono aggiornate, anche se sono presenti nel file.
 
Mihail Marchukajtes:

I dati sono ancora presi dalla prima barra, anche se l'EA inizia a lavorare all'apertura della barra. Nel mio caso è addirittura dalla seconda barra, ma questo è il mio bug perché non ho bisogno di aspettare 30 secondi per l'aggiornamento dei valori sulla prima barra, la seconda barra è già stata calcolata e da molto tempo. Ecco perché scrivere il primo valore di OI nella barra aperta non è così spaventoso. Si scopre che scrivo il valore attuale nella storia. Non si può sbirciare. E non importa, non lo prendiamo da una copia. L'importante è che l'indicatore lo legga correttamente. Avete una funzione aggiuntiva nel vostro indicatore per leggere un file che contiene la condizione "True Date". Per il corretto caricamento della storia dal file ho dovuto aggiungere la seguente linea

E l'indicatore ha iniziato a lavorare con i dati registrati al minuto e per tick, tutti in un file. Ho anche controllato come sono costruiti i diversi timeframes e tutto si adatta bene, ma ho dovuto cambiare anche questa linea nel corpo principale

Ho cambiato questa linea nel corpo principale, altrimenti ho messo l'EA sul grafico e sto aspettando l'apertura.

Ecco un indicatore e non ringraziare :-)!!!! Sto solo scherzando con grazie mille. Che ne dici di 37 sterline? Vuoi fare soldi?

Se non usate una barra zero, naturalmente potete fare un look ahead. Ne ho fatto uno personalizzato qui, il modo in cui lavoro con i dati.

L'unica cosa che mi confonde è.

if (s>1)BufOI[i-1]=oi[s-1].oi; /// иначе всё бралось с минутой позже

Questa disuguaglianza può non essere rispettata. Poiché il tempo del primo tick può non coincidere con il tempo di apertura della candela. Salva invece del tempo dal file,

Arh_Time=StringToTime(str);

troncare il tempo al minuto dalla variabile NewTime.

E riguardo alla ricompensa - pensavo di essermela già guadagnata :)


Mihail Marchukajtes:
Sì, ci sarà uno scarto e devi riscrivere il valore della seconda barra. Ma la mia domanda rimane senza risposta: la condizione per una nuova barra sarà soddisfatta quando una palla si apre e passa qualche tick, per esempio, e poi l'OI viene cambiato?

Il controllo di una nuova barra avviene dopo un cambio di volume, quindi dovremmo arrivare alla parte del codice dove avviene l'entrata.


Mihail Marchukajtes:
Purtroppo non scrive la prima o la seconda barra in modalità raltime. Quando ricompilo l'indicatore la cronologia viene caricata ma solo fino alla terza barra, né la seconda né la prima vengono aggiornate, anche se sono presenti nel file.

Non scrive dove? L'Expert Advisor non scrive? Prova la vecchia versione dell'EA dove scrive più volte al minuto e vedi se l'indicatore funziona correttamente con essa.

 
Aleksey Vyazmikin:

Se non usate la barra zero, potete ovviamente fare un look ahead. Ho fatto le mie cose qui, il modo in cui lavoro con i dati.

Solo che sono confuso.

Questa disuguaglianza può non essere rispettata. Poiché il tempo del primo tick può non coincidere con il tempo di apertura della candela. Salva invece del tempo dal file,

troncare il tempo al minuto dalla variabile NewTime.

E riguardo alla ricompensa - pensavo di essermela già guadagnata :)


Controlla la presenza di una nuova barra dopo il cambio di volume, quindi deve arrivare alla parte del codice dove avviene la scrittura.


Dove non scrive? L'EA non scrive? Prova la vecchia versione dell'EA dove scriveva più volte al minuto, l'indicatore funzionerà correttamente con essa.

Ho a che fare con l'EA ora, continua a cambiare il valore della prima barra nel file per qualche motivo. Sento che il nuovo bar è sempre migliore. Se non avessi controllato ora sarei inciampato.

E così ad ogni ricompilazione. Cos'è l'HZ? Ho già provato molte cose, a volte lo carica a volte no...

 
Mihail Marchukajtes:

Ora ho a che fare con l'EA, continua a cambiare il valore della prima barra nel file per qualche motivo. Sembra che il nuovo bar sia sempre più scuro. Ho controllato ora e sembra così quando ricompilo.

E così ad ogni ricompilazione. Cos'è l'HZ? Ho provato molte cose - a volte lo carica, a volte no...

Il mio EA non scrive affatto il tuo EA - devo provarlo. Ho già provato e non funziona, non voglio che si apra o si chiuda.

 
Aleksey Vyazmikin:

Il mio EA non scrive affatto il tuo EA - devo capirlo. O per favore mandatemi una versione funzionante solo per Si da scrivere.

Dovete specificare ovunque il contratto a termine corrente. Naturalmente, non funziona in Splice. Se provo a usare un'alternativa, mostrerò la versione attuale dell'indicatore, che compila e funziona solo fino alla seconda barra, mentre la prima barra cambia sempre.

File:
 

Alexey, è possibile fare in modo che l'indicatore legga le letture dal file per la prima barra quando appare una nuova barra e così si ottiene la sincronizzazione più completa. Infatti, non starà sul grafico, e sarà chiamato periodicamente da segnale a segnale... La questione è che l'EA usa MarketBook e l'indicatore riceve dati dalla borsa. Penso che dovremmo usare il monitoraggio del book di mercato e l'indicatore inizierà a lavorare con questi input. Profit!!!!!

Penso che l'unica fonte per ottenere OM dovrebbe essere l'EA e la duplicazione delle richieste allo scambio non è accettabile, altrimenti ci preoccupiamo solo di negoziare. Cosa ne pensate?

Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...