Aiuto per la codifica - pagina 407

 

Ciao Ragazzi, ho bisogno del vostro aiuto per un indicatore che ho fatto. Fondamentalmente, si tratta di un tester che dovrebbe essere utilizzato solo per ottimizzare le impostazioni di una strategia (e anche testare le sue prestazioni). In modalità test (Optimize su False), funziona alla grande e fornisce il win rate e il balance per i parametri di default. Ma ho problemi a far funzionare la funzione di ottimizzazione. Il risultato per le migliori impostazioni finisce sempre per essere il valore più basso (PeriodMin). Mi chiedo se è il modo in cui sto usando i buffer dichiarati all'interno della funzione Optimization double (vedi linee 616 e 617, e linee 746 e 747 usate per liberare i buffer). Credo che non sia solo questo, perché se non uso questi buffer (impostando AllowMultipleOpenTrades su False), continua a dare risultati non coerenti. Se qualcuno può dare un'occhiata e aiutarmi, gliene sarei grato. Grazie mille.

File:
 
airquest:
Non sono sicuro di cosa stai cercando di fare. Forse questo?

No, temo di no. Lasciatemi illustrare con uno screenshot. Nella freccia rosa superiore si vede chiaramente che la barra rossa del BASSO è molto più grande della barra blu dell'ALTO. Eppure l'output corrispondente nell'indicatore Linear Bar Diff è sopra lo zero! (vedi freccia rosa inferiore). Quando la barra rossa della barra bassa è più grande della barra blu della barra alta, la differenza di entrambe le barre dovrebbe essere negativa, non positiva. Le frecce verdi mostrano un altro esempio dello stesso problema.

Cordiali saluti

File:
example.png  25 kb
 
mrcodix:
No, temo di no. Lasciatemi illustrare con uno screenshot. Nella freccia rosa superiore si vede chiaramente che la barra rossa del BASSO è molto più grande della barra blu dell'ALTO. Eppure l'output corrispondente nell'indicatore Linear Bar Diff è sopra lo zero! (vedi freccia rosa inferiore). Quando la barra rossa della barra bassa è più grande della barra blu della barra alta, la differenza di entrambe le barre dovrebbe essere negativa, non positiva. Le frecce verdi mostrano un altro esempio dello stesso problema. Cordiali saluti

Quindi, forse questo? Bisogna vedere che i buffer 3 e 4 non sono legati a High VS Open e Low VS Open, ma a Close VS Open.

 
mrcodix:
No, temo di no. Lasciatemi illustrare con uno screenshot. Nella freccia rosa superiore si vede chiaramente che la barra rossa del BASSO è molto più grande della barra blu dell'ALTO. Eppure l'output corrispondente nell'indicatore Linear Bar Diff è sopra lo zero! (vedi freccia rosa inferiore). Quando la barra rossa della barra bassa è più grande della barra blu della barra alta, la differenza di entrambe le barre dovrebbe essere negativa, non positiva. Le frecce verdi mostrano un altro esempio dello stesso problema. Cordiali saluti

O questo è con la scelta di usare High/Low VS Open o Close VS Open.

 
airquest:
Ciao Ragazzi, ho bisogno del vostro aiuto per un indicatore che ho fatto. Fondamentalmente, si tratta di un tester che dovrebbe essere utilizzato solo per ottimizzare le impostazioni di una strategia (e anche testare le sue prestazioni). In modalità test (Optimize su False), funziona alla grande e dà il win rate e il saldo per i parametri di default. Ma ho problemi a far funzionare la funzione di ottimizzazione. Il risultato per le migliori impostazioni finisce sempre per essere il valore più basso (PeriodMin). Mi chiedo se è il modo in cui sto usando i buffer dichiarati all'interno della funzione Optimization double (vedi linee 616 e 617, e linee 746 e 747 usate per liberare i buffer). Credo che non sia solo questo, perché se non uso questi buffer (impostando AllowMultipleOpenTrades su False), continua a dare risultati non coerenti. Se qualcuno può dare un'occhiata e aiutarmi, gliene sarei grato. Grazie mille.

airquest

