記事「多銘柄多期間指標の作成」についてのディスカッション - ページ 3

 
Denis Kirichenko #:

何かをテストするには、何が起こっているのかというパラダイムに入らなければならない ))

私は、現在のアプローチに近くないので、私自身のバージョンをスケッチする方が簡単だと気づいた。特に、CIndMSTFクラスはある種のスーパークラスであるように思える。そして、それをベースにたくさんのインジケーター・クラスが 作られる。IndMSTF.mqhファイルは4,000行のコードです)。私はCIndicators クラスのインスタンスをインジケーター・コレクションとして使う方法をとった。これはとても便利です。車輪を再発明する必要はありません。

では、なぜCIndMSTFクラスがバッファ(SBuffer m_buffers[])にデータを保存しなければならないのでしょうか?OnCalculate()で一度計算すれば十分です。つまり、参照によってパラメータとして受け取り、それを計算して渡した...

私が同意できない点については、私のバージョンが完成したら、後で詳しく書きます...

そう、このようなメカニズムがあることが気に入った:

なぜなら拡張性があるからだ。一度計算されたデータは、計算部分とは別の配列になる。CopyBufferは、指定された数のバーを配列にコピーし、コピーされたデータ量に合わせて受信配列のサイズを変更します。つまり、常にデータが必要な場合は、常に計算部のバッファからコピーする必要がある。

ここでは、すべてのデータが常に満たされた配列があり、そこからインデックスでデータを取得するようにした。コピーなし。コピーは起動時に一度だけ行い、その後はリストの末尾に2本ずつデータを追加していくだけである。SBでも、おっしゃるようなクラスで同じロジックが使われていると思います。忘れていて間違っているかもしれませんが。

 
Artyom Trishkin #:

拡張性 - 計算データを計算部分とは別の配列に保持するため。CopyBuffer は、指定された数の小節を配列にコピーし、コピーされたデータ量に合わせて受信配列のサイズを変更する。つまり、常にデータが必要な場合は、常に計算部バッファからコピーする必要がある。

ここでは、すべてのデータが常に満たされた配列があり、そこからインデックスでデータを取得するようにした。コピーなし。コピーは起動時に一度だけ行い、その後はリストの最後に2本ずつデータを追加していくだけである。SBでも、おっしゃるようなクラスで同じロジックが使われて いると思います。忘れていて間違っているかもしれませんが。

そうです、配列充填があります。CIndicator::GetData()というAPIメソッドがあり、ネイティブ関数のCopyBuffer()を真正面から呼び出しています。

 
100 エラー、6 警告 100 7.なぜコンパイル時に100のエラーが出るのでしょうか。何が間違っているのでしょうか?

 
StohanoV #:
100 エラー、6 警告 100 7.なぜコンパイル時に100のエラーが出るのでしょうか。何が間違っているのでしょうか?

エディターのログの一番最初のエラーは何ですか?

 
Artyom Trishkin #:

フォーラムでの開発者からのメッセージ。

4についてはそのようなことがあったように記憶しているが、5については見落としていたようだ...。

このようなことがターミナルで設定できないのは奇妙だ。ドキュメントにも書かれていない。

あなたのアプローチでは、最初のティックで上位TFのゼロ・バッファからデータを取得できますか?

 
Aleksey Vyazmikin #:

4についてはそんな記憶があるが、5についてはどうやら聞き逃したようだ......。

そのようなことがターミナルで設定されないのは不思議だ。ドキュメントにも書かれていない。

あなたのやり方では、最初のティックで上位TFのゼロ・バッファからデータを取得できますか?

試してみてください。おそらくできません。