Discusión sobre el artículo "Recetas MQL5 – Obteniendo las propiedades de una posición de cobertura abierta" - página 2

 

Hola Denis,

Me gustaría empezar dándote las gracias por esta increíble librería, hace la vida muy fácil a los usuarios novatos como yo. No soy un programador profesional, pero me las arreglo para entender, ajustar y depurar un poco de código.

Estoy utilizando su código de ejemplo de "Test_Hedge_Properties" como una función en un EA que estoy probando, y encontré que después de cerrar todas las (2) posiciones, cuando llamo a la función

"Update_Hedge_Info", después de cerrar la 1ª entrada, la variable que cuenta el número de posiciones, "hdg_number_of_pos_total" se actualiza de (2) a (1).

Sin embargo, tras el cierre del segundo ticket, la variable sigue mostrando (1), no se actualiza a (0).

No estoy seguro de si he codificado correctamente, pero su amable opinión y experiencia será muy apreciada.

Adjunto el EA y captura de pantalla.

Gracias y saludos.

Archivos adjuntos:
 

Estoy usando hedge_info.Margin() para calcular el margen actual en mi EA.

Me pregunto acerca de la siguiente línea (*) dentro CHedgePositionInfo::AveragePrice dentro del "switch(curr_quote_type) ... case QUOTE_TYPE_CROSS:".

Estoy utilizando EURCHF y major_symbol es USDEUR. Como USDEUR no es soportado por el 99,9% de todos los brokers de forex sino como mucho un cruce definido por el usuario, el siguiente comando SymbolSelect lleva a un mensaje de error mientras se realiza el backtesting. Tal vez sea un problema del broker, pero en mi caso esto lleva a una abrupta interrupción del probador de estrategias porque el símbolo activo es ahora USDEUR y no el par con el que inicialmente inicié el probador de estrategias (EURCHF).

if(SymbolSelect(major_symbol,true))    // (*)

Así que lo que ayudó en mi caso es la eliminación de la USDEUR de la vigilancia del mercado al final de CHedgePositionInfo::AveragePrice por:

SymbolSelect(major_symbol,false);