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
C'est simple :
Placez quelque chose comme ceci au début de la procédure start() de votre EA et cela l'empêchera de fonctionner si la perte (ou le profit) déjà réalisé ce jour-là dépasse un certain montant :
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]Cher Monsieur MLADEN....
THANKSSSSS A LOT pour les codes ci-dessus.... Reconnaissance de dette 2 crédits.....
[PHP]
double totalProfit=0 ;
for (int i =OrdersHistoryTotal()-1 ; i>=0 ; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue ;
si (OrderSymbol() == Symbol()) continue ;
si (OrderMagicNumber() == someMagicNumber) continue ;
si (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
si (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap() ;
}
si (totalProfit < someProfitLossLimit) return(0) ;
Juste pour vérifier..... ce code empêchera-t-il d'autres ordres à partir d'une paire de devises spécifique et du MagicNumber.... si la PERTE cumulée d'aujourd'hui dépasse une certaine limite de perte de profit.....
Merci pour la réponse très-très rapide....
meilleures salutations
AZRUL...
Cher Monsieur MLADEN....
THANKSSSSS A LOT pour les codes ci-dessus.... Reconnaissance de dette 2 crédits.....
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...Oui
Cela empêchera la poursuite du traitement du code si le profit accumulé des ordres fermés est inférieur à un certain montant. Vous pouvez remplacer la dernière ligne par celle-ci :
[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0) ;Pour être sûr que cela ne soit fait que dans les cas où le "profit" cumulé est négatif (lorsqu'il y a eu des pertes).
Oui
Il empêchera la poursuite du traitement du code si le profit accumulé des ordres fermés est inférieur à un certain montant. Vous pouvez remplacer la dernière ligne par celle-ci :
Cher Monsieur MLADEN...
Je suis désolé Monsieur... Je pense que je n'ai pas été assez clair pour vous.....
Mon intention est qu'un code pour garder un œil sur la PERTE ACCUMULÉE seulement pour une paire de devises spécifique et MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...
DÉSOLÉ POUR LA CONFUSION...
Meilleures salutations...
AZRUL...
Cher Monsieur MLADEN...
Désolé, Monsieur... Je pense que je n'ai pas été assez clair pour vous.....
Mon intention est qu'un code pour garder les onglets sur la PERTE ACCUMULÉE seulement pour une paire de devises spécifiques et MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...
DÉSOLÉ POUR LA CONFUSION...
Meilleures salutations...
AZRUL...AZRUL
Le profit peut être négatif (==perte) Dans la liste fermée d'otrders il y a un fichier appelé Order() profit qui garde le "profit" : positif pour les ordres gagnants et négatif pour les trades perdants. Ce bout de code fait exactement ce dont vous avez besoin
Cher Monsieur MLADEN,
La théorie est la suivante.... si aujourd'hui le marché se trouve être un SIDEWAY, je finirai par perdre une partie du profit (s'il y en a un) qui a été fait et X$ de RISQUE sur mon capital..... Ce n'est pas une protection contre un très MAUVAIS JOUR de trading.....
La raison en est que je suis prêt à RISQUER à X$ par jour du trading d'aujourd'hui....
Les codes ci-dessus vont consommer tous les profits (s'il y en a) de la journée et aussi mon RISQUE (capital)...
MERCI
Meilleures salutations...
AZRUL...
AZRUL Le profit peut être négatif (==perte) Dans la liste des ordres fermés il y a un fichier appelé Order() profit qui garde le "profit" : positif pour les ordres gagnants et négatif pour les trades perdants. Ce petit bout de code fait exactement ce dont vous avez besoin
Cher Monsieur MLADEN...
Merci de m'éclairer sur la suggestion ci-dessus...
Je vais essayer de rechercher tout résultat....
Meilleures salutations
AZRUL...
Cher Monsieur MLADEN,
Est-ce que les codes suivants feront l'affaire...
Garder un œil sur la PERTE ACCUMULÉE uniquement pour une paire de devises spécifique et le MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Vos connaissances sont très appréciées...
Votre serviteur
AZRUL....
Cher Monsieur MLADEN,
Est-ce que les codes suivants feront l'affaire...
Garder un œil sur la PERTE ACCUMULÉE seulement pour une paire de devises spécifique et le MagicNumber..... Sans inclure les profits qu'il réalise... Seule la perte compte...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
[/PHP]
Your Knowledge is highly appreciated...
yours truly
AZRUL....Non, ce n'est pas le cas
Si vous voulez additionner seulement les pertes vous devez ajouter
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
La fonction ressemblera donc à ceci :
[PHP]void LossRisk()
double totalLoss=0 ;
{
for (int i =OrdersHistoryTotal()-1 ; i>=0 ; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue ;
si (OrderSymbol() == Symbol()) continue ;
si (OrderMagicNumber() == someMagicNumber) continue ;
si (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
si (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap() ;
}
return(totalLoss) ;
}
Cher Monsieur MLADEN....
J'utilise actuellement ces codes dans mon EA qui fonctionne sur une période de M15...
Il ouvrira un nouvel ordre après la période M15...
bool AddP()
{int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++)
{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))
{
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();
}
}
if(_num==0) return(true);
if(_num>0 && ((Time[0]-_ot))>0)
return(true);
else return(false);
}
Pourriez-vous modifier ce code pour passer un ordre toutes les 5 minutes après l'ordre précédent....
bien que je sois sur un timeframe M15....
J'ESPÈRE QUE VOUS N'ÊTES PAS OFFENSÉ PAR L'ENVOI DE TANT DE QUESTIONS....
Meilleures salutations
AZRUL...
Non, il ne sera pas
Si vous voulez additionner uniquement les pertes, vous devez ajouter
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
Ainsi la fonction ressemblera à ceci :
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Cher Monsieur MLADEN,
Vous savez comment faire les choses par ici....
Je suis TRES HEUREUX de recevoir une réponse de votre part SIR....
Envoyez-moi un message s'il y a quelque chose que je peux faire en retour... sauf pour le codage....
Merci
Meilleures salutations
AZRUL...