記事「MQL5のインタラクティブGUIで取引チャートを改善する(第2回):移動可能なGUI (II)」についてのディスカッション

 

新しい記事「MQL5のインタラクティブGUIで取引チャートを改善する(第2回):移動可能なGUI (II)」はパブリッシュされました:

MQL5で移動可能なGUIを作成するための詳細なガイドで、取引戦略やユーティリティでの動的なデータ表現の可能性を引き出しましょう。オブジェクト指向プログラミングの基本原理を理解し、同じチャート上に単一または複数の移動可能なGUIを簡単かつ効率的に設計実装する方法を発見してください。

同じようなダッシュボードを、今回は.mqhファイルを使ってゼロから作る旅に出ましょう。必要であれば、以前のコードの一部を拝借します。コードファイルを効率的に整理するために、「Movable Dashboard MQL5」という適切な名前の新しいフォルダを作成します。

次に、2 つの新しいファイルを生成します。Movable_Dashboard_MQL5.mq5ファイル(これが主要な.mq5ファイルとなる)と、ダッシュボードを移動可能にするコードを格納するGUI_Movable.mqhファイルです。これらのファイルに適切な名前を付けることは、複数のファイルを簡単に管理するために非常に重要です。

まず、メインの.mq5ファイル(Movable_Dashboard_MQL5.mq5)のOnInit()内のObject Createメソッドを使用して、200x200の白いダッシュボードを作成します。

結果:

図2:シンプルな移動可能ダッシュボード


作者: Kailash Bai Mina

 

こんにちは、

昨日、あなたの2回目の投稿を見たばかりなのに、なぜか見逃していました。 お疲れ様です。 私はあなたのダッシュボードをより機能的にするために、あなたの基本を受け継ぎ、それを拡張しました。 私のCreatePael関数を追加し、あなたのCreat DashBoardに追加パラメータをコピーして、背景色とボダーの色とスタイルを設定できるようにしました。 添付はスクリーンショットとmq5とmqhファイルです。

ラベル、ボタン、テキストボックスなどの関数を含む Text クラスを作成します。 ユーザーは Test クラスを直接使用できますが、より重要なのは、Movable DashBoard クラスが text クラスを継承し、各インスタンスがすべてのテキスト関数を使用できるようにすることです。特定の関数がダッシュボードに配置されると、それはダッシュボードの動きにリンクされます。 私は例として使用していないGUIヘッダーファイルを含んでいます。 おそらく最新バージョンを見つけるか、あるいはMQL5にすでに存在するものを見つける必要があるでしょう。


次回の記事を楽しみにしています。


ケープ・コッダ

 
こんにちは、

記事をありがとうございます!

チャートを 左クリックして、複数の "ダッシュボード "を動的に作成したいと思います。クリックするたびに新しいダッシュボードが作成されます。これを実現するために、あなたのコードをどのように修正すべきか、ヒントをいただけないでしょうか?

ありがとうございました。

 
komlos チャートを 左クリックして、複数の「ダッシュボード」を動的に作成したいと思います。クリックするたびに新しいダッシュボードが作成されます。これを実現するために、あなたのコードをどのように修正すべきか、ヒントをいただけないでしょうか?

ありがとうございました。

こんにちは、

私の記事を気に入っていただけてとても嬉しいです!ご意見ありがとうございます。

あなたの目標は私のコードが最初に設計されたものとは異なるようなので、あなたが目指しているものを達成するために私のコードを修正する必要はないと思います。しかし、動的に作成されたダッシュボードを移動可能にするために私のコードを利用することはできます。

チャート上のマウス・クリックを検出するには、ChartEvent、特にCHARTEVENT_CLICKを使用することができます。このイベントはマウス・クリックの座標を提供し、その場所に新しいダッシュボードを作成することを可能にします。そして、この新しく作成したダッシュボードを移動可能にするために、私のコードを適用することができます。

ChartEventについてもっと知りたい場合は、このシリーズの最初の部分、特に「Decoding Chart Events(チャート・イベントの解読)」と題されたセクションを参照することをお勧めします:ムーバブルGUIのビルディング・ブロック'です。

さらに、クラスを使用することを強くお勧めします。クラスを正しく使用すれば、タスクが単純化されます。クラスの概念に馴染みのない方は、私の記事「クラスの概念を理解する」を参考にしてください。

お役に立てれば幸いです!

Improve Your Trading Charts With Interactive GUI's in MQL5 (Part I): Movable GUI (I)
Improve Your Trading Charts With Interactive GUI's in MQL5 (Part I): Movable GUI (I)
  • www.mql5.com
