Per quanto ho capito, una volta identificato l'incrocio e impostato stop=1, c'è un'uscita immediata dal ciclo. Ok, allora devi andare oltre e ricordare il numero della candela in cui è avvenuto l'incrocio. Cioè
È più facile scriverlo da soli:
for( int i = 1; i < 1000; i++ )
{
iMaValue = ...; // Значение МА на i свече
if( iMaValue < High[ i ] && iMaValue > low[ i ] )
{
num = i; // Запоминаем номер свечи, на котором произошло пересечениеbreak; // Выходим из цикла
}
}
Questo è che avete identificato il numero della candela. Se il numero = 2 e non prendere in considerazione quello attuale, allora dal momento dell'incrocio si è formata una candela (o interpretarla come si vuole).
Per quanto ho capito, una volta identificato il crossover e impostato stop=1, c'è un'uscita immediata dal ciclo. Ok, allora devi andare oltre e ricordare il numero della candela in cui è avvenuto il crossover. Cioè
È più facile scriverlo da soli:
Questo è che avete identificato il numero della candela. Se il numero = 2 e ignora quello attuale, allora si è formata una candela dall'incrocio (bene, o interpretalo come vuoi).
alph: Potete dirmi se si tratta di una figura realistica di tester? Ed è un risultato buono o cattivo per un anno con una deposizione di 3.000 dollari?
La risposta è semplice: la performance del tester NON è REALE se stai testando un EA. Strategy Tester è usato dai trader per controllare le prestazioni dell'ATC, o per testare le strategie manuali online.
Non dovresti scriverlo in questo modo, perché se non c'è stato alcun crossover durante le ultime 1000 barre, in primo luogo, il ciclo continuerà, e in secondo luogo, potrebbe andare in loop/errore, perché se la storia finisce e non c'è alcun crossover, non ci sarà alcuna uscita dal ciclo, perché Stop = 0. È meglio scriverlo come ho detto sopra.
Non dovresti scriverlo in questo modo, perché se non c'è stato alcun crossover durante le ultime 1000 barre, in primo luogo, il ciclo continuerà, e in secondo luogo, potrebbe andare in loop/errore, perché se la storia finisce e non si verifica alcun crossover, non ci sarà alcuna uscita dal ciclo, perché Stop = 0. È meglio scriverlo come ho detto sopra.
Il segno "o" non funziona - secondo l'espressione, il ciclo o sarà superato di 1000 battute o terminerà non appena il risultato richiesto è stato trovato. O sarà finita prima di 1000 barre se il risultato richiesto, cioè l'attraversamento della MA, sarà raggiunto?
-Aleks-: Il segno "o" non funziona - la condizione dice che o raggiunge 1000 barre o finisce non appena si trova il risultato desiderato. O sarà finita prima di 1000 barre, se il risultato desiderato, cioè l'attraversamento della MA?
|| significa che se almeno una delle condizioni tra le parentesi è vera, il ciclo si ripeterà. Quindi, anche quando i >= 1000, ma stop = 0, il ciclo continuerà e i continuerà ad aumentare, il che causerà valori MA errati (nel caso in cui vada fuori dalla storia). E l'operatore break è responsabile della terminazione del ciclo quando si trova il risultato desiderato;
Tapochun: || significa che se almeno una delle condizioni tra parentesi è vera, il ciclo sarà ripetuto, quindi, anche quando i >= 1000, ma stop = 0, il ciclo continuerà, i continuerà ad aumentare, il che causerà un valore MA sbagliato (nel caso ci sia un outlier nella storia). E l'operatore break è responsabile della terminazione del ciclo dopo aver trovato il risultato desiderato;
Capito, grazie per il chiarimento! Pensavo che una delle condizioni fosse sbagliata e che il ciclo si sarebbe fermato...
Ciao 2015.09.19_02:13AM MSC. Nella funzione ArrayResize() il compilatore scrive comunque
di fronte alla dimensione dell'array -- virgola prevista, che si scriva int o no. Se non si scrive int, dice: "-.
L'ho cambiata senza tipo. E ho rimosso il riferimento & e le parentesi quadre - ha funzionato! Avvertenze: quando è stato scritto normalmente, -- il compilatore ha scritto: nasconde l'identificatore
dichiarazione di livello globale. Ma quando ho rimosso la dichiarazione degli identificatori a livello globale, - ha scritto
scrive: "Errore, identificatore non dichiarato. E ho cambiato gli array High[] e Low[] in HighP[] e LowP[]. Non
aiutato. Il compilatore scrive la stessa cosa. 02:27 MSC. Allego un file di screenshot.
Ciao 2015.09.19_02:13AM MSC. Nella funzione ArrayResize() il compilatore scrive comunque
di fronte alla dimensione dell'array -- virgola prevista, che si scriva int o no. Se non si scrive int, dice: "-.
"senza tipo. E ho rimosso il riferimento & e le parentesi quadre - mi ha aiutato! Avvertenze: quando è stato scritto normalmente, -- il compilatore ha scritto: nasconde l'identificatore
dichiarazione di livello globale. E quando ho rimosso la dichiarazione degli identificatori a livello globale, - ha scritto
scrive: "Errore, identificatore non dichiarato. E ho cambiato gli array High[] e Low[] in HighP[] e LowP[]. Non
aiutato. Il compilatore scrive la stessa cosa. 02:27 MSC. Sto allegando il file dello screenshot.
Potete dirmi per favore cosa sto sbagliando?
Ho bisogno di calcolare quante barre sono passate da quando il prezzo ha attraversato l'ultima MA - escludendo la barra zero.
if(Bars>1400)
{
int Stop;
double MATcycle;
for(int i=0;i!=1000 || Stop!=1; i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
if(MATcycle<High[i+1] && MATcycle>Low[i+1])
{
Stop=1;
Print("MATcycle=",MATcycle," i=",i);
}
else return (0);
}
Potete dirmi per favore cosa sto sbagliando?
Dovete contare quante barre sono passate dall'ultimo attraversamento della MA da parte del prezzo, esclusa la barra zero.
if(Bars>1400)
{
int Stop;
double MATcycle;
for(int i=0;i<1000 || Stop==1; i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
if(MATcycle<High[i+1] && MATcycle>Low[i+1])
{
Stop=1;
Print("MATcycle=",MATcycle," i=",i);
}
else return (0);
}
Per quanto ho capito, una volta identificato l'incrocio e impostato stop=1, c'è un'uscita immediata dal ciclo. Ok, allora devi andare oltre e ricordare il numero della candela in cui è avvenuto l'incrocio. Cioè
È più facile scriverlo da soli:
Questo è che avete identificato il numero della candela. Se il numero = 2 e non prendere in considerazione quello attuale, allora dal momento dell'incrocio si è formata una candela (o interpretarla come si vuole).
Per quanto ho capito, una volta identificato il crossover e impostato stop=1, c'è un'uscita immediata dal ciclo. Ok, allora devi andare oltre e ricordare il numero della candela in cui è avvenuto il crossover. Cioè
È più facile scriverlo da soli:
Questo è che avete identificato il numero della candela. Se il numero = 2 e ignora quello attuale, allora si è formata una candela dall'incrocio (bene, o interpretalo come vuoi).
Grazie, è così che ha funzionato per me
int Stop=0;
if(Bars>1400)
{
double MATcycle;
for(int i=1;(i!=1000 || Stop==0); i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
if(MATcycle<=High[i] && MATcycle>=Low[i])
{
Print("MATcycle=",MATcycle," i=",i);
Stop=i;
break;
}
}
}
Potete dirmi se si tratta di una figura realistica di tester? Ed è un risultato buono o cattivo per un anno con una deposizione di 3.000 dollari?
Grazie, è così che ha funzionato per me
int Stop=0;
if(Bars>1400)
{
double MATcycle;
for(int i=1;(i!=1000 || Stop==0); i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
if(MATcycle<=High[i] && MATcycle>=Low[i])
{
Print("MATcycle=",MATcycle," i=",i);
Stop=i;
break;
}
}
}
Non dovresti scriverlo in questo modo, perché se non c'è stato alcun crossover durante le ultime 1000 barre, in primo luogo, il ciclo continuerà, e in secondo luogo, potrebbe andare in loop/errore, perché se la storia finisce e non c'è alcun crossover, non ci sarà alcuna uscita dal ciclo, perché Stop = 0. È meglio scriverlo come ho detto sopra.
Non dovresti scriverlo in questo modo, perché se non c'è stato alcun crossover durante le ultime 1000 barre, in primo luogo, il ciclo continuerà, e in secondo luogo, potrebbe andare in loop/errore, perché se la storia finisce e non si verifica alcun crossover, non ci sarà alcuna uscita dal ciclo, perché Stop = 0. È meglio scriverlo come ho detto sopra.
Il segno "o" non funziona - la condizione dice che o raggiunge 1000 barre o finisce non appena si trova il risultato desiderato. O sarà finita prima di 1000 barre, se il risultato desiderato, cioè l'attraversamento della MA?
|| significa che se almeno una delle condizioni tra parentesi è vera, il ciclo sarà ripetuto, quindi, anche quando i >= 1000, ma stop = 0, il ciclo continuerà, i continuerà ad aumentare, il che causerà un valore MA sbagliato (nel caso ci sia un outlier nella storia). E l'operatore break è responsabile della terminazione del ciclo dopo aver trovato il risultato desiderato;
Ciao 2015.09.19_02:13AM MSC. Nella funzione ArrayResize() il compilatore scrive comunque
di fronte alla dimensione dell'array -- virgola prevista, che si scriva int o no. Se non si scrive int, dice: "-.
L'ho cambiata senza tipo. E ho rimosso il riferimento & e le parentesi quadre - ha funzionato!
Avvertenze: quando è stato scritto normalmente, -- il compilatore ha scritto: nasconde l'identificatore
dichiarazione di livello globale. Ma quando ho rimosso la dichiarazione degli identificatori a livello globale, - ha scritto
scrive: "Errore, identificatore non dichiarato. E ho cambiato gli array High[] e Low[] in HighP[] e LowP[]. Non
aiutato. Il compilatore scrive la stessa cosa. 02:27 MSC. Allego un file di screenshot.
Ciao 2015.09.19_02:13AM MSC. Nella funzione ArrayResize() il compilatore scrive comunque
di fronte alla dimensione dell'array -- virgola prevista, che si scriva int o no. Se non si scrive int, dice: "-.
"senza tipo. E ho rimosso il riferimento & e le parentesi quadre - mi ha aiutato!
Avvertenze: quando è stato scritto normalmente, -- il compilatore ha scritto: nasconde l'identificatore
dichiarazione di livello globale. E quando ho rimosso la dichiarazione degli identificatori a livello globale, - ha scritto
scrive: "Errore, identificatore non dichiarato. E ho cambiato gli array High[] e Low[] in HighP[] e LowP[]. Non
aiutato. Il compilatore scrive la stessa cosa. 02:27 MSC. Sto allegando il file dello screenshot.
Forum sul trading, sistemi di trading automatico e test di strategia
Domande dai principianti
Karputov Vladimir, 2015.09.17 18:46