[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 301

 
laveosa:

He hecho todo exactamente igual y más de una vez, pero sigue habiendo ese agujero.
Entonces, ¡busca a Cheburashka en su vivienda! ¡Seguro que sus payasadas! ;)
 
laveosa.,mantener el historial hasta ayer eurusdm1 descargar a través de la importación en comillas.
Archivos adjuntos:
eurusd1.zip  548 kb
 
He intentado comprobar un indicador, pongo los números en el gráfico pero no cambian, intentaré ponerlo de otra manera, necesito que el indicador adjunto fije el precio como una cruz que se sitúe en un zigzag o alerta o impresión pero se congela en la conexión.
Archivos adjuntos:
 

¡Una pregunta para los expertos!

A menudo tengo magos en mis EAs. Para no "ensuciar" el código con momentos repetitivos, como:

double maFast = iMA(NULL, 0, i_maFastPeriod, 0, i_maMethod, i_maPrice, index);
double maSlow = iMA(NULL, 0, i_maSlowPeriod, 0, i_maMethod, i_maPrice, index);

Tales repeticiones pueden estar en orden. Quería deshacerme de ellos escribiendo funciones separadas.

Aquí está el comienzo:

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
//+-------------------------------------------------------------------------------------+
//| Получаем сигнал от скользящих средних                                               |
//+-------------------------------------------------------------------------------------+
int GetStateOfMA()
{
   if (GetMA(1, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex) > 
      GetMA(2, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex))
      return (CROSS_UP);
}

Puedes ir más allá declarando variables globales para los barridos, por ejemplo fastMA y slowMA, y devolverlas por referencia con una función :

GetMA(double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index)

Se obtendría algo así:

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index, double& fastMA, double& slowMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
//+-------------------------------------------------------------------------------------+
//| Получаем сигнал от скользящих средних                                               |
//+-------------------------------------------------------------------------------------+
int GetStateOfMA()
{
   GetMA(double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index, double& fastMA, double& slowMA);
   if (fastMA > slowMA)
       return (CROSS_UP);
   if (fastMA < slowMA)
       return (CROSS_DN);
   return (CROSS_NO);
}

La cuestión es la siguiente:

He oído o leído en alguna parte que el operador de conmutación es lento, ¿no afectará al rendimiento de EA en su conjunto en este caso? En general, ¿qué tan lento es?

Aquí salen muchos parámetros, ¿no se ralentizará un Asesor Experto?

Estoy escribiendo y pensando en la productividad, por lo que surge la pregunta, ya que no soy un programador de formación, para entenderlo yo mismo, no sale realmente ...

 

Victor, la llamada a la función es mucho más un freno que un interruptor. Puede comprobar la velocidad usted mismo. Escribe un código de prueba con un bucle. Donde comprobará su código. Mide el tiempo en la entrada. Luego compáralo con el tiempo de salida.

El operador del cambio es uno de los más rápidos. Es más rápido que correr a través de las condiciones.

El interruptor debe ser utilizado con un defecto en las excepciones. Así, en caso de una condición incorrecta, se sabría por qué el código no funciona.

 

Hmm. Supongo que no se puede utilizar una constante para el caso como una variable, de acuerdo con la documentación. Dice algún tipo de constante de destino, constante de carácter o expresión de carácter.

Sólo funciona si se pone una letra de tipo cadena, es decir, de 1 carácter (si es más de 1 carácter, el compilador jura) o un número.

Nada más.
Dice algunas constantes de destino, expresiones de carácter y constantes de carácter.

 

¿Dónde puedo leer sobre el uso de las variables globales del terminal con ejemplos prácticos? Específicamente, quiero hacer que cada Asesor Experto opere sólo su parte del depósito y que su ganancia/descuento no afecte la MM de otros Asesores Expertos.

 
Ekburg:

Hola a todos

¿Pueden indicar cuál puede ser la causa del error "shutdown by timeout", cuando se ejecuta el Expert Advisor en el terminal y cómo resolver este problema?

 
[quote=Roman.]Cambia la cocina.[/quote]Esa es la cuestión, la cocina no tiene nada que ver: la orden de venta está en el registro del EA. Por supuesto, podemos suponer que el broker ha cambiado el código del distributivo MT4 descargado y corrige la dirección de la operación, pero sería demasiado impúdico, creo.
 
¿Puedo adjuntar los códigos de los programas en lugar de copiar todo el código aquí? ¿Dónde están mirando los administradores?
Razón de la queja: