初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 374

 
Vitalii Ananev:
これは、まだ完全に形成されていない現在の日のローソク足に対してのみ意味があります。しかし、過去数日の値をとれば、いつでも同じ値になる。
それが問題で、振り返って見ないといけないんです...。
 
-Aleks-:
それが面倒で、振り返って見ないと......。

なるほど。日中の極端な値動きをすべて修正する必要があります。過去のデータでどうやったらいいのか、頭の回転が速くない。

まず思いつくのは、日中の時間枠で形成されるフラクタル分析である。

 

もっとわかりやすく言うと、一般的に、配列の名前を変数として設定する方法がわかりません。

例えば、Mass1とMass2の2つの配列がある場合、同じ関数を実行させながら、2つの異なる配列で条件分岐する必要があります。

if(условие==true)

	И мя_массива=Mass1

else 

	 Имя_массива=Mass2

と機能の種類を指定します。

A=Имя_массива[123];
 
VANDER:

もっとわかりやすく言うと、一般的に、配列の名前を変数として設定する方法がわかりません。

例えば、Mass1とMass2の2つの配列がある場合、同じ関数を実行させながら、2つの異なる配列で条件分岐する必要があります。

と機能の種類を指定します。

そして、2つの配列を宣言するだけで、どんな信念を防いでいるのでしょうか。
 
VANDER:

もっとわかりやすく言うと、一般的に、配列の名前を変数として設定する方法がわかりません。

例えば、Mass1とMass2の2つの配列がある場合、同じ関数を実行させながら、2つの異なる配列で条件分岐する必要があります。

井戸と型機能。

まさかね。なぜなら、配列は番号のついた 変数の 集合 だからです。

 
VANDER:

もっとわかりやすく言うと、一般的に、配列の名前を変数として設定する方法がわかりません。

例えば、Mass1とMass2の2つの配列がある場合、同じ関数を実行させながら、2つの異なる配列で条件分岐する必要があります。

井戸と機能タイプ。

配列に対する操作を行う関数を内部で作成します。そして、条件によって、異なる配列を関数に渡します。

//+------------------------------------------------------------------+
double massive_a[];
int a, massive_b[];
//+------------------------------------------------------------------+
void OnTick() {
   if(a==1) WorkWithMassive(massive_a);
   else WorkWithMassive(massive_b);
}
//+------------------------------------------------------------------+
void WorkWithMassive(double &massive[]) {
   // работаем с массивом а
   }
//+------------------------------------------------------------------+
void WorkWithMassive(int &massive[]) {
   // работаем с массивом b
   }
//+------------------------------------------------------------------+
 
Vitalie Postolache:
そして、単に2つの配列を宣言することで、どのような信念を防ぐことができるのでしょうか?
は両方とも宣言されていますが、関数が大きく、すべての配列に対して同じであるため、選択する必要性があるだけです。
 
Artyom Trishkin:

配列に対して演算を行う関数を作成します。そして、条件によって異なる配列を関数に渡します。

おっと、でもWorkWithMassive 関数の中で、この配列は どうやって参照するんだろう?
 
VANDER:
おっと、でもWorkWithMassive 関数の中で、この配列は どうやって参照するんだろう?

配列は参照渡しで、入力パラメータを介して関数に渡した配列そのものを参照することになります。例えば(純粋に仮定として)

//+------------------------------------------------------------------+
void WorkWithMassive(double &massive[]) {
   int a=20;
   ArrayResize(massive,a);
   for(int i=a-1; i>=0; i--) {
      massive[i]=iOpen(Symbol(),Period(),a);
      }
   }
//+------------------------------------------------------------------+

もちろん、必要なパラメータはすべて関数に渡した方がよい。

//+------------------------------------------------------------------+
void WorkWithMassive(string symbol, int timeframe, double &massive[]) {
   int a=20;
   ArrayResize(massive,a);
   for(int i=a; i>=0; i--) {
      massive[i]=iOpen(symbol,timeframe,a);
      }
   }
//+------------------------------------------------------------------+

同じ名前の関数でも、入力パラメータや型によって異なる処理を行うことができます。

//+------------------------------------------------------------------+
void WorkWithMassive(string symbol, int timeframe, double &massive[]) {
   int a=20;
   ArrayResize(massive,a);
   for(int i=a; i>=0; i--) massive[i]=iOpen(symbol,timeframe,a);
   }
//+------------------------------------------------------------------+
int WorkWithMassive(int inp_value, int array_size, int &massive[]) {
   ArrayResize(massive,array_size);
   massive[array_size-1]=inp_value*2;
   return(massive[array_size-1]+massive[0]);
   }
//+------------------------------------------------------------------+
 
-Aleks-:
そうですね。

1.日足ロウソクの開始時刻を決定する。

ご希望のTFのバー 数を決定します(15分ごとにその日の極値をチェックしたい場合 - M15 bars)。

3.numバー分のデータをHighで受信します。

3.ループ内で、ハイバーのすべての値を、目的の日のローソクの変数dayHighと比較します(初期値はdayHigh = 0)。

4.high > dayHigh ならば、新しい値を変数 dayHigh に格納する。

理由: