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

 

Pouvez-vous me dire comment définir la sélection des ordres par symbole pour OrdersTotal() ?

   int total=OrdersTotal();

   if(total==0&&Bid>=OrderBuy&&Bid<=OrderBuy+10*Point)
    {
     if(OrderSend(Symbol(),OP_BUY,Lot,Ask,5,0,0,NULL,0,0,clrNONE)){::Alert(" Order Open ");}
    }

Actuellement, s'il y a un ordre ouvert sur une paire, il ne s'ouvrira pas sur les autres.

 
MakarFX:

Pouvez-vous me dire comment définir la sélection des ordres par symbole pour OrdersTotal() ?

Maintenant, s'il y a un ordre ouvert sur une paire, il ne s'ouvre pas sur les autres.

Regardez sur kodobase, il y a un exemple dans chaque EA.

 
Vladimir Pastushak:

Regardez dans kodobase, il y a un exemple dans chaque conseiller.

Je ne suis pas un programmeur(

C'est un peu compliqué pour moi.

 
MakarFX:

Je ne suis pas un programmeur(

C'est un peu compliqué pour moi.

Ce n'est pas compliqué.

pour écrire un EA de base, voici toutes les fonctionnalitéshttps://www.mql5.com/ru/forum/131859

Pour vos besoins, OrdersTotal() est le nombre total d'ordres ouverts (numérotés à partir de 0) dans le terminal, puis vous devez les sélectionner un par un (en passant par la boucle) en utilisant OrderSelect() et manipuler les ordres nécessaires.

for (i=OrdersTotal()-1; i>=0; i--)
{
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
  {
   // проверим символ ордера, проверим магикномер ордера....
  }
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
MakarFX:

Pouvez-vous me dire comment définir la sélection des ordres par symbole pour OrdersTotal() ?

Actuellement, s'il y a un ordre ouvert sur une paire, il ne s'ouvre pas sur les autres.

Je dois vérifier périodiquement (me compter) mes commandes au besoin.
J'ai dans chaque EA une boucle (une énorme méthode) qui est appelée avant les actions importantes :

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

la vérification d'un ordre sur le symbole est mise en évidence

 
Maxim Kuznetsov:

périodiquement, selon les besoins, pour vérifier (autocontrôler) leurs commandes.
J'ai une boucle (une énorme méthode) dans chaque EA, qui est appelée avant les actions importantes :

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

vérifier l'ordre par le symbole est mis en évidence

Par ailleurs, je comprends que les tickers des commandes historiques puissent se perdre. La question est de savoir si les tickers des ordres(SELECT_BY_TICKET) dans MT4 et les tickers des transactions et des positions dans MT5 peuvent changer.

Et aussi, est-ce que l'ordre peut être changé après le OrderSelect sur le ticket. Par exemple le jour suivant. L'EA n'est pas désactivé.

Si l'ordre en attente est devenu un ordre au marché, vous pouvez le visualiser par son type. Si l'ordre au marché a été clôturé, alors nous regardons l'heure de clôture de l'ordre, non égale à zéro OrderCloseTime()!=0

Si l'ordre en attente a été clôturé par sa durée de vie, alors comment pouvons-nous le suivre par le ticket d'ordre.

Et une question, la durée de vie est également dans les ordres de marché (MT4), cela fonctionne-t-il ?

 
MakarFX:

Pouvez-vous me dire comment définir la sélection des ordres par symbole pour OrdersTotal() ?

Maintenant, s'il y a un ordre ouvert sur une paire, il ne s'ouvre pas sur les autres.

La question est déjà résolue. Merci à tous.

 
Bonjour chers Messieurs ! Je ne comprends pas ce qui ne va pas, pourquoi Alert : time3-time1 = mauvaise datetime ?
datetime time1 = iTime(NULL,0,1);
datetime time3 = iTime(NULL,0,3);
datetime delta3 = (time3-time1);  Alert("time3-time1 = ",delta3); 


 
novichok2018:
Bonjour chers Messieurs ! Je ne comprends pas ce qui ne va pas, pourquoi il écrit Alert : time3-time1 = wrong datetime ?


parce que le nombre est négatif :-)

par cette logique, le temps 1 est __toujours __plus grand que le temps 3.

 
Maxim Kuznetsov:

parce que le nombre est négatif :-)

selon la logique donnée, le temps 1 est __toujours __plus grand que le temps 3.

Merci ! Parfois le cerveau s'éteint.