EA N7S_AO_772012 - pagina 29

 
boing9267 >> :

>>Cosa ti sconvolge esattamente, puoi essere più specifico?

È davvero confuso. I nomi delle variabili sono un incubo. La metà delle variabili sono globali, ma non lo sono. In breve, ora sto riscrivendo tutto per capire come funziona.

 
:) Ho anche iniziato a rifarlo per me stesso, penso che sarò in grado di confrontare le opzioni durante il fine settimana :)
 
boing9267 >> :
:) Ho anche iniziato a rifarlo per me, penso che lo finirò nel fine settimana così possiamo confrontare le opzioni :)

Vedi! Quindi non sono l'unico che non riesce a capire :)

 
Penso che sia anche meglio per imparare il codice, a proposito:). Quindi grazie al tiratore per questo
 
boing9267 >> :
Penso che sia anche meglio per imparare il codice:). Quindi grazie a chi ha sparato per questo.

controlla i messaggi personali.

 
mpeugep писал(а) >>

Osservazione interessante! E se puoi - nomina il DC, almeno la prima lettera)

А

 
rtr989 писал(а) >>

scusate la domanda forse stupida... Dimmi, e tutte queste ottimizzazioni sono in qualche modo collegate tra loro, voglio dire lo stage-2 si basa sui dati dopo lo stage-1? dopo il primo stage, carico _stage_2=y_l3.set e quei parametri di input che erano dopo la prima ottimizzazione come ho capito sono sostituiti da quelli prescritti in _stage_2=y_l3.set? allora qual è il punto della prima ottimizzazione? o mi sbaglio e sto facendo qualcosa di sbagliato? ora sto facendo quanto segue: carico _step_1=x_l3.set, lo ottimizzo, scelgo il miglior risultato secondo me, clicco con il tasto destro del mouse "set input parameters", lo faccio passare attraverso il tester, poi carico _step_2=y_l3.set, spunto la casella per l'ottimizzazione... e così 6 ottimizzazioni, dopo la 6a ottimizzazione ottengo il set di cui ho bisogno, lo sto facendo bene?

State facendo tutto correttamente. E tu capisci quasi tutto bene. A parte il fatto che i file dei set di ottimizzazione come _step_2=y_l3.set sono scritti appositamente da me, che quando vengono caricati in sequenza non influenzano in alcun modo i valori ottenuti in precedenza. >>Per quanto riguarda la dipendenza, il primo e il secondo passo non dipendono l'uno dall'altro (quasi :-)) il terzo dipende da due (primo e secondo) il quarto dipende da tre, il quinto dipende anche da tre e quasi non dipende dal quarto, mentre il sesto dipende da tutti.

 
ShestkoFF писал(а) >>

Oggi ho deciso di provare a capire come funziona un Expert Advisor e sono rimasto scioccato. Mi sembra tutto molto confuso.
Mi chiedo se qualcuno oltre a SHOOTER777 capisce come funziona un EA? Non intendo come dovrebbe essere ottimizzato, ma come funziona.

Scusa, ma questo è uno, se non il più facile dei miei EA. In altri, anche io non riesco a capirlo rapidamente dopo un po' di tempo - mi dimentico, e spiegare agli altri come e cosa funziona è una rottura di palle (ci sono stati anche accenni al fatto che non l'ho fatto). Ho cercato di condividerle, che potessero aiutarmi a correggere alcuni momenti o a migliorarli, ma.... Anche se cerco di creare codici principalmente tramite funzioni, è più chiaro e facile da capire. Mi piacerebbe imparare a dare commenti concisi nel codice...

 
ShestkoFF писал(а) >>

È davvero confuso. I nomi delle variabili sono un incubo. La metà delle variabili sono globali, anche se non lo sono. In breve, ora sto riscrivendo tutto per capire come funziona tutto.

Ci possono essere delle "crepe" nelle variabili. Non ho studiato la programmazione nei dettagli, quindi - datemi qualche suggerimento, una critica costruttiva sarà benvenuta.

 
SHOOTER777 >> :

Ci possono essere "problemi" con le variabili. Non ho studiato la programmazione in dettaglio, quindi consigli, critiche costruttive sono benvenuti.

Non mi piace criticare le cose che funzionano. Vi darò solo qualche critica al codice:

  • Non dovete scrivere tutto in una riga, è impossibile leggere il codice in quel modo. Per esempio, il codice di inizializzazione dell'Expert Advisor
int init(){ MMH1 = Hour( ); LFB  = iTime(Symbol(), 0, 0); H1();
Delta_G12 = G12(); if ( IsOptimization( )  ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;
if ( VSR () !=0) { Flg=false;} else { Flg=true;}
cmmnt();}

Penso che faresti meglio a scrivere

int init(){
	expertInitHour = Hour();
	SYMBOL = Symbol();
	lastBarTime  = iTime(NULL, 0, 0); 
	H1();
	AO_Delta = indicatorDelta(); 
	if (IsOptimization()) {
		TrBlnc = false;
	}
	if ( VSR() != 0) {
		Flg=false;
	} else {
		Flg=true;
	}
	cmmnt();
}

Il codice diventa più leggibile ma anche con questa sostituzione rimane poco chiaro cosa siano H1, VSR, Flg.

  • Nominare le variabili in modo significativo. È meglio spendere un paio di minuti in più per pensare al nome di una variabile o di una funzione, ma poi è facile ricordare a cosa serve. Esempio: la funzione G12 - a cosa serve? Calcola il delta tra gli ultimi valori dell'indicatore (lo hai anche selezionando la variante dell'indicatore). Beh, dovrebbe essere chiamato indicatorDelta, è molto più semplice e chiaro.
  • Non rendere le variabili globali, se sono locali. Non ricordo in quale funzione l'ho visto.
  • Non rendere le variabili globali statiche non ha senso. Se questo non è il caso, per favore spiegate.
  • Utilizzare le costanti standard definite nel linguaggio. Per esempio, per specificare un intervallo di tempo. double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} sembra meglio sostituito con double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr);}.


Cercherò di riscrivere questo EA e renderlo più chiaro a me stesso e forse anche agli altri.

Grazie mille per aver condiviso la tua idea. È molto bello che tu condivida il tuo lavoro e pubblichi i risultati ogni settimana.
Mi scuso per la critica :)

Motivazione: