Auto-apprentissage du langage MQL5 à partir de zéro - page 76

 
MrBrooklin: .
if(Symbol_Main==_Symbol)
Pourquoi danser quand il y a une demande directe pour le symbole graphique actuel.
 
Konstantin Nikitin:
MrBrooklin: . Pourquoi danser quand il y a une demande directe pour le symbole graphique actuel.

Bonjour Konstantin, j'avais besoin de comparer le symbole qui était spécifié dans les paramètres d'entrée avec le symbole que l'EA tente de définir.

Le code que vous avez suggéré ne fonctionne pas non plus.

Salutations, Vladimir.

 
MrBrooklin:

Bonjour Konstantin, j'avais besoin de comparer le symbole qui était spécifié dans les paramètres d'entrée avec le symbole que l'EA tente de définir.

Le code que vous avez suggéré ne fonctionne pas non plus.

Salutations, Vladimir.

Dans vos paramètres, vous avez spécifié

input string Symbol_Main="GBPUSDrfd";  //Валютная пара, на которую ставим советник

_Symbole

La variable _Symbol stocke le nom du symbole graphique actuel.

Ainsi, la vérification du symbole dans le graphique actuel devrait fonctionner correctement.

if(Symbol_Main==_Symbol)
 
Konstantin Nikitin:

Dans vos paramètres, vous avez spécifié

_Symbole

La variable _Symbol stocke le nom du symbole graphique actuel.

Ainsi, la vérification du symbole par le graphique actuel devrait être réussie.

Merci, Konstantin ! Ça a marché ! J'ai fait une erreur en corrigeant le code. Je l'ai réparé maintenant et ça a marché. Que Dieu vous accorde santé et prospérité !

Je vous souhaite à tous une bonne année !

Salutations, Vladimir.

 

Le code devrait ressembler à ceci :

input string Symbol_Main="GBPUSDrfd";  //Валютная пара, на которую ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары, на который будем устанавливать советник*/
   if(Symbol_Main==_Symbol) //если график валютной пары совпадает со входным параметром
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника на данной валютной паре разрешена!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   else //в противном случае, если график валютной пары не совпадает со входным параметром
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Работа советника на данной валютной паре запрещена! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
  }

Note : Dans le paramètre d'entrée Symbol_Main, vous devez spécifier le nom de la paire de devises tel que prescrit par votre cambiste. Dans mon cas, le symbole GBPUSD se termine par rfd.

Faites attention !

Salutations, Vladimir.

 
MrBrooklin:

Le code devrait ressembler à ceci :

Note : Dans le paramètre d'entrée Symbol_Main, vous devez spécifier le nom de la paire de devises tel que prescrit par votre cambiste. Dans mon cas, le symbole GBPUSD se termine par rfd.

Faites attention !

Sincèrement, Vladimir.

void OnStart()
  {
     Print(CheckSymbol("eurus"));
  }
//+------------------------------------------------------------------+
string CheckSymbol(const string _symboll)
  {
   string symbol = _symboll;
   if(!StringToUpper(symbol))
      return NULL;
//---
   for(int i=0; i<SymbolsTotal(false); i++)
     {
      string s = SymbolName(i, false);
      if(!StringToUpper(s))
         continue;
      if(s == symbol || StringFind(symbol, s, 0) >= 0 || StringFind(s, symbol, 0) >= 0)
         if(SymbolSelect(symbol, true))
            return SymbolName(i, false);
     }
//---
   return NULL;
  }

Et profitez de votre vie )))) Faites attention que je demande même le symbole pas complètement écrit et la casse n'est pas importante.

 
Konstantin Nikitin:

Et profitez de votre vie )))) Notez que je demande même le symbole pas complètement écrit et la casse n'est pas importante.

Merci beaucoup, Konstantin, pour ce super conseil ! Je vais certainement l'utiliser dans mon EA. Je pense que cette fonction sera également utile aux débutants dans l'apprentissage du langage de programmation MQL5.

Je suis toujours aussi proche de Pékin qu'en rampant !

Salutations, Vladimir.

 
Konstantin Nikitin:

Et profitez de votre vie )))) Notez que je demande même un caractère qui n'est pas complètement écrit et qui n'est pas sensible à la casse.

Pourquoi se moquer d'un esprit immature ? Votre code ne répond pas du tout à cette exigence. Si vous entrez uniquement "eu" ou "eur" dans les paramètres d'entrée, cette partie de la condition

|| StringFind(s, symbol, 0) >= 0)

sera remplie quelle que soit la paire de devises contenant "EU" dans son nom et peu importe que l' EUR soit la devise de base ou la devise cotée. Et pourquoi parcourir SymbolName MarketWatch à la recherche du bon symbole ?

 
Alexey Viktorov:

Pourquoi se moquer ainsi d'un esprit immature ? Votre code ne répond pas du tout à cette exigence. Si seul "eu" ou "eur" est saisi dans les paramètres d'entrée, cette partie de la condition

sera remplie quelle que soit la paire de devises contenant "EU" dans son nom et peu importe que l' EUR soit la devise de base ou la devise cotée. Et pourquoi devrais-je parcourir le SymbolName de MarketWatch à la recherche du bon symbole ?

Bonjour Alexey ! Pour être honnête, je ne suis pas bon en programmation, donc je me fie beaucoup à la foi. Cela signifie-t-il que le code fourni par Konstantin doit être retravaillé ?

Sincèrement, Vladimir.

 
MrBrooklin:

Le code devrait ressembler à ceci :

Note : Dans le paramètre d'entrée Symbol_Main, vous devez spécifier le nom de la paire de devises tel que prescrit par votre cambiste. Dans mon cas, le symbole GBPUSD se termine par rfd.

Faites attention !

Sincèrement, Vladimir.

Je le ferais comme ceci

input string Symbol_Main="GBPUSD";  //Валютная пара, на которую ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары, на который будем устанавливать советник*/
   if(StringFind(_Symbol, Symbol_Main, 0) == 0) //если график валютной пары содержит входной параметр
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника на данной валютной паре разрешена!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   else //в противном случае, если график валютной пары не совпадает со входным параметром
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Работа советника на данной валютной паре запрещена! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
  }