Asesores Expertos: Multik

 

Multik:

El Asesor Experto multidivisa.

Asesor Experto Multidivisa

Asesor Experto Multidivisa

Autor: Andrew Kornishkin

 

¿Vamos a normalizar todos los pares por el instrumento actual?

dsma2 = NormalizeDouble(SMA[2] - SMA[3], _Digits);      // MA en el sitio 2-3
dsma1 = NormalizeDouble(SMA[1] - SMA[2], _Digits);      // MA en el sitio 1-2
 
Valmars:

¿Vamos a normalizar todos los pares por el instrumento actual?


Sí, aquí hay un error. Además, la función de definir una nueva barra se puede implementar sin utilizar la función de copia de tiempo.
 
Valmars:

¿Vamos a normalizar todos los pares por el instrumento actual?


¿Y cómo implementarlo correctamente para que no haya advertencias?

En la versión original es así:

     int Digits_ = SymbolInfoInteger(Symbol_, SYMBOL_DIGITS) + 4;
     dsma2 = NormalizeDouble(SMA[2] - SMA[3], Digits_);      // MA en el sitio 2-3
     dsma1 = NormalizeDouble(SMA[1] - SMA[2], Digits_);      // MA en el sitio 1-2
[Eliminado]  
AM2:

¿Cuál es la forma correcta de aplicarlo sin advertencias?

En la versión original es así:

¿Qué tiene que ver +4? Así es como debería ser lógicamente

int Digits_ = SymbolInfoInteger(Symbol_, SYMBOL_DIGITS);
dsma2 = NormalizeDouble(SMA[2] - SMA[3], Digits_); // MA en el sitio 2-3
dsma1 = NormalizeDouble(SMA[1] - SMA[2], Digits_); // MA en el sitio 1-2
 
Interesting:

¿Qué tiene que ver eso con +4? Se supone que es lógico.

Así es también como va la advertencia

posible pérdida de datos debido a la conversión de tipo Multik.mq5 218 18

 
AM2:

Así va también la advertencia:

posible pérdida de datos debido a la conversión de tipo Multik.mq5 218 18

para evitar advertencias, tienes que hacer la conversión así

int Digits_ = (int)SymbolInfoInteger(Symbol_, SYMBOL_DIGITS);
 

Buen trabajo, pero no multi-instrumento pierde su significado cuando el comercio coorelated pares con las mismas configuraciones? Yo esperaría que sus reducciones se produzcan alrededor del mismo tiempo y que puede ser un problema. Desafortunadamente, todos los pares de divisas están tan correlacionados que esto puede ser inevitable. En realidad el comercio de los pares EUR / USD GBP / USD juntos, así, pero con uno que uso un seguidor de tendencia con el otro utilizo una inversión, tops y bottoms tipo de EA.

 
sergey1294:

Si no quieres recibir advertencias, tienes que hacer la conversión así.

Gracias, ¡funciona!
 

request.volume = Dinero_M();

Este EA es un gran ejemplo de código organizado y tiene grandes comentarios. Sin embargo, tengo una pregunta relativa a su función de tamaño de lote llamada Money_M(). ¿Qué y dónde está el árbol de decisión detrás de esto?

Traté de buscar en el sitio de soporte, pero no pude encontrar ninguna referencia y no parecía estar vinculado a una clase asociada.

[Eliminado]  
bdwezensky:

request.volume = Dinero_M();

Este EA es un gran ejemplo de código organizado y tiene grandes comentarios. Tenía una pregunta sin embargo en relación con su función de tamaño de lote llamado Money_M(). Qué y dónde está el árbol de decisión detrás de esto?

Traté de buscar en el sitio de soporte, pero no pude encontrar ninguna referencia y no parecía estar vinculado a una clase asociada.

double Money_M()
  {
   double Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)/100000*10;
   Lots=MathMin(5,MathMax(0.1,Lots));
   if(Lots<0.1)
      Lots=NormalizeDouble(Lots,2);
   else
     {
      if(Lots<1) Lots=NormalizeDouble(Lots,1);
      else       Lots=NormalizeDouble(Lots,0);
     }
   return(Lots);
  }

Esta función se utiliza para calcular el tamaño de los lotes de negociación.

double Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)/100000*10;

En esta cadena se calcula el tamaño de los lotes de negociación. El cálculo se realiza sobre el dinero libre(ACCOUNT_FREEMARGIN). Riesgo = 10% de los fondos libres disponibles.

Lots=MathMin(5,MathMax(0.1,Lots));
En esta línea se ejecuta la normalización de los lotes de negociación. 0.1 <= Lote <= 5.0