本ページはプロモーションが含まれています

EA全般

MT4 EAの週末クローズは必要?窓のリスクと決済時刻・コード

トム

・本業エンジニア/EAのFX自動売買歴7年/ブログ歴6年
・首都圏在住30代
・MT4 EAを使った FXの自動売買で年間10万円の利益達成

EAは週末クローズした方が安全です。土日も為替は動いており、月曜の再開時に価格が飛ぶ「窓」で、EAの損切りが設定した価格より不利なところで約定するからです。

週末クローズはEA運用の基本ですが、重要性を知らないまま放置すると大損につながります。私もかつては気づかず、痛い目に遭った経験があります。

判断に必要なのは、週末の持ち越しで何が起きるか、金曜の何時までに決済するか、週末クローズ機能のないEAをどう決済するか、の3点です。MQL4での実装例も載せています。

この記事でわかること

  • 週末持ち越しの3つのリスク(窓・スワップ・週明けのスプレッド)
  • 損切り幅別に見た、窓による損失の試算
  • 金曜の決済時刻の目安(日本時間・サーバー時間)
  • MQL4での週末クローズの実装例と、機能のないEAの決済方法
カレンダーのイメージ画像

MT4のEAは週末クローズするべき?

EAの週末クローズとは、金曜の市場終了前にEAの保有ポジションをすべて決済し、ポジションを持たずに土日を越すことです。

結論は「した方がよい」です。EAによっては、週末クローズしない方がバックテストの成績は良くなります。それでも週末クローズをする目的は、成績を上げることではなく、想定外の大きな損失を避けることです。

週末にポジションを持ち越す3つのリスク

週末をまたいでポジションを持つと、平日には起きない3つのコストが重なります。月曜の窓による損切りの滑り、スワップポイントの付与、週明け早朝のスプレッド拡大です。影響がいちばん大きいのは窓で、残りの2つは誤解されやすい点を押さえておけば足ります。

リスク1:週明けの窓で損切りが想定より滑る

土日はブローカーのサーバーが止まり、EAも動きません。それでも為替レートは動き続けています。

月曜に業者のサーバーが動き出すと、いきなりチャートが飛んで「窓」ができます。この窓がEAの損切り価格(ストップロス)を飛び越えると、想定を超えた損失になります。

価格 週末ギャップ 時間 ストップロス 金曜日 月曜日
金曜の終値設定した損切り月曜の始値実際の損切り価格損失
想定101円100円―100円1円
窓が開いた場合101円100円99円99円2円(想定の2倍)

週末にポジションを持ち越すと、損切り幅が自分で決めた値になりません。1回の大きな損切りを避けることは、成績の安定にもつながります。過去には週明けに1円以上の窓が開いたことが何度もあり、新型コロナウイルスの感染拡大と原油急落が重なった2020年3月9日(月)はその代表例で、ドル円は週明け早朝から下に窓を開け、一時101円台まで下げました。

損切り幅が狭いEAほど、同じ窓でも損失の倍率が大きくなります。ドル円を1万通貨(1pips=100円)で持ち、月曜の始値が損切り価格を50pips超えて開いた場合を試算しました。

EAのタイプ損切り幅想定の損失窓50pipsでの損失倍率
スキャルピング10pips1,000円6,000円(60pips)6倍
デイトレード30pips3,000円8,000円(80pips)約2.7倍
スイング100pips10,000円15,000円(150pips)1.5倍

50pipsは試算のための仮定で、実際の窓の大きさは週ごとに違います。それでも、損切り幅10pipsのEAにとって50pipsの窓は、損切り6回分を一度に払うのと同じです。

併せて読む

リスク2:スワップは週末ではなく水曜に3日分つく

「週末を持ち越すとスワップが3日分かかる」と思われがちです。実際に3日分がまとめて付与されるのは、多くの業者で水曜日のロールオーバー(ポジションの翌日への持ち越し)です。

FXは約定の2営業日後に受け渡しをするため、土日の2日分が水曜に前倒しで付与されます。金曜に決済しても、週末分のスワップを避けたことにはなりません。

