Respuesta

cambio de valor de los parámetros

3 respuestas

chengsmine

Abonado, bbp_participant, comunidad, 42 respuestas.

Visitar el perfil

hace 10 años #111615

Tengo un valor inicial de un determinado parámetro DS fijado en 5 (entrada)) cuando arranca el EA. Después del cierre de algunas operaciones, DS se incrementa a 10. Pero parece que este nuevo valor no ha reemplazado el valor original de DS cuando el EA se reinicia. Por ejemplo,

Entrada: DS=5;

 

Regla 1:

PU= Abierto (0) + ConvetToRealPips(DS)

 

Después de muchas reglas:

Cerrar todos los pedidos

DS=DS+5

 

Así, el nuevo valor de DS es ahora 10, pero DS sigue siendo <=5 en la Regla 1 cuando el EA se reinicia (vuelve a la Regla 1).

 

¿Por qué? ¿Existe alguna solución a este problema?

 

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 10 años #122729

al reiniciar un EA, éste olvidará todos los valores que tenía almacenados en memoria y volverá a utilizar los valores por defecto.

No hay una solución fácil para ello, simplemente funciona así.

 

La única forma de conservar algunos valores anteriores al reinicio de EA sería guardarlos en un archivo y luego cargarlos de nuevo.

 

O puede intentar reconocer el DS a partir de sus pedidos; por ejemplo, si utiliza un tamaño diferente en cada pedido, puede utilizar el tamaño del pedido actual para reconocer qué valor de DS se utilizó la última vez.

 

Mark

Mark
Arquitecto de StrategyQuant

0

chengsmine

Abonado, bbp_participant, comunidad, 42 respuestas.

Visitar el perfil

hace 10 años #122733

¿Cómo se puede recordar el tamaño de la última orden, usted menciona más arriba que todos los valores que se almacenan en la memoria se borran una vez que reinicie un EA?

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 10 años #122751

no puede recordar el valor del último pedido, pero puede obtenerlo del historial de pedidos.

 

Sólo tienes que añadir esta función al final del archivo {EA Wizard}/code/CustomFunctions.mq4:

 

double sqGetLastPositionSize(int orderMagicNumber) {
   for(int i=TotalOrdersHistory(); i>=0; i-) {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
         if(orderMagicNumber == 0 | OrderMagicNumber() == orderMagicNumber) {
            return(LotesOrden());
         }
      }
   }
 
   return(0);
}

 

A continuación, puede utilizarlo en las condiciones llamando a la función personalizada : sqGetLastPositionSize(YourMagicNumber)

 

Mark

Mark
Arquitecto de StrategyQuant

0

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)