カスタムインジケータは便利な表示の為の多くの設定を持っています。
クライアントターミナルの情報は、 TerminalInfoInteger()関数とTerminalInfoString()関数で取得出来ます。
この関数の引数はENUM_TERMINAL_INFO_INTEGER列挙とENUM_TERMINAL_INFO_STRING列挙の値を使用します。
ENUM_TERMINAL_INFO_INTEGER
ID | 型 | 詳細 |
---|---|---|
TERMINAL_BUILD | int | クライアントターミナルのビルドバージョン |
TERMINAL_COMMUNITY_ACCOUNT | bool | MQL5コミュニティアカウント |
TERMINAL_COMMUNITY_CONNECTION | bool | MQL5コミュニティ接続 |
TERMINAL_CONNECTED | bool | トレードサーバーへの接続 |
TERMINAL_DLLS_ALLOWED | bool | DLL使用許可 |
TERMINAL_TRADE_ALLOWED | bool | トレード許可 |
TERMINAL_EMAIL_ENABLED | bool | ターミナルで指定したe-mail(SMTPサーバー)送信許可 |
TERMINAL_FTP_ENABLED | bool | ターミナルで指定したFTPサーバーへのレポート送信許可 |
TERMINAL_NOTIFICATIONS_ENABLED | bool | スマートフォンへの通知許可 |
TERMINAL_MAXBARS | int | チャート上でのバー数上限 |
TERMINAL_MQID | bool | MetaQuotesサービスからのプッシュ通知許可 |
TERMINAL_CODEPAGE | int | クライアントターミナルにイントールされた言語のコードページ数 |
TERMINAL_CPU_CORES | int | CPUコアの数 |
TERMINAL_DISK_SPACE | int | ターミナルをインストールしたカレントドライブの空き容量(MB単位) |
TERMINAL_MEMORY_PHYSICAL | int | 物理メモリの容量(MB単位) |
TERMINAL_MEMORY_TOTAL | int | ターミナル(エージェント)で使用可能なメモリ(MB単位) |
TERMINAL_MEMORY_AVAILABLE | int | ターミナル(エージェント)の空きメモリ(MB単位) |
TERMINAL_MEMORY_USED | int | ターミナル(エージェント)の使用メモリ(MB単位) |
TERMINAL_SCREEN_DPI | int | ディスプレイ解像度は1インチ当たりのドット数(DPI)で測られます。 この値を知る事で、異なるディスプレイ解像度でも同じように見えるグラフィカルオブジェクトのサイズを決定する事が出来ます。 |
TERMINAL_PING_LAST | int | トレードサーバーへの最後のping値を知る事が出来ます。分解能は1µsecです |
Key ID | 型 | 詳細 |
---|---|---|
TERMINAL_KEYSTATE_LEFT | int | "左矢印"キーの状態 |
TERMINAL_KEYSTATE_UP | int | "上矢印"キーの状態 |
TERMINAL_KEYSTATE_RIGHT | int | "右矢印"キーの状態 |
TERMINAL_KEYSTATE_DOWN | int | "下矢印"キーの状態 |
TERMINAL_KEYSTATE_SHIFT | int | "Shift"キーの状態 |
TERMINAL_KEYSTATE_CONTROL | int | "Ctrl"キーの状態 |
TERMINAL_KEYSTATE_MENU | int | "Menu"キーの状態 |
TERMINAL_KEYSTATE_CAPSLOCK | int | "Caps Lock"キーの状態 |
TERMINAL_KEYSTATE_NUMLOCK | int | "NumLock"キーの状態 |
TERMINAL_KEYSTATE_SCRLOCK | int | "Scroll Lock"キーの状態 |
TERMINAL_KEYSTATE_ENTER | int | "Enter"キーの状態 |
TERMINAL_KEYSTATE_INSERT | int | "Insert"キーの状態 |
TERMINAL_KEYSTATE_DELETE | int | "Delete"キーの状態 |
TERMINAL_KEYSTATE_HOME | int | "Home"キーの状態 |
TERMINAL_KEYSTATE_END | int | "End"キーの状態 |
TERMINAL_KEYSTATE_TAB | int | "Tab"キーの状態 |
TERMINAL_KEYSTATE_PAGEUP | int | "PageUp"キーの状態 |
TERMINAL_KEYSTATE_PAGEDOWN | int | "PageDown"キーの状態 |
TERMINAL_KEYSTATE_ESCAPE | int | "Esc"キーの状態 |
#property indicator_chart_window // カスタムインジケータをチャートウインドウに表示する
//+------------------------------------------------------------------+
//| OnInit(初期化)イベント
//+------------------------------------------------------------------+
int OnInit()
{
EventSetTimer(1); // 1秒毎にタイマーイベント発生
return( INIT_SUCCEEDED );
}
#define KEYMASK_TOGGLED 0x01 // キートグル判定
#define KEYMASK_ON 0x80 // キー押下判定
//+------------------------------------------------------------------+
//| タイマーイベント
//+------------------------------------------------------------------+
void OnTimer(){
int temp_info = 0; // キー状態
bool temp_push = false; // キー押下判定
bool temp_toggle = false; // キートグル判定
// 左矢印キー状態取得
temp_info = TerminalInfoInteger( TERMINAL_KEYSTATE_LEFT );
if ( (temp_info & KEYMASK_ON) == KEYMASK_ON ) { // キー押下判定
temp_push = true;
}
if ( (temp_info & KEYMASK_TOGGLED) == KEYMASK_TOGGLED ) { // キートグル判定
temp_toggle = true;
}
printf( "キー取得情報:0x%x , キー押下判定:%s , キートグル判定:%s "
, temp_info
, (string)temp_push
, (string)temp_toggle
);
}
//+------------------------------------------------------------------+
//| OnCalculate(tick受信)イベント
//| カスタムインジケータ専用のイベント関数
//+------------------------------------------------------------------+
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[], // Tick出来高
const long &volume[], // Real出来高
const int &spread[]) // スプレッド
{
return( rates_total ); // 戻り値設定:次回OnCalculate関数が呼ばれた時のprev_calculatedの値に渡される
}
ENUM_TERMINAL_INFO_DOUBLE
ID | 型 | 詳細 |
---|---|---|
TERMINAL_COMMUNITY_BALANCE | double | MQL5コミュニティの残高 |
ファイル操作は、2つのディレクトリで行う事が出来ます。
対応するパスはTERMINAL_DATA_PATHとTERMINAL_COMMONDATA_PATHプロパティを取得して使用します。
ENUM_TERMINAL_INFO_STRING
ID | 型 | 詳細 |
---|---|---|
TERMINAL_LANGUAGE | string | ターミナルの言語 |
TERMINAL_COMPANY | string | ターミナル会社 |
TERMINAL_NAME | string | ターミナル名 |
TERMINAL_PATH | string | ターミナルを起動したフォルダパス |
TERMINAL_DATA_PATH | string | データが格納されるフォルダパス |
TERMINAL_COMMONDATA_PATH | string | インストールされたターミナルのCommonフォルダへのフルパス |
//+------------------------------------------------------------------+
//| 初期化
//|------------------------------------------------------------------|
void OnInit(){
Print( "ビルドVer :", TerminalInfoInteger(TERMINAL_BUILD) );
Print( "言語 :", TerminalInfoString(TERMINAL_LANGUAGE) );
Print( "証券会社名 :", TerminalInfoString(TERMINAL_COMPANY) );
Print( "ターミナル名 :", TerminalInfoString(TERMINAL_NAME) );
Print( "ターミナルフォルダ:", TerminalInfoString(TERMINAL_PATH) );
Print( "データフォルダ :", TerminalInfoString(TERMINAL_DATA_PATH) );
Print( "Commonフォルダ :", TerminalInfoString(TERMINAL_COMMONDATA_PATH) );
}