たとえば1日あたり−50円のマイナススワップがつくポジションなら、水曜のロールオーバーで−150円がまとめて差し引かれます(金額は説明用の仮定です)。

マイナススワップのポジションを持つEAで意識したいのは、金曜よりも水曜のニューヨーククローズをまたぐかどうかです。付与日は業者や各国の祝日で変わるため、口座を開いている業者のスワップカレンダーで確認してください。

リスク3:週明け早朝はスプレッドが広がる

国内のFX業者の多くは、月曜の午前7時前後に取引を再開します。再開直後は市場参加者が少なく、スプレッドが平常時より大きく広がりやすい時間帯です。

週末に大きなニュースがあると、土曜早朝の終値と月曜の始値が大きく離れることもあります。損切りの逆指値注文は再開時のレートで約定するため、窓とスプレッド拡大の両方が損失に上乗せされます。

週末クローズの要否はバックテストで判定できる?

週末クローズの要否は、バックテストの成績比較では判定できません。

試しに、週末クローズしなかった場合のトレードをバックテストで見てみましょう。チャートに穴が開いたようになっている箇所が窓で、金曜から月曜の価格が飛んでいます。

週末の窓の真ん中で損切りされているバックテストのチャート

バックテストと本番の損切りの違い

バックテスト
窓の真ん中あたり(設定した損切り価格ちょうど)で損切りされる。実際には土日はトレード不可なので、あり得ない約定
本番
月曜の朝、窓が開いてすぐの価格で損切りされる。損切り幅はバックテストより必ず大きくなる

バックテストで週末クローズのあり・なしを比べると、なしの方が損切りを小さく見積もった有利な条件になります。そのため、バックテストの結果で週末クローズの要否を決めても意味がありません。

あわせて読む

週末クローズすべきEAとしなくてよいEA

週末クローズが必須かどうかは、EAが狙う値幅で決まります。

EAのタイプ狙う値幅週末クローズ
スキャルピング数pips〜10pips必須。窓1つで数十回分の利益が消える
デイトレード10〜50pips必須。本来は当日中に決済するロジック
スイング(短め)50〜100pips推奨。窓の影響が無視できない
スイング(長め)数百pips〜不要な場合が多い。途中でクローズする弊害の方が大きい

狙う値幅が小さいほど週末クローズの重要性は高くなります。逆に、週末の値動きが気にならないほど大きな値幅を狙うスイングEAは例外です。

週末クローズは金曜の何時に決済する?

週末クローズは、ニューヨーク時間の金曜午前中、日本時間では金曜の深夜までに済ませるのが目安です。

FX市場はニューヨーク時間の金曜17時に閉まります。日本時間では土曜の朝6時(米国夏時間は5時)です。閉場直前は流動性が下がりスプレッドが広がるため、余裕を持ってクローズします。

基準日本時間(冬)日本時間(夏)備考
市場の閉場土曜 6:00土曜 5:00この時刻以降は決済できない
クローズの目安金曜 23:00〜翌 2:00金曜 22:00〜翌 1:00NY時間の午前中まで。流動性があるうちに決済
新規エントリー停止の目安金曜 21:00以降金曜 20:00以降週末までに決済しきれないポジションを作らない

MT4のサーバー時間は業者によって異なり、多くはGMT+2(夏はGMT+3)です。EAのクローズ時間は「サーバー時間」で設定するため、日本時間との時差(冬7時間・夏6時間)を必ず確認してください。

サーバー時間がGMT+2(米国夏時間はGMT+3)の業者なら、夏も冬も同じ時刻を設定すれば済みます。サーバー時間が米国のサマータイムに合わせて切り替わり、ニューヨーク時間との差が1年中変わらないからです。

基準サーバー時間(GMT+2/+3)日本時間(冬)日本時間(夏)
市場の閉場土曜 0:00土曜 6:00土曜 5:00
クローズの目安金曜 16:00〜19:00金曜 23:00〜翌 2:00金曜 22:00〜翌 1:00
新規エントリー停止金曜 14:00以降金曜 21:00以降金曜 20:00以降

