Características del lenguaje mql5, sutilezas y técnicas - página 24

 
Alexey Viktorov:
¿Qué cambiará a partir de esto?
La declaración sobre los eventos de Comercio está totalmente en línea con el tema del hilo.
 

Un simple fallo de la red a corto plazo anula la lógica de negociación basada ÚNICAMENTE en la escucha de los eventos comerciales.

Por lo tanto, los adeptos de OnTradeTransaction se exceden un poco en su razonamiento.

Este es el mecanismo de la lógica comercial que servirá fielmente en cualquier plataforma

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias de comercio

Buen ejemplo de trabajo con órdenes limitadas en un EA

fxsaber, 2017.01.02 23:12

Sólo comercio a través de órdenes pendientes un montón de veces. No hacer ningún tipo de procesamiento. OrderSend devolvió -1 (MT4 o MT5+MT4Orders) - no funcionó y está bien, porque el siguiente paso sigue siendo mirar completamente el entorno comercial. Y si no hay pendiente/posición pero debería haberla, la sincronizamos con el estado en el que debería estar: se envía el OrderSend correspondiente.

Con este enfoque, se consideran todos los matices de las regresiones, las ejecuciones parciales, etc. Y la aplicación es muy sencilla y eficaz. Nunca ha fallado.

No he probado los métodos asíncronos y aquí no es mucho más difícil, pero no puedo estar seguro.

 
fxsaber:

Un simple fallo de la red a corto plazo anula la lógica de negociación basada ÚNICAMENTE en la escucha de eventos comerciales.

Por lo tanto, los adeptos de OnTradeTransaction se exceden un poco en su razonamiento.

Este es el mecanismo de la lógica comercial que servirá fielmente en cualquier plataforma

Sí, la única forma fiable es comprobar el estado de la cuenta de operaciones. Todos los eventos OnTrade* no pueden proporcionar un mecanismo fiable para la gestión de las órdenes comerciales.

En cuanto a las operaciones asíncronas, su única ventaja es que se pueden enviar órdenes comerciales seguidas, sin esperar los resultados de las órdenes anteriores. Pero el control de su ejecución tampoco puede depender de los eventos, en este sentido no hay diferencia con la comprobación de los resultados de las órdenes sincrónicas.

El estado de la cuenta comercial es el que tenemos en el momento de la solicitud (nosotros mismos hacemos la solicitud), si hay problemas con la red - no hay problema, podemos hacer solicitudes hasta que la red se recupere. En cambio, confiar en los acontecimientos nos hace depender completamente de factores externos.

 

fxsaber:
Esta situación con los eventos comerciales es totalmente coherente con el tema de esta rama.

No estoy en desacuerdo en absoluto, sólo digo que no mucha gente tiene que captar esas sutilezas.

fxsaber:

Un simple fallo de la red a corto plazo anula la lógica de negociación basada ÚNICAMENTE en la escucha de eventos comerciales.

Por lo tanto, los adeptos de OnTradeTransaction se exceden un poco en su razonamiento.

Este es el mecanismo de la lógica comercial que servirá fielmente en cualquier plataforma

Y no voy a desanimar a nadie a hacerlo. Sobre todo porque creo que es muy necesario controlar el retorno del servidor. Sólo que hay diferentes enfoques. Lo que sugiere es correcto, pero no es una panacea.

Quizá sea mi principio vital: "Puedo hacerlo peor, pero a mi manera". Si ocurre algo, no habrá nadie a quien culpar".

 

Me acostumbré a utilizar la función MarketInfo(_Symbol, MODE_TICKVALUE) para el valor puntual de un símbolo en 4. Todavía no he encontrado ningún problema.

No es tan uniforme en los diferentes brokers de MT5. He ejecutado un pequeño script en EURUSD y USDJPY en dos cuentas diferentes. Tenga en cuenta el valor de los puntos y el tamaño del contrato.

Esta es una cuenta demo de MQ.

Esta es unacuenta demo de Just2Trade:

¿Alguien tiene una función universal que haga que el valor de los puntos sea el mismo?
Entiendo que hay que tener en cuenta el tamaño de un tick y el tamaño del contrato, ¿tal vez algo más?

Es decir, si se trata de EURUSD y el depósito está denominado en dólares, entonces 1 punto de cinco dígitos para que sea igual a 1 dol.

¿Y en qué casos debemos utilizar SYMBOL_TRADE_TICK_VALUE_PROFIT o SYMBOL_TRADE_TICK_VALUE_LOSS?
 
