IDENTIFIER LE SENS DU 1ER ORDRE PASSE DANS UNE BOUCLE FOR

Présentation, Développement, Améliorations et Ressources pour les Stratégies de Trading Automatique.

Modérateur : Administrateurs

Message
Auteur
Elykia34
Nouveau
Messages : 4
Inscription : 25 janv. 2017, 23:57

IDENTIFIER LE SENS DU 1ER ORDRE PASSE DANS UNE BOUCLE FOR

#1 Message par Elykia34 »

Bonjour, je suis débutant en MQL4 mais je m'intéresse fortement au développement d'un EA. J'ai entrepris de travailler sur un EA qui passe des ordres en Pyramide tous les 100 pips. Je veux qu'au bout de x Ordres passés à l'achat, l'EA inverse les ordres suivants en les passant à la Vente. Pour cela, et pour d'autres raisons, j'ai besoin d'identifier le sens du 1er ordre de la boucle que j'ai créé pour ensuite y faire référence dans le code.
Merci pour votre aide.

for(i= OrdersTotal()-1; i>= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()==Symbol())
{
if((count==1 && OrderMagicNumber()==0) || (count==(OrderMagicNumber()+1)))
{
if (OrderType()==0 && OrdersTotal() <=NbOrders)
{
last=OrderOpenPrice();
next=OrderOpenPrice()-dif;
if(OrderOpenPrice()-Ask>dif)
{
od= OrderSend(Symbol(),OP_BUY,lot*(count+LotStep),Ask,3,0,bTakeProfit,"BUY #"+mgc+" @ M"+Period(),(count),0,Blue); Sleep(1000);
}
}
else if(OrderType()==0 && OrdersTotal()>=NbOrders)
{
last=OrderOpenPrice();
next=OrderOpenPrice()-dif;
if(OrderOpenPrice()-Bid>dif )
{
odRet= OrderSend(Symbol(), OP_SELL, lot2*(count+LotStep),Bid,3,0,sTakeProfit,"SELL #"+mgc+" @ M"+Period(),(count),0,DeepPink); Sleep(1000);
}
}
...

Jeff719
VideoBourse family
Messages : 785
Inscription : 28 sept. 2015, 16:18

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSÉ DANS UNE BOUCLE FO

#2 Message par Jeff719 »

On aiderait bien, mais... quelle est la question ?

Car tu test effectivement le sens de l'ordre (on ne sait pas ce qui ne va pas) :

Code : Tout sélectionner

if (OrderType()==0
On peut écrire moins crade (mais ça ne change rien):

Code : Tout sélectionner

if (OrderType()==OP_BUY
A propos, pour poster du code, utilise la balise

Code : Tout sélectionner

 (entre [i]Quote[/i] et [i]List[/i] de la saisie de message). Par ailleurs, évite les titres de sujet en majuscule, d'après la netiquette cela revient à crier. :wink:
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.

neo-13
Professionnel certifié
Messages : 420
Inscription : 28 févr. 2015, 17:53

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSÉ DANS UNE BOUCLE FO

#3 Message par neo-13 »

Si tant est que j'ai compris, il te suffit pour connaitre le sens du premier d'ajouter un booleen dans ta boucle:
bool PremierOrderTrouve=0;
string sens="";

dans ta boucle et comme tu démarres par le dernier ca donne:

Code : Tout sélectionner

if(i== 0 && PremierOrderTrouve==0)
{
  if(OrderType()==OP_BUY) sens="buy";
  else                              sens="sell";
  PremierOrderTrouve=1;
}

MaPomme
Membre assidu
Messages : 184
Inscription : 21 oct. 2015, 14:07

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSÉ DANS UNE BOUCLE FO

#4 Message par MaPomme »

De ce que je crois comprendre de la question et sans s'attarder sur le code :? si tu veux déterminer le premier ordre d'une série la seule solution fiable et d'utiliser OrderOpenTime(). Tout le reste et très sujet a caution, notamment si par exemple il y a intervention sur le compte par ailleurs.

Bon courage a toi

neo-13
Professionnel certifié
Messages : 420
Inscription : 28 févr. 2015, 17:53

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSE DANS UNE BOUCLE FO

#5 Message par neo-13 »

L'heure, en effet, c'est sans doute la meilleure soluce.

Avatar de l’utilisateur
Loverotten
Membre assidu
Messages : 401
Inscription : 30 sept. 2015, 04:34

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSE DANS UNE BOUCLE FO

#6 Message par Loverotten »

C'est une sorte d'approche "arbitraire"... Ça pourrait donner quelque chose, faut voir.

Elykia34
Nouveau
Messages : 4
Inscription : 25 janv. 2017, 23:57

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSE DANS UNE BOUCLE FO

#7 Message par Elykia34 »

Bonjour à tous et merci pour vos commentaires et conseils. En effet, je teste déjà le sens de l'ordre mais je veux connaitre celui du 1er ordre de la boucle car c'est sur lui que je vais m'appuyer pour développer le reste de la boucle.
Merci à toi neo-13 pour ta proposition qui convient parfaitement à mon cas. J'ai testé et ça marche comme je le souhaitais.
Merci encore

Jeff719
VideoBourse family
Messages : 785
Inscription : 28 sept. 2015, 16:18

Re: IDENTIFIER LE SENS DU 1ER ORDRE PASSE DANS UNE BOUCLE FO

#8 Message par Jeff719 »

Arf, bravo Neo-13, j'avais pas tout capté.

Super cette file, on se croirait revenu aux grandes heures de trading automatique, lorsqu'un débutant posant une question attirait la ruée des programmeurs d'expérience pour apporter de l'aide.

Bizarre, Troll55 n'est pas venu pourrir la file. :mrgreen:
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.

Répondre