MQL5言語をゼロから独学で学ぶ - ページ 76

 
MrBrooklin:.
if(Symbol_Main==_Symbol)
現在のチャートシンボルの 直接の要求があるのに、なぜ踊るのか。
 
Konstantin Nikitin:
MrBrooklin:. 現在のチャートシンボルの 直接の要求があるのに、なぜ踊るのか。

こんにちは、Konstantin。私は、入力パラメータに指定されたシンボルとEAが設定しようとするシンボルを比較する必要がありました。

ご指摘のコードも機能しません。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

こんにちは、Konstantin。私は、入力パラメータに指定されたシンボルとEAが設定しようとするシンボルを比較する必要がありました。

ご指摘のコードも機能しません。

ウラジミールさん、ありがとうございます。

設定で、あなたは以下を指定しました。

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

_Symbol

変数_Symbolには、現在のチャートシンボルの名前が格納されます。

ですから、現在のチャートのシンボルのチェックは問題なく行えるはずです。

if(Symbol_Main==_Symbol)
 
Konstantin Nikitin:

設定で、あなたは以下を指定しました。

_Symbol

変数_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 入力パラメータには、FXディーラーが規定する通貨ペアの名称を指定する必要があります。私の場合、GBPUSDの シンボルはrfdという 末尾を持っています。

気をつけよう!

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

このようなコードになるはずです。

注: Symbol_Main 入力パラメータには、FXディーラーが規定する通貨ペアの名称を指定する必要があります。私の場合、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」を含んでいても、また基準通貨や 引用通貨が EURであっても、満たされます。そして、なぜSymbolNameMarketWatchで正しいシンボルを検索するのでしょうか?

 
Alexey Viktorov:

なぜ、未熟な心をそこまで馬鹿にするのか?あなたのコードは要件を全く満たしていません。入力パラメータに "eu "または "eur "のみが入力されている場合、この部分の条件

は、どの通貨ペアがその名前に「EU」を含んでいても、また基準通貨や 引用通貨が EURであっても、満たされます。また、なぜMarketWatchの SymbolNameから正しいシンボルを探 さなければならないのでしょうか

アレクセイさん、こんにちは!正直なところ、私はプログラミングが得意ではないので、多くのことを鵜呑みにしています。Konstantin氏から提供されたコードを作り直す必要があるということでしょうか。

敬具 ウラジミール

 
MrBrooklin:

このようなコードになるはずです。

注: Symbol_Main 入力パラメータには、FXディーラーが規定する通貨ペアの名称を指定する必要があります。私の場合、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 значение означающее "неудачная инициализация"
     }
  }