MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 76

 
MrBrooklin : .
 if (Symbol_Main== _Symbol )
Mevcut tablonun sembolü için doğrudan bir talep varsa neden dans edesiniz?
 
Konstantin Nikitin :
MrBrooklin : . Mevcut tablonun sembolü için doğrudan bir talep varsa neden dans edesiniz?

Merhaba Konstantin! Giriş parametrelerinde belirtilen sembolü, üzerine bir danışman kurma girişiminde bulunulan sembolle karşılaştırmam gerekiyordu.

Önerdiğiniz kod da çalışmıyor.

Saygılarımla, Vladimir.

 
MrBrooklin :

Merhaba Konstantin! Giriş parametrelerinde belirtilen sembolü, üzerine bir danışman kurma girişiminde bulunulan sembolle karşılaştırmam gerekiyordu.

Önerdiğiniz kod da çalışmıyor.

Saygılarımla, Vladimir.

sahip olduğunuz ayarlarda

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

_Sembol

_Symbol değişkeni, geçerli grafiğin sembol adını içerir.

Bu yüzden mevcut tabloya göre sembolün kontrolünden geçmelidir.

 if (Symbol_Main== _Symbol )
 
Konstantin Nikitin :

sahip olduğunuz ayarlarda

_Sembol

_Symbol değişkeni, geçerli grafiğin sembol adını içerir.

Bu yüzden mevcut tabloya göre sembolün kontrolünden geçmelidir.

Teşekkürler Konstantin! Her şey çalıştı! Kodu düzenlerken bir hata yaptım. Şimdi her şey düzeltildi ve kazanıldı. Allah sağlık ve afiyet versin!

Herkese Mutlu Yıllar!

Saygılarımla, Vladimir.

 

Kod şöyle görünmelidir:

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

Not: Symbol_Main giriş parametresinde, forex satıcınızda kayıtlı olan döviz çiftinin adını belirtmeniz gerekir. Benim durumumda, GBPUSD sembolü rfd ile biter.

Dikkat olmak!

Saygılarımla, Vladimir.

 
MrBrooklin :

Kod şöyle görünmelidir:

Not: Symbol_Main giriş parametresinde, forex satıcınıza kayıtlı olan döviz çiftinin adını belirtmeniz gerekir. Benim durumumda, GBPUSD sembolü rfd ile biter.

Dikkat olmak!

Saygılarımla, 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 ;
  }

Ve hayatın tadını çıkarın))) Lütfen tam olarak yazılmış bir karakter istemediğimi ve durumun önemli olmadığını unutmayın.

 
Konstantin Nikitin :

Ve hayatın tadını çıkarın))) Lütfen tam olarak yazılmış bir karakter istemediğimi ve durumun önemli olmadığını unutmayın.

Harika bahşiş için çok teşekkürler Konstantin! Uzman Danışmanımda kesinlikle kullanacağım. MQL5 programlama dilini öğrenmeye yeni başlayan diğer kişilerin de bu özelliği faydalı bulacağını düşünüyorum.

Pekin'e sürünerek gitmek gibi, şimdilik senin bilgi seviyendeyim!

Saygılarımla, Vladimir.

 
Konstantin Nikitin :

Ve hayatın tadını çıkarın))) Lütfen tam olarak yazılmış bir karakter istemediğimi ve durumun önemli olmadığını unutmayın.

O halde kırılgan zihinle alay etmek neden? Kodunuz kesinlikle gereksinime uygun değil. Giriş parametrelerine yalnızca "eu" veya "eur" girilirse, koşulun bu kısmı

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

Adında "EU" bulunan, hangi çift olursa olsun yürütülür ve EUR'nun temel para birimi mi yoksa kote edilen para birimi mi olduğu önemli değildir. Ve neden istenen sembolü aramak için SymbolName MarketWatch'a bakmalısınız???

 
Alexey Viktorov :

O halde kırılgan zihinle alay etmek neden? Kodunuz kesinlikle gereksinime uygun değil. Giriş parametrelerine yalnızca "eu" veya "eur" girilirse, koşulun bu kısmı

Adında "EU" bulunan, hangi çift olursa olsun yürütülür ve EUR'nun temel para birimi mi yoksa kote edilen para birimi mi olduğu önemli değildir. Ve neden istenen sembolü aramak için SymbolName MarketWatch'a bakmalısınız???

Merhaba Alexey! Dürüst olmak gerekirse, programlamada iyi değilim, bu yüzden inanca çok önem veriyorum. Konstantin tarafından sağlanan kodun kesinleştirilmesi gerektiği ortaya çıktı mı?

Saygılarımla, Vladimir.

 
MrBrooklin :

Kod şöyle görünmelidir:

Not: Symbol_Main giriş parametresinde, forex satıcınızda kayıtlı olan döviz çiftinin adını belirtmeniz gerekir. Benim durumumda, GBPUSD sembolü rfd ile biter.

Dikkat olmak!

Saygılarımla, Vladimir.

öyle yapardım

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