EAをプログラミングする際に最も難しい処理の1つは、
時間に関するロジックでしょう。
なぜなら、
・日本時間とサーバー時間が異なっている
・FX会社毎にMT4のサーバー時間が異なっている
・日本にはない夏時間、冬時間という概念がある
からです。
私は全てのFX会社のMT4のサーバー時間を把握しているわけではないですが、
代表的なMT4のサーバー時間としては、
[冬時間GMT+2、夏時間GMT+3]
[GMT+9]
[GMT+0]
というものが存在します。
つまり、全てのMT4で正常にEAを稼働させるためには、
これらのサーバー時間を理解したうえで
時間制御のプログラミングをしなければいけないわけです。
EAプログラミングセミナーで提供されているサンプルコード内にも
サーバー時間の制御に関する記述があり、
かなり複雑な処理を行っている印象を持ちますが、
安心してください。
結論から言えば、
プログラミングする際のMT4のサーバー時間は
[冬時間GMT+2、夏時間GMT+3]
これを考えるだけでOK
です。
これ以外の、
[GMT+9]
[GMT+0]
などは無視してもらっても構いません。
MT4のサーバー時間のほとんどは[冬時間GMT+2、夏時間GMT+3]
MT4を提供しているFX会社(ブローカー)は
世界中にたくさん存在します。
そして、それぞれのFX会社の都合で
MT4のサーバー時間が決まっているんですが、
実際の話、
世界中のMT4の9割以上は
[冬時間GMT+2、夏時間GMT+3]
を採用しています。
日本では、
楽天FX、Oanda Japan、外為ファイネスト、FOREX EXCHANGE
などの代表的なFX会社では
[冬時間GMT+2、夏時間GMT+3]を採用しています。
海外でも、
GemForex、XM、AXIORY、Tradeview、Titan FX
などの代表的なFX会社では
[冬時間GMT+2、夏時間GMT+3]を採用しています。
おそらく、あなたがEAを稼働させる際も、
上記に挙げたFX会社のどれかで
稼働させるのではないでしょうか。
ならば、EAをプログラミングする際も
サーバー時間が[冬時間GMT+2、夏時間GMT+3]であることを想定して
プログラミングするだけで構わないわけです。
それ以外の[GMT+9]や[GMT+0]を採用しているMT4では、
実際問題として、EAを稼働させないわけですから、
プログラミングする必要はありませんね
また、
仮に、プログラミングしたEAを販売する場合でも、
注意書きなどで、
「[冬時間GMT+2、夏時間GMT+3]を採用しているMT4で稼働してください」
と一言添えておくだけで済みます。
これで世界中のMT4の9割以上に対応していることになります。
こう言っては何ですが、
世界中で1割未満しか存在しないMT4のために、
わざわざコーディング量を増やして対応する必要もないでしょう。
サンプルコード内での時間制御の解説
基本概念を確認しておきます。
GMTとは、Greenwich Mean Timeの略で、
グリニッジ標準時と習った人も多いでしょう。
要するに、
ロンドンのグリニッジ天文台という場所が、
世界時間の基準になっていて、そこがGMT+0になります。
そして、その場所からどのくらい離れているかで、
時差を表します。
日本だと9時間進んでいるので、
GMT+9になります。
そして、MT4のサーバー時間は、
サマータイム制を導入しているので、
冬だと2時間、夏だと3時間進んでいることになるので、
[冬時間GMT+2、夏時間GMT+3]
になります。
では、日本時間との差はどうなるのか。
冬時間では、
サーバー時間GMT+2、日本時間GMT+9なので、
9-2=7という計算になり、
サーバー時間に+7すれば日本時間になります。
夏時間では、
サーバー時間GMT+3、日本時間GMT+9なので、
9-3=6という計算になり、
サーバー時間に+6すれば日本時間になります。
参考までに、
冬時間:11月第1日曜日~3月第2日曜日
夏時間: 3月第2日曜日~11月第1日曜日
です。
試しに、あなたが使っているMT4の
現在のサーバー時間を確認してみてください。
今は夏時間なので、
そのサーバー時間に+6すれば、
日本時間になっているはずです。
要するに、覚えることは、
冬時間では、サーバー時間に+7すれば日本時間
夏時間では、サーバー時間に+6すれば日本時間
これだけです。
これを理解したうえで
プログラミングするだけで良いんです。
では、これらを踏まえたうえで、
サンプルコード内の時間制御の部分を確認してみましょう。
上記はサンプルコード内の時間制御に関する一部ですが、
135行目を見てください。
if文が書かれていますが、
これは基本的な構文ですね。
ここでGMTが2 or 3の時に、
サーバー時間が1時 or 2時であれば、
エントリーできるようにしています。
つまり、
[冬時間GMT+2、夏時間GMT+3]であれば、
サーバー時間が1 or 2の時にエントリーできる仕様です。
日本時間に変換すると、
冬時間なら+7して、8時 or 9時
夏時間なら+6して、7時 or 8時
の時にエントリーできる仕様です。
これだけ理解していれば問題ないです。
これ以降、141行目からは、
今度はサーバー時間がGMT+9の場合の処理も書かれていますが、
無視で構いません。
自分で自作EAを作成する場合も、
141行目からのGMT+9の場合の処理は書く必要はないです。
以上、サーバー時間のプログラム制御に関する解説でした。
再度確認ですが、
あれこれ難しく考える必要はないです。
要するに、
MT4のサーバー時間は、[冬時間GMT+2、夏時間GMT+3]
日本時間との差は、冬時間で+7、夏時間で+6
これだけを覚えておけば大丈夫で、
それに合わせてプログラミングするだけです。
あなただけのオリジナルのEAを作ってみませんか?
→EAプログラミングセミナーの詳細レビューへ