記事"MQL5にて独自のグラフィカルパネルを作成する"についてのディスカッション - ページ 4

 

インジケーターはこのプロパティを持っています:

#property indicator_separate_window

このプロパティは、インジケーターが一番下に来るために必要です。なるほど、なんとなくわかりました。

メイン・ウィンドウにも「ダイアログ・バー」が必要なんだ...。

それでおしまい。このプロパティのせいで、何をしようが、どんなプロパティを定義しようが、ダイアログ・バーはインジケーターのサブウィンドウにある。そして決してメイン・ウィンドウには表示されません。

私は3日間かけて標準 ライブラリを理解しようとした。どうしてこのような省略が可能なのか、いまだに理解できない。

もし間違っていたら、どこが間違っているのか指摘してほしい。頼むから、ウィンドウとサブウィンドウのプロパティに0を指定する必要があるなんて書かないでくれよ。

とりあえず、その通りに動くパネルを自作してみる。

 
Evgeniy Scherbina 標準 ライブラリを理解しようとした。どうしてこのような省略が可能なのか、いまだに理解できない。

もし間違っていたら、どこが間違っているのか突いてくれ。頼むから、ウィンドウとサブウィンドウのプロパティに0を指定する必要があるなんて書かないでくれよ。

とりあえず、その通りに動くパネルを自作してみる。

サブウィンドウ番号を定義するm_subwinオプションを追加し、サブウィンドウの "create/delete "イベントをインターセプトして、0でない場合はダイアログ全体でこのケースを修正し、ObjectCreate(...)が使用されるこのm_subwinを使用する。

を使用すると、パネルとエレメントを任意のウィンドウとサブウィンドウに作成できます。

 
Maxim Kuznetsov #:

コードを精査し、サブウィンドウ番号を定義するm_subwinオプションを追加し、サブウィンドウの "作成/削除 "イベントをインターセプトし、それが0でない場合は、ダイアログ全体でこのケースを修正し、ObjectCreate(...)が使用されているこのm_subwinを使用します。

そうすれば、パネルやエレメントは、どのウィンドウやサブウィンドウでも作成できます。

はい、はい、これはすべて、追加、取り付け、アルミ線とテープでラップするためのものです。私たちは、このすべてのライブラリのためのシンプルで正しいソリューションを必要としています。もしそのような解決策がないのであれば、ライブラリーを再設計しなければならない。ダイアログボックスは自分で作ることにしよう。
 
Evgeniy Scherbina #:
そうそう、こういうものを全部足して、くっつけて、アルミ線で巻いて、テープで止めて。このライブラリー全体について、シンプルで正しい解決策が必要だ。もしそのような解決策がなければ、ライブラリーを再設計しなければならない。私はおそらく独自のダイアログ・ウィンドウを作るだろう。

これはMetaTraderプラットフォームの制限で、1つのインジケータはメインウィンドウにしか表示できないか、サブウィンドウにしか表示できません。

可能な解決策と実装例が本に載って います。

簡単に言うと、2つのインジケータを作成し、1つはChartIndicatorAddを使用してもう1つを作成します。イベント、リソース、バッファなどを介してデータを交換することができます。

Учебник по MQL5: Создание прикладных программ / Использование готовых индикаторов из MQL-программ / Комбинирование вывода в главное окно и вспомогательное
Учебник по MQL5: Создание прикладных программ / Использование готовых индикаторов из MQL-программ / Комбинирование вывода в главное окно и вспомогательное
  • www.mql5.com
Создание прикладных программ - Программирование на MQL5 для трейдеров - Учебник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Stanislav Korotky #:

これはメタトレーダープラットフォームの制限で、1つのインジケータはメインウィンドウまたはサブウィンドウにしか表示できません。

可能な解決策と実装例は、本書に 記載されています。

簡単に言うと、2つのインジケータを作成し、1つはChartIndicatorAddを使用してもう1つを作成します。イベント、リソース、バッファなどを介してデータを交換することができます。

これが専門家の言葉だとしたら、まさに私が聞きたかったことだ。そして、独自のパネルを作る必要があるということだ。

それが単なる推測だとしたら...。ならば、自分でパネルを作るしかない。

インジケーターがサブウインドウにある場合、パネルをメインウインドウに貼り付けるだけの方法のヒントを待っています。