これは、ユーザーが特定の曜日をオンまたはオフにできる取引日フィルターです。 さらに、この不安定な日に取引したくない場合に備えて、ユーザーは当日と前日の NFP データをオンまたはオフにすることができます。
さらに、ユーザーはクリスマス休暇や新年休暇のために休業することがあります。 取引時間を日数に制限する方法については、MQL4 の記事をご覧ください。アドバイザーは取引のみを行うようにプログラムされています特定の時間帯での変動を避ける。
日曜日から金曜日まで
ブール値: 取引時間を指定するかどうかを示します。特定の日付。 デフォルトは true で、毎日取引されます。
NFP_Friday
Bool: 非農業部門の雇用データである月の第 1 金曜日の金曜日に実行するかどうかトレード。 デフォルトはその日の取引です。
NFP_MondayBefore
Bool: 非農業部門の給与が変動する金曜日の前の木曜日に取引するかどうか。 デフォルトはその日の取引です。
クリスマス休暇
ブール: クリスマス休暇中の 12 月のカスタム定義期間トランザクションで流動性を低くしたいかどうか。
Christmas_DayBeginBreak
Double: これは、クリスマス休暇の開始日としてフィルタリングを開始する 12 月の日です。 デフォルトは 15 ですが、いつでも指定できます。
年末年始
ブール: 取引、年末年始休暇中は流動性が低い。
Newyears_DayEndBreak
Double: これは、年末年始の終わりである 1 月にフィルタリングを停止する日です。 デフォルトは 3 ですが、いつでも指定できます。
MT4 コード スニペット
extern string _7 = "—取引日—";
外部ブール日曜日= TRUE;
OUTER BOOL MONDAY = TRUE;
OUTER BOOL TUESDAY = TRUE;
OUTER BOOL WEDNESDAY = TRUE;
OUTER Boolean木曜日 = true;
外側のブール値 Friday = True;
外側のブール値 NFP_Friday = true;
外側のブール値 NFP_MondayBefore = true;
external bool ChristmasHolidays = true;
external double XMAS_DayBeginBreak = 15;
external bool NewyearsHolidays = true;
extern double Newyears_DayEndBreak = 3;
< p>bool DaytoTrade(){
bool daytotrade = false;
if ( DayOfWeek() == 0 && Sunday) daytotrade = true;
if(DayOfWeek() == 1 && Monday) daytotrade = true;
if ( DayOfWeek() == 2 && Tuesday) daytotrade = true;
if(DayOfWeek() == 3 && Wednesday) daytotrade = true;
if ( DayOfWeek() == 4 && 木曜日) daytotrade = true;
if(DayOfWeek() == 5 && Friday) daytotrade = true;
if ( DayOfWeek() == 5 && Day() < 8 && !NFP_Friday ) daytotrade = false;
If (DayOfWeek() == 4 && Day() < ; 8 && !NFP_MondayBefore) daytotrade = false;
if(Month() == 12 && Day() > XMAS_DayBeginBreak && !ChristmasHolidays ) daytotrade = false; < /p>
if(Month() == 1 && Day() < Newyears_DayEndBreak && !NewyearsHolidays) daytotrade = false;
return(daytotrade);}
説明
日付フィルター関数を DaytoTrade() と名付けました。
daytotrade (小文字) bool 変数を宣言し、false に初期化します。
次に、曜日ごとに取引すべき曜日と取引すべきでない曜日を示す線があります。 DayofWeek() 関数は、最後に確認されたサーバー時間の曜日を返します:
0 = 日曜日
1 = 月曜日< /p>
2 = 火曜日
3 = 水曜日
4 = 木曜日
5 = 金曜日
6 = 土曜日< /p>
各行のロジックは以下の通りです。 DayofWeek() が (==) Sunday (0) で、Sunday のアウター ブールが true (&& Sunday) の場合、daytotrade bool は true になります。 Sunday の外部ブール値が手動で false に設定されている場合、daytotrade は false に戻ります。 どの日も同じです。
次に、非農業部門の給与計算日、つまり毎月の最初の金曜日をフィルタリングします。
最後に、クリスマスと年末年始の休暇をフィルタリングします。
MT4 コードの使用
If (OrdersTotalMagicOpen()==0 && OpenBuy==true
&& DaytoTrade() ) {
// 注文
}
必要なものやるべきことは、注文の条件として DaytoTrade() 関数を使用することだけです。 次に、注文を出す前に、取引禁止日 (この日は false として表示されます) と休日の取引禁止日 (休日期間は false として表示されます) を宣言しているかどうかがチェックされます。
通常、ここで説明する TradeTime() と組み合わせて DaytoTrade() 関数を使用します。