Problemi riscontrati durante il back testing e non si riesce a trovare la causa principale! - pagina 4

 
GumRai:

permetterà calcoli diversi sulla prima esecuzione su barre chiuse rispetto a quello che fa sulla barra corrente.

Quello che farà al primo tick di una nuova barra è

Sui tick successivi della stessa barra calcolerà

Che è una sorta di composizione

Caro GumRai,

La barra attuale, Bar[0] è necessaria per la riverniciatura. Quindi l'argomento riguarda il problema che le barre storiche sono state osservate con la riverniciatura, forse Bar[8],..Bar[3],.., o Bar[1].

Potete vedere che si tratta solo di circa 10 righe di codice per il contenuto principale dell'indicatore.

Tuttavia, è ancora così difficile per noi trovare la causa principale della riverniciatura delle barre storiche.

È così strano e sono confuso su come le barre storiche possano essere ridipinte con quel codice.

 

Come ho detto, l'indicatore sta ricalcolando bar[0] ogni tick usando un valore che è stato calcolato nel tick precedente della stessa barra

Mentre il tester è in esecuzione, l'indicatore sta calcolando in pseudo tempo reale anche se l'indicatore non è effettivamente sul grafico

Quando il tester è finito, l'indicatore viene aggiunto al grafico e credo che non tenga conto di tutti i tick perché viene calcolato solo una volta per barra.

Prova mettendo l'indicatore sul grafico in modalità visiva.

 
jollydragon:

Caro ffoorr, non posso aprire le pagine e non posso accedere al sito, www.forex-tsd.com. Forse la mia configurazione internet ha qualche problema.

Per favore, concentriamoci sul mio codice. Sono solo circa 10 righe di codice per il contenuto principale.

Tuttavia, è ancora così difficile per noi trovare la causa principale della riverniciatura delle barre storiche.


diminuire lo zoom per accedere al numero di pagina su TSD,


l'indicatore è migliore

 
GumRai:

Come ho detto, l'indicatore sta ricalcolando bar[0] ogni tick usando un valore che è stato calcolato nel tick precedente della stessa barra

Prova mettendo l'indicatore sul grafico in modalità visiva.

GumRai, fai riferimento ai miei post precedenti:

. Non è un problema che la barra[0] sia ridipinta come è necessario.

. Per questo thread, l'argomento o il problema è esattamente perché le barre storiche a sinistra di bar[0] sono state ridipinte e non è previsto. L'ho già osservato nei grafici e ho già incollato degli screenshot.

Cari tutti, per favore concentriamoci sui miei codici e miglioriamoci insieme scavando la causa principale. Non ho bisogno di un indicatore migliore, ma voglio conoscere la causa principale!

Grazie per la comprensione e il supporto.

 

Sembra che tu non capisca quello che ti sto dicendo.

Non so se è perché non mi sto spiegando bene o se semplicemente non stai leggendo bene i miei post.

Quando reinizializzi l'indicatore, tutto l'indicatore viene ricalcolato sulla base di un tick per barra mentre in tempo reale si basa su più tick in una barra.

Quindi se l'indicatore viene disegnato in tempo reale e poi reinizializzato, ci saranno delle differenze.

 
GumRai:

Sembra che tu non capisca quello che ti sto dicendo.

Non so se è perché non mi sto spiegando bene o se semplicemente non stai leggendo bene i miei post.

Quando reinizializzi l'indicatore, tutto l'indicatore viene ricalcolato sulla base di un tick per barra mentre in tempo reale si basa su più tick in una barra.

Quindi se l'indicatore viene disegnato in tempo reale e poi reinizializzato, ci saranno delle differenze.

Mi dispiace dire che l'inglese non è la mia lingua madre.

Non importa se è disegnato alla reinizializzazione o in tempo reale, ogni barra storica è calcolata in base all'ultimo tick.

Pertanto, la barra storica dovrebbe essere congelata allo stesso modo. Corretto? Come si può osservare la differenza o la riverniciatura se si guarda l'indicatore in un grafico live con M1 per un periodo?

 
Sembra che questo non sia un problema semplice e fuori dalla capacità di molti esperti di codifica.
 

Beh, mi sembra un problema semplice, è solo che non capisci la risposta.

Prova il codice allegato, nel quale spero che tu sia in grado di vedere cosa succede

Ho appena cambiato il ciclo di disegno dell'indicatore in

   for(i=limit-1; i>=0; i--)
     {
      ExtBuffer1[i]=1.1*Fish1;
      Fish1=ExtBuffer1[i];
      if(Fish1>=EMPTY_VALUE)
         Fish1=1;
     }

e il valore iniziale per Fish1

Fish1=0.00001;

Eseguilo su un grafico M1 con tick regolari. Vedrete formarsi vari picchi.

Reinizializzate l'indicatore e vedrete scomparire tutti quei picchi.

Inoltre, se avete una connessione internet non molto buona e perdete una barra, l'intero indicatore viene ricalcolato, quindi i picchi spariranno

Capite perché?

File:
 
GumRai:

Beh, mi sembra un problema semplice, è solo che non capisci la risposta.

Prova il codice allegato, nel quale spero che tu sia in grado di vedere cosa succede

Ho appena cambiato il ciclo di disegno dell'indicatore in

e il valore iniziale per Fish1

Eseguilo su un grafico M1 con tick regolari. Vedrete formarsi vari picchi.

Reinizializzate l'indicatore e vedrete scomparire tutti quei picchi.

Inoltre, se avete una connessione internet non molto buona e perdete una barra, l'intero indicatore viene ricalcolato, quindi i picchi spariranno

Capite perché?

Caro GumRai,

Sembra che tu abbia colto il mio punto di vista.

Si prega di fare riferimento agli screenshot qui sotto. Dopo aver cliccato con il tasto destro del mouse sul tuo indicatore e selezionato "aggiorna", la posizione dei picchi è cambiata.

Tuttavia, non riesco ancora a capire perché. Ecco perché non riesco a trovare la causa principale nel mio indicatore di riverniciatura.

. Secondo l'indicatore che hai modificato, capisco che dovrebbe disegnare una linea esponenziale. Perché disegna picchi con intervalli? È perché c'è un "valore vuoto"?

. Perché la posizione dei picchi cambia dopo il refresh?

. Non riesco ancora a vedere la scomparsa dei picchi. Come "reinizializzare"?

Prima del refresh:

Dopo il refresh:

 
jollydragon: Tuttavia, non riesco ancora a capire perché. Ecco perché non riesco a trovare la causa principale nel mio indicatore di riverniciatura.

   for(i=limit-1; i>=0; i--)
     {
      ExtBuffer1[i]=1.1*Fish1;
      Fish1=ExtBuffer1[i];
      if(Fish1>=EMPTY_VALUE)
         Fish1=1;
     }

Per ogni iterazione (tranne la prima) Fish1 è il valore dell'elemento precedente del buffer, ma non lo inizializzate a ExtBuffer1[limit].

Quindi per l'iterazione iniziale (quando limite == barre) si imposta ExtBuffer1[0] = 1.1*ExtBuffer1[1] .

Ma per i tick successivi (quando limite == 1) si imposta ExtBuffer1[0] = 1.1*0.00001 .

Motivazione: