*

【EA開発講座】第23回 MT4のチャート上にボタンを作る

公開日: : EA開発講座 , , , ,

(今回はちょっと応用なので、ここまでギリギリの方はスルーしてください。)

現在のMT4は結構いろいろな機能が追加されていて、DLLや拡張ファイルを使わずに、EA単体でボタンやフォームを作ることが可能です。

昔は専用のdllとかが必要で、高額で販売されていたんですけどね~(それだけをやっている会社とかあったんですけど、どうなったことやら…)

ボタンをただ表示するだけでなく、
「ボタンを押したら××を実行する」
などのようなインタラクティブな機能を実装することができます。

ボタン操作は、OnChartEvent内に記述します。

これはティック更新のイベントとは別で、チャート内でイベントが発生した際に呼び出されます。

ボタンは、
色、大きさ、文字、位置など
すべて自由に変更できます。

また、複数のオブジェクト(ボタン)同時に表示させることもできるので、
EAを稼働させつつ、裁量トレードボタンを表示する、
なんていうことも可能になります。

bandicam-2016-12-28-15-47-06-958

オブジェクトの操作は、作る作業と設定する作業に分かれます。

・オブジェクトを作る

ObjectCreate(0,buttonID,OBJ_BUTTON,0,100,100);

(現在のチャートにbuttonIDという名前のオブジェクトを作る。オブジェクトの種類はボタン)

・オブジェクトのプロパティを設定する

ObjectSetInteger(0,buttonID,OBJPROP_COLOR,clrWhite);

オブジェクトの色を指定する

ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,clrGray);

オブジェクトの背景を指定する

ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,100); ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,100);

オブジェクトの座標を指定する

ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,200); ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,50);

オブジェクトのサイズを指定する

ObjectSetString(0,buttonID,OBJPROP_FONT,”Arial”);

オブジェクトにテキストがある場合、フォントを指定する

ObjectSetString(0,buttonID,OBJPROP_TEXT,”Button”);

オブジェクトにテキストがある場合、テキストを決める

ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);

オブジェクトにテキストがある場合のフォントサイズを指定する

ってな感じで一個一個関数を呼び出して設定する必要があります。めんどくさいですね。

応用版:外部ソフトなしでチャート上に操作パネルを表示する

Comment

  1. 山崎 より:

    ボタンスイッチすごく重宝しています
    しかしスイッチを複数同時に表示させる方法がどうしてもわからなく
    初めてメールさせていただきました

    お手数だとは思いますがどのように作ればいいのか教えてはいただけないでしょうか?
    よろしくお願いします

  2. kanrinin より:

    ボタンオブジェクトはオブジェクトの名前でそれぞれ区別することができます。
    https://fxantenna.com/post-1417/
    を例にすると、
    BUYボタン、SELLボタン、△、▽、各種時間足ボタンがありますが、
    それぞれ名前と座標を変えれば別物として扱えます。


    CreateButton("▲ CALL/BUY",200,70,30*1,30*10,clrRed,20);
    CreateButton("▼ PUT/SELL",200,70,30*1,30*6,clrBlue,20);

    CreateButton("1min", 40,20,20, 30*1+10,clrNavy,8);
    CreateButton("3min", 40,20,20+45*1,30*1+10,clrNavy,8);
    CreateButton("5min", 40,20,20+45*2,30*1+10,clrNavy,8);
    CreateButton("10min",40,20,20+45*3,30*1+10,clrNavy,8);
    CreateButton("60min",40,20,20+45*4,30*1+10,clrNavy,8);

    CreateButton("▲",15,15,110,80,clrNavy,5);
    CreateButton("▼",15,15,110,64,clrNavy,5);
    //CreateButtonはオリジナル関数

    あとはOnChartEvent内で

    if(id==CHARTEVENT_OBJECT_CLICK)
    {
    if(clickedChartObject==IntegerToString(30*1,3)+IntegerToString(30*10,3))
    {
    selected=ObjectGetInteger(ChartID(),IntegerToString(30*1,3)+IntegerToString(30*10,3),OBJPROP_STATE);
    if(selected)
    {
    //ボタン(BUY)が押された時の処理
    }
    }
    if(clickedChartObject==IntegerToString(30*1,3)+IntegerToString(30*6,3))
    {
    selected=ObjectGetInteger(ChartID(),IntegerToString(30*1,3)+IntegerToString(30*6,3),OBJPROP_STATE);
    if(selected)
    {
    //ボタン(SELL)が押された時の処理
    }
    }

    のときのようにifで分けて処理すればOKです。

Message

メールアドレスが公開されることはありません。

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

【EA開発講座】第9回:ロウソク足による条件を作る~3回連続で陽線になったら買うEA~

ロウソク足の記述方法 MQL4にはロウソク足の4本値が標準搭載されています。 それぞれ、 という

記事を読む

【EA開発講座】第30回 チャート上にWEBサイトの情報を載せる その1

オンラインの情報をトレードの判断に使う、というのは至極まっとうな考え方だと思います。 日経が為替に

記事を読む

【EA開発講座】第4回:新規ポジションを送信する記述

ここではMQLに特有の”新規ポジションの取得”を記述していきます。 OrderSend関数 MQLに

記事を読む

【EA開発講座】第29回【超簡単バージョン】配布するEA、インジケーターに有効期限をつける(サンプルコード)

EAやインジケーターをお試しで使ってもらい、気に入ってもらったら購入してもらうというビジネスモデルは

記事を読む

【EA開発講座】第27回:EAに指値注文、逆指値注文でエントリーさせる

EAに指値注文、逆指値注文でエントリーさせる記述 これまでには決済で指値注文、逆指値注文をしてきまし

記事を読む

 

  • (↑広告です。このサイトの管理者の運営ではありません)



  • 横瀬兼元(ペンネーム)です。

    ご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    偽者(オリジナルある模倣者)がいるらしいのでご注意ください。
no image
(MT4EA)MACDと特殊ベッティング【EA検証班求ム】 

. . 超シンプルなMACDのEAです

MT4の1分足テストで起こる致命的な現象

1分足っていうのは他の時間枠といろいろ違う点があります。 まず、本題か

no image
【EA検証班募集】コツコツドカンとドローダウン(MT4) ~原理は単純を、構造は複雑を、人は最も人らしく~

EURGBP 2018.11.1~2019.4.30 D1 Sp

MT5のテスターではスプレッドは変更できないという事実

を知らない人が多くて、「このバックテストのスプレッドはいくつですか」と

FX業界の人種マップとその特徴 LP、ホワイトラベル、商材屋さん、開発代行…

FX業界にはさまざまな人種というか役割の人たちがいます。職人気質の開発

→もっと見る

PAGE TOP ↑