【MQL4テクニック】インジケータから自動でチャートを整列する方法。標準で用意されていない?今すぐに実装できます!

MQL4テクニック

mql4にはチャートを操作するための関数が充実していますが、実はチャートを整列する関数は用意されていません。

ではどのように実装するのか。たった数行のコードで実現可能です。

ショートカットキーを送信する

MT4にはショートカット機能が備えられており、[Alt] + [R] キーを押すことでチャートを整列することができます。

つまり、プログラムから[Alt] + [R]キーを押してあげれば簡単に実装することができます。

実装してみる (DLLを使用を許可するにチェック)

ライブラリの読み込み

まずは標準ライブラリのWinUser32.mqhをincludeします。

#include <WinUser32.mqh>

ショートカットを送信する関数を定義

以下の関数を定義してください。

void ArrangeWindows(){
   keybd_event(18, 0, 0, 0); //Altキーを押す
   keybd_event(82, 0, 0, 0); //Rキーを押す
   keybd_event(18, 0, KEYEVENTF_KEYUP, 0); //Altキーを離す
   keybd_event(82, 0, KEYEVENTF_KEYUP, 0); //Rキーを離す
}

keybd_event()関数を使用することで、キーを押したり離したりの動作を送信することができます。

18はAltキー、82はRキーが割り当てられています。

その他のキーコードはこちらから確認してください。

関数を実行

あとはこの関数を実行するだけで、任意のタイミングでチャートを整列することができます。

今回はインジケータの挿入時に実行してみます。

int OnInit(){
   ArrangeWindows(); //関数を実行して[Alt] + [R]を送信
   return(INIT_SUCCEEDED);
}
あなたのやりたいことがきっと見つかる!
MQL4テクニック 逆引き集 はこちら

ソースコード全体

#property strict
#property indicator_chart_window

#include <WinUser32.mqh> //ライブラリを読み込む

int OnInit(){

   ArrangeWindows();//[Alt] + [R]を送信
   return(INIT_SUCCEEDED);
}

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);
}

//[Alt] + [R]を送信する関数を定義
void ArrangeWindows(){
   keybd_event(18, 0, 0, 0);
   keybd_event(82, 0, 0, 0);
   keybd_event(18, 0, KEYEVENTF_KEYUP, 0);
   keybd_event(82, 0, KEYEVENTF_KEYUP, 0);
}

注意

[Alt] + [R]キーのショートカットが他のソフトウェアなどで使用されている場合、正常に動作しない可能性があります。

例として、NVIDIAから提供されている「GeForce Experience」がインストールされている場合、ショートカットキーが既に割り当てられてしまっているため動作不良を起こします。

対策として各自でショートカットキーを変更していただければ問題ありません。

以上のことを注意すれば、あとは簡単なプログラムで実装が可能なので是非活用してください。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。