アカウント制限、ロット数制限に続き、今回は使用期限について簡単に解説します。
決まり文句ですが、プログラム作成・修正等は自己責任の上で行ってください。当方は一切の責任を負いません。
■概要YYYY年MM月DD日まで使用可能といった使用期限についての解説です。余談ですが、月単位のレンタルEAも1ヶ月単位で使用期限を掛けているだけと思われます。
一般的に接続先サーバの時刻を取得して制限をかけます。ローカルPC(MT4を起動している自分のPC)の時刻を取得して制限をかけることもできますが、PCの時刻を変更すれば簡単に無効化できるので、サーバの時刻で制限を掛けるのが一般的です。
従って、次に紹介する「注目する関数」も、サーバの時刻を取得する関数になります。注意点としては、日付関数の種類が多いので、掛け方にもバリエーションがあることくらいです。
■注目する関数接続先サーバの時刻を返す主な関数
・TimeCurrent()・・・現在の時刻(年月日時分秒)。
・Year()・・・現在の年。
・Month()・・・現在の月(1〜12)。
・Day()・・・現在の日(1〜31)。
・Hour()・・・現在の時(0〜23)。
・Minute()・・・現在の分(0〜59)。
・Seconds()・・・現在の秒(0〜59)。
■簡単なサンプル・サンプル1
datetime Hensuu1 = D'2009.02.01 00:00';
int start()
{
if(
TimeCurrent() < Hensuu1
){Print("OK");}else{Print("NG");}
return(0);
}
・サンプル2
int Hensuu1 = 2009;
int Hensuu2 = 2;
int start()
{
if(
Year() <= Hensuu1 && Month() < Hensuu2
){Print("OK");}else{Print("NG");}
return(0);
}
■簡単な解説サンプル1もサンプル2も、サーバ時刻2009.2.1より前まではOKをログ出力し、以降はNGをログ出力する内容です(くどいようですがMT4はTick単位で処理を実行するので、2009.2.1の0時ちょうど以降ではなく、あくまで2009.2.1以降Tickが動く毎にNGを出力)。
サンプル1はTimeCurrent()を使った例です。サンプル2はYear()とMonth()を使った例ですが、今回は月区切りなので、Day()やHour()までの指定は必要なかったということです。
もし使用期限を変更・解除したい場合は、Hensuu1〜2の値を書き換えるか、if文の条件判定を修正するだけです。今回の例では使用期限が過ぎてもif文の中の不等号の向きを>=のように変えても使えることが分かると思います。
変わった例では、Unix時(1970年元旦からの秒数)で制限を掛ける方法もあります。Time[0]で現在のUnix時を取得できるので、これに注目して適宜修正すれば問題ないと思います。
その他にも日付関数はいくつかあるので、もしソース中にTime〜という関数を見かけたらググるなどして調べてみると良いと思います。
どのような場合であれ、変数の中身と注目する関数を辿って修正するのが基本です。
-----
追記:少しタイトルや内容を変えて、初歩的なMQLプログラム解説というスタンスを取ることにしました(^^;
今までの記事も変更しています。