Discussão do artigo "Guia Prático MQL5 - Expert Advisor Multi-Moeda e Trabalhando com ordens pendentes em MQL5" - página 3

 

Otto ...agora você pode usá-lo :-)

Para mim, ele faz negócios.

 

Essa é uma resposta e tanto. Muito obrigado!

Eu só queria ressaltar que os autores dos artigos devem cuidar deles.

Tudo o que você precisa fazer é

CheckTradingPermission()
jogar fora todo o lixo MQL5xxx e ele funcionará;)
 
Otto Pauser:

Essa é uma resposta e tanto. Muito obrigado!

Eu só queria ressaltar que os autores dos artigos devem cuidar deles.

Mmmhhh... sim, nós sabemos.

E eu dei a ele alguma expressão.

Algo assim funciona, você percebe isso em outros lugares, mesmo que ninguém diga nada sobre isso :-)

 
Christian:

Mmmhhh... sim, nós sabemos.

E eu o expressei de alguma forma.

Algo assim funciona, você percebe isso em outros lugares, mesmo que ninguém diga nada sobre isso :-)

Minha intenção era reprogramar o MarketOrders em PendigOrders.

Quem puder usá-lo, aqui está o código de como ele funciona.

Esse não é um EA útil, mas apenas um exemplo de como calculá-lo. Espero que esteja correto, pois funciona no testador.

Também não é meu estilo real de programação, mas é bem simples.

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

//+------------------------------------------------------------------+
input int    inp_Dist     =  120;   // Distância da ordem pendente (pontos)
input int    inp_Stop     =  125;   // SL (pontos)
input int    inp_Take     =  150;   // TP (pontos)
input double inp_Volume   = 0.01;   // Volume

//+------------------------------------------------------------------+
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));
}