Discussione sull’articolo "Programmazione di una rete neurale profonda da zero utilizzando il linguaggio MQL" - pagina 5

 
Sì e su mt5 ho messo, che mq5 anche alla compilazione dà 11 errori. Forse puoi aiutarmi a capire ????????
 
I parametri della rete profonda sotto forma di variabili esterne sono troppo poco flessibili.
 

Ho modificato l'input "bodyPer". Invece di caricare semplicemente la lunghezza relativa del corpo, calcolo questo valore: bodyPer=0.5+((close-open)/p100)/2;

In questo modo, oltre alla lunghezza relativa, la variabile cattura anche la direzione della candela. In questo modo si libera uno spazio per una quarta variabile, credo.

 

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

Qui passiamo i dati di una candela che non si è ancora formata. In realtà, tutti i parametri saranno gli stessi all'apertura della candela. Tutti saranno = rates[0].open

 
Vasily Pototsky #:

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

Qui passiamo i dati di una candela che non si è ancora formata. In realtà, tutti i parametri saranno gli stessi all'apertura della candela. Tutti saranno = rates[0].open

Non è corretto!

int copied=CopyRates(_Symbol,0,1,5,rates);

In questo caso la copia non viene effettuata dalla barra zero, ma dalla prima, quindi qui:

CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

saranno i valori dell'ultima barra...

Non credo sia necessario copiare 5 barre, è sufficiente copiare una barra passata in questo modo:

int copied=CopyRates(_Symbol,0,1,1,rates);
 

Ciao Anddy, hai fatto un ottimo lavoro!!!

Sto analizzando il tuo codice per adattarlo alla mia strategia e finora posso dire che il tuo DNN è fantastico! Grazie per la condivisione.

Ho solo una domanda: non riconosco l'uso di "yValues[2]>0.6" in nessuna situazione. Dopo vari tentativi con diversi asset, non è stato chiuso nessun trade a causa di questa condizione. È corretto?

Grazie!

I migliori,
Alexandre

In questo forum, si prega di commentare in portoghese. Utilizzare lo strumento di traduzione automatica o commentare in uno dei forum in un'altra lingua.

 
Strano comportamento: ogni volta che si cambia la variabile di tendenza, i risultati dell'allenamento sono sempre diversi, perché?

C'è un errore logico nel codice!

   double trend=0; // также при trend=100 результаты много лучше и больше количество точек оптимизаций!? 
   if(uod>0)
     {
      highPer=high-close;
      lowPer=open-low;
      bodyPer=close-open;
      trend=1;

     }
   else
     {
      highPer=high-open;
      lowPer=close-low;
      bodyPer=open-close;
      trend=-1; // стоял ноль!
     }
 
Nikolai Kalinin #:
Strano comportamento: ogni volta che si cambia la variabile di tendenza, i risultati dell'allenamento sono sempre diversi, perché?

C'è un errore logico nel codice!

Specificità della funzione di attivazione.

Più strati ci sono, maggiore è l'attenuazione - i valori saranno più vicini a 0.

L'offset risolve un po' questo problema.

Quindi, quando la soglia è impostata a 0,6, la maggior parte degli insiemi possibili viene scartata. Se si inserisce un numero enorme o più numeri grandi, anche un passaggio diretto porterà più valori possibili alla fine della rete neurale.

E più valori raggiungono o attraversano il limite della soglia, più posizioni o più opportunità di adattare (memorizzare il percorso) il grafico dei prezzi alla rete neurale.
 
Ivan Butko #:

Specificità della funzione di attivazione.

Maggiore è il numero di strati, maggiore sarà l'attenuazione - i valori saranno più vicini a 0.

L'offset risolve un po' questo problema.

Quindi, quando la soglia è impostata a 0,6, la maggior parte dei possibili set viene scartata. Se si inserisce un numero enorme o più numeri grandi, anche un passaggio diretto porterà più valori possibili alla fine della rete neurale.

E più valori raggiungono o superano il limite di soglia - più posizioni o più opportunità di adattare (ricordate il percorso) il grafico dei prezzi alla rete neurale.

In ogni caso, i risultati dell'addestramento sono sempre molto variabili con qualsiasi tipo di ottimizzazione, il che solleva alcuni dubbi sulla sua applicabilità al trading reale - ci saranno sempre parametri migliori dei pesi nelle combinazioni di riordino. Qual è la spiegazione di questa peculiarità di questa NS?

 
Nikolai Kalinin #:

In ogni caso, i risultati dell'addestramento sono sempre molto variabili con qualsiasi tipo di ottimizzazione, il che solleva alcuni dubbi sull'applicabilità al trading reale - ci saranno sempre parametri migliori dei pesi nella riorganizzazione delle combinazioni. Qual è la spiegazione di questa peculiarità di questo NS?

Lei dà molta importanza a questo NS, in realtà a tutti i NS e a tutto ciò che riguarda il MO, in generale - ovunque ci siano moltiplicazioni di numeri per numeri e un sommatore nella funzione di attivazione - sarà tutto un adattamento al grafico. Un sistema totalmente instabile.

Inoltre, il prezzo è un processo non stazionario. Ogni volta che ci sono nuovi dati, e se si divide il grafico in pattern, questi tenderanno a funzionare al 50/50 sulla storia.

I NS sono per sistemi stazionari, ripetitivi.

Ma nel Forex e così via sono necessari sistemi più avanzati e intelligenti. Qualcosa come diversi NS, in qualche modo collegati tra loro, che in qualche modo si adattano magicamente al cambiamento delle statistiche del pattern, ecc.

Il NS stesso è una memorizzazione del percorso dei prezzi, o una media dei risultati, se la quantità di nuovi dati è superiore alle possibili combinazioni di numeri ottenute per moltiplicazione (o in parole povere - l'architettura NS più semplice con due o tre ingressi).

È interessante scavare, costruire architetture, aggiungere neuroni e strati. Ma è assolutamente inutile, non meglio di un incrocio di mashka.