[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 287

 
Sorento:
2011.03.30 08:40:21 USDCAD,M1 : 3 4 4.00000000 ask=0.9729 bid=0.9725


int Ret[3];

Ret[0]=NormalizeDouble((Ask-Bid)/Point,0); 
Print (Ret[0]," ",(Ask-Bid)/Point," ask=",Ask," bid=",Bid); 
cela fonctionne comme suit
 
abolk:

ça marche comme ça !
Merci !
 
Sorento:
Merci !


En général, il est temps pour les développeurs de MT de créer une section dans la documentation et d'expliquer en détail le problème et la nécessité d'utiliser la normalisation.

Il n'y a qu'un modeste exemple sans emphase dans la documentation pour cette situation :

int    i = 1 / 2.0;   // выражение приводится к типу double, затем приводится к целевому типу int, результат: 0

Section "Approche par type" https://docs.mql4.com/ru/basis/types/casting

 
Roger:

A FoxUA.

Lorsque l'ordre 3 (Vente) est fermé, l'ordre 1 (Achat) sémaphorise toujours qu'il a été fermé sur le Stop Loss et donc 2 ordres en ligne sont placés, parce que Total=1.


c'est à dire que je cherche une solution à ce problème, c'est à dire quoi remplacer total 1 pour se débarrasser d'un tel effet
 
Pouvez-vous me dire si le script peut ouvrir des ordres non seulement dans la fenêtre du graphique auquel il est attaché, mais aussi sur d'autres paires de devises, s'il est correctement prescrit sur quelles autres paires de devises vous devez ouvrir ?
 
CreAndr:
Pouvez-vous me dire si le script peut ouvrir des ordres non seulement dans la fenêtre du graphique auquel il est attaché, mais aussi sur d'autres paires de devises, s'il est correctement prescrit sur quelles autres paires de devises vous devez ouvrir ?

peut-être
 
abolk:

peut-être
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}


mais cette option, va-t-elle fonctionner ou non ?
Dossiers :
 
CreAndr:

OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits)," CleverEA",MagNum,0,Green);


mais cette option, va-t-elle fonctionner ou non ?


Non, ce que vous avez mis en évidence sera rendu par l'outil actuel. Les offres, demandes, chiffres, etc. doivent être demandés à MarketInfo en spécifiant explicitement l'outil.
 
CreAndr:
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}

Mais cette option fonctionnera-t-elle ou non ?


Il ne le fera pas. Vous devez utiliser la fonction MarketInfo https://docs.mql4.com/ru/common/MarketInfo.

il y a des exemples de votre problème sur la page

 
Merci pour votre aide.