
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Los bucles son una de las técnicas de programación más peligrosas. Provoca errores extraños e infrecuentes que son casi imposibles de analizar.
Por el contrario, hay que tratar de terminar un hilo de usuario lo más rápido posible en lugar de hacer un bucle. Si quiere tener una "mano en el pulso" - analice OnTradeTransaction en MT5. En general, MT4 no es adecuado para este tipo de juegos, porque la simplicidad es peor que el robo, como se dice.
No me refería a una realización concreta, sino al principio de sacudida de la ST tras cualquier pausa. Bueno y donde hay una terrible fijación - no está claro. Como no está claro, por qué hay prisa para terminar un hilo de usuario.
Así que donde está el bucle de miedo allí - no está claro.
Llamar a OnTick desde OnTick es un bucle no trivial a través de la recursión:
Tampoco está claro por qué hay prisa por terminar el hilo de usuarios.
Trabajamos con un modelo basado en eventos. Por lo tanto, necesitamos manejar el evento actual tan rápido como sea posible para esperar el siguiente. El tiempo que se pasa en el hilo es un agujero negro. Cuanto más tiempo pasamos en el flujo, más anticuado es el entorno comercial con el que trabajamos.
Llamar a OnTick desde OnTick es un bucle no trivial a través de la recursión:
Al parecer, esto es lo único que disuade.
Trabajamos con un modelo de eventos. Por lo tanto, necesitamos manejar el evento actual tan rápido como sea posible para esperar el siguiente. El tiempo que se pasa en el flujo es un agujero negro. Cuanto más tiempo pasamos en el flujo, más anticuado es el entorno comercial con el que trabajamos.
s. No nos entendemos en absoluto. No creo que pueda haber diálogo entre nosotros.
:
¿Dónde ha visto una pausa en su código, cuya mera presencia es la única razón para sacudir el ST desde cero? ¡No lo tienes!
¿Dónde has visto una pausa en tu código, cuya mera presencia es la única razón para sacudir el ST desde cero? ¡No lo tienes!
Así que este código es una ilustración de por qué el hilo actual debe ser terminado tan pronto como sea posible. Ni siquiera debería intentar solicitar el entorno comercial en OnTick:
Una vez que estamos en el punto en el que se comparan las dos variables, no podemos compararlas porque el entorno sigue cambiando. Los valores de total_1 y total_2 ya no son iguales entre sí, o ambos son obsoletos, o no contienen el número de pedidos existente, o contienen los valores correctos. No tiene sentido luchar contra un entorno comercial cambiante en OnTick, en su lugar, simplemente salga de OnTick, inmediatamente después del bucle for, y espere nuevos eventos que indiquen que el entorno comercial ha cambiado.
Así que este código es una ilustración de por qué el hilo actual debe terminar lo más rápido posible. No se puede ni siquiera intentar consultar el entorno comercial en OnTick:
Una vez que estamos en el punto en el que se comparan las dos variables, no podemos compararlas porque el entorno sigue cambiando. Los valores de total_1 y total_2 ya no son iguales entre sí, o ambos son obsoletos, o no contienen el número de pedidos existente, o contienen los valores correctos. No tiene sentido luchar con el cambio de entorno comercial en OnTick, en su lugar, sólo tenemos que salir de OnTick, justo después del bucle for, y esperar nuevos eventos que indiquen que el entorno comercial ha cambiado.
¡¿Entonces por qué pusiste pausas?!
Una vez más, después de cualquier pausa (resbalones u órdenes de comercio sincrónico) TC debe ser sacudido - la lógica de negociación debe comenzar desde cero. En consecuencia, si se utilizan órdenes comerciales asíncronas, las pausas mencionadas no se producen y hay una salida de la función de eventos a la espera de un nuevo evento. Si no hay operaciones asíncronas, toda la lógica comercial puede incluso colocarse en un script en bucle.
¡¿Entonces por qué pusiste pausas?!
Una vez más, después de cualquier pausa (resbalones u órdenes de negociación sincrónicas) el ST debe reiniciarse - la lógica de negociación debe comenzar desde cero. En consecuencia, si se utilizan órdenes comerciales asíncronas, las pausas mencionadas no se producen y hay una salida de la función de eventos a la espera de un nuevo evento. Si no hay operaciones asíncronas, toda la lógica comercial puede incluso colocarse en un script en bucle.
Yo hablaré de Thomas, y tú hablarás de Yury. En resumen, vamos a terminar nuestro diálogo. Sigue creando tus propios guiones en bucle. Sí, realmente funciona, pero no se puede recomendar como método de trabajo.
Me interesa saber su opinión sobre esta situación en MT4, ¿cómo lo manejan?
El ToR del Asesor Experto es mantener las órdenes pendientes y las posiciones abiertas a una cierta distancia fija del precio actual en cada tick.
Deje que las modificaciones del corredor tarden un poco más que el intervalo de tiempo medio entre los ticks del precio.
Por lo tanto, corremos en un ciclo inverso (en dirección decreciente de SELECT_BY_POS) y hacemos el OrderModify correspondiente.
Así, durante este bucle, empaquetado en OnTick, puede ocurrir lo siguiente
¿Qué hacer?
La pregunta está indirectamente relacionada con la discusión anterior, pero esto no es para su continuación (tema cerrado). Necesito resolver algunos matices no evidentes en MT4Orders para MT5. Así que sería útil escuchar las opiniones sobre las situaciones descritas de aquellos que son buenos en MT4 específicamente. Y no soy el único que puede encontrarlo útil.
Resolver el problema a través de OnTimer - esta es probablemente la primera sugerencia. Pero no lo necesitamos - sólo OnTick.
Me interesa saber su opinión sobre esta situación en MT4, ¿cómo lo manejan?
El ToR del Asesor Experto es mantener las órdenes pendientes y las posiciones abiertas a una cierta distancia fija del precio actual en cada tick.
Deje que las modificaciones del corredor tomen un poco más de tiempo que el intervalo de tiempo promedio entre los ticks del precio.
Por lo tanto, corremos en un ciclo inverso (en dirección decreciente de SELECT_BY_POS) y hacemos el OrderModify correspondiente.
Así, durante este bucle, empaquetado en OnTick, puede ocurrir lo siguiente
¿Qué hacer?
La pregunta está indirectamente relacionada con la discusión anterior, pero esto no es para su continuación (tema cerrado). Necesito resolver algunos matices no evidentes en MT4Orders para MT5. Así que sería útil escuchar la opinión sobre las situaciones descritas de aquellos que son buenos en MT4 específicamente. Y no soy el único que puede encontrarlo útil.
Para resolver el problema a través de OnTimer - esta es probablemente la primera sugerencia. Pero vamos a omitirlo - sólo OnTick.
En primer lugar, la situación no es estándar y muy pocas personas, si es que hay alguna, la han resuelto.
En pura teoría:
No tenemos que organizar un bucle inverso para OrderModify, así que deja que sea directo.
A continuación, vamos a comprobar los cambios de la lista de pedidos
Si la cantidad de pedidos ha cambiado, comenzaremos este bucle de nuevo con una nueva cantidad de pedidos.
Una pregunta más:
fxsaber:
Es comprensible que, si se añaden, se echen de menos ellos u otros. Pero, ¿y si simplemente se borran? ¿No podríamos ir más allá de la lista de pedidos?