Vasiliy Pushkaryov:

Me acostumbré a utilizar la función MarketInfo(_Symbol, MODE_TICKVALUE) para el valor puntual de un símbolo en 4. Todavía no he encontrado ningún problema.

No es tan uniforme en los diferentes brokers de MT5. He ejecutado un pequeño script en EURUSD y USDJPY en dos cuentas diferentes. Tenga en cuenta el valor de los puntos y el tamaño del contrato.

Esta es una cuenta demo de MQ.

Esta es unacuenta demo de Just2Trade:

¿Alguien tiene una función universal que haga que el valor de los puntos sea el mismo?
Entiendo que hay que tener en cuenta el tamaño de un tick y el tamaño del contrato, ¿tal vez algo más?

Es decir, si se trata de EURUSD y el depósito está denominado en dólares, entonces 1 punto de cinco dígitos para que sea igual a 1 dol.

¿Cuándo es correcto utilizar SYMBOL_TRADE_TICK_VALUE_PROFIT o SYMBOL_TRADE_TICK_VALUE_LOSS?
Cuando la "Oficina del Nikonor" tenga el tamaño del contrato como en lo normal, CIENTOS de miles, entonces el valor del punto será como en lo normal. Mientras tanto, puedes multiplicar lo que tienes por 100.000 y conseguir lo que quieres.
 
Alexey Viktorov:
Cuando la "oficina del nikonor" tenga un tamaño de contrato como los normales, cien mil, entonces el valor de los puntos será como los normales. Mientras tanto, puedes multiplicar lo que tienes por 100.000 y conseguir lo que quieres.
Yo también luché una vez con esto. MetaQuotes-Demo tiene un tamaño de contrato; Just2Trade tiene otro. Para los de forex es uno, para los de acciones, etc. - otro para Forex, etc. Lo que está escrito en la referencia sobre cómo calcular todo no cuadra, por los pelos. Y el cliente está esperando... Así que hemos acordado que no lo calculará automáticamente, sino que simplemente lo multiplicará por 100. Y sólo en su Just2Trade. Todavía no entiendo este truco... :((
 
Artyom Trishkin:
Yo también luché una vez con esto. Para MetaQuotes-Demo el tamaño del contrato es uno, para Just2Trade es otro. Para los de forex es lo mismo, pero para los de acciones y otros es diferente. - para el mercado de divisas, uno para las acciones, etc. Es diferente. Lo que está escrito en la referencia sobre cómo calcular todo no cuadra, por los pelos. Y el cliente está esperando... Así que hemos acordado que no lo calculará automáticamente, sino que simplemente lo multiplicará por 100. Y sólo en su Just2Trade. Todavía no entiendo este truco... :((

¿Qué puede no estar claro?

Tamaño del contrato estándar = 1 Comprado 1000 lotes obtuvo 0.00001*1000/1 = 0.01 por 1 pip

Otra opción, tamaño del contrato = 100000 compró 0,01 lote (100000*0,01=1000) obtuvo 1 punto 1*1000/100000 = 0,01

Esto es para los dígitos 5/3.

ps; Y en insta, el tamaño del contrato estándar era de 10000.
 
Alexey Viktorov:

¿Qué puede no estar claro?

Tamaño de contrato estándar = 1, compró 1000 lotes, recibió 0,00001*1000/1 = 0,01 por 1 pip

Otra opción, tamaño del contrato = 100000 compró 0,01 lote (100000*0,01=1000) obtuvo 1 punto 1*1000/100000 = 0,01

Esto es para los dígitos 5/3.

ps; Y en Insta el tamaño de contrato estándar era de 10000.
Ya veo, es que no estoy acostumbrado a los lotes de 3000 o 5000. Tengo que acostumbrarme a ello.
 
Vasiliy Pushkaryov:
Ya veo, es que no estoy acostumbrado a usar 3000 o 5000 lotes. Tendrás que acostumbrarte a ello.

Si no estás acostumbrado, puedes escribirlo así

input double               lot         =  0.1;
input int                  take        =  100;   // TakeProfit

double takePips, contract;

/*******************Expert initialization function*******************/
int OnInit()
{
   contract = 100000/SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE)*lot;
    takePips = take*_Point;
   return(INIT_SUCCEEDED);
}/*******************************************************************/

Y en la función OrderSend( ) enviar una variable de contrato independientemente del capricho del distribuidor.
Razón de la queja: