今回は、MT4にタイマーを表示させる方法について説明していきます!
例えば、シグナル条件成立までの時間、ロウソク足確定までの時間を下記画像のように表示させることができます!
コード内容
- bool time_flag = false; //タイマーを表示させるためのフラグを準備
- //+——————————————————————+
- //| Custom indicator initialization function |
- //+——————————————————————+
- int OnInit()
- {
- EventSetMillisecondTimer(500); //タイマーを呼び出す間隔を設定
- return(0);
- }
- int deinit()
- {
- ObjectDelete(“time”); //タイマーを削除
- return(0);
- }
まずはタイマーを表示させるためのフラグを設定しておきます。
OnInit関数内では、EventSetMillisecondTimerでタイマーイベントの発生間隔を1msec単位で設定しています。これはタイマーのカウントダウンを明確に表示させるために細かく更新させるために行っています。
deinit関数ではタイマーを消す処理を行っています。
- int start()
- {
- //タイマーを表示させるフラグを立てる
- time_flag = true;
- double rsi = iRSI(NULL,0,14,PRICE_CLOSE,0);
- //LOWシグナルの条件
- if(rsi >= 55)
- {
- time_flag = false; //条件が成立したときフラグを降ろす
- }
- //HIGHシグナルの条件
- if(rsi <= 50)
- {
- time_flag = false; //条件が成立したときフラグを降ろす
- }
- return(0);
- }
続いてstart関数内では、タイマーを表示させる条件を設定していきます。
条件が成立していないときはタイマーを表示させないようにフラグを立てておきます。
そして、タイマーを表示させたい条件が成立したときにフラグを降ろします。
条件が成立している間、ロウソク足が確定するまでの時間カウントされていきます!
最後にタイマーを表示させる核となる部分の説明に入ります。
- void OnTimer()
- {
- string reminingtime = “time”;
- //フラグが降りている時、タイマーを表示させる
- if(time_flag == false)
- {
- string texttime = IntegerToString(Time[0]+Period()*60 – TimeCurrent());
- //オブシェクト情報を記載
- ObjectCreate(reminingtime, OBJ_LABEL, 0, 0, 0);//オブジェクトの種類をラベルにする
- ObjectSet(reminingtime, OBJPROP_CORNER, 1); //オブシェクトを表示させる位置を右上に設定
- ObjectSet(reminingtime, OBJPROP_XDISTANCE, 50); //表示させる位置(X軸方向)を設定
- ObjectSet(reminingtime, OBJPROP_YDISTANCE, 100); //表示させる位置(Y軸方向)を設定
- ObjectSet(reminingtime, OBJPROP_BACK, true); //背景表示をさせる
- ObjectSetText(reminingtime, texttime, 20, “MS ゴシック”, clrWhite); //表示させる文字を設定(内容、大きさ、フォント、色)
- }
- //フラグが立っている時は何も表示させない処理
- if(time_flag == true)
- {
- ObjectSetText(reminingtime,””,20,”MS ゴシック”,clrWhite);
- }
- }
if分でフラグが降りている時にタイマーを表示させるための処理を行い、実際に表示したい内容を記載していきます。
ObjectCreate ・・・何を表示させたいのか?
ObjectSet ・・・表示に関する内容。
ObjectSetText・・・表示させるテキスト内容。
これらを設定することで表示させていきます。
- string texttime = IntegerToString(Time[0]+Period()*60 – TimeCurrent());
ここでは現在の時間軸に対してロウソク足が確定するまでの時間を計算しています。
このように記載していくことで簡単にタイマーを設置させることができます。
実際に書いてみて、チャート上に表示させてい見てください!
サンプルコード
- bool time_flag = false; //タイマーを表示させるためのフラグを準備
- //+——————————————————————+
- //| Custom indicator initialization function |
- //+——————————————————————+
- int OnInit()
- {
- EventSetMillisecondTimer(500); //タイマーを呼び出す間隔を設定
- return(0);
- }
- int deinit()
- {
- ObjectDelete(“time”); //タイマーを削除
- return(0);
- }
- int start()
- {
- //タイマーを表示させるフラグを立てる
- time_flag = true;
- double rsi = iRSI(NULL,0,14,PRICE_CLOSE,0);
- //LOWシグナルの条件
- if(rsi >= 55)
- {
- time_flag = false; //条件が成立したときフラグを降ろす
- }
- //HIGHシグナルの条件
- if(rsi <= 50)
- {
- time_flag = false; //条件が成立したときフラグを降ろす
- }
- return(0);
- }
- void OnTimer()
- {
- string reminingtime = “time”;
- //フラグが降りている時、タイマーを表示させる
- if(time_flag == false)
- {
- string texttime = IntegerToString(Time[0]+Period()*60 – TimeCurrent());
- //オブシェクト情報を記載
- ObjectCreate(reminingtime, OBJ_LABEL, 0, 0, 0);//オブジェクトの種類をラベルにする
- ObjectSet(reminingtime, OBJPROP_CORNER, 1); //オブシェクトを表示させる位置を右上に設定
- ObjectSet(reminingtime, OBJPROP_XDISTANCE, 50); //表示させる位置(X軸方向)を設定
- ObjectSet(reminingtime, OBJPROP_YDISTANCE, 100); //表示させる位置(Y軸方向)を設定
- ObjectSet(reminingtime, OBJPROP_BACK, true); //背景表示をさせる
- ObjectSetText(reminingtime, texttime, 20, “MS ゴシック”, clrWhite); //表示させる文字を設定(内容、大きさ、フォント、色)
- }
- //フラグが立っている時は何も表示させない処理
- if(time_flag == true)
- {
- ObjectSetText(reminingtime,””,20,”MS ゴシック”,clrWhite);
- }
- }
以上になります。