[解決済み] 異なる作業時間枠のインディケータから呼び出され作成された場合、インディケータが適切にインスタンス化されない。 - ページ 4

 
nicholishen:

...

もしあなたの慇懃無礼な態度がなかったら、私はどこに向かって努力する意欲を見出したかわかりません!特にあなたに感謝したいです。/s

私はここで、あなたのような人を何十人も見てきました。彼らは他の人よりもすべてをよく知っていて、聞く耳を持たず、自分の欠点を他の人(他のユーザー、モデレーター、ブローカー、プラットフォーム、Metaquotes、OS、その他...)に押し付けているのです。

ここでは何も学ばないようですね。これはバグではなく、開発者が自分たちのプラットフォームをどのように考えたかということです。私は、何年も前にMT5とその仕組みを発見しました。もし、あなたがこのことを心に留めていて、それを受け入れていれば、何が問題だったのか、あなたのアプローチと理解度がもっと早く分かったでしょう。

しかし、あなたはそれを「バグ」あるいは「重大な欠陥」と言い続けているのです。MT5のアーキテクチャは、非同期関数の 動作を使用することで、MT4よりもはるかに高速なプラットフォームとなっています。Metaquotesの主な欠点は、不完全で、理解しにくい、あるいは欠落したドキュメントです。

何かわからないことがあったら、他の人(例えばStanislavや私)の話を聞くべきで、確かにあなたを助けようとしている人を侮辱するのはやめましょう。

 
Alain Verleyen:

私は、ここであなたのような人を何十人も見てきました。彼らは他の人よりもすべてをよく知っている、彼らは聞かない、彼らは他の(他のユーザー、モデレーター、ブローカー、プラットフォーム、Metaquotes、OS、または何か...)に自分の欠点を置く。

ここでは何も学ばないようですね。これはバグではなく、開発者が自分たちのプラットフォームをどのように考えたかということです。私は、何年も前にMT5とその仕組みを発見しました。もし、あなたがこのことを心に留めていて、それを受け入れていれば、何が問題だったのか、あなたのアプローチと理解度がもっと早く分かったでしょう。

しかし、あなたはそれを「バグ」あるいは「重大な欠陥」と言い続けているのです。MT5のアーキテクチャは、非同期関数の 動作を使用することで、MT4よりもはるかに高速なプラットフォームとなっています。Metaquotesの主な欠点は、不完全で、理解しにくい、あるいは欠落したドキュメントです。

何かわからないことがあったら、他の人(例えばStanislavや私)の話を聞くべきで、確かにあなたを助けようとしている人を侮辱するのはやめましょう。

タイマーを設定する以外に次の反復を再帰的に呼び出す方法がないのに、すべてのインジケータをシングルスレッドで実行するのは欠陥です。速度の話をしたいのか?処理をキューに戻す代わりに、回避策に1ミリ秒余計に費やしただけだ。おそらく世界の終わりではありませんが、それでも回避策を講じる必要があります。この回避策と、プラットフォームの制約の中でなぜそれが必要なのかを理解するのを助けてくれた人たちにとても感謝しています。しかし、私は、あなたが見下す以外に何を議論に持ち込んだのか、まだ理解しようとしているのです。
 
nicholishen:
タイマーをセットする以外に次の反復を再帰的に呼び出す方法がないのに、すべての指標をシングルスレッドで実行するのは欠陥です。速度の話をしたいのか?処理をキューに戻す代わりに、回避策に1ミリ秒余計に費やしただけだ。おそらく世界の終わりではありませんが、それでも回避策を講じる必要があります。この回避策と、プラットフォームの制約の中でなぜそれが必要なのかを理解するのを助けてくれた人たちにとても感謝しています。しかし、私は、あなたが見下す以外に何を議論に持ち込んだのか、まだ理解しようとしているのです。

あなたが非常に攻撃的であることがわかりました。私は、最初から、私の長年のMT5の経験から、何が起こっているかを説明しようとしただけです。私は見下しているわけではなく、熟練しており、実験もしているので、(他の人と同様に)尊敬に値します。それは、#14の投稿から、あなたが新しいティックなしで動作するようにしたいことがわかりますが、同じ投稿で、私はあなたの「猛烈な」という言葉に襲われたように感じたので、あきらめました。

とにかく、この話題は終了です。新しいことを学ぶ ために私を後押ししてくれてありがとうございます。

 

この件に関しては、何年も頭を悩ませていました。

この問題に遭遇している他の人のために、簡単な回避策があるようです。

モジュールレベルの変数(RunOnce)を追加して、OnCalculateを初めて実行するときを決定します。その最初の実行で、ゼロを返し、それ以上の割り込みを防ぐために変数をtrueに設定します。


bool RunOnce = false;

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 (rates_total == prev_calculated) return (rates_total);
   if (!RunOnce) {
      RunOnce = true;
      return (0);
   }
  
REST OF YOUR CODE HERE.


これは私のために非常にうまく機能しました。

[SOLVED]Indicators are not properly instantiated when called/created from an Indicator of different working time-frame.
[SOLVED]Indicators are not properly instantiated when called/created from an Indicator of different working time-frame.
  • 2017.01.30
  • www.mql5.com
UPDATE: See the workaround below CopyBuffer() throws an error of 4806 (Indicator data not accessible) when calling an indicator with a different Ti...
 
解決策をありがとうございました。