Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 646

 
Tra-der:
Hay dos terminales MT5. Problema: ¿puedo escribir scripts para permitir sólo operaciones largas en un terminal y sólo operaciones cortas en el otro?
#define ORDER_TYPE_BUY ORDER_TYPE_BUY_STOP   // поставить в самом начале советника, если нужно отказаться от BUY-сделок
#define ORDER_TYPE_SELL ORDER_TYPE_SELL_STOP // поставить в самом начале советника, если нужно отказаться от SELL-сделок
 
Tra-der:
Hay dos terminales MT5. Tarea: ¿Es posible escribir scripts para permitir sólo operaciones largas en un terminal y sólo operaciones cortas en el otro?

Simplemente introduzca un parámetro de entrada en su EA y dependiendo del valor que se le asigne al iniciar, sólo comprará o sólo venderá:

input bool Long=true;            // allow only "Long"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
...
void OnTick()
  {
   if(!Long)
      trade.Sell(0.01);
   if(Long)
      trade.Buy(0.01);
  }
 
Artyom Trishkin:

Para saber si se trata de un nuevo top o bottom, es necesario recordar la hora del último top/top que se encontró, y compararlo con lo que se ha encontrado hasta ahora.

Gracias, está claro con el buffer.

Para recordar la hora del último vértice encontrado, es necesario conocerla de alguna manera.

¿Cómo hacerlo, cómo saber la hora del último vértice encontrado?

 
mila.com:

Gracias, el buffer está claro.

Para recordar la hora del último vértice encontrado, es necesario conocerla de alguna manera.

¿Cómo hacer esto, cómo saber la hora del último vértice encontrado?

Se declara una variable estática para almacenar el tiempo del extremo anterior del zigzag y se inicializa con cero.

2. Encuentra un vértice y si su tiempo no es igual al tiempo en la variable estática, considera que has encontrado el extremo requerido y memoriza el nuevo tiempo en esta variable.

3. GoTo(2);

 

¡Camaradas programadores!

Recomendar una forma de averiguar si el diferencial ha aumentado.

El problema es el siguiente: durante la transición a un nuevo día la empresa de corretaje amplía el spread, y a veces es una locura para algunos pares - excede en 3-5 veces el valor normal. Los diferenciales de ahorro de luz son diferentes en las empresas de corretaje con el cambio de hora de 23 a 59 y de 20 a 59 y así sucesivamente.

Para algunos tipos el diferencial no cambia mucho, por lo que no podemos cortar el robot "Trabajar por tiempo" porque si el diferencial no cambia, no tendremos que prohibir el comercio.

La cuestión principal es cómo detectar que el diferencial es demasiado grande y, por tanto, prohibir al robot que abra una posición. Veo una variante de guardar los tamaños de los spreads en un archivo para cada nueva barra de las últimas 5-7 barras, luego sumarlo todo y dividir por el número y así obtener el spread promedio y multiplicar por 1,2 - 1,4 (margen), pero no es interesante guardar y multiplicar los archivos y no estoy seguro de que sea la solución correcta para calcular el spread promedio. Si introduzco manualmente la extensión máxima permitida en los ajustes, es muy trivial y poco interesante en términos de funcionamiento del bot.

Por favor, aconsejar la solución óptima para la pregunta, que no tiene miedo de reiniciar el terminal, y el cierre de emergencia en caso de corte de energía. Además, preferiblemente una solución que minimice la carga del programa, para que no recalcule en cada tic.

Gracias.

 
Vitaly Muzichenko:

¡Camaradas programadores!

Recomendar una forma de averiguar si el diferencial ha aumentado.

El problema es el siguiente: durante la transición a un nuevo día la empresa de corretaje amplía el spread, y a veces es una locura para algunos pares - excede en 3-5 veces el valor normal. Los diferenciales de ahorro de luz son diferentes en las empresas de corretaje con el cambio de hora de 23 a 59 y de 20 a 59 y así sucesivamente.

Para algunos tipos el diferencial no cambia mucho, por lo que no podemos cortar el robot "Trabajar por tiempo" porque si el diferencial no cambia, no tendremos que prohibir el comercio.

La cuestión principal es cómo detectar que el diferencial es demasiado grande y así prohibir al robot que abra una posición. Veo una variante de almacenar los tamaños de los spreads en un archivo para cada nueva barra de las últimas 5-7 barras, luego sumarlo todo y dividirlo por el número y así obtener el spread promedio y multiplicarlo por 1,2 - 1,4 (margen), pero no es interesante guardar y multiplicar los archivos. Si introduzco manualmente la extensión máxima permitida en los ajustes, es muy trivial y poco interesante en términos de funcionamiento del bot.

Por favor, aconséjeme cuál sería la mejor solución a esta cuestión. Gracias.

Puede ser trivial, pero yo introduzco el límite manualmente. Y si en la víspera de Año Nuevo para las últimas N velas el spread será 3 veces más grande de lo habitual, y por la noche será incluso 3 veces más grande... El sistema de análisis lo considerará como un spread normal x3. Creo que si una persona está operando en una cuenta real, no es difícil para él estimar manualmente el spread promedio de trabajo y establecer el umbral. Aunque la solución de su pregunta también me resultaría interesante)
 
¡Qué lógica de TC es esa, tan dependiente del spread!
 
fxsaber:
¿Qué clase de lógica de TS es esta dependiente de la difusión?

Bien, pongámoslo de esta manera. Aquí, por ejemplo, el diferencial no se amplía ni tres veces, sino más, y si se entra en el mercado con un diferencial de 20pp, mientras que el diferencial normal es de 4-6pp, entonces no es normal, y tenemos que cortar estos momentos.

 
Vitaly Muzichenko:

Bien, pongámoslo de esta manera. Por ejemplo, el diferencial aquí no es ni siquiera tres veces mayor, sino más, y si se entra en el mercado con un diferencial de 20pp, mientras que el diferencial normal es de 4-6pp, esto no es normal, y tenemos que cortar estos puntos.

Por lo tanto, concéntrese en la oferta si va a hacer una VENTA. ¿Qué diferencia hay en la difusión? Bien, no me entrometeré de nuevo.
 
Vitaly Muzichenko:

Bien, pongámoslo de esta manera. Por ejemplo, el diferencial aquí no es ni siquiera tres veces mayor, sino más, y si se entra en el mercado con un diferencial de 20pp, mientras que el diferencial normal es de 4-6pp, esto no es normal, y tenemos que cortar estos puntos.

¿Global no ayuda?
Razón de la queja: