23/09/22追記
note購入者はDMして下されば続きが読めます!
https://note.com/iceseeds/n/nfdae2c5ac2ef
はじめに
ここでは、GUIで売買機能(ワンクリックトレード)を実装します。
作成手順としては、以下の通りです。
- GUIの基盤
- ロットを表示するEdit部品
- ロットを増減させるButton部品
- 買い、売りを入れるButton部品
- それぞれの部品にイベントを付与
1 の GUIの基盤 に関しては前回の記事をご覧ください。
【MQL4 : MT4】GUI の インジケータ | EA を作る【備忘録】
※前回とは画面サイズを変えています。
if( !AppWindow.Create( ChartID(), "SampleTitle", 0, 50, 50, 500, 400 ) )
↓↓↓↓
if( !AppWindow.Create( ChartID(), "SampleTitle", 0, 0, 0, 250, 100 ) )
いろいろと初心者な為、至らない部分もありますが、宜しくお願いします。
部品を作成する部分は、複雑になるので、別ファイルに分けます。
- Experts/
- Sample/
- guiwindow.mq4 ←前回の記事で...
- AppWindow.mqh ←このファイルで作業します。
- Sample/
ロットを表示させるEdit部品を作成
ロットを表示させるEdit部分を作ります。
今回は、バリデーションを「マイナスは受け付けない」のみ実装します。
↓↓ Editを作成するを作成するコード ↓↓
#include <Controls\Dialog.mqh>
#include <Controls\Edit.mqh> //--- 1
class CPanelDialog : public CAppDialog
{
public:
CPanelDialog();
~CPanelDialog();
/* create */ //--- 2
virtual bool Create( const long chart, const string name, const int subwin, const int x1, const int y1, const int x2, const int y2 );
CEdit m_editLots; //--- 3
protected:
bool CreateEditLots(); //--- 3
};
CPanelDialog::CPanelDialog(){}
CPanelDialog::~CPanelDialog(){}
bool CPanelDialog::Create( const long chart, const string name, const int subwin, const int x1, const int y1, const int x2, const int y2 )
{
if( !CAppDialog::Create( chart, name, subwin, x1, y1, x2, y2 ) )
return false;
if( !CreateEditLots() ) return false;
return true;
}
bool CPanelDialog::CreateEditLots()
{
int widths = ClientAreaWidth() / 5; //--- 4-1
int x1 = widths;
int y1 = 0;
int x2 = widths * 4;
int y2 = 20;
if( !m_editLots.Create( m_chart_id, m_name + "Edit", m_subwin, x1, y1, x2, y2 ) ) return false;
if( !m_editLots.ReadOnly( false ) ) return false; //--- 4-2
if( !Add( m_editLots ) ) return false;
m_editLots.TextAlign( ALIGN_CENTER );
m_editLots.Text( "0.10" ); //--- 4-3
return true;
}
ソースコード詳細
1. Controlsフォルダの中のEdit.mqhをインクルードする。
#include <Controls\Edit.mqh>
2. create関数を宣言
この関数を使って、いろんな部品を作っていきます。
Create( const long chart, const string name, const int subwin, const int x1, const int y1, const int x2, const int y2 );
Create( ChartID、 部品の名前、 表示ウィンドウ、 表示位置 X軸、 表示位置 Y軸、 部品サイズ X、 部品サイズ Y ) )
3. Editの宣言
CEdit m_editLots;
bool CreateEditLots();
4-1. Editの表示位置とサイズ
int widths = ClientAreaWidth() / 5;
int x1 = widths; AppWindowの1/5のサイズ
int y1 = 0; 高さ0
int x2 = widths * 4; AppWindowの4コ文
int y2 = 20; 20 cm? px?
ClientAreaWidth()でAppWindowの横幅を取得します。
それを5分割して、表示位置などを指定しています。
4-2. Editの読み込み設定
初期設定は、読み込みだけなので、書きこめるようにします。
if( !m_editLots.ReadOnly( false ) ) return false;
4-3. Editの表示文字
m_editLots.Text( "0.10" );
実行結果
さいごに
今回は、ロットを表示させるところまでを実装しました。
明日は、Buttonを実装します
YoutubeでLive配信しながら作ってます。
https://www.youtube.com/channel/UCcTw_iVgpLfrep9f94KxwLg?sub_confirmation=1
チャンネル登録お願いします
Twitterでは毎日呟いています。
https://twitter.com/IceSeed_bz
フォローお願いします
明日は、Buttonを実装します。
お疲れ様。