Comment coder ? - page 79

 

Cool, merci les gars, les deux suggestions sont probablement meilleures que ce sur quoi je travaillais.

 

Quelqu'un peut m'aider....

Bonjour...

J'espère que quelqu'un ici peut m'aider à coder ceci. c'est martiangle EA et ce que je veux faire est :

1 . Quand le post de la 2ème couche est ouvert, je veux que le point cible de la 1ère couche se déplace vers le point cible de la 2ème couche. Ainsi, quand le point cible est atteint dans la 2ème couche, les 2 post peuvent fermer en même temps. Si la 3ème couche est ouverte, le point cible de la 1ère et de la 2ème couche peut se déplacer vers le prix du 3ème point cible. Ainsi, nous pouvons fermer en même temps. La même chose se produit si la 4ème couche, la 5ème couche et les autres couches sont ouvertes.

Lorsque la 1ère couche est ouverte, et que vous avez obtenu un profit de 15 pip (TP 32), l'EA fait un verrouillage au prix sl (exemple 5 pip), donc lorsque le prix s'inverse de 10 pip, le post peut se fermer automatiquement avec un profit de 5 pips.

Je suis désolé pour mon mauvais anglais, j'espère que quelqu'un peut m'aider à mettre un code à cette EA. Je vous remercie.

martiangle_rsi_.mq4

Salutations

Personne ayant vraiment besoin d'aide

Dossiers :
 

Aide pour les commentaires

J'essaie de configurer un commentaire à afficher à l'écran mais je n'ai pas beaucoup de chance.

J'ai réussi à obtenir le nombre de points pour une seule paire mais je n'arrive pas à afficher le total pour plusieurs paires.

Toute aide serait la bienvenue

Voici un exemple de ce code

//========== FONCTION getPipValue

double getPipValue(double ord,int dir)

{

double val ;

RefreshRates() ;

if(dir == 1) val=(NormalizeDouble(ord,Digits) -

NormalizeDouble(Ask,Digits)) ;

sinon val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits)) ;

val = val/Point*co ;

return(val) ;

}

//== fonction de fin

int getSpread()

{

int spread=MarketInfo(Symbol(),MODE_SPREAD) ;

return(spread) ;

}

//========== FONCTION getOpenOrders

void getOpenOrders()

