自動取引プログラム(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) (まるで、朝のワイドショーみたい)を作ってみました。
午前中の流動性の高さを期待するものです。