Discusión sobre el artículo "Recetas MQL5 - Asesor multidivisa y funcionamiento de órdenes pendientes en MQL5" - página 3

 

Otto ...ahora puedes usarlo :-)

Para mí, hace intercambios.

 

Vaya respuesta. ¡Muchas gracias!

Sólo quería señalar que los autores de los artículos deberían ocuparse de ellos.

Todo lo que tienen que hacer es

CheckTradingPermission()
y toda la basura MQL5xxx y funcionará;)
 
Otto Pauser:

Vaya respuesta. ¡Muchas gracias!

Sólo quería señalar que los autores de los artículos deberían ocuparse de ellos.

Mmmhhh ... sí, lo sabemos.

Y le di un poco de expresión.

Algo así funciona, se nota en otros sitios, aunque nadie diga nada al respecto :-)

 
Christian:

Mmmhhh ... sí, lo sabemos.

Y le he dado un poco de expresión.

Algo así funciona, se nota en otros sitios, aunque nadie diga nada al respecto :-)

Mi intención era reprogramar los MarketOrders en PendigOrders.

A quien le pueda servir, aquí está el código de como funciona.

No es un EA útil sino solo un ejemplo de como calcularlo. Espero que sea correcto, funciona en el tester.

Tampoco es mi estilo real de programación, pero se mantiene muy simple.

#include <Trade\Trade.mqh> CTrade Trade;

//+------------------------------------------------------------------+
input int    inp_Dist     =  120;   // Distancia orden pendiente (puntos)
input int    inp_Stop     =  125;   // SL (puntos)
input int    inp_Take     =  150;   // TP (puntos)
input double inp_Volume   = 0.01;   // Volumen

//+------------------------------------------------------------------+
double distPend = inp_Dist*_Point;
double distStop = inp_Stop*_Point;
double distTake = inp_Take*_Point;

//+------------------------------------------------------------------+
bool   done     = false;
double ask;
double bid;
double levelSell;
double levelBuy;
double stopSell;
double stopBuy;
double takeSell;
double takeBuy;

void OnTick()
{
   if(done)
      return;
   
   ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

   levelBuy =NormalizeDouble(bid-distPend,_Digits);
   levelSell=NormalizeDouble(ask+distPend,_Digits);

   stopBuy  =NormalizeDouble(levelBuy -distStop,_Digits);
   stopSell =NormalizeDouble(levelSell+distStop,_Digits);

   takeBuy  =NormalizeDouble(levelBuy +distTake,_Digits);
   takeSell =NormalizeDouble(levelSell-distTake,_Digits);

   SellLimit();
   BuyLimit();

   done=true;
}

bool BuyLimit()
{
   //return(Trade.BuyLimit (inp_Volume,levelBuy ));
   return(Trade.BuyLimit (inp_Volume,levelBuy ,_Symbol,stopBuy,takeBuy ));
}

bool SellLimit()
{
   //return(Trade.SellLimit(inp_Volume,levelSell));
   return(Trade.SellLimit(inp_Volume,levelSell,_Symbol,stopSell,takeSell));
}