Autoapprendimento del linguaggio MQL5 da zero - pagina 76

 
MrBrooklin: .
if(Symbol_Main==_Symbol)
Perché ballare quando c'è una richiesta diretta per il simbolo del grafico corrente.
 
Konstantin Nikitin:
MrBrooklin: . Perché ballare quando c'è una richiesta diretta per il simbolo del grafico corrente.

Ciao Konstantin, avevo bisogno di confrontare il simbolo specificato nei parametri di input con il simbolo che l'EA sta cercando di impostare.

Anche il codice che hai suggerito non funziona.

Saluti, Vladimir.

 
MrBrooklin:

Ciao Konstantin, avevo bisogno di confrontare il simbolo specificato nei parametri di input con il simbolo che l'EA sta cercando di impostare.

Anche il codice che hai suggerito non funziona.

Saluti, Vladimir.

Nelle vostre impostazioni avete specificato

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

_Simbolo

La variabile _Symbol memorizza il nome del simbolo del grafico corrente.

Quindi, il controllo del simbolo nel grafico corrente dovrebbe funzionare bene.

if(Symbol_Main==_Symbol)
 
Konstantin Nikitin:

Nelle vostre impostazioni avete specificato

_Simbolo

La variabile _Symbol memorizza il nome del simbolo del grafico corrente.

Quindi, il controllo del simbolo dal grafico corrente dovrebbe avere successo.

Grazie, Konstantin, ha funzionato tutto! Ho fatto un errore quando ho corretto il codice. L'ho aggiustato ora e ha funzionato. Dio vi conceda salute e prosperità!

Auguro a tutti voi un felice anno nuovo!

Saluti, Vladimir.

 

Il codice dovrebbe assomigliare a questo:

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 значение означающее "неудачная инициализация"
     }
  }

Nota: nel parametro di input Symbol_Main, dovreste specificare il nome della coppia di valute come prescritto dal vostro rivenditore di forex. Nel mio caso il simbolo GBPUSD ha il finale rfd.

Fate attenzione!

Saluti, Vladimir.

 
MrBrooklin:

Il codice dovrebbe assomigliare a questo:

Nota: nel parametro di input Symbol_Main, è necessario specificare il nome della coppia di valute come prescritto dal vostro rivenditore di forex. Nel mio caso il simbolo GBPUSD ha il finale rfd.

Fate attenzione!

Sinceramente, 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;
  }

E goditi la tua vita )))) Fate attenzione che sto chiedendo anche simbolo non completamente scritto e il caso non è importante.

 
Konstantin Nikitin:

E goditi la tua vita )))) Si noti che richiedo anche simbolo non completamente scritto e il caso non è importante.

Grazie mille, Konstantin, per il grande consiglio! Lo userò sicuramente nel mio EA. Penso che questa funzione sarà utile anche per i principianti nell'apprendimento del linguaggio di programmazione MQL5.

Sono ancora vicino come un gattino a Pechino!

Saluti, Vladimir.

 
Konstantin Nikitin:

E goditi la tua vita )))) Notate che sto chiedendo anche un carattere che non è completamente scritto e non è sensibile alle maiuscole.

Perché prendersi gioco di una mente immatura? Il vostro codice non soddisfa affatto il requisito. Se inserite solo "eu" o "eur" nei parametri di input, quella parte della condizione

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

sarà soddisfatta indipendentemente dalla coppia di valute che contiene "EU" nel suo nome e non ha importanza EUR come valuta di base o valuta quotata. E perché passare attraverso SymbolName MarketWatch alla ricerca del simbolo giusto?

 
Alexey Viktorov:

Perché prendersi gioco di una mente immatura? Il vostro codice non soddisfa affatto il requisito. Se solo "eu" o "eur" è inserito nei parametri di input, questa parte della condizione

sarà soddisfatta indipendentemente dalla coppia di valute che contiene "EU" nel suo nome e non ha importanza EUR come valuta di base o valuta quotata. E perché dovrei passare attraverso il SymbolName di MarketWatch alla ricerca del simbolo giusto?

Ciao Alexey! Ad essere onesti, non sono bravo a programmare, quindi prendo molto sulla fiducia. Significa che il codice fornito da Konstantin dovrebbe essere rielaborato?

Sinceramente, Vladimir.

 
MrBrooklin:

Il codice dovrebbe assomigliare a questo:

Nota: nel parametro di input Symbol_Main, dovreste specificare il nome della coppia di valute come prescritto dal vostro rivenditore di forex. Nel mio caso il simbolo GBPUSD ha il finale rfd.

Fate attenzione!

Sinceramente Vladimir.

Io lo farei così

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 значение означающее "неудачная инициализация"
     }
  }