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

 

指定した時刻の終値と 指定した数量を間違ってコピーしてしまうのはなぜですか?MQL5

copied = CopyClose(_Symbol,PERIOD_H4,Time[59],5,MPI); Alert(copied);
  for(int i = 0; i < 100; i++)
    {
     Alert(MPI[i]);
    };
 
Alexandr Sokolov:

指定した時刻の終値と 指定した数量を間違ってコピーしてしまうのはなぜですか?MQL5

mql5のどこにTime[]があったのですか、それともカスタム配列ですか?

 
Alexey Viktorov:

また、mql5のどこにTime[]があったのでしょうか、それともカスタム配列なのでしょうか?

はい、これはカスタム配列で、そこにインジケータが配置されている時間枠のバーの開始時刻を コピーしました。あるいは、他にどのように日付を指定するのか(特に、将来的にはいくつかの方法で組み合わせなければならないことを考えると)。

 
Alexandr Sokolov:

はい、これはカスタム配列で、そこにインジケータが配置されている時間枠のバーの開始時刻を コピーしています。あるいは、他にどのように日付を指定するのか(特に、将来的にはいくつかの方法で組み合わせなければならないので)。

そう、「誰かの」TFをコピーするのは、どこか間違っているのです。severalfolds用のインジケータを一つ起動したのですが、CopyRates()がすぐにコピーされないことに気がつきました。どうやら、期間別のデータを用意していないのが原因のようです。再コンパイルするだけで直ります。先にピリオドを「引いて」、それからコピーすればいいことがわかった。でも、まだ手をつけていないんです。明日、確認します。でも、そうであってほしいと願っています。

そして、私にとってのパズルは、time[]で代用できるのであれば、なぜインジケータがある時間枠ウィンドウのバーの開始時刻をコピーするのか、ということです。そして、忘れてはならないのが、インデックスの方向性です。

 
Alexey Viktorov:

また、簡単な質問ですが、time[]で代用できるのであれば、なぜインジケータが配置されているタイムフレームウィンドウのバーのオープンタイムをコピーするのですか?そして、忘れてはならないのが、インデックスの方向性です。

時間はOnCalculateの外側で使用されます。全バッファでのインデックス方向 ArraySetAsSeries(...,true)


何に使うの?- トレンドインジケータを作りました(CodeBaseに投稿)、「うるさい」です。スローダウンをしたのですが......物足りないですね。今度は、下のタイムフレームの各ローソク足の値を、上のタイムフレームのバーから計算させるようにしたいのですが、

「ヤンク」とはどういう意味ですか?

 
Alexandr Sokolov:

時間はOnCalculateの先で使用されます。全バッファでのインデックス方向ArraySetAsSeries(...,true)


何のために?- トレンドインジケータを作りました(CodeBaseに投稿)、「うるさい」です。スローダウンをしたのですが......物足りないですね。今度は、下のタイムフレームの各ローソク足の値を、上のタイムフレームのバーから計算するようにしたい。

ヤンクとはどういう意味ですか?

"ヤンキー "は私の表現ではありません。このフォーラムで、希望する期間のデータを定期的に参照するというのは、そういうことだったんですね。

私ですら、「猫の手も借りたいほどピリオドを引く」と表現しながら、効かないことに腹を立てていたのを覚えています。この問題について何度も議論した結果、私はコピーをdo whileループで包むことにしました。1回目でコピーできたなら、よかった。もしそうでなければ、空のforループで200〜500回繰り返し、N回試行することになる。もっと広く...

そして、先ほど少しお話したその指標は、まだごく初期の段階なのです。だから、ちゃんとできていないんです。私はちょうど、現在の期間の利用可能なバーに対して、高tfのバーが何本必要かをチェックしていました。結局、5000本のM5バーに対して17本のデイリーバーになりました。それを考慮しなければ、現在のM5期5000枚、4h5000枚、日足5000枚がコピーされるわけです。余分なものが多すぎる...

もう一つ重要なことは、少し前までは配列のインデックスを 一度反転させることができましたが、今はくしゃみをするたびにリダイレクトしなければならないということです。以前にもどこかで書いたことがあるのですがだから、私はデフォルトのオプションで作業するのが好きなんです。慣れるまでが大変です。

 

GlobalVariableのデフォルトはdoubleのみです。

double close = GlobalVariableGet("close");


端数の ない近い値が欲しい場合は、このような書き方でよいのでしょうか。

int close = GlobalVariableGet("close");
 
Alexey Viktorov:

"ヤンキー "は私の表現ではありません。この掲示板で定期的に言及される右の期間データをそう読んでいます。

私でさえ、「うまくいかない」と怒り、「猫のように因縁の場所でピリオドを引く」と表現した記憶がありますが、どうにもなりません。この問題について何度も議論した結果、私はコピーをdo whileループで包むことにしました。1回目でコピーできたなら、よかった。もしそうでなければ、空のforループで200〜500回繰り返し、N回試行することになる。増やすことができる...

そして、先ほどの指標はまだ未完成です。だから、ちゃんとできていないんです。私はちょうど、現在の期間の利用可能なバーに対して、高tfのバーが何本必要かをチェックしていました。結局、5000本のM5バーに対して17本のデイリーバーになりました。それを考慮しなければ、現在のM5期5000枚、4h5000枚、日足5000枚がコピーされるわけです。余分なものが多いな...。

もう一つ重要なことは、少し前までは配列のインデックスを 一度反転させることができましたが、今はくしゃみをするたびにリダイレクトしなければならないということです。以前にもどこかで書いたことがあるのですがだから、私はデフォルトのオプションで作業するのが好きなんです。慣れるまでが大変です。

待てよ、何か見落としたのか、誤解しているのか、なぜなら

Alert(copied);

......それは5を返し、それは正しいのですが、私のバッファの中の値はすべて同じです。

 
Alexandr Sokolov:

待てよ、何か見落としたのか、誤解しているのか、なぜなら

...5を返すと、それは正しいのですが、バッファの中の値がすべて同じになってしまうのです

それから、MPI配列の次元と そのインデックスの方向を把握する必要があります。5つの要素をコピーした場合、なぜ100まで循環するのでしょうか?

こういうときはデバッガーを使うのがいい。配列を取得し、再起動することなく配列の全フィールドをチェックする...

 
Alexey Viktorov:

それから、MPI配列のサイズと インデックスの方向を扱う必要があります。5つの要素をコピーするのであれば、なぜ100までループするのでしょうか?

そんな時はデバッガーを使うのがいいですね。配列を取得し、再起動することなく配列の全フィールドをチェックする...

59からと思ったので100にしましたが、6でも同じです。