OANDAの記事を見ていたところ、
「あ、そういう規則だったんですね」という記事を見つけました。
ちなみに、私が作っているEAにはスプレッド制限を入れているので、スプレッドが広がり始めたらエントリーを控える方法である程度気にせず運用できるようにしておりました。
リンクを張ることができないので、「雇用統計 EA」などで検索すると出てきます。
●雇用統計の日付
雇用統計発表の日付は一般的に第一金曜日と言われていますが、正しくは違います。
第一金曜日でないパターンは下記の2種類です。
1:1,3月 1,2,3日が金曜日の時は8,9,10日に変更
2:5,7,11月 1日が金曜日の時は8日に変更
なるほど…ということは、サーバー時間がNY時間であれば、8時間30分に発表だから、8時間30分前からエントリーしないように制限するのは簡単だ。
// ------------------------------------------------------------------
// 米国雇用統計発表日チェック(サーバー時間がGMT+2(夏時間の時はGMT+3))
// ------------------------------------------------------------------
//統計発表が8時30分なので8時間30分前からtrueを返す関数
//週末持越し判定のために発表後もtrueを返し続けるため、週末のクローズまでtrueを返す
bool StatisticsOnEmployment(){
switch(Month()){
case 1:
case 3:
if(Day()>3&&Day()<11&&DayOfWeek()==5){
return true; //1,3月は1,2,3日が金曜日の時は8,9,10日に変更。1,3月は4~10日かつ金曜日であった場合true
}
break;
case 2:
case 5:
case 11:
if(Day()>1&&Day()<9&&DayOfWeek()==5){
return true;//5,7,11月 1日が金曜日の時は8日に変更。2~8日かつ金曜日であった場合true
}
break;
default:
if(Day()>0&&Day()<8&&DayOfWeek()==5){
return true; //通常月は1~7日かつ金曜日であった場合true
}
}
return false;
}
よーしエントリー条件に当て込み、これで完成だ!なんて思っていましたが…。
〇そういえば祝日が重なると木曜日に発表されるよなぁ…。
〇イレギュラーも非常に発生しそう…。
パラメーターでON、OFFできるようにして作成しイレギュラー時は手動で止めるのがやはりよさそうですね。
もしくは、万が一の止め忘れのために通知機能を実装し、雇用統計発表日に動いていたら通知するような仕組みがいいですかね。
カレンダー周りは難しいですね。
別途CSVでカレンダー読み込むような方式にしたほうが確実かもしれません。