国内業者の取引時間と週末の扱い

国内業者の取引時間は、おおむね月曜の朝7時前後から土曜の朝6〜7時前後までで、細かな時刻は会社ごとに異なります。たとえばFXTFのMT4は、標準時間で月曜7:05〜土曜6:50(米国夏時間は土曜5:50まで)です。

国内業者では、週末にポジションを持ち越しても強制的に決済されることは通常ありません。その代わり、月曜の再開直後にロスカットが不利なレートで執行されることがあり、口座残高を超える損失が出れば不足金の入金が必要です。

週末クローズをMQL4で実装するコード

MQL4での実装例です。サーバー時間の金曜19時を過ぎたらこのEAのポジションをすべて決済し、金曜14時以降は新規エントリーを止めます。

曜日と時刻は、TimeCurrent()(最後に受信したサーバー時刻)からTimeDayOfWeek()とTimeHour()で取り出します。曜日は0が日曜、5が金曜です。GMT+2/+3の業者なら、夏と冬で設定を変える必要はありません。

mql4
// 週末クローズ(サーバー時間ベース。GMT+2/+3の業者なら夏冬共通)
input int CloseHour     = 19;    // 金曜のこの時刻(サーバー時間)以降は全決済
input int StopEntryHour = 14;    // 金曜のこの時刻(サーバー時間)以降は新規エントリーしない
input int MagicNumber   = 12345; // このEAの注文を見分ける番号

// 金曜の決済時刻を過ぎたか(TimeCurrent=最後に受信したサーバー時刻)
bool IsWeekendCloseTime()
{
   datetime now = TimeCurrent();
   return (TimeDayOfWeek(now) == 5 && TimeHour(now) >= CloseHour);
}

// 金曜の新規エントリー停止時刻を過ぎたか
bool IsStopEntryTime()
{
   datetime now = TimeCurrent();
   return (TimeDayOfWeek(now) == 5 && TimeHour(now) >= StopEntryHour);
}

// このEAが持つポジションをすべて決済する
void CloseAllPositions()
{
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if(OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if(OrderType() != OP_BUY && OrderType() != OP_SELL) continue; // 待機注文は対象外

      RefreshRates();
      double price = (OrderType() == OP_BUY) ? Bid : Ask;
      if(!OrderClose(OrderTicket(), OrderLots(), price, 3, clrNONE))
         Print("決済失敗 ticket=", OrderTicket(), " error=", GetLastError());
   }
}

void OnTick()
{
   if(IsWeekendCloseTime())
   {
      CloseAllPositions();   // 失敗しても次のティックで再試行される
      return;
   }
   if(IsStopEntryTime()) return;   // 金曜午後は新規エントリーしない

   // ここに通常のエントリー処理を書く
}

決済に失敗したときは、次のティックで再び決済を試みます。指値・逆指値の待機注文は残るため、必要ならOrderDelete()で削除する処理を足してください。実口座で使う前に、デモ口座で金曜の動作を確かめてください。

週末クローズ機能の有無で対処を分ける

週末クローズを確実に続けるには、EA自体に機能があるかどうかで対処を変えます。機能があればパラメータを正しく設定するだけで済み、なければ専用ツールか手動で決済します。どちらの場合も、ポジションが実際に決済されたかを金曜の夜に確かめる習慣が安全です。

週末クローズ機能がついたEAを選ぶ

週末クローズ機能の有無はEAごとに違います。これから選ぶなら機能つきのEAが確実です。販売ページのパラメータ説明で、次の項目を確認します。

  • 「週末決済」「FridayClose」「金曜クローズ」などのパラメータがあるか
  • クローズ時刻をサーバー時間で指定できるか
  • 新規エントリーの停止時刻も別に設定できるか
あわせて読む

週末クローズ機能のないEAで対処する方法

方法手間確実さ
専用ツールで一括決済低。設定すれば毎週自動高
金曜夜に手動で全決済毎週必要高。忘れるリスクあり
金曜夜にEAをOFF低低。EAを止めてもポジションは残るので決済にはならない

