Discusión sobre el artículo "Libro de Recetas MQL5: Asesor Experto Multidivisa: un Enfoque Simple, Claro y Rápido" - página 3

 
//+------------------------------------------------------------------+
//|| Calcula el nivel de Trailing Stop ||.
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- Variables para los cálculos
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // Valor bajo para Comprar
   double    sell_point  =high[symbol_number].value[1]; // Valor alto para Vender

No será correcto hacerlo. Si la posición y el precio de la barra se abren con un gap, el StopLoss no se establecerá correctamente.

 
Jose:

El artículo es ordenado y fácil de seguir, y proporcionar la configuración en los archivos .set. Tuve un problema con los modos de ejecución símbolo, específicamente la condición de comprobar si era instantánea o mercado, y sólo después de que dejar que las órdenes se abren, que tuve que quitar, pero todo funcionó bien .

Tengo una pregunta. He visto muchos planteamientos avanzados, como este, que se construyen desde la base despreciando la estructura Expert, ExpertSignal, ExpertTrade.... proporcionada, aunque dediquen mucho código (y tiempo, supongo) a replicar algunas de sus características. ¿Alguien podría justificarme esto, por favor?

¡Hola a todos!

Estoy intentando probar este EA pero me aparece el siguiente mensaje en Strategy Tester: "Error al abrir la posición: 4753 - 1 Posición no encontrada". No entiendo por qué. Esto sucede cuando se ejecuta la función "trade.PositionOpen" en la línea 159 del archivo "TradeFunctions.mqh". ¿Alguien me puede dar una ayuda por favor?

 

¿Podría decirme dónde se produce la inversión de posición descrita por el autor? Aquí está su código con la descripción

//--- Si hay una posición
   else
     {
      //--- Obtener el tipo de posición
      GetPositionProperties(symbol_number,P_TYPE);
      //--- Si la posición es opuesta a la señal y la inversión de posición está activada
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- Obtener el volumen de posición
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- Ajustar el volumen
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- Vamos a invertir la posición
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

mire la función OpenPosition(número_símbolo,lote,tipo_orden,precio_de_posición_abierta,sl,tp,comentario);

//+------------------------------------------------------------------+
//|| Abre una posición|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- Establecer el número mayor en la estructura comercial
   trade.SetExpertMagicNumber(MagicNumber);
//--- Establecer el tamaño de deslizamiento en puntos
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- Modo de ejecución instantánea y modo de ejecución de mercado
// *** A partir de la construcción 803, Stop Loss y Take Profit niveles ***
// *** puede establecerse al abrir una posición en modo SYMBOL_TRADE_EXECUTION_MARKET ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- Si la posición no está abierta, imprime un mensaje al respecto
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("Error al abrir una posición: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
¡Es sólo un bloqueo! No hay inversión... ¡lo mismo con el incremento de lote! ¿Puedes explicar, tal vez estoy equivocado?
 
Tango_X:

¿Podría decirme dónde se produce la inversión de posición descrita por el autor? Aquí está su código con la descripción

mire la función OpenPosition(número_símbolo,lote,tipo_orden,precio_de_posición_abierta,sl,tp,comentario);

¡Es sólo un bloqueo! No hay inversión... ¡lo mismo con el incremento de lote! ¿Puede explicar, tal vez estoy equivocado?

Hay dos tipos de cuentas de trading: netting y hedge.

HabíaAcciónFue en Netting.Está en Hedge.
Compra 1.0Vender 2.0Vender 1.0Comprar 1.0 y Vender 2.0
 
Vladimir Karputov:

Existen dos tipos de cuentas de operaciones: de compensación y de cobertura.

HabíaAcciónSe convirtió en neteoSe convirtió en cobertura
Compra 1.0Vender 2,0Vender 1,0Comprar 1.0 y Vender 2.0

¡La tengo! Gracias.

 
"TimeframeToString" no existe y no está declarado en el artículo, tenga la amabilidad de rteemplazarlo por "EnumToString".