エラー、バグ、質問 - ページ 3126

 
Nikolai Semko #:

EAやインジケータでデータ構造または構造体の配列を形成し、リソースに送信します。

Kanvas 自身は、グラフィックリソース(OBJ_BITMAP_LABEL/OBJ_BITMAP)を使って動作します。そのため、あとはリソースの名前を他のアプリケーションに伝えるだけで、簡単にピクセルにアクセスできるようになる。また、ピクセル形式を渡す必要があります。そして、別のCCanvasでピクセルを読んだり、変更したりすることができます。CCanvas::Attach というメソッドを持ち、既存のリソースにアタッチすることができます。

 
Nikolai Semko #:

どうしたんだ、アンドレイ?
データ構造または構造体の配列の形成

全く問題なし!余計な手間がかかるだけだ、ということです。

バッファリングされたインジケータは、他のインジケータやExpert Advisorから読み取ることができます。

例えば、稼働中の指標のリストを取得し、指定された楽器/TFのリスト上でそれらを作成し、それらからシグナルを収集する(そしてテレグラムに送信する)EAがあります。そのため、バッファのあるインジケータは、チャート上で実行するだけで、自動的にピックアップされます。ただし、kanvasインジケータは手動で接続する必要があり、その後の作業は手動で行う必要があります。

kanvasのインジケータと作業を統一する必要があります。私は、この統一がもたらすものを恐れています......。バッファーインディケーター)

 
Nikolai Semko #:

どうしたんだ、アンドレイ?

見つからなかったし、探してもいない

 
Andrey Khatimlianskii #:

問題ないです!不必要なジェスチャーでしかない、そういうことです。

どんなバッファインジケータも他のインジケータやEAから読み取ることができますし、カンヴァスにはカストゥムレイヤーが必要です。

例えば、稼働中の指標のリストを取得し、指定された楽器/TFのリスト上でそれらを作成し、それらからシグナルを収集する(そしてテレグラムに送信する)EAがあります。そのため、バッファのあるインジケータは、チャート上で実行するだけで、自動的にピックアップされます。ただし、kanvasインジケータは手動で接続する必要があり、その後の作業は手動で行う必要があります。

kanvasのインジケータと作業を統一する必要があります。私は、この統一がもたらすものを恐れています......。バッファーインディケーター))。

インジケータとExpert Advisorの両方で、同じクラスを可視化に使用するなど、可能性を広げることを話しています。もちろんインジケータでは、バッファ転送方式は常に存在し、ピュアキャンバスの場合は誰もその使用を禁じてはいない。
ちなみに、構造体の配列をユニオンを介して1つのバッファで転送するハイブリッド方式はすでに実装していますよ。受信側で追加のアドオンが必要ですが、まず、複雑でないこと、そして、倍数の配列ではなく、構造体のため、別のインジケータのデータを扱うことが容易で、ユーザーにとって便利であることが挙げられます。ユーザーには間違いなく気に入ってもらえると思います。
 
Mihail Matkovskij #:

Kanvas 自身は、グラフィックリソース(OBJ_BITMAP_LABEL/OBJ_BITMAP)を使って動作します。そのため、他のアプリケーションにリソースの名前を伝えるだけで、簡単にピクセルにアクセスできる。また、ピクセル形式を渡す必要がある。そして、別のCCanvasでピクセルを読んだり、変更したりすることができます。CCanvas::Attach というメソッドを持っていて、既存のリソースにアタッチすることができます。

グラフィックを転送する作業は、他のウィンドウのバーや価格と同期していることが多く、イベントモデルと統合されているため、ありそうもないことである。
インジケーターウィンドウが存在しない場合や、アクティブでない場合は形成されません。
インジケータウィンドウが存在しない場合、バッファまたはバッファを使用してiCustomを通過する唯一の方法があります。しかし、先ほども言ったように、これらのバッファに構造体や構造体の配列を入れることができます。
 
Andrei Trukhanovich #:

探しても見つからなかったんです。

ご報告ありがとうございました。
今、私たちはあなたがそうでないことを知っています。
 
Nikolai Semko #:
また、インジケータウィンドウが存在しない、あるいはアクティブでない場合は、グラフィカルリソースも生成されないと思います。

