Discussione sull’articolo "MQL5 Cookbook - Consulente esperto multi-valuta e il lavoro con ordini in sospeso in MQL5" - pagina 3

 

Otto ... ora puoi usarlo :-)

Per me fa scambi.

 

È una bella risposta. Grazie!

Volevo solo sottolineare che gli autori degli articoli dovrebbero occuparsene.

Tutto quello che dovete fare è

CheckTradingPermission()
e tutta la spazzatura MQL5xxx e funzionerà;)
 
Otto Pauser:

È una bella risposta. Grazie!

Volevo solo sottolineare che gli autori degli articoli dovrebbero occuparsene.

Mmmhhh ... sì, lo sappiamo.

E gli ho dato una certa espressione.

Una cosa del genere funziona, la si nota anche in altri posti, anche se nessuno ne parla :-)

 
Christian:

Mmmhhh ... sì, lo sappiamo.

E io l'ho espresso.

Una cosa del genere funziona, si nota in altri posti, anche se nessuno ne parla :-)

La mia intenzione era quella di riprogrammare i MarketOrders in PendigOrders.

Chiunque possa utilizzarlo, ecco il codice di funzionamento.

Questo non è un EA utile ma solo un esempio di come calcolarlo. Spero che sia corretto, funziona nel tester.

Inoltre non è il mio vero stile di programmazione, ma è molto semplice.

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

//+------------------------------------------------------------------+
input int    inp_Dist     =  120;   // Distanza ordine pendente (punti)
input int    inp_Stop     =  125;   // SL (punti)
input int    inp_Take     =  150;   // TP (punti)
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()
{
   //ritorno(Trade.BuyLimit (inp_Volume,levelBuy ));
   return(Trade.BuyLimit (inp_Volume,levelBuy ,_Symbol,stopBuy,takeBuy ));
}

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