縦線。 - ページ 4 1234567 新しいコメント Nauris Zukas 2018.10.25 10:37 #31 インジケーターの複雑な仕組みはまだ勉強中で、質問もあります。OnInit()でインジケータバッファをリセットして いますが、なぜかインジケータコンパイル時にバッファがリセットされません。ロジックの場合、コンパイル後の各バッファにはフルセルが1つ ずつあるはずですが、写真ではたくさんあるのがわかります(これは前のバッファのセルだと思います)。どこでミスをするのか? int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,ColorHistogram_2Buffer1,INDICATOR_DATA); SetIndexBuffer(1,ColorHistogram_2Buffer2,INDICATOR_DATA); SetIndexBuffer(2,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX); //--- установим пустое значение PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); ArrayInitialize(ColorHistogram_2Buffer1,0); ArrayInitialize(ColorHistogram_2Buffer2,0); ArrayInitialize(ColorHistogram_2Colors,EMPTY_VALUE); Print("-INITALIZATION-"); false; //--- return(INIT_SUCCEEDED); } if(rates_total-8==i)// || rates_total-5==i || rates_total-2==i) { ColorHistogram_2Buffer1[i]=high[i]; ColorHistogram_2Buffer2[i]=low[i]; ColorHistogram_2Colors[i]=0; } . ファイル: Test_DRAW_COLOR_HISTOGRAM2.mq5 9 kb Alexey Viktorov 2018.10.25 11:32 #32 Nauris Zukas:インジケーターの複雑な仕組みはまだ勉強中で、質問もあります。OnInit()でインジケータバッファをリセットして いますが、なぜかインジケータコンパイル時にバッファがリセットされません。ロジックの場合、コンパイル後の各バッファにはフルセルが1つ ずつあるはずですが、写真ではたくさんあるのがわかります(これは前のバッファのセルだと思います)。どこでミスをするのか? OnInitでは、インジケータ・バッファの 長さはゼロである。 だから、好き勝手なことができるのです。彼らにとっては、すべてが死に物狂いの作業に見えるのでしょう。 そして、コードの実行がOnCalculateに切り替わると、すぐにサイズがrates_totalと等しくなる。 であり、配列のすべてのセルに「ゴミ」が存在する。古い指標計算の残骸もあるかもしれません。 Nauris Zukas 2018.10.25 12:11 #33 Alexey Viktorov:OnInitでは、インジケータ・バッファの 長さは0である。 だからやりたい放題なんだよ、死語なんだよ。 そして、コードの実行がOnCalculateに渡ると、すぐにサイズがrates_totalと等しくなる。 で、配列のすべてのセルに「ゴミ」が入っている。昔のインジケーターの計算が残っているかもしれません。ありがとうございました!全部取れたし、うまくいきました。こんな感じでやってました。 bool ResetOnInit=false; int OnInit() { ResetOnInit=false; return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if(!ResetOnInit) { ArrayInitialize(ColorHistogram_2Buffer1,0); ArrayInitialize(ColorHistogram_2Buffer2,0); ArrayInitialize(ColorHistogram_2Colors,EMPTY_VALUE); ResetOnInit=true; } } Alexey Viktorov 2018.10.25 12:26 #34 Nauris Zukas:ありがとうございました!すべてうまくいきました。こんな感じでやりました。 なぜ変数に2回値を代入するのか? bool ResetOnInit=false; int OnInit() { ResetOnInit=false; return(INIT_SUCCEEDED); } そして、「なぜ、そのすべてが必要なのか?結局のところ、ループ内のすべてのバーを通過することで、配列のすべてのセルがいずれにせよ何かで満たされなければならないのです。インジケータが現在の位置だけを表示するのでなければ、配列は 最初だけでなく、各バーで初期化さ れなければなりませんが......。 Nauris Zukas 2018.10.25 13:03 #35 Alexey Viktorov:なぜ変数に2回値を代入するのか? グラフを使ったすべてのアクションがOnInit()で模倣されるのかどうか、例えばtaimfreimsを変更するのかどうか、よく分かりませんでした。taimfreimのリセットを変更(今確認)、でももしかしたら他にもあるかもしれないので、念のためOnInit()に2つ目を入れてみました。でも、そうでないなら、そこには置かない。 Nauris Zukas 2018.10.25 13:03 #36 Alexey Viktorov: そして、「なぜ、これだけのものが必要なのか?結局のところ,ループ内のすべてのバーを通過することで,配列のすべてのセルが何かで満たされる必要があるのです.インジケータが現在の位置だけを表示するのでなければ、配列は 最初だけでなく、各バーで初期化されなければ なりませんが......。この例では、バッファをリセットする方法を理解したかっただけなのです。しかし、将来的には(今作っているインジケータでは)、前のセルを残すことと、新しいセルを追加することの両方が必要です。いわば、最初のテストです。 Alexey Viktorov 2018.10.25 13:36 #37 Nauris Zukas: チャートに関するすべてのアクションがOnInit()で模倣されているかどうか、例えばtaimfreimsの変更など、確信が持てませんでした。taimfreimのリセットを変更(今確認)、でももしかしたら他にもあるかもしれないので、念のためOnInit()に2つ目を入れました。でも、そうでないなら、そこには置かない。あーあ。そうですね、グローバルレベルの変数は、チャートの周期が変わっても 初期化されませんね。?と思うのですが...。は正確に覚えていない。 また、一般的には、余分なbool変数は必要ありません。 int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if(prev_calculated == 0) { ArrayInitialize(ColorHistogram_2Buffer1,0); ArrayInitialize(ColorHistogram_2Buffer2,0); ArrayInitialize(ColorHistogram_2Colors,EMPTY_VALUE); } } Nauris Zukas 2018.10.25 13:42 #38 Alexey Viktorov: そして、一般的には、この余分なbool変数はなくても大丈夫です。 はい、その通りです、さらに良いですね、ありがとうございます。 Nauris Zukas 2018.10.27 11:35 #39 期間が30分以上の場合、なぜこのような奇妙な数値が返されるのか、教えてください。Print("PERIOD: ",Period()); KP 0 14:33:22.423 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,M30)PERIOD: 30GG 0 14:33:24.402 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H1) PERIOD: 16385 RJ 0 14:33:25.675 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H4) PERIOD: 16388 Taras Slobodyanik 2018.10.27 11:50 #40 Nauris Zukas:期間が30分以上だと、なぜこんな変な数字が返ってくるのか、教えてください。MT5では、MT4と同様に期間の値は分数と一致しない 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
インジケーターの複雑な仕組みはまだ勉強中で、質問もあります。OnInit()でインジケータバッファをリセットして いますが、なぜかインジケータコンパイル時にバッファがリセットされません。ロジックの場合、コンパイル後の各バッファにはフルセルが1つ ずつあるはずですが、写真ではたくさんあるのがわかります(これは前のバッファのセルだと思います)。どこでミスをするのか?
if(rates_total-8==i)// || rates_total-5==i || rates_total-2==i) { ColorHistogram_2Buffer1[i]=high[i]; ColorHistogram_2Buffer2[i]=low[i]; ColorHistogram_2Colors[i]=0; }
インジケーターの複雑な仕組みはまだ勉強中で、質問もあります。OnInit()でインジケータバッファをリセットして いますが、なぜかインジケータコンパイル時にバッファがリセットされません。ロジックの場合、コンパイル後の各バッファにはフルセルが1つ ずつあるはずですが、写真ではたくさんあるのがわかります(これは前のバッファのセルだと思います)。どこでミスをするのか?
OnInitでは、インジケータ・バッファの 長さはゼロである。
だから、好き勝手なことができるのです。彼らにとっては、すべてが死に物狂いの作業に見えるのでしょう。
そして、コードの実行がOnCalculateに切り替わると、すぐにサイズがrates_totalと等しくなる。
であり、配列のすべてのセルに「ゴミ」が存在する。古い指標計算の残骸もあるかもしれません。
OnInitでは、インジケータ・バッファの 長さは0である。
だからやりたい放題なんだよ、死語なんだよ。
そして、コードの実行がOnCalculateに渡ると、すぐにサイズがrates_totalと等しくなる。
で、配列のすべてのセルに「ゴミ」が入っている。昔のインジケーターの計算が残っているかもしれません。
ありがとうございました!全部取れたし、うまくいきました。こんな感じでやってました。
ありがとうございました!すべてうまくいきました。こんな感じでやりました。
なぜ変数に2回値を代入するのか?
そして、「なぜ、そのすべてが必要なのか?結局のところ、ループ内のすべてのバーを通過することで、配列のすべてのセルがいずれにせよ何かで満たされなければならないのです。インジケータが現在の位置だけを表示するのでなければ、配列は 最初だけでなく、各バーで初期化さ れなければなりませんが......。
なぜ変数に2回値を代入するのか?
そして、「なぜ、これだけのものが必要なのか?結局のところ,ループ内のすべてのバーを通過することで,配列のすべてのセルが何かで満たされる必要があるのです.インジケータが現在の位置だけを表示するのでなければ、配列は 最初だけでなく、各バーで初期化されなければ なりませんが......。
この例では、バッファをリセットする方法を理解したかっただけなのです。しかし、将来的には(今作っているインジケータでは)、前のセルを残すことと、新しいセルを追加することの両方が必要です。いわば、最初のテストです。
チャートに関するすべてのアクションがOnInit()で模倣されているかどうか、例えばtaimfreimsの変更など、確信が持てませんでした。taimfreimのリセットを変更(今確認)、でももしかしたら他にもあるかもしれないので、念のためOnInit()に2つ目を入れました。でも、そうでないなら、そこには置かない。
あーあ。そうですね、グローバルレベルの変数は、チャートの周期が変わっても 初期化されませんね。?と思うのですが...。は正確に覚えていない。
また、一般的には、余分なbool変数は必要ありません。
そして、一般的には、この余分なbool変数はなくても大丈夫です。
はい、その通りです、さらに良いですね、ありがとうございます。
期間が30分以上の場合、なぜこのような奇妙な数値が返されるのか、教えてください。
KP 0 14:33:22.423 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,M30)PERIOD: 30
GG 0 14:33:24.402 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H1) PERIOD: 16385
RJ 0 14:33:25.675 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H4) PERIOD: 16388期間が30分以上だと、なぜこんな変な数字が返ってくるのか、教えてください。
MT5では、MT4と同様に期間の値は分数と一致しない