取引時間を制限するプログラム~PART2

前々回の記事の続きです。

 

MT4では、サーバーが世界各国にあることから、時間の設定をする際には、それぞれの国の時間帯を調べる必要があり、何かと面倒です。とくに、米国のように、夏時間と冬時間があったりすると、そのたびにプログラムを変更しなければならないというのは、いかにも億劫です。

 

そこで、外部パラメーターには、常に世界標準時間(GMT)を入力するようにして、あとは、その国の時差だけを入力するようにすれば切り替えがかなり楽にできます。

 

たとえば、サーバーが日本にある場合、日本時間は「GMT+9」なので、外部パラメーターに「9」と入力するだけで、プログラムを変更できるというわけです。

 

しかし、これも簡単そうで意外に難しいんです。

上の画像を見ながら考えましょう。

 

たとえば、GMTにおいて、4/2の21時というのは、GMT+4の国では、4/3の1時でなければいけません。

 

しかし、単純に、足し算をしてしまうと、21時+4時=25時というわけのわからない結果になってしまいます。

 

そこで、足し算をした結果、24時以上になった場合には、その数から24を引いてやるとうまくいきます。

 

つまり、

 

開始時刻 = 開始時刻+時差;

if(開始時刻>23) 開始時刻-=24;

 

というような処理をすればよいわけです。

同様に、たとえば、GMTにおいて、4/2の2時というのは、GMT-4の国では、4/1の22時でなければいけません。

 

しかし、単純に、引き算をしてしまうと、2時-4時=-2時という、これもわけのわからない結果になってしまいます。

 

そこで、引き算をした結果、負の数になった場合には、その数に24を加えてやるとうまくいきます。

 

つまり、

 

開始時刻 = 開始時刻+時差;

if(開始時刻<0) 開始時刻+=24;

 

というような処理をすればよいわけです。

 

プログラム全体を見ると、

ちょっと見づらいですが、こんな感じになります。

コメントをお書きください

コメント: 5
  • #1

    enterprise (日曜日, 25 8月 2013 13:53)

    前々回に続いて、とても分かりやすいです。

  • #2

    寛爾 (木曜日, 29 8月 2013 22:42)

    おはようございまぁーす・・・。
    肝臓を大切に。(笑)
    by-寛爾

  • #3

    easakuseidaiko (金曜日, 30 8月 2013 16:34)

    >enterpriseさん

    素敵なお名前ですね。レスが遅くなりごめんなさい。コメントありがとうございました。

    >寛ちゃん

    コメントありがとう。
    びっくりしたよ。誰かと思った。また江戸っ子寿司で呑みましょう。

  • #4

    noname1 (土曜日, 10 5月 2014 19:58)

    初めまして yahoo知恵袋からです
    お教え頂いた内容で修正を行ってみましたが、なぜか期待通りの結果にならないようです。
    有償でも構いませんので一度ソースコードを見ていただくことは可能でしょうか?
    宜しくお願い致します。

  • #5

    easakuseidaiko (日曜日, 11 5月 2014 12:38)

    >noname1さん
    メニューの「お問い合わせ」へ入っていただき、ご連絡くださいませ。