MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1063

 
バーh4とd1の開始 時間を変更する方法があれば教えてください。大雑把に言うと、タイムゾーンの変更をシミュレートするため。h1のタイムフレームを元にオフラインのチャートを構築するスクリプトとか。
 
Artyom Trishkin:

処刑は赦されない。

エラーは何ですか?

これです。

このように、ローカルに宣言された構造体を関数に渡すことはできません。

 
vladnev:
バーh4とd1のオープンタイ ムを変更する方法があれば教えてください。大雑把に言うと、タイムゾーンの変更を模倣しています。h1のタイムフレームを元にオフラインのチャートを構築するスクリプトとか。
iOpen(Symbol,нужный таймфрейм,номер бара(счёт идёт справа налево))

これと連携する必要がある

 
Seric29:

これです。

このように、ローカルに宣言された構造体を関数に渡すことはできません。

構造体の定義と、この構造体の型を持つ変数の宣言を 混同しているのでは?
 
Artyom Trishkin:

自分で確認できるのか?難しいですか?そして、なぜ書きすぎるのか?

確認はしていない。 何があなたを止めているのでしょうか?

アルチョム このオプションは本当に使えないんだ。この構造は、グローバル変数 レベルで定義する必要があります。また、構造体型の変数はどこにでもある。そうすれば、参照渡しが可能になる。なぜなら、入力される関数パラメータに含まれる型は定義されないからです。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
   struct MyPoint
     {
      int         x[5];
      int         y;
     }gw777; // Переменная глобального уровня, просто лишняя.
int OnInit()
  {
   MyPoint qw1; // Локальная переменная
   EqualPointsP(qw1);// передал структуру в функцию EqualPointsP
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool EqualPointsP(MyPoint &qw)
  {
   Print("EqualPointsP ");
   return true;
  }
 
Artyom Trishkin:
構造体の定義と、この構造体の型を持つ変数の宣言を 混同しています。

意味するところ。構造体はグローバルに、つまりコードの外側で宣言する必要があり、その定義による構造体はコードの内側で、つまりローカルに記述することはできない。この方法で作成できるのは変数だけだ、ということですが、何か誤解していますか?説明してください。

 
Alexey Viktorov:

アルチョム このバリエーションは本当にダメなんです。構造は、グローバル 変数のレベルで定義する必要があります。また、構造体型の変数はどこにでもある。そうすれば、参照による転送が可能になる。関数の入力パラメータに型が定義されないからです。

やはりグローバルなんですね。

 
Seric29:

やはりグローバルなんですね。

NO.構造体は、ユーザー定義の型 である。したがって、このタイプはどこでも使えるようにしなければならない。そして、カスタムタイプのVARIABLEは、右足の左小指が望む場所で宣言し、愛犬が望む場所でこの変数を渡すことができますが、参照によってのみ可能です。

 
Alexey Viktorov:

こうすると、構造がうまくいかないんですよ、アルチョムさん。構造体は、グローバル 変数のレベルで定義する必要があります。また、構造体型の変数はどこでもよい。そうすれば、参照による転送が可能になる。なぜなら、入力される関数パラメータに含まれる型は定義されないからです。

 

一般論として、Artyomは何も答えていないし、上の人は、関数は既知でなければならない構造を扱うので、グローバルに宣言しなければならないという答えを出したので、構造はグローバルに宣言しなければならないという結論になるのです。

構造体を扱う関数は、その性質上、同じ静的構造体しか受け入れない。つまり、ローカルに構造体を宣言して、限られたスコープを持つようにし、それを関数に渡すことは不可能であるということです。