Chi vuole una strategia? Molto e gratis) - pagina 52

 
Miroslav_Popov писал(а) >>

Generatore riparato. Sostituisci il tuo exe con questo.


Il generatore imposta a volte l'indicatore Period + Shift > Bar Count;

Sono già confuso. :)

Nuova versione.

Ma avendo ridotto il conteggio delle barre a 300, il generatore funziona e può essere fermato con il pulsante Stop

'

Vecchia versione (scaricata rapidamente dal sito)

Ma, se la quantità di barre < 1000, allora il generatore si blocca.

'

IMHO è meglio abituarsi al requisito del limite di 1000 bar per il tester, ma la comodità di selezionare l'intervallo.

'

 
SergNF писал(а) >>

Sono già confuso. :)

'

Vecchia versione (scaricata rapidamente dal sito web)

Ma, se il numero di barre < 1000, il generatore si blocca.

'

I pensieri felici sulla "vecchia versione" si sono rivelati sbagliati.

Cioè l'immagine è la stessa della nuova versione. (Cioè il numero di barre ha una priorità maggiore della data DO!!!!)

'

'

Ops

if ( bUseStartDate && aBar[ iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++)
 {

È corretto che il ciclo vada a iTempBars - MINIMUMBARS, cioè al numero massimo di barre iTempBars = iMaxBars; dall'inizio della storia ?

Nei miei file di storia molto più di 50 000 linee e in questo intervallo da iTempStartBar = iBars - iMaxBars a iMaxBars- MINIMUMBARS non può semplicemente essere ordinato data?!

Logicamente la data di fine e la data di inizio dovrebbero essere cercate alla fine di tutta la storia, cioè a iBars ???

Ma la barra finale si trova correttamente.

int  iTempEndBar   = iBars - 1;
for (int iBar = iTempStartBar + MINIMUMBARS; iBar < iTempEndBar; iBar++
 
SergNF >> :

Riguardo ai tuoi screenshot:

1. "Rimuovi i dati più vecchi del 1° settembre 2008" è ignorato poiché ci sono meno di 300 barre fino al 1° gennaio 2009

2. "Rimuovi i dati più recenti del 1 gennaio 2009" - sembra che non ci siano dati per il 1 gennaio FSB taglia tutte le barre dal 01.01.08 incluso . Ecco perché FSB limita le barre fino al 31.12.08.


(Cioè il numero di barre ha una priorità maggiore della data BEFORE!!!!)

Esattamente.

 
Miroslav_Popov писал(а) >>

1. "Rimuovi i dati più vecchi del 1° settembre 2008" è ignorato poiché ci sono meno di 300 barre fino al 1° gennaio 2009.

2. "Rimuovi i dati più recenti del 1 gennaio 2009" - sembra che non ci siano dati per il 1 gennaio. Ecco perché FSB limita le barre fino al 31.12.08.

Non più.

Ora sto mostrando l'orologio.

Nel file 63291(iBars) le linee dal 1999-01-04 al 2009-03-18

Data 2008-09-01 è la linea 59 973

La data 2009-01-02 è la linea 62 021.

Cioè quando il programma cerca la data d'inizio, il ciclo "corre" dalla barra 63 291 - 50 000 = 13 291(iTempStartBar = iBars -iMaxBars; ) alla barra 50 000 - 300 = 49 700(iTempBars - MINIMUMBARS) e non trovando la mia data "prima" (barra 59 973), lascia(iTempStartBar = iBars - iMaxBars;) barra iniziale = 63 290 - 50 000 = 13 290.

Nel mio file è 2001-02-21 12:00 (+/- 300, che corrisponde alla figura)

File allegato.

File:
eurusd60.rar  702 kb
 

iBars<= 50.000

FSB importa le ultime 50.000 barre dal file di dati.

Quindi:

Data 2008-09-01 è la linea 59 973

La data 2009-01-02 è la linea 62 021

sono al di fuori dei dati caricati. Data Horizon non li prende in considerazione.



Operazioni. Mi sbaglio.

 
Miroslav_Popov писал(а) >>

iBars <= 50.000

FSB importa le ultime 50.000 barre dal file di dati.

Quindi:

Data 2008-09-01 è la linea 59 973

2009-01-02 è la linea 62 021

sono al di fuori dei dati caricati. Data Horizont non li prende in considerazione.

più recente !!!!, cioè da 13.291 a 63 291!!!!! e ora cerca da 0 a 50.000 (arrotondato ;) )

Nessun accordo. :( Peccato :(

Anche se mi sembra che sarebbe più correttosostituire iTempStartBar ;iBar < iTempBars - MINIMUMBARS; iBar++) con iTempEndBar alposto di iTempBars - MINIMUMBARS. E l'intero blocco "// Imposta il numero massimo di barre" è ridondante se AND bUseStartDate=True AND bUseEndDate=True

'

Ma di nuovo, non insisto. :( (Taglierò il file, anche se per le minuzie potrebbe voler ottimizzare la strategia sulle 50 000 barre precedenti e controllarla sulle prossime 10 000 barre.

:(

SZY. C'è ancora un errore nel codice e non corrisponde allo schema!!!!! (il mio intervallo è a destra e non a sinistra) :(

 

Pensiamoci.


Dammi il codice che vuoi. Lo metterò nel programma e lo testeremo.

 
Miroslav_Popov писал(а) >>

Pensiamoci.

Dammi il codice che vuoi. Lo metterò nel programma e lo testeremo.

Un frammento del tuo codice dalle pagine precedenti.

// Set the maximum nuber of bars
// if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
// {   // We need to cut out the oldest bars
//  iTempBars     = iMaxBars;
//  iTempStartBar = iBars - iMaxBars;
//  bChange       = true;
// }
// Или оставить 
// только если && bUseStartDate=False && bUseEndDate=False 
// или && (bUseStartDate=False || bUseEndDate=False)
// сам не представляю, но весь блок "сбивает"



// Set the starting date
DateTime dtStartingDate = new DateTime( iStartYear, iStartMonth, iStartDay);
if ( bUseStartDate && aBar[ iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempEndBar; iBar++)
 {
  if ( aBar[ iBar].Time >= dtStartingDate)
  {
   iTempStartBar = iBar;
   iTempBars     = iTempEndBar - iTempStartBar + 1;
   bChange       = true;
   break;
  }
 }
}

Как вариант, после
// Set the maximum nuber of bars
if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
{   // We need to cut out the oldest bars
 iTempBars     = iMaxBars;
 iTempStartBar = iBars - iMaxBars;
 bChange       = true;
}

aggiungere

if (bUseStartDate)
{   
 iTempStartBar = 0; 
}
Ma per il reset della data di inizio iTempStartBar deve essere!!!!
 
if (bUseStartDate)
{   
    iTempStartBar = 0; 
}
Se dtStartingDate è precedente a iMaxBars, ignora dtStartingDate e limita per iMaxBars
 
Miroslav_Popov писал(а) >>
se dtStartingDate è precedente a iMaxBars dovreste ignorare dtStartingDate e limitare per iMaxBars

E penso che ci dovrebbero essere iMaxBars da dtStartingDate "a destra", in modo da poter spostare la dimensione della finestra di iMaxBars in tutto il file!

Ma se a destra le barre dtStartingDate sono più piccole di iMaxBars. allora dovrebbe essere dtStartingDate ad avere la priorità, poiché le date sono più intuitive delle barre. IMHO.

E in generale, un utente mette un 'tick' deliberatamente, e le barre - di default, più è incorporato nel sistema (iMaxBars)

'

ZS. La cosa divertente è che probabilmente non userò il programma :)