クライアントターミナルプロパティ

カスタムインジケータは便利な表示の為の多くの設定を持っています。

クライアントターミナルの情報は、 TerminalInfoInteger()関数とTerminalInfoString()関数で取得出来ます。
この関数の引数はENUM_TERMINAL_INFO_INTEGER列挙とENUM_TERMINAL_INFO_STRING列挙の値を使用します。

ENUM_TERMINAL_INFO_INTEGER

ID詳細
TERMINAL_BUILDintクライアントターミナルのビルドバージョン
TERMINAL_COMMUNITY_ACCOUNTboolMQL5コミュニティアカウント
TERMINAL_COMMUNITY_CONNECTIONboolMQL5コミュニティ接続
TERMINAL_CONNECTEDboolトレードサーバーへの接続
TERMINAL_DLLS_ALLOWEDboolDLL使用許可
TERMINAL_TRADE_ALLOWEDboolトレード許可
TERMINAL_EMAIL_ENABLEDboolターミナルで指定したe-mail(SMTPサーバー)送信許可
TERMINAL_FTP_ENABLEDboolターミナルで指定したFTPサーバーへのレポート送信許可
TERMINAL_NOTIFICATIONS_ENABLEDboolスマートフォンへの通知許可
TERMINAL_MAXBARSintチャート上でのバー数上限
TERMINAL_MQIDboolMetaQuotesサービスからのプッシュ通知許可
TERMINAL_CODEPAGEintクライアントターミナルにイントールされた言語のコードページ数
TERMINAL_CPU_CORESintCPUコアの数
TERMINAL_DISK_SPACEintターミナルをインストールしたカレントドライブの空き容量(MB単位)
TERMINAL_MEMORY_PHYSICALint物理メモリの容量(MB単位)
TERMINAL_MEMORY_TOTALintターミナル(エージェント)で使用可能なメモリ(MB単位)
TERMINAL_MEMORY_AVAILABLEintターミナル(エージェント)の空きメモリ(MB単位)
TERMINAL_MEMORY_USEDintターミナル(エージェント)の使用メモリ(MB単位)
TERMINAL_SCREEN_DPIintディスプレイ解像度は1インチ当たりのドット数(DPI)で測られます。 この値を知る事で、異なるディスプレイ解像度でも同じように見えるグラフィカルオブジェクトのサイズを決定する事が出来ます。
TERMINAL_PING_LASTintトレードサーバーへの最後のping値を知る事が出来ます。分解能は1µsecです

Key ID詳細
TERMINAL_KEYSTATE_LEFTint"左矢印"キーの状態
TERMINAL_KEYSTATE_UPint"上矢印"キーの状態
TERMINAL_KEYSTATE_RIGHTint"右矢印"キーの状態
TERMINAL_KEYSTATE_DOWNint"下矢印"キーの状態
TERMINAL_KEYSTATE_SHIFTint"Shift"キーの状態
TERMINAL_KEYSTATE_CONTROLint"Ctrl"キーの状態
TERMINAL_KEYSTATE_MENUint"Menu"キーの状態
TERMINAL_KEYSTATE_CAPSLOCKint"Caps Lock"キーの状態
TERMINAL_KEYSTATE_NUMLOCKint"NumLock"キーの状態
TERMINAL_KEYSTATE_SCRLOCKint"Scroll Lock"キーの状態
TERMINAL_KEYSTATE_ENTERint"Enter"キーの状態
TERMINAL_KEYSTATE_INSERTint"Insert"キーの状態
TERMINAL_KEYSTATE_DELETEint"Delete"キーの状態
TERMINAL_KEYSTATE_HOMEint"Home"キーの状態
TERMINAL_KEYSTATE_ENDint"End"キーの状態
TERMINAL_KEYSTATE_TABint"Tab"キーの状態
TERMINAL_KEYSTATE_PAGEUPint"PageUp"キーの状態
TERMINAL_KEYSTATE_PAGEDOWNint"PageDown"キーの状態
TERMINAL_KEYSTATE_ESCAPEint"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_BALANCEdoubleMQL5コミュニティの残高

ファイル操作は、2つのディレクトリで行う事が出来ます。
対応するパスはTERMINAL_DATA_PATHとTERMINAL_COMMONDATA_PATHプロパティを取得して使用します。

ENUM_TERMINAL_INFO_STRING

ID詳細
TERMINAL_LANGUAGEstringターミナルの言語
TERMINAL_COMPANYstringターミナル会社
TERMINAL_NAMEstringターミナル名
TERMINAL_PATHstringターミナルを起動したフォルダパス
TERMINAL_DATA_PATHstringデータが格納されるフォルダパス
TERMINAL_COMMONDATA_PATHstringインストールされたターミナルの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) );
}

Twitterでフォローしよう

おすすめの記事