J'écris un EA qui fonctionne sur la base d'une martingale.
Comment puis-je faire en sorte qu'il ferme tous les ordres qu'il a ouverts lorsque la perte maximale autorisée en pips sur une paire de devises est atteinte ?
J'écris un EA qui fonctionne sur la base d'une martingale.
Comment puis-je faire en sorte qu'il ferme tous les ordres qu'il a ouverts lorsque la perte maximale autorisée en pips sur une paire de devises est atteinte ?
double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1) { double profit=0; int i,k=OrdersTotal();
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
J'écris un EA qui fonctionne sur la base d'une martingale.
Comment puis-je faire en sorte qu'il ferme tous les ordres qu'il a ouverts lorsque la perte maximale autorisée en pips sur une paire de devises est atteinte ?
J'écris un EA qui fonctionne sur la base d'une martingale.
Comment puis-je faire en sorte qu'il ferme tous les ordres qu'il a ouverts lorsque la perte maximale autorisée en pips sur une paire de devises est atteinte ?
double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1)
{
double profit=0;
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic)
{
profit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(profit);
}
la fonction renvoie les profits dans les positions ouvertes, peut être filtrée par symbole, type, magik
Ensuite, vous fermez toutes les positions
{
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
}
}
}
}
}
...
la fonction renvoie les profits en poses d'octobre, peut être filtrée par symbole, type, magik
Puis fermer toutes les positions
Je veux dire, je vous ai donné ce qui précède,
Le profit est donc un terme générique.
-20 est -20
if(GetProfitinCurrency(Symbol(),-1,-1)<-20)CPD(Symbol(),-1,-1)
double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1)
{
double profit=0;
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic)
{
profit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(profit);
}
Merci, maintenant je comprends.
Ce qui n'est toujours pas clair dans le code est :(order_type<0||OrderType()==order_type) Ceci peut être lu comme "et ordre de vendre ou d'acheter" ?
ouiorder_type= OP_BUY OP_SELL -1
Le compilateur se plaint également deClosePosBySelect.
Cette fonction doit-elle être écrite séparément ?
Vladislav Andruschenko
RichLux:
Le compilateur se plaint également deClosePosBySelect.
Cette fonction doit-elle être écrite séparément ?
{
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
}
}
}
}
}