Unleash the power of dynamic data representation in your trading strategies or utilities with our comprehensive guide on creating movable GUI in MQL5. Dive into the core concept of chart events and learn how to design and implement simple and multiple movable GUI on the same chart. This article also explores the process of adding elements to your GUI, enhancing their functionality and aesthetic appeal.
 
komlos チャートを 左クリックして、複数の "ダッシュボード "を動的に作成したいと思います。クリックするたびに新しいダッシュボードが作成されます。これを実現するために、コードをどのように修正すればよいか、ヒントをいただけますか?

ありがとうございました。

CapeCoddahさん、こんにちは、

あなたのフィードバックは本当にうれしいです。私の文章の正確な目的は、あなたのような読者がコンセプトを取り入れ、独自の方法でそれを拡張するよう促すことです。あなたがまさにそうしてくれたという事実は、私の記事の有用性を再確認させてくれる。

ラベル、ボタン、テキストボックスなどを包含するTextクラスの作成に関するあなたの提案については、私の今度の記事が実際に同じような方向に踏み込んでいることは興味深い。私は、売買コマンドを実行し、ロットサイズをリクエストできる機能的なトレーディング・ダッシュボードを構築しています。

しかし、各ユーザーの多様なニーズを考えると、テキスト・クラスを作成することは普遍的に有益ではないかもしれないと思います。その代わり、読者の皆さんには、特定の要件に合わせたクラスを作成することをお勧めします。

あなたのファイルを見直したところ、あなたのGUIが、私がパート3で用意しているものとよく一致していることがわかりました。間もなくの公開を心待ちにしています。

次の記事で何が出てくるか、こっそりお見せしましょう:


そう、これは可動式のダッシュボードで、すべての要素が揃っている!

次回もご期待ください。また、積極的なご参加とご意見をありがとうございました。

それではまた!

 
Kailash Bai Mina #:

こんにちは、CapeCoddah、

あなたのフィードバックは本当に嬉しい。私の文章の正確な目的は、あなたのような読者がコンセプトを取り入れ、あなた独自の方法でそれを拡張するようインスパイアすることです。あなたがまさにそうしてくれたという事実は、私の記事の有用性を再確認させてくれる。

ラベル、ボタン、テキストボックスなどを包含するTextクラスの作成に関するあなたの提案については、私の今度の記事が実際に同じような方向に踏み込んでいることは興味深い。私は、売買コマンドを実行し、ロットサイズを要求できる機能的なトレーディング・ダッシュボードを構築している。

しかし、各ユーザーの多様なニーズを考えると、テキスト・クラスを作成することは普遍的に有益ではないかもしれないと思います。その代わり、読者の皆さんには、特定の要件に合わせたクラスを作成することをお勧めします。

あなたのファイルを見直したところ、あなたのGUIが、私がパート3で用意しているものとよく一致していることがわかりました。その出版が間近に迫っていることを心待ちにしている。

次回の記事の内容をこっそりお見せしましょう:


そう、これは可動式のダッシュボードだ!

また、皆さんの積極的な参加とフィードバックに感謝します。

ハッピー・コーディング!

カイラシュ・バイ・ミーナ#:

CapeCoddahさん、こんにちは、

あなたのフィードバックは本当にうれしいです。私の文章の正確な目的は、あなたのような読者がコンセプトを取り入れ、あなた独自の方法でそれを拡張するようインスパイアすることです。あなたがまさにそうしてくれたことで、私の記事の有用性が再確認されました。

ラベル、ボタン、テキストボックスなどを包含するTextクラスの作成に関するあなたの提案については、私の今度の記事が実際に同じような方向に踏み込んでいることは興味深い。私は、売買コマンドを実行し、ロットサイズを要求できる機能的なトレーディング・ダッシュボードを構築している。

しかし、各ユーザーの多様なニーズを考えると、テキスト・クラスを作成することは普遍的に有益ではないかもしれないと思います。その代わり、読者の皆さんには、特定の要件に合わせたクラスを作成することをお勧めします。

あなたのファイルを見直したところ、あなたのGUIが、私がパート3で用意しているものとよく一致していることがわかりました。その出版が間近に迫っていることを心待ちにしている。

次回の記事の内容をこっそりお見せしましょう:


そう、これは可動式のダッシュボードだ!

また、皆さんの積極的な参加とフィードバックに感謝します。

ハッピー・コーディング!

 

こんにちは、カイラシュ、


