Acheter/vendre des EA et des indicateurs - page 4

 
cifox:
Bonjour Masters ......, Pourriez-vous m'aider à faire un EA pour l'achat ou la vente ouverte sur un temps...

J'ai déplacé votre message ici.

Lisez ce fil de discussion depuis le premier message et vous trouverez quelques EAs.

 

Ouvrir un seul achat et une seule vente par jour !

Salut les gars,

J'ai un petit problème avec mon EA. Il est basé sur le mouvement des prix et pendant une journée il ouvre plus d'une position. Je veux limiter cela mais je n'ai pas compris comment faire.

Ce que je veux faire est quelque chose comme ceci :

Si pendant la journée en cours vous avez déjà ouvert une position d'achat, n'ouvrez pas d'autres positions d'achat. Mais si vous trouvez un signal de vente, ouvrez un signal de vente. Dans ce cas, si après cela vous trouvez un autre signal de vente, n'ouvrez pas d'autres positions de vente.

Je ne sais pas comment écrire cela et quelle est la bonne position. Pouvez-vous m'aider ?

Merci beaucoup ! !!

Salutations,

Mauro

EDIT :

Sur un autre sujet, j'ai trouvé ce code mais je ne sais pas où et comment le joindre :

if(OrderSelect(1, SELECT_BY_POS)==true)

{

if(TimeToStr(OrderOpenTime(),TIME_DATE ) != TimeToStr(CurTime(),TIME_DATE ))

{

//open new order

}

}
 

Dans ce sujet, il n'y a rien sur ce que je recherche... ce sujet concerne l'achat et la vente en même temps....Mais ce dont je parle, c'est que si j'ai déjà ouvert un ordre d'achat, mon EA pendant la journée n'a pas ouvert de nouvel ordre d'achat. C'est la même chose s'il a déjà ouvert un ordre de vente.

Mais s'il ouvre un ordre d'achat, pendant la journée il ne peut ouvrir qu'un ordre de vente...en suivant les règles écrites ci-dessus.

Exemple :

L'heure est : aujourd'hui

L'EA ouvre un ordre d'achat.

La position atteint le TakeProfit ou le StopLoss, elle est donc fermée.

Maintenant, l'EA peut voir un autre signal d'achat mais vu qu'il a déjà ouvert un ordre d'achat dans le temps précédent, il n'ouvre pas cet ordre.

Maintenant l'EA voit un signal de VENTE, et vu qu'il n'a pas encore ouvert un ORDRE de VENTE, il ouvre une position de VENTE.

La position atteint le TakeProfit ou le StopLoss, elle est donc fermée.

Maintenant, l'EA peut voir un autre signal de vente mais vu qu'il a déjà ouvert un ORDRE DE VENTE la fois précédente, il n'ouvre pas cet ordre.

Voici ce que je recherche : ....

 

Dans ce cas, vous avez besoin de ces 2 fils :

https://www.mql5.com/en/forum/176322

https://www.mql5.com/en/forum/173026

 

Ok, merci pour votre réponse NewDigital. Maintenant, je pense que mon code est le suivant :

if (TimeDayOfYear(TimeCurrent())!=DayOfLastTrade)

{

ticket=OrderSend(....

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());

}

[/CODE]

So, can you check if I have added this code in the right way on my code?Here it is

[CODE]if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if (TimeDayOfYear(TimeCurrent())!=DayOfLastTrade)

{

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Buy Order", MagicNumber, 0, DodgerBlue);

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());

}

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

Le code ci-dessus est seulement pour la position d'achat, donc de cette façon il devrait ouvrir seulement une position d'achat. Si je fais la même chose pour le code concernant la vente, il devrait ouvrir uniquement une position de vente, n'est-ce pas ?

Merci pour votre aide.

Mauro

 

MMM... le Metaeditor dit qu'il y a une erreur...

'\end_of_program' - unbalanced left parenthesis (259, 1)
 

Cela signifie que celui-ci

{[/CODE]

and

[CODE]}

est déséquilibré.

Vérifiez dans le code.

Désolé, je ne suis pas un codeur donc je ne peux pas beaucoup aider.

 

Salut newdigital...oui, je sais pour les pharentesis....mais j'ai vérifié tout le code et les pharentesis sont équilibrées....

mmm....Je ne comprends pas où est le problème....Mais je vais continuer à vérifier...j'espère trouver une solution !

Merci pour tout...

Mauro

 

Par exemple, celui-ci :

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());
 

Déboguer MT4 est un vrai casse-tête, mais si vous êtes patient, vous pouvez trouver le problème.

La première chose que je dirais est que là où MT4 vous dit que le problème se trouve... il ne se trouve pas ! La prochaine chose que je ferais est de commencer à couper d'énormes morceaux de code dans l'instruction IF compliquée qui est probablement la cause des problèmes.

Par exemple, si j'ai...

if(){

//second if

if(){

//third if

if(){

}

}

}

Je supprime les if 2 et 3 et ne laisse que le if 1. Essayez de le compiler. S'il compile, vous avez réduit le problème. Puis je recolle les 2 et 3 et je supprime le 3. Je teste à nouveau. Continuez à faire cela pendant quelques minutes et vous finirez par trouver le problème.

Bonne chance.

LUx

Raison: