Nous avons fait cet EA pour le scalping ! L'EA doit fermer chaque ordre de scalping avec 1 pip de profit ! Afin de ne pas fermer les ordres à long terme, nous avons utilisé la commande OrderOpenTime(). Les ordres scalping sont définis manuellement ! Il agit comme un TP mais seulement avec 1 pip de profit !
1. Votre boucle ne fait pratiquement rien, vous devez mettre entre accolades, { } ce que vous voulez faire dans la boucle ....
2. Vous avez 2 appels à OrderSelect(), si vous mettez tout dans la boucle vous n'en aurez besoin que d'un seul ....
3. la section close d'achat ne doit être exécutée que pour les ordres d'achat, la section close de vente ne doit être exécutée que pour les ordres de vente.
4. Votre profit de 1 pip est codé en dur pour les paires à 4 chiffres, donc il ne fonctionnera pas pour des paires comme USDJPY.
externdouble TPforBuys=1;
externdouble TPforSells=1;
externdouble TimeForEA=120;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
for(int a=OrdersTotal()-1;a>=0;a--)
{
double TPbuy = TPforBuys / 10000;
if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) &&
OrderType()==OP_BUY && OrderSymbol()==Symbol() ) // order type and Symbol checked here
{
double TPB=OrderOpenPrice()+ TPbuy;
// Close Buysif(Bid>TPB)
{
if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) ) // no need to check type and symbol hereif( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
{
Print("OrderClose failed, error: ", GetLastError());
}
elsecontinue; // if order has been closed move to the next position, no need to check if it's a SELL
} // end of if(Bid>TPB)
} // end of if( OrderSelect(a double TPsell = TPforSells / 10000;
if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) &&
OrderType()==OP_SELL && OrderSymbol()==Symbol() )
{
double TPS=OrderOpenPrice()- TPsell;
// Close Sellsif(Ask<TPS)
{
if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) )
if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
Print("OrderClose failed, error: ", GetLastError());
} // end of if(Ask<TPS)
} // end of if( OrderSelect(a
} // end of for(int a=OrdersTotal()return(0);
}
Vous voulez dire par là ?
Je ne sais pas... Est-ce que ça fait ce que tu veux ?
Bien sûr ! Désolé ! Je n'y ai pas pensé !
Nous avons fait cet EA pour le scalping ! L'EA doit fermer chaque ordre de scalping avec 1 pip de profit ! Afin de ne pas fermer les ordres à long terme, nous avons utilisé la commande OrderOpenTime(). Les ordres scalping sont définis manuellement ! Il agit comme un TP mais seulement avec 1 pip de profit !
Merci à vous
Ah je vois, vous ne voulez pas que l'EA ferme les ordres non scalping, à court terme....
OK, quelques commentaires...
1. Votre boucle ne fait pratiquement rien, vous devez mettre entre accolades, { } ce que vous voulez faire dans la boucle ....
2. Vous avez 2 appels à OrderSelect(), si vous mettez tout dans la boucle vous n'en aurez besoin que d'un seul ....
3. la section close d'achat ne doit être exécutée que pour les ordres d'achat, la section close de vente ne doit être exécutée que pour les ordres de vente.
4. Votre profit de 1 pip est codé en dur pour les paires à 4 chiffres, donc il ne fonctionnera pas pour des paires comme USDJPY.
Peut-être quelque chose comme ça...
Peut-être quelque chose comme ça...