Modification automatique de TakeProfit d'une serie d'ordresUn petit bout de code qui permettra de modifier certains experts advisor.
Il vous permettra de modifier l ensemble des takeprofit d'une serie.
Par exemple pour des EA comme DLM, 10points3, Stoch Scalper, ...
Tous ces Ea qui peuvent ouvrir plusieurs ordres.
Cela permet, lorsque un trade ouvre, de modifier l'ensemble des takeprofits des ordres d'une meme paire deja ouverts dans le sens 'tous les Sell si c est un ordre Sell, ou tous les buys si c est que des buys)
La fermeture des ordres sera instantanée, et non au prix du marché. Donc immediats
1/ On declare 2 variables a la fin des declarations de variables
Code:
int lasttradetime,y;
double lasttp;
2/ A rajouter juste apres la lignes
Ordersend pour les ordres SELL et avant RETURN
Code:
//---- Modification de TP de tous les autres ordres SELL deja ouverts
lasttradetime = 0;
lasttp=0;
for (y = 0; y < OrdersTotal(); y++) {
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if((OrderMagicNumber() != Magic) || (OrderType()!=OP_SELL)) continue;
if (OrderOpenTime() > lasttradetime) {
lasttradetime = OrderOpenTime();
lasttp=OrderTakeProfit(); }}
for (y = 0; y < OrdersTotal(); y++) {
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != Magic || OrderType()!=OP_SELL || OrderTakeProfit()==lasttp || lasttp==0) continue;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),lasttp,0,Red); }
3/ A rajouter juste apres la lignes
Ordersend pour les ordres BUY et avant RETURN
Code:
//---- Modification de TP de tous les autres ordres BUY deja ouverts
lasttradetime = 0;
lasttp=0;
for (y = 0; y < OrdersTotal(); y++) {
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if((OrderMagicNumber() != Magic) || (OrderType()!=OP_BUY)) continue;
if (OrderOpenTime() > lasttradetime) {
lasttradetime = OrderOpenTime();
lasttp=OrderTakeProfit(); }}
for (y = 0; y < OrdersTotal(); y++) {
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != Magic || OrderType()!=OP_BUY || OrderTakeProfit()==lasttp || lasttp==0) continue;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),lasttp,0,Red); }
4/ On recompile et on regarde s'il y a des erreurs