MT4のチャート上に画像を表示してみよう

MT4に画像を表示
yuki
yuki
今回はMT4のチャートの画像を表示させるテクニックのご紹介です
カオチャイ
カオチャイ
MT4の仕様としてJPGやPNG形式をお気軽に表示させられるものではないので、あくまで参考としての紹介です
yuki
yuki
しかし開発者のロゴなどを表示し、そこからリンクを飛ばすようなこともできますので、広告などに利用できる重要なテクニックでもありますね!
カオチャイ
カオチャイ
こちらの機能は無料でご利用できますが、MQLAuth.mqhのバージョン1.04以降が必要ですので、まだご利用の準備ができていない方は下記の記事を参考にしてくださいね
MQLAuth準備編
MQLAuthシステムを利用するための事前準備 MQLAuthを使うための準備 MQLAuthシステムを使う前提条件として「インジケーターをMT4の口座番号やパスワードで縛って管...

MT4に画像を表示

MT4に画像を表示

このテクニックを使うとインジケーターにロゴやリンク画像を表示させることが出来ます。これにより自分で開発したインジケーターの著作権をアピールすることも可能ですね。

さらにPayPal連携機能と組み合わせればここから課金するシステムも作れちゃいます。

ただしMT4はチャート上にこういった画像を表示させることに向いたソフトではありませんので、それなりの下準備が必要です。

 

こちらと合わせればリンク付き画像に
MT4からブラウザを開く方法
MT4のチャートに表示させた画像(ロゴ)クリックでブラウザを開いてみよう https://interactivebrokers.work/start_mqlauth/ MT4に表示したロゴをクリックす...

 

JPG画像をPPM(Ascii)形式に変換する

MT4に画像を表示するためには表示させたい画像をRGB値のテキストデータに変換する必要があります。

そのため、こちらからまず変換ソフトであるIrfanView32をダウンロードします。

 

カオチャイ
カオチャイ
ソフトを立ち上げたら下記の手順で画像の変換を行って下さいね!

イメージまず左上の【File】メニューからMT4に表示したいファイルを開いておきます

 

MT4に画像を表示させる負荷を減らすためにImageメニューの【Resize/Resample】で縮小します

 

MT4に画像を表示させるこちらからお好みのサイズに調整しておきます

 

MT4に画像を表示させるResizeしたら、こちらからSaveを選びます

 

MT4に画像を表示させるファイルの種類に【PPM】を、そして下の【Show options dialog】にチェックを入れて、右側にダイアログを表示させ、そこにある【Ascii encoding】にチェックを入れて保存します。

 

PPM形式保存したファイルをエディタで開くと、このようにテキスト化されていることがわかります。

 

続けて、エディタの置換機能を使って、半角スペースを全てコンマに置き換えます。(メモ帳の場合はメニュー画面の【編集】→【置換え】から変更が可能です)

 

上から4行飛ばし、5行目から一番最後までのデータをコピーします。ちなみに3行目は画像の横画素数と縦画素数です。後ほどこの数字も必要になるので覚えておいてください。

 

int配列のグローバル変数を宣言し、そこに先ほどコピーした中身を貼り付けます。

 

あとは、ソースコードの先頭でMQLAuth.mqhを呼び出し

#include <MQLAuth.mqh>

#property copyright "©2020  MT4ツール製作【シストレファクトリー】"
#property link      "https://interactivebrokers.work/"
#property version   "1.00"
#property strict

 

OnInit内に以下の1行を追加してください。

int OnInit() {
   Auth_ShowIMG(_logo, "SYSFAC_LOGO", 50, 50, 2); // この行を追加

   return(INIT_SUCCEEDED);
}

引数は順に、先ほど画像データを入れたint配列の変数名、任意のオブジェクト名、画像の横画素数、画像の縦画素数です。細かい仕様はMQLAuth公式のリファレンスを参考にしてください。

 

void OnDeinit(const int reason) {
   ObjectsDeleteAll(ChartID(),  "SYSFAC_LOGO", EMPTY, EMPTY);
}

このままだとチャートからEAを消してもラベルが残ってしまうので、OnDeinitでオブジェクトを消すようにしましょう。これで完成です。

 

MT4に画像を表示させるこの様に画像が表示できました

 

BMPならもっと簡単に表示ができます
BMP画像をMT4に表示
BMP画像を簡単にMT4のチャートに表示させる方法 MT4に画像を表示 このテクニックを使うとインジケーターにロゴやリンク画像を表示させることが出来ます。これにより自分で開発...

今回作成したコード

//+------------------------------------------------------------------+
//|                                      ©2020  MT4ツール製作【シストレファクトリー】 |
//|                                 https://interactivebrokers.work/ |
//+------------------------------------------------------------------+

#include <MQLAuth.mqh>

#property copyright "©2020  MT4ツール製作【シストレファクトリー】"
#property link      "https://interactivebrokers.work/"
#property version   "1.00"
#property strict
#property indicator_chart_window

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
   Auth_ShowIMG(_logo, "SYSFAC_LOGO", 50, 50, 2); // この行を追加

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
   ObjectsDeleteAll(ChartID(),  "SYSFAC_LOGO", EMPTY, EMPTY);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]) {

   return(rates_total);
}
//+------------------------------------------------------------------+
int _logo[] = {...(省略)};

 

インジケーターのカスタマイズ色々
MQLコードでEAをカスタマイズ
【MQLコード解説】EA・インジケーターのカスタマイズ【体験版・LINE通知】EAやインジケーターに口座番号認証を実装する方法を紹介しています。 認証システムにはMQLAuthを利用して解説していきます。...
ダウンロードでそのまま使えるコード集
MQL実装例
【コピペでOK】RSIのEAに口座認証や一括メッセージ機能を実装してみました https://interactivebrokers.work/start_mqlauth/ 個人でEAを販売する際につけてお...
MQL実装例
【コピペでOK】MT4のチャートから飛ばすURLをソースコードを編集せずに、MQLAuthの管理画面から変えられるようにする https://interactivebrokers.work/start_mqlauth/ メッセージのURL変更を簡単に ...
MQL実装例
【コピペでOK】バイナリーオプションサインツールに体験版機能を機能を実装してみました https://interactivebrokers.work/start_mqlauth/ 体験版機能付きのBO用サインツー...