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
Recomiendo evitar este diseño
ya que el procesamiento del tick anterior puede tardar lo suficiente como para perderse la llegada del primer tick de la nueva barra.
respectivamente, es posible que se pierda la apertura.
Es mejor vincularse a la hora de apertura de la barra, pero para ello es necesario guardar la hora anterior de la barra cero por ejemplo, para compararla con la hora actual de la barra cero.
Si es la misma, no hay nueva barra.
Si es diferente, entonces se abre al menos una nueva (siguiente) barra, tras lo cual inicializamos el tiempo guardado de la barra cero con el tiempo actual de la barra cero.
Esta construcción es más fiable.
Abordaremos este tema en un futuro artículo:
Por lo que sé, MT5 sólo admite *1* (una) orden s/l y t/p del lado del servidor *por instrumento* (no por operación) y no órdenes OCO (las órdenes OCO pueden utilizarse para simular órdenes s/l y t/p por operación, pero también existe una condición de carrera en este caso). A menos que se solucione lo anterior, yo no me comprometería a invertir más de 100 $ en operaciones a través de MT5 (EAs simplistas de una sola orden, un solo marco temporal y una sola dirección de cruce de MA). Y ni siquiera estoy seguro acerca de los $ 100.
Recomiendo evitar este diseño
ya que el procesamiento del tick anterior puede tardar lo suficiente como para perderse la llegada del primer tick de la nueva barra.
respectivamente, es posible que se pierda la apertura.
Es mejor vincularse a la hora de apertura de la barra, pero para ello es necesario guardar la hora anterior de la barra cero, por ejemplo, para compararla con la hora actual de la barra cero.
Si es la misma, no hay nueva barra.
Si es diferente, entonces se abre al menos una nueva (siguiente) barra, tras lo cual inicializamos el tiempo guardado de la barra cero con el tiempo actual de la barra cero.
Este diseño es más fiable.
Yo lo he hecho así:
Compila pero el depurador falla.
La carga de C:³ de programa³MetaTrader 5³MQL5³Experts³Examples³eMyEA.ex5 falló.
Se publica el nuevo artículo El prototipo de robot de comercio:
Autor: Алексей Сергеев
¡Gracias por el gran artículo! Soy un novato pero tengo una pregunta sobre el código.
En la función void CExpertAdvisor::TrailingPosition(long dir,int TS), hay una línea:
sl=NormalSL(dir,apr,apr,TS,StopLvl); // calcular Stop Loss
¿Deberíamos usar apr tanto para el segundo como para el tercer argumento cuando llamamos a NormalSL? Yo pensaba que debería ser
sl=NormalSL(dir,op,apr,TS,StopLvl);
ya que el segundo argumento debería ser el precio de compra/venta para la dirección "especificada" (es decir, la variable op) en lugar de la dirección "inversa" (es decir, la variable apr).
Gracias.
En la función void CExpertAdvisor::TrailingPosition(long dir,int TS), hay una línea:sl=NormalSL(dir,apr,apr,TS,StopLvl); // calcular Stop Loss
¿Deberíamos usar apr tanto para el segundo como para el tercer argumento cuando llamamos a NormalSL? Yo pensaba que debería ser
sl=NormalSL(dir,op,apr,TS,StopLvl);
no.
el segundo y tercer argumento deben ser apr.
porque el cálculo de tral se deriva del precio al que se cerrará la posición. Bid para la compra y Ask para la venta. la función es correcta.
ya que el segundo argumento debe ser el precio de compra/venta para la dirección "especificada" (es decir, la variable op) en lugar de la dirección "inversa" (es decir, la variable apr).
no.
el segundo y tercer argumento deben ser apr.
porque el cálculo de tral se deriva del precio al que se cerrará la posición. Bid para la compra y Ask para la venta. función es correcta.
debe calcularse a partir de la dirección "inversa". En este caso, apr.Gracias por la rápida respuesta. Pensé que debía estar equivocado.
¿Puedo preguntar también en la función
¿por qué tenemos un "10" entre "dist" y "m_smbinf.TickValue()" en el valor de retorno? Supongo que "dist" es el stop loss (en términos de pips), y "m_smbinf.TickValue()" es el valor en dólares por pip por lote para el par de divisas. Así que no estoy seguro de por qué multiplicamos otro "10" entre ellos.
Gracias.
Artículo muy útil. Muchas gracias.