Textクラスのコンセプトは、トレーディング・ダッシュボードのパネルを作成するために使用する関数のツールボックスです。あなたのプレビューは、私のテキストクラスのメンバーのいくつかを示しています:ラベル、入力ボックス、ボタン、パネル、そしておそらくテキスト・パネル。ラベルを作成する詳細を、呼び出し可能なテキスト・クラス関数、CreateLabel(...)の中にカプセル化したいと思います。

例えば、ATRインジケータ、インジケータのクロスオーバー、取引開始、アクティブな取引のステータス、資金管理、ストップ・ロスやテイク・プロフィットの 管理などです。私が想定しているように、OnInit関数は各パネルの開発を呼び出すために使用され、OnTickは様々なパネルに更新機能を提供します。

 
CapeCoddah テイク・プロフィットの 管理などです。私が想定しているように、OnInit関数は各パネルの開発を呼び出すために使用され、OnTickは様々なパネルに更新機能を提供します。

GUI'という名前のテキスト・クラスを作って、矩形ラベル、ラベル、編集、ボタンなどすべてのオブジェクトを格納しようと考えています。


インジケーターや取引管理のような各タスクのために複数の、しかし独立したサブパネルを作成するというあなたのアイデアは、まさに将来の記事で私が意図している成果です。Zオーダーへの対応、異なるスクリーンサイズによるパネルサイズへの影響など、これを実現するための課題がないわけではありませんが、これらのハードルを一緒に乗り越えられると確信しています。


パネル・マネージャーのコンセプトも期待できそうだ。近いうちに実現できるはずだ。"

 
Kailash Bai Mina #:

こんにちは、

私の記事を気に入っていただけて、とてもうれしいです!ご感想ありがとうございました。

あなたの目標は私のコードが最初に設計されたものとは異なるようなので、あなたが目指しているものを達成するために私のコードを修正する必要はないと思います。しかし、動的に作成されたダッシュボードを移動可能にするために私のコードを利用できることは確かです。

チャート上のマウス・クリックを検出するには、ChartEvent、特にCHARTEVENT_CLICKを使用することができます。このイベントはマウス・クリックの座標を提供し、その場所に新しいダッシュボードを作成することを可能にします。そして、この新しく作成されたダッシュボードを移動可能にするために、私のコードを適用することができます。

ChartEventについてもっと知りたい場合は、このシリーズの最初の部分、特に「Decoding Chart Events(チャート・イベントの解読)」と題されたセクションを参照することをお勧めします:ムーバブルGUIのビルディング・ブロック'です。

さらに、クラスを使用することを強くお勧めします。クラスを正しく使用すれば、タスクが単純化されます。クラスの概念に馴染みがない場合は、私の記事「クラスの概念を理解する」で基本を学ぶとよいだろう。

お役に立てれば幸いです!

私の問題は、OnChartEventのOnEvent関数を、動的に作成されるすべてのダッシュボード・インスタンスでどのように呼び出すことができるかわからないことです(あなたが記事で言及しているように、すべてのダッシュボード・インスタンスは独立してイベントを処理しなければならないため)。あなたのコードが現在動作している方法では、OnChartEventで事前に個別に定義することで、OnEventは以前に作成されたインスタンスごとに呼び出されます。しかし、ダッシュボードのインスタンスを動的に作成する場合、事前にOnChartEventで定義することはできません。
ありがとうございます。
 
komlos #:
私の問題は、OnChartEventのOnEvent関数を、動的に作成されるすべてのダッシュボード・インスタンスに対してどのように呼び出すことができるかわからないことです(記事で言及されているように、すべてのダッシュボード・インスタンスが独立してイベントを処理しなければならないため)。あなたのコードが現在動作している方法では、OnChartEventで事前に個別に定義することで、OnEventは以前に作成されたインスタンスごとに呼び出されます。しかし、ダッシュボードのインスタンスを動的に作成する場合、事前にOnChartEventで定義することはできません。
ありがとうございます。

ああ、あなたが困っていることがわかりました。お手伝いしましょう。

私のコードを少し修正することで、MultiDashという名前のExpert Advisor (EA)を作成しました。

参考までに以下に添付します。私のコードでわからないことがあれば、遠慮なくご質問ください。喜んでお手伝いさせていただきます。


ファイル:
 
Kailash Bai Mina #:

ああ、どこで困っているのか分かったよ。お手伝いしましょう。

私は、私のコードを少し修正することで、MultiDashという名前のExpert Advisor (EA)を作成しました。

ご参考までに以下に添付しておきます。私のコードでわからないことがあれば、遠慮なくご質問ください。喜んでお手伝いさせていただきます。


ありがとうございます!ありがとうございます!