{

int nsl, nsd ;

string mngMagic, trailon ;

int totalorders = OrdersTotal() ;

for(int j=0 ; j<totalorders;j++)

{

OrderSelect(j, SELECT_BY_POS, MODE_TRADES) ;

if((OrderType() == OP_BUY || OrderType() == OP_SELL) &&

OrderSymbol() == Symbol()&&(MagicNumber==0 || MagicNumber ==

OrderMagicNumber()))

{

double val=getPipValue(OrderOpenPrice(),OrderType()) ;

//int val = OrderProfit()/(OrderLots()*10) ;

}

if(MagicNumber == 0)

mngMagic = "Toutes les "+Symbole()+" transactions." ;

sinon

mngMagic = "Transactions avec le numéro magique = "+NombreMagique ;

//RefreshRates() ;

Comment("Balance : ",AccountBalance(),", Account Equity : ",AccountEquity(),", Account Profit : ",AccountProfit(), "Ordre ouvert : ",OrderOpenPrice(),

"\nPip Count : ",val,

"\NMy Account Cutoff Limit : ",Open_Loss_To_CloseTrades,

"\nManaging : ", mngMagic) ;

Salutations

 

La valeur en pips d'un ordre en cours peut être obtenue de la manière suivante :

( OrderClosePrice() - OrderOpenPrice() ) / MarketInfo( OrderSymbol(), MODE_POINT )

Si vous souhaitez utiliser les termes "bid" et "ask", vous devez également utiliser ceux liés au symbole de l'ordre, c'est-à-dire MarketInfo( OrderSymbol(), MODE_BID ) et MarketInfo( OrderSymbol(), MODE_ASK ).

 

ralph.ronnquist

Bonjour

Merci pour le code, je l'ai utilisé mais il ne compte que pour une paire et pas pour le total de toutes les paires.

J'ai expérimenté avec différents scénarios mais cela ne fonctionne toujours pas.

J'ai une ea qui ouvre 3 positions que j'exécute sur 5 paires Je peux voir le nombre de pip pour chaque paire mais pas le collectif.

 
Beno:
ralph.ronnquist

Bonjour

Merci pour le code, je l'ai utilisé mais il ne compte que pour une paire et non pour le total de toutes les paires.

J'ai expérimenté différents scénarios mais cela ne fonctionne toujours pas.

j'ai un ea qui ouvre 3 positions que j'exécute sur 5 paires je peux voir le nombre de pip pour chaque paire mais pas le collectif.

Eh bien, si vous êtes familier avec les variables globales, vous pouvez les utiliser pour stocker les informations sur les pips de chaque paire référencée par chaque symbole. Créez une autre variable globale qui fait référence à la valeur totale des pips et appelez cette variable globale particulière, mettez-la à jour lorsque les pips augmentent, puis stockez-la. Les variables globales peuvent être accédées par chaque ea puisqu'elles sont stockées dans la mémoire de MT4.

Je peux vous aider à le coder pour vous si vous le souhaitez.

 

Bonjour ShahJB

J'ai déjà vu des variables globales dans du code, mais je n'ai aucune expérience avec elles, alors oui, je voudrais accepter votre aide pour coder ceci, car cela me rend fou.

 
Beno:
Bonjour ShahJB J'ai déjà vu des variables globales dans du code mais je n'ai aucune expérience avec elles, alors oui, je voudrais accepter votre aide pour coder ceci car cela me rend fou.

Je viens de coder rapidement ce qui suit. Pourquoi n'ajoutez-vous pas ce code en premier. Essayez-le et envoyez-moi un message si ça ne marche pas. J'ai besoin de dormir un peu.

string val_old_string = "val_old" + Symbol() ;

int val_old = GlobalVariableGet(val_old_string) ;

if(val != val_old)

{

int pips_increment_decrement ;

int current_total_pips ;

string counter = "Compteur de pips" ;

double pips_counter = GlobalVariableGet(counter) ;

si (val>val_old)

{

pips_increment_decrement = val - val_old ;

current_total_pips = pips_increment_decrement + pips_counter ;

GlobalVariableSet(counter, current_total_pips) ;

GlobalVariableSet(val_old_string, val) ;

}

sinon

{

pips_increment_decrement = val_old - val ;

current_total_pips = pips_counter - pips_increment_decrement ;

GlobalVariableSet(counter, current_total_pips) ;

GlobalVariableSet(val_old_string, val) ;

}

}

 

Pourquoi cela ne fonctionne-t-il pas ?

Bonjour,

Je suis un débutant complet en programmation. Grâce aux messages et aux ressources d'apprentissage de ce site, j'ai trouvé le courage d'essayer de construire quelques EA, dont l'un utilisera Lguerre comme l'un des déclencheurs (j'ai utilisé ce site pour m'aider ; Expert Advisor Builder for MetaTrader 4 ). Le problème avec mon EA est qu'il n'ouvre pas les ordres d'achat lorsque les déclencheurs sont atteints. J'ai construit quelques EAs en utilisant le site mentionné ci-dessus et ils exécutent des ordres pour des positions longues et courtes sans problème (Les EAs utilisent des RSI). Jetez un coup d'œil à l'EA ci-joint, 3-28, et dites-moi ce que je fais de façon incorrecte..... Est-ce que j'utilise le mauvais format pour les niveaux à atteindre avant l'exécution d'une transaction ? Le Laguerre a-t-il besoin de paramètres supplémentaires ?

J'ai passé un temps fou sur cette question et je suis sur le point d'abandonner.... toute aide est GRANDEMENT appréciée !!!!!.

Il semble que j'ai trouvé la réponse... Mais pourquoi dois-je multiplier le Laguerre dans mon EA ? ? ????

Dossiers :
3-31.mq4  10 kb
 

J'ai rencontré un problème pour fermer des positions. Aidez moi s'il vous plait

Je suis tombé sur un problème que je ne sais pas comment résoudre. Mon programme a quelques ordres ouverts et les ferme tous ensemble mais parfois je pense que certains des ordres ne sont pas exécutés donc il continue à attendre jusqu'à ce qu'ils soient exécutés et cela bloque mon programme. Quelle est la meilleure façon de fermer tous les ordres ouverts ? Merci beaucoup pour votre aide.

Voici le code :

int OrdersTotalLong()

{

int order_total = 0 ;

for (int i = 0 ; i < OrdersTotal() ; i++)

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES) ;

si (OrderType() == OP_BUY)

order_total++ ;

}

return(order_total) ;

}

int MaxLongOrder()

{

int order = 0 ;

double lots achetés = 0 ;

for (int i = 0 ; i < OrdersTotal() ; i++)

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES) ;

si ((OrderType() == OP_BUY) && (OrderLots() > lotsbuyed))

{

lotsbuyed = OrderLots() ;

order = i ;

}

}

return(order) ;

}

int CloseLong()

{

while (OrdersTotalLong() > 0) //jusqu'à ce qu'il n'y ait plus d'ordres ouverts (tout fermer)

{

if (OrderSelect(MaxLongOrder(), SELECT_BY_POS, MODE_TRADES) == false) continue ;

OrderClose(OrderTicket(),OrderLots(), Bid, 3, Green) ;

}

}

return(0) ;

}

Raison: