Discusión sobre el artículo "Libro de Recetas MQL5: Cómo Evitar Errores al Configurar/Modificar Niveles de Trading" - página 2

 
tatankaska:
Hola, al probar su asesor experto en el probador de estrategias en ORO siempre obtuve avisos Falló al abrir la posición - Paradas no válidas - no se abrieron posiciones. ¿Qué es lo que estaba mal? ¿Estaba escrito para evitar este tipo de error?
Me temo que necesitamos algo de código para poder ayudarte. Lo más probable es que el error exista en tu código. Comprueba que tus stops son mayores que la distancia mínima permitida y que, por casualidad, no has colocado mal los stops de compra y venta. También asegúrese de que su broker permite especificar stops en la apertura de la posición - algunos de ellos requieren añadir stops sólo a las posiciones existentes (lo que se llama"ejecución de mercado").
 
marketeer:
Me temo que necesitamos algo de código para poder ayudarte. Lo más probable es que el error exista en tu código. Compruebe que sus stops son mayores que la distancia mínima permitida y que, por casualidad, no ha colocado mal los stops de compra y venta. También asegúrese de que su corredor permite especificar las paradas en la apertura de la posición - algunos de ellos requieren para agregar paradas sólo a las posiciones existentes (la llamada"ejecución de mercado").

Hola he probado sólo asesor experto adjunto al artículo Cómo evitar errores al establecer / modificar el nivel de comercio, sin ningún cambio (Positionpropertiesplus). Plataforma Instatrader por Instaforex. Las funciones en este asesor estan escritas de tal manera, que si establezco parametros de stops erroneos, estos se establecen en el mas bajo permitido. Así que normalmente no debería obtener ningún mensaje de error - que es cierto por pares de divisas. Pero por GOLD en esta plataforma obtengo por cada intento de positionpropertiesplus EA para abrir la posición con paradas, el mensaje de error de paradas no válidas y ninguna posición en el probador de estrategia fue abierta. ¿Es ese el caso que mencionas - problema con la plataforma instatrader y el broker? En GOLD symbol properties esta escrito instant execution.

Aqui esta el ejemplo de la funcion para el calculo de stoploss del EA mencionado - Yo use el EA adjunto al articulo mencionado sin ningun cambio, solo use GOLD en lugar de pares de forex:

//+------------------------------------------------------------------+

//| Cálculo del valor Stop Loss|

//+------------------------------------------------------------------+

double CalculateStopLoss(ENUM_ORDER_TYPE order_type)

  {

//--- Si se requiere Stop Loss

   if(StopLoss>0)

     {

      //--- Para el valor calculado de Stop Loss

      double sl=0.0;

      //--- Si necesita calcular el valor para una posición de COMPRA

      if(order_type==ORDER_TYPE_BUY)

        {

         // Calcular el nivel

         sl=NormalizeDouble(sym_ask-CorrectValueBySymbolDigits(StopLoss*sym_point),sym_digits);

         //--- Devuelve el valor calculado si es inferior al límite inferior del nivel de Stops.

         // Si el valor es mayor o igual, devuelve el valor ajustado

         return(sl<sym_down_level ? sl : sym_down_level-sym_offset);

        }

      //--- Si necesita calcular el valor para una posición de VENTA

      if(order_type==ORDER_TYPE_SELL)

        {

         //--- Calcular el nivel

         sl=NormalizeDouble(sym_bid+CorrectValueBySymbolDigits(StopLoss*sym_point),sym_digits);

         //--- Devuelve el valor calculado si es superior al límite superior del nivel de Paradas

         // Si el valor es menor o igual, devuelve el valor ajustado

         return(sl>sym_up_level ? sl : sym_up_level+sym_offset);

        }

     }

//---

   return(0.0);

  } 
 
tatankaska:
...

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading


Hola,

Por favor, utilice el botón SRC cuando publique código. Gracias.


Esta vez, lo he editado para usted.


 
tatankaska:

Hola He probado sólo asesor experto adjunto al artículo Cómo evitar errores al establecer / modificar el nivel de comercio, sin ningún cambio (Positionpropertiesplus). Plataforma Instatrader de Instaforex. Las funciones en este asesor estan escritas de tal manera, que si establezco parametros de stops erroneos, estos se establecen en el mas bajo permitido. Así que normalmente no debería obtener ningún mensaje de error - que es cierto por pares de divisas. Pero por GOLD en esta plataforma obtengo por cada intento de positionpropertiesplus EA para abrir la posición con paradas, el mensaje de error de paradas no válidas y ninguna posición en el probador de estrategia fue abierta. ¿Es ese el caso que mencionas - problema con la plataforma instatrader y el broker? En GOLD symbol properties está escrito instant execution.

Aqui esta el ejemplo de la funcion para el calculo de stoploss del EA mencionado - Yo use el EA adjunto al articulo mencionado sin ningun cambio, solo use GOLD en lugar de pares de forex:

Sí, ese fue el caso. Por GOLD en Instatrader las paradas podrían ser colocadas sólo después de la apertura de la posición. Cuando la posición se abría sin stops y después de la apertura se modificaba, todo iba bien. Gracias chicos.
 

Una vez más al cálculo de paradas (SL/TP) en EA adjunto - se calculan correctamente sólo por los instrumentos donde el punto de símbolo = tamaño de tick de símbolo. Este no es el caso de GOLD.

Las paradas deben ser en este caso (por GOLD) corregidas al tamaño válido del símbolo, de lo contrario se obtiene un mensaje de error - paradas inválidas.

Así que los avisos de error de GOLD no son el resultado de la ejecución del mercado. EA necesita un poco de corrección en el cálculo de SL/TP, si desea utilizarlo con GOLD.

 
¿Qué pasa con el cierre de una posición? Si hay condiciones (señal) para el cierre de posiciones en el Asesor de Expertos, ¿cómo hacerlo, donde puedo ver esos ejemplos?
 
Nauris:
¿Qué pasa con el cierre de una posición? Si existen condiciones (señal) para el cierre de posiciones en el Asesor Experto, ¿cómo hacerlo, dónde puedo ver tales ejemplos?
En el artículo se utiliza la clase CTrade de la biblioteca estándar. Tiene el método PositionClose. Puede utilizarlo.
 
Modifico esto al código

//+------------------------------------------------------------------+
//| Configuración del panel de información|
//|------------------------------------------------------------------+
void SetInfoPanel()
  {
//--- Modos de visualización o tiempo real
   if(ShowInfoPanel && (IsVisualMode() || IsRealtime()))
     {
     // El resto del código de la función SetInfoPanel()
     // ...
     }
  }