Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 455

 

Bonjour !


Le robot ouvre et ferme les ordres en fonction de certains signaux, mais il est nécessaire qu'un ordre en attente soit placé dans la même direction, mais un seul, après la fermeture de l'ordre.

C'est-à-dire qu'une fois l'ordre en attente placé, déclenché et fermé, rien d'autre ne doit se produire et le robot attend un signal pour ouvrir un ordre régulier.


Pouvez-vous me dire comment mettre cela en œuvre ?

 
Snower: Bonne journée !

Le robot ouvre et ferme les ordres en fonction de certains signaux. J'ai donc besoin que le robot place un ordre en attente dans la même direction, mais un seul.

C'est-à-dire qu'après que l'ordre en attente ait été placé, déclenché et fermé, rien d'autre ne doit se produire, le robot attend un signal pour ouvrir un ordre normal.

Pouvez-vous me dire comment cela peut être mis en œuvre ?

C'est très simple. Dans deux boucles for, vous analysez 1) l'historique des commandes et 2) les commandes en cours. Sur la base de l'analyse, vous déterminez la situation et utilisez des instructions conditionnelles if pour effectuer l'action souhaitée. ou avez-vous besoin de plus de détails ?

 
STARIJ:

C'est aussi simple que cela. Dans deux boucles for, vous analysez 1) l'historique des commandes et 2) les commandes en cours. Sur la base de l'analyse, vous déterminez la situation et utilisez des instructions conditionnelles if pour effectuer l'action requise. ou avez-vous besoin de plus de détails ?

Je vous serais très reconnaissant si vous pouviez nous en dire plus.

 
Snower: Je vous serais très reconnaissant si vous pouviez nous en dire plus.

Quelle partie voulez-vous que j'épelle ? Ou tout ?

 
LRA:

Quelle partie veux-tu que j'écrive ? Ou toutes ?

les boucles elles-mêmes, les "si" que je peux arranger.

 
Vladislav Andruschenko:
))) Je travaille depuis 10 ans et je n'ai jamais eu de telles pensées. Vous aimez les situations difficiles.

maintenant ils le seront

 

Quel est le problème avec ce code ? Parfois il ouvre 1 transaction, parfois 2 ?

Je suis censé avoir un maximum d'une transaction par paire, mais j'ai dû me tromper quelque part.


...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 
Roman Sharanov:

Quel est le problème avec ce code ? Parfois il ouvre 1 transaction, parfois 2 ?

Je suis censé avoir un maximum d'une transaction par paire, mais j'ai dû me tromper quelque part.


for(int i=OrdersTotal()-1; i>=0; i--)
 
Konstantin Nikitin:

Et ce qui est encore plus intéressant, c'est ceci

for(int i = OrdersTotal(); i-- >=0;)
 
Ahhhh, oui, le compte est à partir de zéro :)
Raison: