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のために、
わざわざコーディング量を増やして対応する必要もないでしょう。
code20072101

サンプルコード内での時間制御の解説

基本概念を確認しておきます。

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すれば日本時間
これだけです。

これを理解したうえで
プログラミングするだけで良いんです。

では、これらを踏まえたうえで、
サンプルコード内の時間制御の部分を確認してみましょう。
code20072102
上記はサンプルコード内の時間制御に関する一部ですが、
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プログラミングセミナーの詳細レビューへ