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

 
ANDREY:

mql4では、配列の初期化は 関数

必ずしもそうではありませんが、そのような疑問はテストスクリプトで確認したほうがよいでしょう。

void OnStart()
{
   int arr_1[10] = {123};
   int arr_2[10] = {0,1,2,3,4,5,6,7,8,9};
   int arr_3[10];
   ArrayInitialize(arr_3,777);
   ArrayPrint(arr_1);   // 123   0   0   0   0   0   0   0   0   0
   ArrayPrint(arr_2);   // 0 1 2 3 4 5 6 7 8 9
   ArrayPrint(arr_3);   // 777 777 777 777 777 777 777 777 777 777
}
ANDREY:

Kovalevのチュートリアルでは、特別な関数がなくても、(私がやったように)宣言と同時に配列を初期化 することができると書かれています。

私の例のバリアントは arr_1 - なので、NULL 値で初期化できます!- で、それ以外の場合は、配列の最初の要素が初期化値となり、残りはすべてnullとなります。

チュートリアルでは、私の例のように arr_2 を初期化するようにアドバイスされていたと思います。

 

午後

EAで使用するインジケータの値をEA内で可視化する必要があります。見たままを描く必要はありません。ローソク足ごとにインジケーターのポイント値をマークしておけば、十分です。OBJ_ARROWというオブジェクトでやって みたところ、アンカーポイントはオブジェクトの中心には置けないことがわかりました。対象物より高いか低いかのどちらかです。その結果、ポイントが指標の実値と一致しない。この問題の解決策を提案してもらえますか?

OBJ_ARROWによるインジケータ表示

 
Oleg Remizov:

午後

EAで使用するインジケータの値をEA内で可視化する必要があります。見たままを描く必要はありません。ローソク足ごとにインジケーターのポイント値をマークしておけば、十分です。OBJ_ARROWというオブジェクトを通してやって みたところ、アンカーポイントはオブジェクトの中心には置けないことがわかりました。対象物より高いか低いかのどちらかです。その結果、ポイントが指標の実値と一致しない。この問題に対する解決策を提案してください。

必要なすべての指標を含むテンプレートを作成し、tester という名前または Expert Advisor の名前で保存します。

 
Alexey Viktorov:

必要なインジケータをすべて含むテンプレートを作成し、tester または EA の名前で保存してください。

残念ながら、このテンプレートは私には使えません。設定でインジケータを表示する機能の有効/無効を設定する必要があり、描画はEAから直接行う必要があります。EAを1つのファイルで転送できるようにすること。

 
Oleg Remizov:

残念ながら、このテンプレートは私には使えません。インジケータ表示機能は設定でON/OFFしておき、EAから直接描画すること。EAを1つのファイルにまとめて転送できるようにしてほしい。

これは不思議な願いです。EAを動作させたいだけなら、リソースとして添付しておけば、表示する必要はなく、インジケータのファイルが無くても動作します。また、正確に表示させたいのであれば、インジケーターファイルを渡さないのはどうなんでしょうか?

 
Alexey Viktorov:

これは奇妙な要求だ。EAを動作させたいだけなら、リソースとして添付するだけで十分で、インジケーターファイルがなくても動作します。正確なマッピングを確認したいのであれば、インジケーターファイルを渡さない意味はあるのでしょうか?

インジケーターファイルを出したくないわけではないんです。追加ファイルを必要とするExpert Advisorは、マーケットに公開することができません。実際、仕事に必要なものが1つのファイルにまとまっているのは便利です。

それに、インジケーターバッファがいくつかあれば、必ずしも全部表示する必要はないんです。例えば、Ishimokuのインジケーターを持って います。5つのラインがありますが、Expert Advisorで使用するのはそのうちの1つだけです。インジケータ全体ではなく、1つだけ表示させたいのですが。

 
Igor Makanu:

というわけではありませんが、そのような質問はテストスクリプトで確認したほうがよいでしょう。

私の例のバリアントは arr_1 - なので、NULL 値で初期化することができます!- であり,それ以外の場合は,配列の最初の要素が初期化値となり,それ以外の要素はすべてnullとなる。

チュートリアルでは、私の例のように arr_2 を初期化するようにアドバイスされていたと思います。

私にとって貴重な情報をありがとうございました。

 
Oleg Remizov:

インジケーターファイルを出したくないわけではないんです。追加ファイルを必要とするExpert Advisorは、マーケットに公開することができません。また、一般的に、仕事に必要なものが1つのファイルにまとまっていると便利です。

それに、インジケーターバッファがいくつかあれば、必ずしも全部表示する必要はないんです。例えば、Ishimokuのインジケーターを持っています。5つのラインがありますが、Expert Advisorで使用するのはそのうちの1つだけです。これは表示させたいものだけで、インジケータ全体ではありません。

まあ、指標はマーケットの資料として使われるんですけどね。しかし、ユーザーは何のためにそれを必要としているのでしょうか?ポジションが開か れる原理には、誰も興味を示さない。必要であれば、説明文に戦略全体を記述することができます。誰か必要な人いる?

 
Igor Makanu:


教科書には、私の例のarr_2のように初期化するようアドバイスされていたと思います。

配列の宣言と同時に初期化することについて、Kovalevの教科書には次のように書かれています。

8.4.4 配列の初期化

一次元および多次元配列は、カンマで区切られた一次元の定数列で初期化されます。配列は中括弧で囲む。

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }.

double Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { false, true, false, true, true }.

初期化 シーケンスにおいて、1つまたは複数の定数をスキップすることができる。

教科書を見ると、配列が宣言されると、配列の最初の要素だけでなく、すべてのデータで配列全体が初期化されるようです。
もし、私がチュートリアルを誤解していたら、どこを誤解しているのか指摘していただけるとありがたいです。

 
Alexey Viktorov:

まあ、それこそ市場の資料として指標を使うわけですからね。しかし、ユーザーは何のためにそれを必要としているのでしょうか?ポジションが開か れる原理には、誰も興味を示さない。必要であれば、説明文に戦略全体を記述してもよい。必要な人はいますか?

また、私の観察によると、Expert Advisorが画面上にさまざまな情報を表示し、矢印やライン、チャネルなどを描いて、「人工知能」の活発な活動を示すと、ユーザーは好感を持つようです)。

インジケータによると、Expert Advisorはトレーリングを提供します。このプロセスをビジュアル化し、StopLossの破線がユーザーに見えるようにしたい。