「MT4を閉じる」「自動売買ボタンをOFFにする」だけではポジションは決済されません。必ずポジション自体を決済してください。

機能のないEAで週末クローズを自動化するなら、専用ツールが手軽です。「いろいろ条件でMT4を停止・再開!」は、時間帯やスプレッドなどの条件でEAを停止・再開でき、MT4で稼働しているEAをまとめて制御できます。

スプレッドフィルタ、時間帯フィルタによりEA停止・再開を自動で行います!ポジションの同時決済も可能!スプレッドフィルタ、時間帯フィルタによりEA停止・再開を自動で行います!ポジションの同時決済も可能! | GogoJungle

手動決済の考え方は以下の記事で解説しています。

併せて読む

※本記事はMT4を前提に解説していますが、週末クローズの必要性という考え方自体はMT5でも共通です。紹介したコードや専用ツールはMT4(MQL4)向けのため、MT5で利用する場合はMQL5対応版の有無を個別に確認してください。

EAの週末クローズでよくある質問

Q1. EAの週末クローズは必ず必要ですか?

A1. スキャルピングやデイトレードのEAでは必要です。損切り幅が狭いほど、月曜の窓で損失が想定の何倍にも膨らむためです。数百pipsを狙う長期のスイングEAは、途中で決済する弊害の方が大きく、不要なことが多いです。

Q2. 週末クローズは金曜の何時にすればいいですか?

A2. 日本時間で冬は金曜23時〜翌2時、夏は金曜22時〜翌1時が目安です。サーバー時間がGMT+2/+3の業者なら、夏冬共通でサーバー時間の金曜16時〜19時に決済し、新規エントリーは金曜14時以降に止めます。

Q3. 週末にポジションを持ち越すとスワップは3倍になりますか?

A3. なりません。3日分のスワップがまとめて付与されるのは、多くの業者で水曜のロールオーバーです。土日分は水曜に前倒しで付与されるため、金曜に決済しても週末分のスワップは変わりません。

Q4. MT4の自動売買ボタンをOFFにすれば週末クローズになりますか?

A4. なりません。自動売買をOFFにしたりMT4を閉じたりしても、保有ポジションは残ります。専用ツールか手動で、ポジションそのものを決済してください。

Q5. バックテストで週末クローズのあり・なしを比べて決めてもいいですか?

A5. おすすめしません。バックテストでは土日の窓の途中で設定どおりに損切りされるため、週末クローズなしの方が有利な結果になります。実際の運用では月曜の始値付近で損切りされ、損失はバックテストより大きくなります。

Q6. 国内のFX業者では週末に強制決済されますか?

A6. 通常はされません。ただし、月曜の再開直後にロスカットが不利なレートで執行されることがあり、口座残高を超える損失が出れば不足金の入金が必要です。

まとめ

  • 週末クローズは成績のためではなく、月曜の窓で損切りが想定を超えるリスクを避けるために行う
  • バックテストでは窓の途中で損切りされるため、週末クローズの要否を判断できない
  • スキャルピング・デイトレEAは必須。大きな値幅を狙うスイングEAは例外
  • クローズは金曜のNY午前中(日本時間の金曜深夜)まで。サーバー時間との時差に注意
  • 機能のないEAは専用ツールか手動で決済する。EAを止めるだけでは決済されない

※本記事は情報提供を目的としたもので、特定のEA・金融商品の売買を推奨するものではありません。FX(外国為替証拠金取引)は元本が保証されておらず、レバレッジにより預けた証拠金を上回る損失が発生する可能性があります。記事内の成績・数値は過去の実績であり、将来の利益を保証するものではありません。投資の最終判断はご自身の責任でお願いします。

  • この記事を書いた人
  • 最新記事

トム

・本業エンジニア/EAのFX自動売買歴7年/ブログ歴6年
・首都圏在住30代
・MT4 EAを使った FXの自動売買で年間10万円の利益達成

-EA全般
-