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

 
Sergei Vladimirov:
Por cierto, ¿por qué declaras una función como int si devuelve true en tu versión, y siempre? )
Lo he arreglado para anularlo, he cambiado el bucle para invertirlo, mientras las órdenes de los demás no lo toquen, ¡gracias!
 
¿Puedes decirme cómo hacer que el indicador OnCalculate sea llamado no cada tick, sino sólo con una nueva barra?
 
Hexen:
¿Puede decirme cómo hacer que el indicador OnCalculate sea llamado no cada tick, sino sólo con una nueva barra?
Esta función será llamada cada vez que se produzca un tick, pero puedes hacer un nuevo control de barra dentro de la función.
 
Victor Nikolaev:
Esta función será llamada cada vez que se produzca un tick, pero puede hacer una nueva comprobación de barra dentro de la función.

Gracias, está más o menos resuelto. Comparandoprev_calculado y rates_total se puede ver la aparición de nuevas barras. Y en EA es más complicado con la nueva barra - control de tiempo, etc.

 

No los compares, no es una forma muy fiable: la variable prev_calculado puede reiniciarse en algunas condiciones. Recuerda la hora del bar actual y comprueba su cambio en la siguiente llamada:

// в самом начале функции OnCalculate()
bool bNewBar = false;

static datetime dtLastBarTime = time[rates_total-1];

if(time[rates_total-1] > dtLastBarTime)
{
   bNewBar = true;
   dtLastBarTime = time[rates_total-1];
}

PS. Este es un ejemplo para MT5. En los cuatros (y en los cinco si el array time[] se hace serie temporal) sustituir time[rates_total-1] por time[0].

 
Hola,

Decidí crear un simple Asesor Experto después de leer el artículo "Guía paso a paso para escribir
MQL5 Expert Advisor for Beginners" (https://www.mql5.com/ru/articles/100).

He probado el Asesor Experto en la historia y me pregunto cómo mejorarlo.
Lo primero que se me ocurrió, aparte de la optimización
Aplicar el trailing stop-loss. Hay un buen artículo sobre este tema:
"Cómo crear un Trailing Stop - Artículos MQL5" ().
(https://www.mql5.com/ru/articles/134). Sin embargo, un
Sin embargo, surgió un problema, el Asesor Experto adjunto al artículo no funciona... es decir.
(my_first_ea_sartrailing.ex5) compila pero no comercia
el registro dice:
2015.11.28 22:54:38.973 2015.02.04 17:00:00 Alerta: Falló la solicitud de configuración de la orden de venta - código de error:4756
2015.11.28 22:54:38.973 2015.02.04 17:00:00 falló la venta instantánea de 0,10 EURUSD a 1,14051 sl: 1,17051 tp: 1,04051 [Solicitud no válida].
Ayuda para solucionar esto.
 
Sergei Vladimirov:

PS. Este es un ejemplo para MT5.

Gracias.
 

Hola.

¿Podría decirme cuál es la forma más rápida y correcta de eliminar todas las órdenes existentes colocadas por el EA? ¿Es realmente posible crear un array con números de pedido y borrar cada uno de ellos? ¿Es imposible obtener también una lista de pedidos activos?

 
Антон:

Hola.

¿Podría decirme cuál es la forma más rápida y correcta de eliminar todas las órdenes existentes colocadas por el EA? ¿Es realmente posible crear un array con números de pedido y borrar cada uno de ellos? ¿Podemos tener también una lista de pedidos activos?

No necesitamos una matriz. ¿Qué terminal?

 
Sergei Vladimirov:

No necesitas una matriz. ¿Qué terminal?

MT5

Sí, debería haber dicho que esto tiene que ser implementado en un EA.

He encontrado un script en mql4 - ¿no es relevante para el 5? Hace un par de días vi en alguna parte una línea con una función algo así como "orderscancelbymagicnumber", pero no encuentro nada en la documentación... Confundido.