EA N7S_AO_772012 - pagina 23

 

Ora un po' sulle bandiere che non sono incluse nella funzione FLG come sono indipendenti.

A) Flg è un flag di inizializzazione, è necessario per evitare di aprire la posa dopo un guasto o un inizio di funzionamento, se c'è un segnale di ingresso (questo segnale è di lunga durata), perché potrebbe essere troppo tardi. La logica è la seguente, se VSR!=0 cioè c'è un segnale, allora imposta Flg=falso; appena il segnale scompare il flag viene resettato

if (!Flg){if (VSR () ==0) {Flg=true; return (0);}}

B) Flq - bandiera interessante, che vieta di aprire una seconda posizione sulla stessa barra. All'inizio volevo proibire l'apertura di una posizione in perdita su una barra, ma lo implementerò quando avrò finito con la mia funzione BuSll che lo renderà facile. Per ora, c'è una tale variante.

È impostato all'apertura della posizione

{if (Trd_Up_X && VSR() > 0 && bu <HM_Up_X ) {

if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=falso;}}

se (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y ) {

if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=falso;}}

A proposito, ho scritto prima sulla correzione di questa funzione.

Si resetta ogni 4 ore. Se pensate che questo sia troppo per alcune coppie, potete aggiungere alla funzione H1() resettare il flag ogni ora per tutte le coppie tranne alcune if (Symbol()!="GBPJPY" || Symbol()!="USDCHF"){ Flq = true ; }

 
WitoHOH писал(а) >>

Qualcosa nell'ultima versione non funziona.

L'ottimizzatore non apre nemmeno un solo trade nella prima fase.

Il tester con parametri ottimizzati per l'EA precedente funziona allo stesso modo.

Avete capito perché non è ottimizzato?

 
SHOOTER777 писал(а) >>

Avete capito perché non si è ottimizzato?

No.

Non ha avuto molto tempo.

L'ultima volta c'è stato un problema a causa della mancanza di storia.

Sto solo rimettendo in funzione la storia.

Vi farò sapere domattina.

 
SHOOTER777 писал(а) >>

Hai capito perché non si è ottimizzato?

Non vuole ottimizzare.

La settima versione è ottimizzata con gli stessi dati storici.

L'ultimo non lo farà.

Ovunque il risultato è 0.

 

Riposto l'esperto. Probabilmente una versione corrotta. Il forum si stava congelando.

E fate attenzione a queste linee in Expert Advisor

saldo iniziale, minimo e massimo, quando Expert Advisor sta facendo trading.

//------------------------------------------------------------------//
bool TrBlnc = true; int StrtBlnc = 3000; int DBlnc = 1500; int UBlnc = 4000;
//------------------------------------------------------------------//

Il divieto è implementato nella funzione bool FLG (int cs )

File:
 

Un po' di più sulla logica del consigliere.

C'è un problema: lacune frequenti. Durante i gap i parametri ottimizzati e le condizioni di entrata nel mercato non sono sincronizzati, perché i valori degli indicatori e i prezzi si strappano. Ci vuole tempo per recuperare. Per l'AO ho definito 12 ore, e considero un gap significativo come un cambiamento di prezzo di più di 20 punti standard (per alcune coppie ci possono e devono essere altri valori).

Così, quello che abbiamo fatto:

All'inizio abbiamo determinato se c'era una lacuna

stringa dttm = StringConcatenate (Anno(),".",Mese(),".",Giorno());
datetime smtm=StrToTime(dttm);
bool Gp;
int shft = iBarShift(NULL,0,smtm);
doppio iOpn = iOpen (NULL,0,shft); doppio iCls = iClose (NULL,0,shft+1);
doppio dOC = MathAbs ((iOpn - iCls)/(Punto*10)) ;
se (dOC>20) Gp = true ;

Se lo fosse e Gp = true, allora la condizione per il divieto è

((DayOfWeek( ) == 1 && Hour( ) <14) && Gp))

Anche se ho qualche dubbio che la funzione

iBarShift (NULL,0,smtm);

forse sarebbe meglio scrivere nel modo seguente

iBarShift (NULL,60,smtm,true); ma no, l'ultimo parametro di default è ancora falso?

Aspetto i vostri pensieri e suggerimenti.

 
SHOOTER777 >> :

Fate anche attenzione a queste linee nell'EA

bilancio iniziale, minimo e massimo, quando l'EA sta facendo trading.

//------------------------------------------------------------------//
bool TrBlnc = true; int StrtBlnc = 3000; int DBlnc = 1500; int UBlnc = 4000;
//------------------------------------------------------------------//

Questo divieto è implementato nella funzione bool FLG (int cs )

Perché avete bisogno di queste restrizioni?

 
capellini писал(а) >>

Perché avete bisogno di queste restrizioni?

Se non ti serve, non usarlo! Sto preparando l'EA per la realtà e come EA multivaluta. In futuro, sarà una forchetta, dove l'EA non potrà fare trading dal basso, per non perdere tutto in una situazione di forza maggiore, così come dall'alto - un uccello in mano è meglio di una gru))) MM tuttavia

 

E ora notizie dal campo o dal fronte))

Lo scorso fine settimana, non ho avuto il tempo di preparare i file dei set per la versione L9, ho finito di lavorarci in ritardo più le vacanze))))

Pertanto ha deciso di mettere l'esperimento. Ho messo la versione di L9 con i set della settimana scorsa e di un'altra versione.

Cosa abbiamo alla fine di due giorni: saldo -$70 Equity +$420 Buona mossa!

 
SHOOTER777 писал(а) >>

Quindi, se state testando o ottimizzando, assicuratevi che l'Equity sia all'interno dell'intervallo impostato nei parametri

bool TrBlnc = true; int StrtBlnc = 3000; int DBlnc = 1500; int UBlnc = 4000;

o aggiungere a int init() linea if ( IsOptimization( ) ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;

Ha funzionato.

L'ottimizzazione è in corso.

Forse tali variabili dovrebbero essere spostate fuori dal codice?

Sarebbe più facile durante l'ottimizzazione e anche nel lavoro reale.

L'Expert Advisor non dovrà essere ricompilato ogni volta che il saldo viene modificato.