Questions des débutants MQL5 MT5 MetaTrader 5 - page 284

 
barabashkakvn:
Le numéro de séquence dans "Market Watch" ou le prix actuel ?

Le numéro de séquence dans Market Watch.

Je comprends comment obtenir une description en chaîne d'un symbole avec SymbolInfoString, mais je ne trouve le numéro nulle part ( :

 
Crucian:

Un numéro de série dans la Revue du marché.

Premier

int  SymbolsTotal(
   bool  selected      // true – только символы в MarketWatch
   );

puis

string  SymbolName(
   int   pos,          // номер в списке
   bool  selected      // true – только символы в MarketWatch
   );

et une fois que SymbolName==Votre symbole, vous connaîtrez sa position.

 
barabashkakvn:

Premier

puis

et une fois que SymbolName==Votre symbole, vous connaîtrez sa position.

Merci !

Mais pour une raison quelconque, cela ne fonctionne pas, pos toujours = 0. Peut-être que je fais quelque chose de mal, je le découvrirai demain matin :).

 
Crucian:

Merci !

Mais pour une raison quelconque, cela ne fonctionne pas, ros = toujours 0. Peut-être que je fais quelque chose de mal, je le découvrirai demain matin :).

Dans SymbolName, vous passez le paramètre Pos et vérifiez le paramètre Strung sur la sortie.
 
Crucian:

Merci !

Mais pour une raison quelconque, cela ne fonctionne pas, ros toujours = 0. Peut-être que je fais quelque chose de mal, je le découvrirai demain matin :).

//+------------------------------------------------------------------+
   int PositionsSymbolInList(string sy) {
      for(int i=0; i<SymbolsTotal(false); i++) {
         string symbol_name=SymbolName(i,false);
         if(sy==symbol_name) return i;
         }
      return -1;
   }
//+------------------------------------------------------------------+
 
Crucian:

Merci !

Mais pour une raison quelconque, cela ne fonctionne pas, ros toujours = 0. Peut-être que je fais quelque chose de mal, je le découvrirai demain matin :).

//+------------------------------------------------------------------+
int IndexSymbolInMarketWatch(string sy)
  {
   for(int i=SymbolsTotal(true)-1; i>=0; i--)
     {
      if(SymbolName(i,true)==sy)
         return (i);
     }
   return (-1);
  }
//+------------------------------------------------------------------+
 
artmedia70:

Merci votre code fonctionne, mais le code paladin800 ne fonctionne pas (.

Mais, il n'y a pas de séquence dans les chiffres. Par exemple, EUR=21, GBP=28, CHF=36, JPY=40, EUR/JPY=16. Est-ce que ça doit être comme ça ?

 
Crucian:

Merci votre code fonctionne, mais le code paladin800 ne fonctionne pas (.

Mais, il n'y a pas de séquence dans les chiffres. Par exemple, EUR=21, GBP=28, CHF=36, JPY=40, EUR/JPY=16. C'est censé être comme ça ?

SymbolsTotal(false)

Il s'agit d'une recherche dans la liste des symboles disponibles, si elle est vraie, alors seulement ceux sélectionnés dans Market Watch.

L'ordre dans lequel ils sont placés dans la liste des symboles disponibles est l'ordre dans lequel les index sont renvoyés. Alors que, si vous prenez la liste dans MarketWatch (si c'est vrai), les indices dépendent du tri des symboles (ils peuvent être glissés et déposés avec la souris) dans Market Watch, ce qui n'est pas toujours pratique - il y a une dépendance des "vilains stylos de l'utilisateur".

 

Une dernière question.

Lors de la compilation du MetaEditor, l'avertissement suivant a été généré :

La valeur de retour de'OrderSend' doit être vérifiée Bollinger_Bands_strategy_4.mq5 690 7

Je vérifie le résultat après avoir envoyé la demande :

           OrderSend(mrequest,mresult);
            if(mresult.retcode==10009 || mresult.retcode==10008)
              { 
             
               Print("Set pending order SellStop"  );
               ModificationPosition=0;
            }else
              {
               Print(ResultRetcodeDescription(mresult.retcode));
               return;
              }

Ou cela ne suffit pas ? Que veut MetaEditor ?

 
Crucian:

Une dernière question.

Lors de la compilation, MetaEditor a commencé à afficher un avertissement :

la valeur de retour de 'OrderSend' doit être vérifiée Bollinger_Bands_strategy_4.mq5 690 7
(La valeur de retour de "OrderSend" doit être vérifiée)

Je vérifie le résultat après avoir envoyé une requête :

Ou cela ne suffit pas ? Que veut MetaEditor ?

if(OrderSend(...))

Ou

bool res=OrderSend(...);

Non, je me suis trompé. Je suis déjà endormi. C'est moi par habitude de mes fonctions de cours... Bien que ce soit pour mql4, comme dans Five - dunno... :)

int ticket=OrderSend()