チャートに設定されたインジケーターバッファの読み取り - ページ 8

 
comp:

その答えが(全文引用)。

クソッタレ!チャート上でインジケータを見ることができますが、その値を取得させることはできません - もう一度、あなたは自分の役割を確認しました。

何を騒いでいるのか理解できない。すでに書かれていますが、チャート上に似たような指標が複数ある場合はどうするのでしょうか?どちらから読めばいいのでしょうか?ナンバリングが必要なのでしょうか?

第二に、この不必要な流行を満たすために、指標を扱うシステム全体をどれだけ深く修正しなければならないか、わかっているのだろうか。

私たちは、ただいじくり回して、ここにオイルを入れ、ここを整えればすべてうまくいくと考えるしかないのです。それはないでしょう、残念なことに。

安定して動作するものに手を加える必要はないのです。

 
Andrey Khatimlianskii:

では、なぜ比較するのか?

例えば論理的に異なるMAやRSIを比較するのと同じ理由です。
 
Alexey Volchanskiy:

何を騒いでいるのか理解できない。結局のところ、すでに書かれていることですが、チャート上に同じ指標がいくつもある場合はどうすればいいのでしょうか?どちらから読めばいいのでしょうか?何らかの方法で番号をつける必要があるのでしょうか?

MT4でも既にナンバリングされています。ChartIndicatorName および ChartIndicatorsTotal を参照してください。

第二に、この不必要な流行を満たすために、指標を扱うシステム全体をどれだけ深く作り直さなければならないか、おわかりでしょうか。

手直しする必要はないでしょう。アーキテクチャに干渉することなく、GetPtrで 簡単に行えます。外部からのバッファへの書き込みを排除することで、DLLを使用しない可能性を追加するだけです。

iCustomChart

指定されたカスタムインジケータの対応するチャートにおける数値を返します

double  iCustomChart( 
   long  chart_id,      // идентификатор графика (аналогичный, как в ChartIndicatorName)
   int   sub_window,    // номер подокна (аналогичный, как в ChartIndicatorName)
   int   index,         // индекс индикатора в списке индикаторов, добавленных к данному подокну графика (аналогичный, как в ChartIndicatorName)
   int   mode,          // источник данных (аналогичный, как в iCustom)
   int   shift          // сдвиг (аналогичный, как в iCustom)
   );

パラメータ

チャートID

[チャートのID0は現在のチャートを意味します。

サブウィンドウ

[in] チャートのサブウィンドウ番号です。0はメインチャートウインドウを意味します。

インデックス

[in] インジケータ・リストにおけるインジケータのインデックス。指標は0から始まり、つまりリストの一番最初の指標は0インデックスです。リスト内のインジケータの数は、ChartIndicatorsTotal() を呼び出すことで取得できます。

モード

[in] インジケータ行のインデックス。0~7 の値をとり、SetIndexBuffer() 関数の呼び出し時に指定されたインデックスに対応する。

シフト

[in] インジケータ・バッファから取得した値のインデックス(指定した期間数だけ現在のバーから相対的にシフトする)。

戻り値

指定されたカスタムインジケータの対応するチャート上での数値

 
comp:
同じ理由で、例えば論理的に異なるMAとRSIを比較するのはいかがなものでしょうか。

価格に基づくMAか、RSIからのMAか?

もし価格によってなら、もちろん - EAを通じて(それは論理的にこれらの2つの異なる指標を組み合わせたEAです)。
RSIの場合は、1つの指標に(RSIとMAの両方の情報をすでに含んでいる)。

あるいは、チャートに付けられた任意のインディケータを受け取って分析できるような、普遍的なコンストラクタの意味もあるのでしょうか?
この場合、その方が便利かもしれません。しかし、アナライザーから分析するのであれば、なぜインジケーターにインタラクティブ性を持たせるのか、まだ明確ではありません...。

 
Andrey Khatimlianskii:

あるいは、チャートに付けられた任意のインディケータを受け取って分析できるような、普遍的なコンストラクタのようなものがあるのでしょうか?

それなら、もっと便利かもしれませんね。しかし、アナライザーから勉強したいのに、なぜ指標自体にインタラクティブ性を持たせるのか、まだはっきりしない...。

インジケータはオブジェクトであり、その構造の論理に従ってインタラクティビティが設計されています。なぜ、指標は静的でなければならないのか - は、明確ではありません。

全く間抜けな例を挙げると、ティックインジケーターを 例に挙げます。バッファに何らかのティックデータを書き込んだとします。そして、OnCalculateのみを使用します。

チャートにぶら下がっている間に、バッファにデータが溜まってしまっています。ファイルに書き込む必要はない(忘れたり、当てなかったり-二次的なもの)。

グラフに表示されたデータを面白いと思い、ファイルにダンプしたいと思います。どうやるんですか?- そんなことはない!

データは見えるが、読むことはできない。WinAPIでCTRL+Dウィンドウをパースしない限り。そして、気をつけなければならないのは、インタラクティブ性がないことです。

 
comp:

指標はそれ自体がオブジェクトであり、その構築のロジックによってインタラクティビティが想定されている。なぜ、指標は静的でなければならないのか - は、明確ではありません。

全く間抜けな例を挙げると、ティックインジケーターを 例に挙げます。

インタラクティブ性については、私も同感です。
しかし、この例はまたしても突飛すぎる(忘れていた/見くびっていた/全く考えていなかった)。

インタラクティブな指標には、この可能性が有用であることに同意しよう。
しかし、現在の実情では、すべてをEAで実施する必要があります。

 
Andrey Khatimlianskii:

しかし、例のものはまたしても手から吸い取られる(忘れる/怠ける/全く考えない)。

つまり、Marketでインジケータを購入した場合は良いのですが、その値をプログラム的に取得することができません。見るだけでいいんです。Expert Advisorに挿入してください - ガッカリ。

 
comp:

つまり、マーケットからインジケータを購入することはできますが、その値をプログラムで取得することはできません。見るだけでいいんです。EAに入れるのはビミョー。

iCustomから貼り付けることはできますが、Marketから取得したインジケータのコードをExpert Advisorに貼り付けると、必ずバツが悪くなります。
 
Alexander Bereznyak:
iCustomから挿入することができます。
そして、ここで広く扱われているいくつかのケースでは、グラフにあるようなことはまったくありません。
 
comp:
また、ここで散々議論されてきたことですが、チャートで見るのとは違うケースもあります。

インジケータは、ゼロバーだけでなく、履歴を再描画し、インジケータはゼロ値だけでなく、負の値を持って、それはカンニングので - 私はそれらを見てきたし、1つではない

そして、この指標に騙される人を見てきました。