J'ai besoin d'aide pour ajouter le paramètre d'arrêt BE dans cet EA, que j'ai obtenu à partir de la première page de ce fil de discussion qui est basé sur le système Trendmanager.
Si vous utilisez ce que l'on appelle"l'exécution instantanée", c'est-à-dire l'utilisation d'ordres OP_BUY ou OP_SELL, vous ne pouvez pas spécifier un prix d'entrée autre que le Ask pour les achats et le Bid pour les ventes.
Bonjour à tous.
comment puis-je définir un code d'ordre dans le metaeditor,
J'utilise un compte démo... est-il possible de définir un ordre dans un compte démo ?
J'ai essayé mais cela a échoué
Paramètre BE
Bonjour.
J'ai besoin d'aide pour ajouter le paramètre d'arrêt BE dans cet EA, que j'ai obtenu à partir de la première page de ce fil de discussion qui est basé sur le système Trendmanager.
Merci d'avance.
Cha.
e-trendmanager.mq4
Fichier MQ4 svp
Merci d'avance.
Cha.#property copyright "Copyright ฉ 2006, www.easyforexsignals.com"
#property link "paul@easyforexsignals.com"
#define LONGCOLOR DodgerBlue
#define SHORTCOLOR OrangeRouge
#define MAGICTM 20070610
extern double TMlots=0.1 ;
extern int MoveStopAmount = 20 ;
extern int MoveStopAfterProfitof = 55 ;
extern int minadxlevel = 20 ;
extern double minSolarWind = 0.25 ;
extern double minJuice = 0.001 ;
extern int StopLoss=50,
Slippage = 3,
TakeProfit=120 ;
datetime LastTMSignalTime ;
extern int MinTimeBetweenSignals = 60 ;
int init(){
retour(0) ;
}
int deinit(){
return(0) ;
}
int start()
{
int res= 0 ;
if(Bars<100 || IsTradeAllowed()==false) return ;
CheckTrendManager(); // vérifie le système du gestionnaire de tendance
CheckForTMClose() ; // vérification des fermetures sur ce système
CheckForStopMove() ; // déplace les stops sur toutes les transactions ouvertes.
}
void CheckForStopMove() {
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol()) continuer ;
if(OrderType()==OP_BUY)
{
// déplacez les stops vers le haut pour verrouiller le profit
si ((OrderOpenPrice()-Ask) >= (MoveStopAfterProfitof * Point())) {
OrderModify(OrderTicket(),0,OrderOpenPrice()+(MoveStopAmount*Point),OrderTakeProfit(),0,Black) ;
}
}
if(OrderType()==OP_SELL))
{
// déplacez les stops vers le haut pour verrouiller le profit
si ((OrderOpenPrice() - Bid) >= (MoveStopAfterProfitof * Point())) {
OrderModify(OrderTicket(),0,OrderOpenPrice()-(MoveStopAmount*Point),OrderTakeProfit(),0,Black) ;
}
}
}
}
void CheckTrendManager() {
if (Time[0]-LastTMSignalTime > MinTimeBetweenSignals) {
double PipsStopLoss, PipsTakeProfit ;
double TMbuy = iCustom(Symbol(),Period(), "TrendManagerNT",2, 0) ;
double TMsell = iCustom(Symbol(),Period(), "TrendManagerNT",3, 0) ;
int orderresult ;
if (TMbuy > 0) {
if (CheckFilters(OP_BUY)==true) {
PipsStopLoss = Ask-(StopLoss * Point()) ;
PipsTakeProfit = Ask+(TakeProfit * Point()) ;
CloseExisting(OP_SELL) ;
orderresult =OrderSend(Symbol(),OP_BUY,TMlots,Ask,Slippage,PipsStopLoss, PipsTakeProfit, "",MAGICTM,0,Maroon) ;
Print(Time[0] + "BUY ON TM,le résultat de l'ordre était :" + orderresult + "stop :" + PipsStopLoss + ",takeprofit :" + PipsTakeProfit) ;
LastTMSignalTime = Time[0] ;
}
}
if (TMsell > 0){
si (CheckFilters(OP_SELL)==true) {
PipsStopLoss = Bid+(StopLoss * Point()) ;
PipsTakeProfit = Bid-(TakeProfit * Point()) ;
CloseExisting(OP_BUY) ;
orderresult = OrderSend(Symbol(),OP_SELL,TMlots,Bid,Slippage,PipsStopLoss,PipsTakeProfit, "",MAGICTM,0,Green) ;
Print(Time[0] + "SELL ON TM, order result was :" + orderresult + "stop :" + PipsStopLoss + ",takeprofit :" + PipsTakeProfit) ;
LastTMSignalTime = Time[0] ;
}
}
}
}
void CheckForTMClose() {
double TMclosesell = iCustom(Symbol(),Period(), "TrendManagerNT",4, 0) ;
double TMclosebuy = iCustom(Symbol(),Period(), "TrendManagerNT",5, 0) ;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol()) continue ;
//---- juste le fermer
if ((TMclosesell > 0) && (OrderType()==OP_SELL)) {
OrderClose(OrderTicket(),OrderLots(),Bid,10,Pink) ;
}
si ((TMclosebuy > 0) && (OrderType()==OP_BUY)) {
OrderClose(OrderTicket(),OrderLots(),Bid,10,Pink) ;
}
}
}
// ferme simplement les positions existantes
void CloseExisting(int OrderTyp)
{
for(int i=0;i<OrdersTotal();i++)
{
si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICTM || OrderSymbol()!=Symbol()) continue ;
//---- juste le fermer std slippage
if(OrderType()==OrderTyp)
{
OrderClose(OrderTicket(),OrderLots(),Bid,10,White) ;
}
}
}
bool CheckFilters(int OrderTyp) {
return(true) ;
}
Renommez simplement le fichier avec l'extension .mq4. C'est tout.
Bonjour.
J'ai essayé de le modifier mais ça ne marche pas. Pouvez-vous le terminer pour moi s'il vous plaît ?
Merci.
Cha.
Bonjour.
J'ai essayé de le changer mais ça n'a pas fonctionné.
Merci.
Cha.Done plutot corrigé quelques bugs dans le code.
Robert
Aide nécessaire pour la fonction ordeersend
Bonjour à tous,
J'ai des problèmes avec la fonction ordersend().
Voici le code que j'ai fait :
Avec ce code, j'obtiens l'erreur #130 (arrêt des erreurs)Quelqu'un peut-il m'expliquer ce qui ne va pas, je ne comprends pas....
merci.
Si vous utilisez ce que l'on appelle"l'exécution instantanée", c'est-à-dire l'utilisation d'ordres OP_BUY ou OP_SELL, vous ne pouvez pas spécifier un prix d'entrée autre que le Ask pour les achats et le Bid pour les ventes.
Bonjour à tous,
ticket1=OrderSend(Symbol(),OP_BUY,1,prixdachat+10*Point,5,prixdachat,prixdachat+20*Point, "ordre",1,15,Green) ;
ticket2=OrderSend(Symbol(),OP_SELL,1,prixdevente-10*Point,5,prixdevente,prixdevente-20*Point, "ordre",2,15,Red) ;
Avec ce code, j'obtiens l'erreur #130 (erreur s'arrête)
Quelqu'un peut-il m'expliquer ce qui ne va pas, je ne comprends pas...
merci.UTILISER LES ORDRES EN ATTENTE AU LIEU DES ORDRES INSTANTANÉS.
(par exemple, changez OP_BUY pour OP_BUYSTOP et OP_SELL pour OP_SELLSTOP)
et tout ira bien.
MERCI BEAUCOUP, M. PIP,
CHA.