インジケータが動作しているのに、そのウィンドウが存在しない場合ってどんな場合なんだろう?また、ウィンドウが非アクティブになったとき(ユーザーが他のチャートに切り替えたり、ウィンドウを最小化したとき)、どのリソースがメモリからアンロードされるのでしょうか、それは単に削除されるだけでしょうか?

ニコライ・セムコ#:
しかし、先ほども言ったように、これらのバッファに構造体や構造体の配列を入れることができます。

そこは同意見だと思います。マルチタスクのロボットを作らなければならなかったのです。最初のアプリケーションインスタンスは、タスクを作成し、そのためのチャートを作成し、同じロボットで特別なテンプレートを適用します。そして、最初のロボットがタスクを作成し、オートマトンが作成したロボットがそれを実行する。データの転送は、リソースを通じて行われます。そこに数値や構造体の文字列を転送する。こちらのサイトにhttpによるデータ転送の例があります(記憶が正しければ)。しかし、構造に関するデータ、そのサイズや型がまずそこに行き、次にデータそのものがそこに行くのです。Expert Advisorでは、文字列と数値をuchar-typesの配列で渡すことで、読み書きの処理を大幅に簡略化することにしました。しかし、インジケータ・バッファにバイトを書き込んで、そこから読み出したことはない。しかし、この方法の欠点として、インジケータバーのバイト数に制限があることが既に分かっています。とはいえ、配列の各セルには8バイトずつ入っています。それほど大きなデメリットではないかもしれませんね。誰にもわからない...

 
Mihail Matkovskij #:

インジケータが動作しているのに、そのウィンドウが存在しない場合、どのようなケースがあるのでしょうか?

iCustomを使うという意味です

また、ウィンドウが非アクティブになったとき(ユーザーが他のチャートに切り替えたり、最小化したとき)、リソースはメモリからアンロードされますが、単に削除されるのでしょうか?

というのは、ウィンドウを最小化した状態で画像を形成することに特別な意味はないので、これはあくまで私の推測です。MTでどのように実装されているか - 確認していませんが、似たようなものに出会いました。ニュアンスを忘れてしまった
とにかくリソースが削除されることはまずないのですが、時間の経過とともに更新されることもないのです。例:CCanvas::Updateが機能しない

void CCanvas::Update(const bool redraw)
  {
//--- check
   if(m_rcname==NULL)
      return;
//--- update resource and redraw
   if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
      ChartRedraw(this.m_chart_id);
  }
 
Nikolai Semko #:

iCustomを使うという意味です

リソースとバッファを経由して値を渡すことはできますが、Kanvasリソースを経由することはできないことが判明しました。iCustom を使って Kanvas に出力するインジケータを呼び出すのは面白い作業です試していません。この場合、エラーが発生する可能性があるように思います。もしかして、iCustomで読み込んだインジケータは全く動作しないのでは?

いずれにせよ、リソースが削除されることはまずないが、時間の経過とともに更新されることもない。す なわち、CCanvas::Update が動作 しない。

ResourceCreateは動いていると思いますが、ChartRedrawを使っても結果がレンダリングされません。関数の呼び出しは行われますが、システムは非アクティブの間はチャートが更新される必要がないことを理解します。しかし、ResourceCreate が 機能しない場合、チャートが非アクティブの時にインジケータがランダムなティックでデータを更新しているが、Kanvas のリソースは更新されていないとしますそして、ユーザーはこの非活動状態のチャートを有効にして、 インジケータ(Kanwa)を見ることにしたのです。そして、ティックがあったことが判明しましたが、Canvaはユーザーがチャートを変更する前と同じままです。また、休止期間中にダニが大量発生していたらどうでしょう?もちろん、インジケータはそれらを処理するが、その結果は何一つキャンバス上に表示されることはない。

 
Mihail Matkovskij #:

ResourceCreateは動作すると思いますが、ChartRedrawで結果が表示されません。

はい、その通りでしょう。
また、リソースを節約するために、ウィンドウの活動を監視し、ウィンドウがアクティブでない場合はビットマップを生成しないようにするのが正しいでしょう。

思い込みで判断するのではなく、確認する価値はあると思います。