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

 
Oleh Fedorov:

こんにちは。

誰もBilderの投稿について 何も言わないの?

新しいスレッドにした方が、より多くの人に見てもらえるので、意味があるのかも?もしそうなら、モデレーターに掲載を依頼してください...。それとも自分で作る?

はい、別のトピックを作成してください。ただ、トピックを作成するためにフォーラムの適切なセクションを選択するようにしてください。

 

一言、初級編をお願いします。アレイです。

勉強しているのにわからない。

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  OrderSend(Symbol(),OP_BUYSTOP,0.01,tick[1,2],3,0,0,"bs2",0,0,clrBlue); 
}

コンパイル時のエラーは出ないのですが、ターミナルで実行するとクリティカルエラーが 出ます。

tick[1,1]の 値のコメントを出力すると、小数点以下4桁に丸められる のはなぜですか?

tick[1,2]の 値を正しく計算できないだけでなく、tick[1,1]のセルのデータをコピー しようとしないのはなぜですか(tick[1,2]=tick[1,1];)

最後に、注文を作成する際に、価格値の代わりに、この価格が格納されている配列のセルをtick[1,2] として引用すると、この変数を一度に2つの値として みなすのはなぜですか?(ヒントにはスベリ値飛びがあります)。

 
Gilmor:

一言、初級編をお願いします。アレイです。

勉強しているのにわからない。

コンパイル時のエラーは出ないのですが、ターミナルで実行するとクリティカルエラーが 出ます。

tick[1,1]の 値のコメントを出力すると、小数点以下4桁に丸められる のはなぜですか?

tick[1,2]の 値を正しく計算できないだけでなく、tick[1,1]のセルのデータをコピー しようとしないのはなぜですか(tick[1,2]=tick[1,1];)

最後に、注文を作成する際に、価格値の代わりに、この価格が格納されている配列のセルをtick[1,2] として引用すると、この変数を一度に2つの値として みなすのはなぜですか?(ヒントにはスベリ値飛びがあります)。

なぜなら、OrderSend関数のパラメータでは、他の関数と同様に、カンマが役割を担っているからです。テキスト中にカンマが現れるとすぐに、入力される値のセパレータとして扱われる。メイクティック[1][2]

 
Alexey Viktorov:

なぜなら、OrderSend関数のパラメータでは、他の関数と同様に、カンマが役割を担っているからです。テキスト中にカンマが現れるとすぐに、入力される値のセパレータとして扱われる。メイクティック[1][2]

ありがとうございます。他の質問にも答えてくれるのでは?:)
 
Gilmor:
ありがとうございます。他の質問にも答えてくれるのでは? :)

肉(2.55=367.12)に答えられるか?

 
Alexey Viktorov:

肉(2.55=367.12)に答えられるか?

了解です。

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  }
double tick[2,2];

上段2セル、下段2セルの配列を作成。

void OnTick()
  {
  tick[1,1] = Ask;
 Comment (tick[1,1])

結果チャート上の価格は0.84478ですが、上部のコメントには0.8448と表示されています?なぜ小数点以下4桁に丸めたのでしょうか?

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = tick[1,1];
  }

セルに書き込むというロジックに従って、配列のセル1のデータを、同じ配列のセル2にコピーします。その結果、重大な エラーが発生する。

なぜ?

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  }

配列のセル2に、保留中の注文の未来の価格の値を追加したいと思います。つまり、Askの価格に100ポイント追加して、注文時に配列のこのセルを価格パラメータに指定したいのです。しかし、このコマンドを実行すると、また同じエラーが発生します。


なぜ?

 
Gilmor:

セルに書き込むというロジックに従って、配列のセル1から同じ配列のセル2へデータをコピーします。その結果、重大な エラーが発生する。

なぜ?

配列が何であるか理解していないので、ヘルプを読んでもうまくいかなかった場合は、"指に "しましょう。

これは配列宣言です。

double tick[2,2];

これは、コンパイラに「4つのメモリセル」を確保するように指示するものです --> 2x2

で,最下位の要素へのアクセスはインデックス 0 となります.つまり,この場合,配列tick[2,2] は以下の配列要素のみを持つ ことになります.

tick[0,0]tick[0,1] です。

tick[1,0]tick[1,1] です。

配列には4つの要素がありますね。しかし、配列の最も若いインデックスは0番であり、1番からはあなたが望むような(あるいは口頭での計算で慣れたような)ものではありません。


となり,配列の先頭の要素は,配列のサイズから 1 を引いた値を持つことになります。

配列の次元を超えた場合、実行時に重大なエラーが発生します。スクリーンショットでは、配列tick[2,2] に対して、数値tick[2,2]持つ配列要素が 存在しないことが示されています。

 

まあ、少なくとも私は初心者を認めますが......)

ありがとうございます。

まあ、「指の上」というのは癖になりますね。"指に "というと、わかりやすいですね。そして、この言語が全くゼロの人に説明すると、足の指を使って説明しなければならなくなります =)))

 
Gilmor:

まあ、少なくとも私は初心者を認めますが......)

ありがとうございます。

まあ、「指の上」というのは癖になりますね。"指に "というと、わかりやすいですね。また、この言語がゼロの人に説明すると、足の指を使って説明しなければならなくなる =)) 。

初心者は恥ではない、より多くのブランチはテーマ別です - 初心者のために、これはあなたの質問に対する迅速な回答を得ることができるいくつかのフォーラムの一つです;)

まあ、ついでにヘルプの冒頭を読んでみてくださいhttps://docs.mql4.com/ru/basis/variables

 
Igor Makanu:

特にここは、質問に対してすぐに回答が得られる数少ないフォーラムなので、初心者にとっては恥ずかしくありません;)

と、その上で、ヘルプの冒頭を読むhttps://docs.mql4.com/ru/basis/variables

ありがとうございます。