Questions des débutants MQL5 MT5 MetaTrader 5 - page 662
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Malheureusement, il n'y a pas d'analogue de la propriétéMarketInfo(symbf,MODE_MARGINREQUIRED) dans MQL5, mais cela a déjà été discuté quelque part sur le forum
Vous devez obtenir de façon programmatiquele montant des fonds libres nécessaires pour ouvrir un lot à l'achat en MQL5, analogue de MQL4 "MarketInfo(symbf,MODE_MARGINREQUIRED) ;".
Essayez la fonction OrderCheck().
double margin_buy,margin_sell;
OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_ASK),margin_buy);
OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_BID),margin_sell);
Print("margin_buy=",margin_buy);
Print("margin_sell=",margin_sell);
Merci ! J'ai compris.
double margin_buy,margin_sell;
OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_ASK),margin_buy);
OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_BID),margin_sell);
Print("margin_buy=",margin_buy);
Print("margin_sell=",margin_sell);
Je veux transférer une partie du code dans une fonction, mais le résultat de la fonction n'est pas de retourner une valeur, mais de changer réellement les valeurs des variables, comment puis-je faire cela ?
int CountExpOrder_OS=0;
int CountExpOrder_OB=0;
int CountMarketOrder_OS=0;
int CountMarketOrder_OB=0;
OpenOrdersInfo();
void OpenOrdersInfo()
{
CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number"));
CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number"));
CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number"));
CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number"));
Print("Отложенных ордеров на покупку открыто(Magic: ",Magic,")=",CountExpOrder_OB);
Print("Отложенных ордеров на продажу открыто(Magic: ",Magic,")=",CountExpOrder_OS);
Print("Рыночных ордеров на покупку открыто(Magic: ",Magic,")=",CountMarketOrder_OB);
Print("Рыночных ордеров на продажу открыто(Magic: ",Magic,")=",CountMarketOrder_OS);
}
Je veux transférer une partie du code dans une fonction, mais le résultat de la fonction n'est pas le retour d'une valeur, mais le changement réel des valeurs des variables, comment faire ?
ça n'aidera pas ?
int OpenOrdersInfo()
{
...
retour(0) ;
}
Cette question, je veux transférer une partie du code dans une fonction, mais le résultat de la fonction n'est pas le retour d'une valeur, mais en fait changer les valeurs des variables, comment puis-je le faire ?
int CountExpOrder_OS=0;
int CountExpOrder_OB=0;
int CountMarketOrder_OS=0;
int CountMarketOrder_OB=0;
OpenOrdersInfo();
void OpenOrdersInfo()
{
CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number"));
CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number"));
CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number"));
CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number"));
Print("Отложенных ордеров на покупку открыто(Magic: ",Magic,")=",CountExpOrder_OB);
Print("Отложенных ордеров на продажу открыто(Magic: ",Magic,")=",CountExpOrder_OS);
Print("Рыночных ордеров на покупку открыто(Magic: ",Magic,")=",CountMarketOrder_OB);
Print("Рыночных ордеров на продажу открыто(Magic: ",Magic,")=",CountMarketOrder_OS);
}
C'est bon ici, le VOID ne renvoie pas de résultat.
Je veux transférer une partie du code dans une fonction, mais le résultat de la fonction ne serait pas de retourner une valeur, mais de changer réellement les valeurs des variables, comment puis-je faire cela ?
Je pourrais essayer ça, mais ce n'est pas une bonne solution :
OpenOrdersInfo(CountExpOrder_OS,CountExpOrder_OB,CountMarketOrder_OS,CountMarketOrder_OB);
Print("Ордеров на покупку(Magic: ",Magic,")=",CountExpOrder_OB);
Print("Ордеров на продажу(Magic: ",Magic,")=",CountExpOrder_OS);
Print("Позиций на покупку(Magic: ",Magic,")=",CountMarketOrder_OB);
Print("Позиций на продажу(Magic: ",Magic,")=",CountMarketOrder_OS);
void OpenOrdersInfo(int &CountExpOrder_OS,int &CountExpOrder_OB,int &CountMarketOrder_OS,int &CountMarketOrder_OB)
{
CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number"));
CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number"));
CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number"));
CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number"));
}
C'est bon, le VOID ne renvoie pas de résultat.
Oui, cela fonctionne correctement - c'est juste qu'il y a eu un bug de ma part et que je suis tombé dans la stupeur.
Merci à tous pour votre aide.
Maintenant, je vais poser des questions sur cinq :)
Oui, c'est vrai - c'était juste une erreur de ma part et je suis tombé dans la stupeur.
Merci à tous pour votre aide.
Je vais poser des questions pour un billet de cinq maintenant :)
5 livres pour une réponse ?
)
Attendre...