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

 
igrok333:

a écrit ce code.

le méta-éditeur marmonne.



Pourquoi s'accouple-t-il ?


#propriété stricte

Votre pr est-il initialisé ?

 
igrok333:

a écrit ce code.

le méta-éditeur marmonne.
Pourquoi s'accouple-t-il ?


#propriété stricte

Il est clairement indiqué qu'à la ligne 553, il est possible d'utiliser une variable qui n'a pas de valeur. Essayez d'écrire bool pr=false ; Cela trompera le compilateur mais vous feriez mieux de le vérifier correctement. Après tout, si le type d'ordre est un ordre en attente, vous aurez toujours pr sans valeur...

 
Roman Sharanov:

sur le précédent, et qu'est-ce qu'il y a ici de mql4 ? la fonction OnTick()?

La question a été abordée dans l'article sur le langage mql4, j'ai donc immédiatement remarqué Time[0].

Après un examen plus approfondi, il apparaît clairement qu'il s'agit d'un tableau défini par l'utilisateur.

Et voici un commentaire de la documentation :

Note

La fonction utilise un appel synchrone, ce qui signifie que la fonction attend l'exécution de toutes les commandes qui ont été placées dans la file d'attente des graphiques avant son appel. Cette fonction peut donc prendre du temps. Vous devez garder cela à l'esprit si vous travaillez avec un grand nombre d'objets sur le graphique.

Étant donné qu'un objet dans une coordonnée de prix peut avoir plusieurs valeurs, il est nécessaire de préciser le numéro de ligne. Cette fonction ne peut être appliquée qu'aux objets suivants :

  • Ligne de tendance (OBJ_TREND)
  • Ligne de tendance par angle (OBJ_TRENDBYANGLE)
  • Ligne de Gann (OBJ_GANNLINE)
  • Canal équidistant (OBJ_CHANNEL) - 2 lignes
  • Canal de régression linéaire (OBJ_REGRESSION) - 3 lignes
  • Canal d'écart-type (OBJ_STDDEVCHANNEL) - 3 lignes
  • Ligne avec flèche (OBJ_ARROWED_LINE)


 
Artyom Trishkin:

Est-ce que votre pr est initialisé ?

doit-il être initialisé ? je pensais qu'il suffisait de le déclarer.
Je pensais qu'il était initialisé par zéro quand il était déclaré.
 
STARIJ:

Il est clairement indiqué qu'à la ligne 553, il est possible d'utiliser une variable qui n'a pas de valeur. Essayez d'écrire bool pr=false ; Cela trompera le compilateur, mais il est préférable de tout vérifier correctement. Après tout, si le type d'ordre est un ordre en attente, vous aurez toujours des pr sans valeur...

merci de me rappeler les commandes en cours)



Est-ce la bonne façon de procéder ?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {  
         pr=false; 

         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  }  
 
igrok333:

merci de me rappeler les ordres en attente)
est-ce la bonne façon de procéder ?

if (pr==false) est équivalent à if (!pr)
if (pr==true) est équivalent à if (pr)

J'utilise Alerte au lieu d'Imprimer - il devrait apparaître immédiatement sans ouvrir le journal. Et il n'y a pas d'information supplémentaire

 
Вместо
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
короче
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), Bid, 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), Ask, 30 );
или просто
pr=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 30 );


 
STARIJ:

if (pr==false) est équivalent à if (!pr)
if (pr==true) est équivalent à if (pr)

J'utilise Alert au lieu de Print - il s'affiche instantanément à l'écran sans ouvrir le journal. Et il n'y a pas d'information supplémentaire

Je parle en fait de placer pr dans le code))
 
Дед пенсионер:
Peut-on écrire OrderClosePrice() comme ceci ?

Nous obtenons OrderClosePrice() après la clôture de la transaction.
 
igrok333:
Est-il possible d'écrire OrderClosePrice() comme ceci ?

Nous recevons OrderClosePrice() après la clôture de la transaction.

Vous pouvez. Mais faites attention. Pour une position ouverte, il renvoie le prix de clôture. En conséquence : pour acheter - Bid, pour vendre - Ask.