MQL4 CLabel と CButton を CAppDialog に載せる

MQL4でボタンを作成していましたが、よりトレードに使えるパネルを CAppDialog と CLabel を使って作成してみたいと思います



CAppDialog

 

トレードパネルを作成する上で、ベタでオブジェクトを組み合わせて作成するよりも、
MQL5でのクラスを利用したほうが後々便利だと思います

CLabel

「Text label」 グラフィックオブジェクトに基づいたコントロール

CBmpButton

「Bitmap Label(ビットマップラベル)」グラフィックオブジェクトに基づいたコントロール

CButton

「Button」グラフィックオブジェクトに基づいたコントロール

CEdit

「Edit field」グラフィックオブジェクトに基づいたコントロール

CPanel

「Rectangle label」グラフィックオブジェクトに基づいたコントロール

CPicture

「Bitmap Label(ビットマップラベル)」グラフィックオブジェクトに基づいたコントロール

Ref: コントロールパネル及びダイアログ作成のクラス

 
以下のMQL5の記事を参考にやってみます

近年、為替市場の為のトレードロボットの数は、雪だるま式に増えています。これらのトレードロボットの中には、様々な概念や戦略がありますが、負けない人工知能の作成は誰も成し遂げていません。その為、多くのトレーダーは手動取引を支持しています。しかし、このようなスペシャリストの為に、トレードパネルと呼ばれるロボットアシスタントが...

ただMQL4ではうまく機能しない部分もあります
 

 

パネルをCAppDialogで作成

 

最初に基本的なダイアログを作ります
大まかな流れとして

  • Dialog.mqhのインクルード
    • ..\MQL4\Include\Controls\Dialog.mqh ヘッダーファイルのインクルードします
       
  • カスタムクラスを定義
    • CAppDialogを継承したユーザーが決めたクラス、 CTestPanel クラスを定義してCreate
       
  • オブジェクトの作成
    • CTestPanel からオブジェクト(インスタンス)であるTPanelを作成
      OnInit() でCreateして実行、Run()

TestPanel-1.mq4

シンプルなパネルをチャートに表示できました

 

CLabl を載せる

 

次はこのPanelにLabelを載せてみます

  • Label.mqhのインクルード
    • ..\MQL4\Include\Controls\Label.mqh ヘッダーファイルのインクルードします
       
  • カスタムクラスを定義
    • CAppDialogを継承したユーザーが決めたクラス、 CTestPanel クラスにCLabelを追加
    • CreateLabel() を定義
       
  • オブジェクトの作成
    • CTestPanel からオブジェクト(インスタンス)であるTPanelを作成
    • CreateLabelで位置、テキストなどを作成
      OnInit() でオブジェクトをCreateして実行、Run()

TestPanel-Label.mq4

 

CAppDialogに CButton を配置

 

CButtonをCAppDialogに乗せてみたいと思います
容量としてはCLabelと同様です

クリック動作はMQL5ではEVENT_MAPを使うと細かく操作できますが
MQL4ではうまくいかないところもあり OnChartEvent() を使います

TestPanel-Button.mq4

ボタンを載せたパネルができました


 

MQL4はC言語ベースで、MQL5はC++のオブジェクト指向でのプログラミングになります
MQL4のbuild 600 あたりから改変され、MQL5の一部を取り込んだ仕様になり
それまでのMQL4がコードが使えなくなったことがありました
MetaとしてはMQL5に移行したいのでしょうけれど、MQL4で作られたインジケータやEAを
求めるユーザーが多く、MQL4はMQL5の一部機能も使える中途半端な状態となっています




シェアする

フォローする