I tuoi array recTP[] e recSL[] alla linea 602 non sono ridimensionati (sono di dimensione 0, per come sono dichiarati all'inizio del ciclo), prova a ridimensionarli prima del ciclo for()

 
airquest:
O questo è con la scelta di usare High/Low VS Open o Close VS Open.

No, questo è quello che intendevo.

int start()

{

int counted_bars=IndicatorCounted();

int i;

//int UpDays, DownDays, NeutralDays;

double BarH, BarL, BarC;

//----

for(i=0; i<Bars; i++)

{

BarH = Alto - Aperto;

BarL = Open - Low;

BarC = Close - Open;

//se(BarC>0) UpDays +=1;

//altrimenti se(BarC<0) DownDays +=1;

//altrimenti se(BarC==0) NeutralDays +=1;

ExtMapBuffer1 = BarH;

ExtMapBuffer2 = BarL;

ExtMapBuffer5 = BarH - BarL;

}

//----

return(0);

}

Ho più o meno capito da solo ora, ma grazie comunque per lo sforzo.

Qualcuno può dirmi perché questo indicatore: Candles Ratio " Metatrader Files non mostra l'output delle ultime candele? Non sembra farlo nell'immagine mostrata.

 
mladen:
airquest I tuoi array recTP[] e recSL[] alla linea 602 non sono ridimensionati (sono di dimensione 0, per come sono dichiarati all'inizio del ciclo), Prova a ridimensionarli prima del ciclo for()

Grazie Mladen, l'ho fatto, ma ancora l'ottimizzazione non dà risultati corretti. Se giro Optimize su True, dà il valore più basso come migliore impostazione (band period = 5), mentre su False e BandsPeriod di default su 40, per esempio, mostra un win rate migliore che con 5. fondamentalmente l'idea dell'ottimizzazione è trovare quali impostazioni danno il miglior win rate. Ho riletto il codice centinaia di volte e non riesco a trovare ciò che è sbagliato. se avete qualche idea, altrimenti forse è una causa persa lol.

Questo è con l'ArrayResize aggiunto. Ho anche risolto alcuni bug, ma ancora non dà gli stessi risultati che senza ottimizzazione:

File:
 
airquest:
Grazie Mladen, l'ho fatto, ma ancora l'ottimizzazione non dà risultati corretti. Se giro Optimize a True, dà il valore più basso come migliore impostazione (band period = 5), mentre su False e BandsPeriod di default su 40, per esempio, mostra un win rate migliore che con 5. fondamentalmente l'idea dell'ottimizzazione è di trovare quali impostazioni danno il miglior win rate. Ho riletto il codice centinaia di volte e non riesco a trovare cosa c'è di sbagliato. se avete qualche idea, altrimenti forse è una causa persa lol. Questo è con l'ArrayResize aggiunto. Ho anche risolto alcuni bug, ma ancora non dà gli stessi risultati che senza ottimizzazione:

Non so perché, ma quando si controllano i risultati scrivendo un file CSV, i trade totali, le vittorie e il saldo sono moltiplicati per un fattore 10: http: //clip2net.com/s/38YHODl...

 
airquest:
Non so perché, ma quando controllo i risultati scrivendo un file CSV, il totale delle transazioni, le vittorie e il saldo sono moltiplicati per un fattore 10: Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

airquest

Per quanto vedo, le transazioni totali e le vittorie sono OK (altrimenti dovrebbero finire in 0)

 
mladen:
airquest Per quanto vedo, il totale degli scambi e delle vincite sono OK (altrimenti dovrebbero finire in 0)

Beh, comunque... Ecco alcuni test:

- Impostazioni predefinite (nessuna ottimizzazione, WriteCSV a True): http: //clip2net.com/s/38YSV53

- Ottimizzazione impostata su True, PeriodMin a 20 e PeriodMax a 20: http: //clip2net.com/s/38YT2hN

Il primo dà valori coerenti (i risultati del file CSV e dello schermo corrispondono). Questo è normale, perché entrambi provengono dalle stesse variabili. Ma nel secondo, i risultati opti sono moltiplicati quasi per 10 rispetto ai risultati dello schermo. Tuttavia, dovrebbero finire con gli stessi risultati...

Comunque, non c'è fretta, forse con il tempo scoprirò cosa c'è di sbagliato. Grazie per il tuo gentile aiuto Mladen.

Motivazione: