Comment coder ? - page 59

 

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

Dossiers :
 

Fichier MQ4 svp

Bonjour.
J'ai ce fichier texte TrendmanagerEA. Quelqu'un pourrait-il le convertir en fichier MQ4 s'il vous plaît. Je vais tester et comparer avec un autre EA.

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.

 
chawichsak:
Bonjour.

J'ai essayé de le changer mais ça n'a pas fonctionné.

Merci.

Cha.

Done plutot corrigé quelques bugs dans le code.

Robert

Dossiers :
 

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 :

int x = 1 ;

int init()

{

return(0) ;

}

int deinit()

{

return(0) ;

}

int start()

{

double prixdachat = MathMax(High[1],High[2]) ;

double prixdevente = MathMin(Low[1],Low[2]) ;

int ticket1,ticket2 ;

if (x==1)

{

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) ;

Print("commande lancée") ;

x++ ;

if(ticket1<0)

{

Print("OrderSend 1 failed with error #",GetLastError()) ;

return(0) ;

}

if(ticket2<0)

{

Print("OrderSend 2 failed with error #",GetLastError()) ;

return(0) ;

} }

return(0) ;

}

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.

 
fracte:
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.

Raison: