EA N7S_AO_772012 - página 23

 

Ahora un poco sobre las banderas que no se incluyen en la función FLG como mismos son independientes.

A) Flg es una bandera de inicialización, es necesaria para evitar la apertura de la pose después de un fallo o inicio de funcionamiento, si hay una señal de entrada (esta señal es de larga duración), porque puede ser demasiado tarde. La lógica es la siguiente, si VSR!=0 es decir, hay una señal, entonces se pone Flg=false; en cuanto la señal desaparece se reinicia la bandera

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

B) Flq - bandera interesante, que prohíbe abrir una segunda posición en la misma barra. Al principio quería prohibir la apertura de una posición con pérdidas en una barra pero lo implementaré cuando termine con mi función BuSll que lo hará fácil. Por ahora, existe esa variante.

Se fija en la posición de apertura

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

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

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

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

Por cierto, ya escribí antes sobre el arreglo de esta función.

Se reinicia cada 4 horas. Si cree que esto es demasiado para algunos pares, puede añadir a la función H1() restablecer la bandera cada hora para todos los pares excepto algunos si (¡Símbolo()!="GBPJPY" || Símbolo()!="USDCHF"){ Flq = true ; }

 
WitoHOH писал(а) >>

Algo de la última versión no funciona.

El optimizador ni siquiera abre una sola operación en la primera etapa.

El probador con parámetros optimizados para el EA anterior funciona de la misma manera.

¿Ha averiguado por qué no está optimizado?

 
SHOOTER777 писал(а) >>

¿Has averiguado por qué no se ha optimizado?

No.

No tenía mucho tiempo.

La última vez hubo un problema por la falta de historia.

Estoy recuperando el historial.

Te lo haré saber por la mañana.

 
SHOOTER777 писал(а) >>

¿Has averiguado por qué no se ha optimizado?

No quiere optimizar.

La séptima versión está optimizada con los mismos datos históricos.

El último no lo hará.

En todos los lugares el resultado es 0.

 

Reenviado el experto. Probablemente una versión corrupta. El foro estaba congelado.

Y presta atención a estas líneas en Expert Advisor

saldo inicial, mínimo y máximo, cuando el Asesor Experto está operando.

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

La prohibición se implementa en la función bool FLG (int cs )

Archivos adjuntos:
 

Un poco más sobre la lógica del concejal.

Hay un problema: las frecuentes lagunas. Durante las brechas, los parámetros optimizados y las condiciones de las entradas al mercado se desincronizan, porque los valores de los indicadores y los precios se desgarran. Se necesita tiempo para recuperarse. Para el AO he definido 12 horas, y considero una brecha significativa como un cambio de precio en más de 20 puntos estándar (para algunos pares puede y debe haber otros valores).

Por lo tanto, lo que hemos hecho:

Al principio determinamos si había una brecha

string dttm = StringConcatenate (Year(),".",Month(),".",Day());
datetime smtm=StrToTime(dttm);
bool Gp;
int shft = iBarShift(NULL,0,smtm);
double iOpn = iOpen (NULL,0,shft); double iCls = iClose (NULL,0,shft+1);
double dOC = MathAbs ((iOpn - iCls)/(Punto*10)) ;
si (dOC>20) Gp = true ;

Si lo era y Gp = verdadero, entonces la condición para la prohibición es

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

Sin embargo, tengo algunas dudas de que la función

iBarShift (NULL,0,smtm);

tal vez estaría mejor escrito de la siguiente manera

iBarShift (NULL,60,smtm,true); pero no, el último parámetro por defecto sigue siendo false ?

Espero sus opiniones y sugerencias.

 
SHOOTER777 >> :

Preste también atención a estas líneas en el EA

saldo inicial, mínimo y máximo, cuando el EA está operando.

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

Esta prohibición se implementa en la función bool FLG (int cs )

¿Por qué necesita esas restricciones?

 
capellini писал(а) >>

¿Por qué necesita esas restricciones?

Si no lo necesitas, no lo uses! Estoy preparando el EA para que sea real y como un EA multidivisa. En el futuro, será una bifurcación, en la que el EA no podrá operar desde el fondo, para no perderlo todo en una situación de fuerza mayor, así como desde arriba - más vale pájaro en mano que grúa))) Sin embargo, MM

 

Y ahora noticias desde el campo o desde el frente))

El fin de semana pasado, no tuve tiempo de preparar los archivos del set para la versión L9, terminé de trabajar en ella tarde más las vacaciones))))

Por lo tanto, decidió poner el experimento. Pongo la versión de L9 con juegos de la semana pasada y de otra versión.

Lo que tenemos al final de los dos días: saldo -70 dólares Equidad +420 dólares ¡Buena jugada!

 
SHOOTER777 писал(а) >>

Por lo tanto, si está probando u optimizando, asegúrese de que la Equidad está dentro del rango establecido en los parámetros

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

o añadir a int init() línea if ( IsOptimization( ) ) TrBlnc = false;//si ( IsTesting() ) TrBlnc = false;

Ha funcionado.

La optimización está en marcha.

¿Quizás esas variables deban ser trasladadas fuera del código?

Sería más fácil durante la optimización y también en el trabajo real.

El Asesor Experto no tendrá que ser recompilado cada vez que se cambie el balance.