Aide au codage - page 16

 
nontan:
Bonjour, je suis en train

de développer un EA simple mais je n'arrive pas à comprendre les conditions ci-dessous.

Si la position précédente est fermée par Take Profit, faites une nouvelle entrée qui fixe 20 pips par s/l et t/p au prochain prix d'ouverture. (sur un graphique 5M)

J'ai essayé d'en écrire un.

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//La dernière position était un ordre instantané OP_BUY ou OP_SELL

{

if(OrderClosePrice() == OrderTakeProfit()

)

// SI le prix de clôture est le même que le prix de prise de profit

{

if(OrderType() == OP_BUY)

//Ce type d'ordre est buy

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Les lots et autres variables sont définis par moi-même

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC) ;

}

}

J'ai essayé de nombreuses fois avec le testeur de stratégie, mais je n'arrive pas à faire ce que j'espère.

J'aimerais que quelqu

'un m'aide à répondre à cette question

!

[lang=pl]Bonjour,

Pouvez-vous joindre le code complet de l'EA ?

Merci,

Grzesiek[/lang]

 

...

Essayez d'utiliser ceci en comparaison

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

peut-être que cela vous aidera

nontan:
Je suis en train

de développer un EA simple mais je n'arrive pas à comprendre les conditions ci-dessous.

Si la position précédente est fermée par Take Profit, faire une nouvelle entrée qui fixe 20 pips par s/l et t/p au prochain prix ouvert. (sur un graphique 5M)

J'ai essayé d'en écrire un.

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//La dernière position était un ordre instantané OP_BUY ou OP_SELL

{

if(OrderClosePrice() == OrderTakeProfit()

)

// SI le prix de clôture est le même que le prix de prise de profit

{

if(OrderType() == OP_BUY)

//Ce type d'ordre est buy

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Les lots et autres variables sont définis par moi-même

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC) ;

}

}

J'ai essayé de nombreuses fois avec le testeur de stratégie, mais je n'arrive pas à faire ce que j'espère.

J'aimerais que quelqu

'un m'aide à répondre à cette question !

 

Merci à vous.

J'ai essayé d'insérer NormarizeDouble mais ça ne marche pas...

Pouvez-vous m'apprendre pourquoi cela ne fonctionne pas ?

---------------------------------------------------

#include

#define MAGIC 20120101

#define COMMENT "Riding9" (commentaire)

extern double Lots = 0.1 ;

extern int Slippage = 3 ;

extern int SLpips = 20 ;

extern int TPpips = 50 ;

extern int StartTime = 1 ;

extern int FinishTime = 23 ;

extern int MAPeriod = 48 ;

int EntrySignal(int magic)

{

double pos = MyCurrentOrders(MY_OPENPOS, magic) ;

double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1) ;

int ret = 0 ;

if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9)) ret = 1 ;

else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9)) ret = 1 ;

if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1;//

else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9)) ret = -1 ;

return(ret) ;

}

bool MyOrderSendSL(int type, double lots, double prix, int slippage, int slpips, int tppips, string comment, int magic)

{

int mult=1 ;

si(Chiffres == 3 || Chiffres == 5) mult=10 ;

slippage *= mult ;

si(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1 ;

double sl=0, tp=0 ;

si(slpips > 0) sl = prix-slpips*Point*mult ;

si(tppips > 0) tp = prix+tppips*Point*mult ;

return(MyOrderSend(type, lots, prix, slippage, sl, tp, commentaire, magie)) ;

}

int start()

{

if(Hour() >= StartTime && Hour() < FinishTime)

{

int sig_entry = EntrySignal(MAGIC) ;

if(sig_entry > 0)

{

MyOrderClose(Slippage, MAGIC) ;

MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC) ;

}

if(sig_entry < 0)

{

MyOrderClose(Slippage, MAGIC) ;

MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC) ;

}

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

{

si (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

{

if(OrderType() == OP_BUY)

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC) ;

}

else if(OrderType() == OP_SELL))

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC) ;

}

}

}

return(0) ;

}

return(0) ;

}

------------------------------------------------------

Veuillez m'apprendre mon erreur si vous la découvrez.

Salutations.

 

...

nontan,

Cette ligne
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

[/PHP]

ne sélectionne pas le dernier ordre clôturé mais le premier (après le solde initial) de la file d'attente des ordres clôturés. Ainsi, elle vérifie toujours un ordre fixe au lieu de vérifier quel était le dernier ordre et de s'y adapter. Si vous souhaitez tester le dernier ordre fermé (le dernier dans la file d'attente des ordres fermés, mais sachez que les utilisateurs de metatrader ne garantissent pas que ce soit le dernier lorsqu'il est trié par date et heure de fermeture), vous devez utiliser cette forme de vérification
[PHP]if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
 

Merci, mladen

Je n'ai pas encore utilisé la fonction OrderHistoryTotal, c'est une fonction appropriée pour ce code.

Enfin, j'ai obtenu un code désiré après l'avoir modifié, ce qui fait que l'EA fonctionne pour faire une nouvelle entrée après avoir obtenu TakeProfit.

Merci pour votre entreprise et tous.

 

J'ai besoin de votre aide, maîtres codeurs

Bonjour, j'ai besoin de quelqu'un pour m'aider à coder ma stratégie.

 
johnray:
Bonjour, j'ai besoin de quelqu'un pour m'aider à coder ma stratégie.

[lang=pl]Donnez-moi des détails.

Cheers[/lang]

 

j'ai envoyé un pm

g.pociejewski:
[lang=pl]Donnez-moi juste les détails Cheers[/lang]

merci maître je vous ai envoyé un pm... c'est un peu compliqué

 

Code pour le rafraîchissement automatique

J'utilise un indicateur qui nécessite un rafraîchissement constant. J'utilise un graphique de 15 minutes, il n'a donc pas besoin d'être rafraîchi à chaque tick, même si ce serait bien s'il n'y a pas une grande consommation d'énergie. Il devrait au moins avoir une option pour l'intervalle de temps entre chaque rafraîchissement. Pour l'instant, je rafraîchis manuellement toutes les minutes environ en utilisant l'onglet déroulant 'Charts' et en sélectionnant 'Refresh'.

Existe-t-il un code ou un moyen de rafraîchir l'indicateur et/ou le graphique automatiquement, soit par un code supplémentaire dans l'indicateur, soit dans un EA ?

Merci, el bee

 

[langtitle=fr]Indicateur original Parabolique Sar par Wilder[/langtitle]

[lang=fr]
Bonjour !

Je suis à la recherche de l'ORIGINAL SAR parabolique, quiproquo de Wilder. J'ai fait le code de cet indicateur pour la plateforme PRT, mais je ne sais pas coder en MT4.

Si quelqu'un a des connaissances en codage MT4, je peux donner le code par message privé, pour l'adapter au codage MT4.

Merci
[/lang]
Raison: