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

 
Seric29:

私は、配列を受け取ってシフトする関数を書くというアイディアを持っています。問題は、この関数自体が1次元か2次元かを判断するようにすることで、配列が2次元か通常のものかをいちいち引数で指定する必要がないようにするにはどうしたらいいかということです。同時に、テンプレートを適用して、配列の型を指定する必要がないようにしたいのです。

配列の種類を指定しなくてもいいようにするにはどうしたらいいですか?

オーバーロードを行う。

template<typename T>
void MoveArray(T &array1[][]) // 2ух мерный.
{
// тело
}
template<typename T>
void MoveArray(T &array1[])// одномерный.
{
// тело
}
 
Ilya Prozumentov:

やるべきことはオーバーロード。

2次元はダイナミックでいいのか?
 
Alexey Viktorov:
2次元はダイナミックでいいのか?

動的ではなく、受け取った引数として、角括弧を付けて書くだけです。

 

ループ(または他の何か)で可能な条件変種の列挙を実装するにはどうすればよいですか?


例えば、MAとMACDの2つの指標があり、それらは3つの可能な条件変数を表しています。

1 オプション - if(iMA ...) {...};

第2シナリオ - if(iMACD ...) {...};

variant 3 - if(iMA ... iMACD ...) {...};


入力パラメータを組み合わせるのは簡単ですが、条件を組み合わせるにはどうしたらよいのでしょうか?特に2つ以上の指標や計算式がある場合に有効です。


あれば、事例へのリンクを貼る

 
Alexandr Sokolov:

ループ(または他の方法)で、可能な条件の変種の列挙を実装するにはどうしたらよいでしょうか?

私の理解が正しければ、答えはトピックの 中にあるはずです。

 

またまたこんにちは、またしても当たり前のことが理解できません。

では、結局のところ、関数に配列を渡すにはどうしたらいいのでしょうか?

double b[5]={1,2,3,4,5};
void OnStart()
  {
//---
Func(b[]);

  }
//+------------------------------------------------------------------+
void Func(double &a[])
      {
         Alert(a[3]);
      }

エラー
']'- 期待値
'b' - パラメータの変換ができない

仮に1つ目のエラーをなくす方法がわかったとします。

Func(b[3]);

でも、そうすると、3つ目の要素しか通らないのか?意味がないんです。
配列をそのまま渡すにはどうしたらよいですか?
ありがとうございます。

 
Mikhail Sobolev:

またまたこんにちは、またしても当たり前のことが理解できません。

では、結局のところ、関数に配列を渡すにはどうしたらいいのでしょうか?

エラー
']'- 期待値
'b' - パラメータの変換ができない

仮に1つ目のエラーをなくす方法がわかったとします。

しかし、この場合、何が、3番目の要素だけが渡されるのでしょうか?意味がないんです。
配列をそのまま渡すにはどうしたらよいですか?
ありがとうございます。

Func(b);
 
int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
                );

variable beginの仕組みについて教えてください。


このリンクhttps://www.mql5.com/ru/docs/basis/function/events に情報があるようなのですが、よくわからないか、見つかっていないようです。最初のデフォルト値が何なのか、インジケーターのサイクルに合わせてどのように変化するのかが理解できない


例えば、OnCalculate()関数内のreturn()が戻り値をprev_calculatedという変数に代入し、次のOnCalculate()の呼び出し時、つまり次の目盛りで計算に使用されることは知っているのですが...。


関数OnCalculate()の中で変数が始まる仕組みを同じように簡単に説明してください。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 

こんにちは。

このコードでOnTick関数が ファイルにデータを書き込まない理由を教えてください。

//=== ファイルへのデータ書き込み ===

h1=FileOpen("test_bar.csv",FILE_CSV|FILE_WRITE|FILE_READ,",").FILE_CSV|FILE_READ|FILE_READ,",";

FileSeek(h1, 0, SEEK_END)。

FileWrite(h1, TimeToStr(Time[1],TIME_DATE|TIME_MINUTES),i,Open[1],High[1],Low[1],Close[1], Parabola57Up, ");

FileClose(h1)です。


しかも、それはヒストリーテストの時です。Expert Advisor がオンラインで動作している場合、記録は継続されます。

ありがとうございました。

 
Alexandr Sokolov:

可能な条件分岐の列挙をループ(または他の方法)で実装するにはどうすればよいですか?


例えば、MAとMACDの2つの指標があり、それらは3つの可能な条件変数を表しています。

1 オプション - if(iMA ...) {...};

第2シナリオ - if(iMACD ...) {...};

variant 3 - if(iMA ... iMACD ...) {...};


入力パラメータを組み合わせるのは簡単ですが、条件を組み合わせるにはどうしたらよいのでしょうか?特に2つ以上の指標や計算式がある場合に有効です。


例のリンクがあれば教えてください。

インジケータの入力パラメータ だけでなく、自己最適化を行いたい。

理解できたが、条件のループを 作るにはどうしたらよいか?例えば,3つの指標があり(簡単のためにループ内の入力パラメータの選択は考慮しない),それらは7通りの条件・組み合わせ が考えられる

例えば,最初の3つの条件には1つの指標がある
1) if(indicator #1 ...) {..};
2) if(indicator #2 ...) {..};
3) if(indicator #3 ...) {...}, 1)if(indicator#1 ...) {...}..) {..};

2つ目の指標に関する3つの 条件は、
4) if(#1 ... && #2 ...) {..};
5) if(#1 ... && #3 ...) {..};
6) if(#2 ... && #3 ...) {..} です。};

そして最後の7番目の条件では、利用可能な3つの指標すべて
7) if(#1 ... && #2 ... && #3 ...) { ...};

また、可能であれば、論理条件の列挙をループ させるとよいでしょう。例えば、&& || > < == などと書かずに、

。 手動で可能な限りのバリエーションを書いて、EAが入力パラメータ、組み合わせたまたは個別の指標、論理条件などの可能な限りのバリエーションを組み合わせてチェックしてくれるといいんですけどね。