自動取引プログラム(EA)に、市場に関連した時間制限を備えようとすると、時期に応じて、欧米の標準時間(冬)とサマータイム(夏)とを切り替え、時間補正を行わなければならないことがあります。


その切替時期を自動判定させるには、例えば、


欧州の場合

for(j=31; j>24; j--)
{
LN_SS = StrToTime(Year()+".3."+j+" 01:00");
if(TimeDayOfWeek(LN_SS) == 0) break;
}
for(j=31; j>24; j--)
{
LN_WS = StrToTime(Year()+".10."+j+" 01:00");
if(TimeDayOfWeek(LN_WS) == 0) break;
}


米国の場合

for(j=8; j<=14; j++)
{
NY_SS = StrToTime(Year()+".3."+j+" 02:00");
if(TimeDayOfWeek(NY_SS) == 0) break;
}
for(j=1; j<=7; j++)
{
NY_WS = StrToTime(Year()+".11."+j+" 02:00");
if(TimeDayOfWeek(NY_WS) == 0) break;
}


こんな感じ。


ただ、思うんですが、

年4回しか働かない機能を、常時、作動し続ける必要ってあるはてなマーク


1年に4回だけ、プログラム内の時刻設定を±1すればいいだけ。

または、ロンドン・ニューヨークのパラメータを外部入力にして、

初期関数(init( ))内で、その引数に応じて、時間を切り替えるようにするだけでも十分では…。



ところで、


シンプル化の流れに逆行するようですが、

東京・ロンドン・ニューヨーク、それぞれの午前だけ(朝7時から11時まで)にエントリー時間を制限する Wander_morn(ing) (まるで、朝のワイドショーみたい)を作ってみました。


午前中の流動性の高さを期待するものです。