从头开始自学MQL5语言 - 页 76

 
MrBrooklin: .
if(Symbol_Main==_Symbol)
为什么要在有直接要求当前图表符号 的情况下跳舞。
 
Konstantin Nikitin:
MrBrooklin: .为什么要在有直接要求当前图表符号 的情况下跳舞。

你好,Konstantin,我需要比较输入参数中指定的符号和EA试图设置的符号。

你建议的代码也不起作用。

问候,弗拉基米尔。

 
MrBrooklin:

你好,Konstantin,我需要比较输入参数中指定的符号和EA试图设置的符号。

你建议的代码也不起作用。

问候,弗拉基米尔。

在你的设置中,你已经指定了

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

符号

_Symbol变量存储了当前图表符号的名称。

因此,对当前图表中的符号的检查应该可以正常工作。

if(Symbol_Main==_Symbol)
 
Konstantin Nikitin:

在你的设置中,你已经指定了

符号

_Symbol变量存储了当前图表符号的名称。

所以,当前图表的符号检查应该是成功的。

谢谢你,Konstantin!这一切都成功了。我在纠正代码时犯了一个错误。我现在把它修好了,它起作用了。上帝赐予你健康和繁荣!

我祝愿大家新年快乐!

问候,弗拉基米尔。

 

代码应该是这样的。

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

注意:Symbol_Main 输入参数中,你应该指定你的外汇交易商所规定的货币对名称。在我的例子中,GBPUSD 符号的结尾是rfd

要小心!

问候,弗拉基米尔。

 
MrBrooklin:

代码应该是这样的。

注意:Symbol_Main 输入参数中,你需要指定你的外汇交易商所规定的货币对名称。在我的例子中,GBPUSD 符号的结尾是rfd

要小心!

真诚的,弗拉基米尔。

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

并享受你的生活 ))))请注意,我问的甚至不是完全的书面符号,大小写并不重要。

 
Konstantin Nikitin:

并享受你的生活 ))))请注意,我要求的甚至不是完全的书面符号,大小写并不重要。

非常感谢,Konstantin,谢谢你的精彩提示!我一定会在我的EA中使用它。我认为这个功能对学习MQL5编程语言 的初学者也很有用。

我仍然像爬行一样接近北京!

问候,弗拉基米尔。

 
Konstantin Nikitin:

并享受你的生活 ))))请注意,我甚至在要求一个没有完全写好的字符,而且不区分大小写。

你为什么要取笑一个不成熟的头脑呢?你的代码根本不符合要求。如果你在输入参数中只输入 "eu "或 "eur",这部分条件

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

无论哪种货币对在其名称中包含 "EU",都将得到满足,而欧元作为基础货币 或报价货币 并不重要。而为什么要通过SymbolNameMarketWatch寻找正确的符号呢?

 
Alexey Viktorov:

为什么要对一个不成熟的头脑进行这样的嘲弄呢?你的代码根本不符合要求。如果在输入参数中只输入了 "eu "或 "eur",这部分条件

无论哪种货币对在其名称中包含 "EU",都将得到满足,而欧元作为基础货币 或报价货币 并不重要。而我为什么要翻阅MarketWatch的 SymbolName来寻找正确的符号?

你好,阿列克谢!说实话,我不擅长编程,所以我对很多事情都抱有信心。这是否意味着康斯坦丁提供的代码应该被重新加工?

真诚的,弗拉基米尔。

 
MrBrooklin:

代码应该是这样的。

注意:Symbol_Main 输入参数中,你应该指定你的外汇交易商所规定的货币对名称。在我的例子中,GBPUSD 符号的结尾是rfd

要小心!

真诚的弗拉基米尔。

我将这样做

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