EA N7S_AO_772012 - página 29

 
boing9267 >> :

>>¿Qué es exactamente lo que te impacta, puedes ser más específico?

Es realmente confuso. Los nombres de las variables son una pesadilla. La mitad de las variables son globales, pero no lo son. En resumen, ahora estoy reescribiendo todo para entender cómo funciona todo.

 
:) Yo también he empezado a rehacerlo para mí, creo que podré comparar opciones el fin de semana :)
 
boing9267 >> :
:) Yo también he empezado a rehacerlo para mí, creo que lo terminaré el fin de semana y así podremos comparar opciones :)

¡Vean! Así que no soy el único que no entiende :)

 
Creo que es incluso mejor para aprender el código, por cierto:). Así que gracias al tirador por eso
 
boing9267 >> :
Creo que es incluso mejor para aprender el código:). Así que gracias al tirador por eso.

revisa los mensajes personales.

 
mpeugep писал(а) >>

¡Interesante observación! Y si puedes - nombra el DC, al menos la primera letra)

А

 
rtr989 писал(а) >>

perdón por la pregunta posiblemente estúpida... Dígame, y todas estas optimizaciones están de alguna manera relacionadas entre sí, quiero decir que la etapa-2 se basa en los datos posteriores a la etapa-1? después de la primera etapa, cargo _stage_2=y_l3.set y esos parámetros de entrada que estaban después de la primera optimización según entiendo son reemplazados por los prescritos en _stage_2=y_l3. set? ¿qué significa entonces la primera optimización? ¿o me equivoco y estoy haciendo algo mal? ahora estoy haciendo lo siguiente: cargo _paso_1=x_l3.set, lo optimizo, elijo el mejor resultado en mi opinión, hago clic con el botón derecho en "establecer parámetros de entrada", lo paso por el probador, luego cargo _paso_2=y_l3.set, marco la casilla de optimización... y así 6 optimizaciones, después de la 6ª optimización obtengo el conjunto que necesito, ¿lo estoy haciendo bien?

Lo estás haciendo todo correctamente. Y entiendes casi todo bien. Excepto por el hecho de que los archivos de conjuntos de optimización como _step_2=y_l3.set están especialmente escritos por mí, que cuando se cargan secuencialmente de ninguna manera afectan a los valores obtenidos anteriormente. >>En cuanto a la dependencia, el primer y segundo paso no dependen el uno del otro (casi :-)) el tercero depende de dos (primero y segundo) el cuarto de tres, el quinto también depende de tres y casi no depende del cuarto, mientras que el sexto depende de todos ellos.

 
ShestkoFF писал(а) >>

Hoy decidí tratar de entender cómo funciona un Asesor Experto y me quedé sorprendido. Todo me parece muy confuso.
Me pregunto si alguien además de SHOOTER777 entiende cómo funciona un EA. No me refiero a cómo debe optimizarse sino a cómo funciona.

Lo siento, pero este es uno de, si no el más fácil de mis EAs. En otros, ni siquiera yo puedo averiguarlo rápidamente después de algún tiempo: se me olvida, y explicar a los demás cómo y qué funciona es un dolor de cabeza (incluso hubo indicios de que no lo hice). Intenté compartirlas, que pudieran ayudarme a corregir algunos momentos o a mejorarlos, pero.... Aunque intento crear códigos principalmente a través de funciones, es más claro y fácil de entender. Me gustaría aprender a hacer comentarios concisos en el código...

 
ShestkoFF писал(а) >>

Es realmente confuso. Los nombres de las variables son una pesadilla. La mitad de las variables son globales, aunque no lo son. En resumen, ahora estoy reescribiendo todo para entender cómo funciona todo.

Puede haber "grietas" en las variables. No he estudiado la programación en detalle, así que -díganme consejos, la crítica constructiva es bienvenida.

 
SHOOTER777 >> :

Puede haber "problemas" con las variables. No he estudiado la programación en detalle, así que se agradecen los consejos y las críticas constructivas.

No me gusta criticar las cosas que funcionan. Me limitaré a criticar el código:

  • No tienes que escribir todo en una línea, es imposible leer el código de esa manera. Por ejemplo, el código de inicialización del Asesor Experto
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();}

Creo que es mejor que escribas

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();
}

El código se vuelve más legible, pero incluso con esta sustitución sigue sin estar claro qué son H1, VSR, Flg.

  • Nombra las variables de forma significativa. Es mejor dedicar un par de minutos más a pensar en el nombre de una variable o función, pero luego es fácil recordar para qué sirve. Ejemplo: La función G12, ¿para qué sirve? Calcula el delta entre los últimos valores del indicador (lo tienes incluso seleccionando la variante del indicador). Pues debería llamarse indicadorDelta, es mucho más fácil y claro.
  • No haga las variables globales, si son locales. No recuerdo en qué función lo he visto.
  • No hacer que las variables globales sean estáticas no tiene sentido. Si no es así, por favor, explíquelo.
  • Utilice las constantes estándar definidas en el lenguaje. Por ejemplo, especifica un intervalo de tiempo. double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} parece mejor sustituirlo por double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));}.


Intentaré reescribir este EA y dejarlo más claro para mí y quizás para otros también.

Muchas gracias por compartir tu idea. Es muy bonito que compartas tu trabajo y publiques los resultados cada semana.
Disculpas por las críticas :)