MT5で決済だけを自動化する方法|時間で区切ると感情に流されない

MT5にはエントリーは裁量のまま、決済だけを自動化する「決済専用EA」というジャンルがあります。中でも時間を基準に決済するルールは、価格やpipsを基準にするルールより実行しやすいものです。迷って動けなくなる場面そのものを、構造的に減らせるためです。

この記事では、決済専用EAの考え方と、MT5で時間ベースの決済を実装する方法を、実際にMQL5でツールを開発した経験をもとに解説します。

「決済専用EA」とは何か

決済専用EAは、エントリーの判断は人間が行い、いったんポジションを持った後の利確・損切り・撤退のタイミングだけをEAに任せる仕組みです。完全自動売買と違い、相場の見立てそのものは裁量トレーダーの手元に残ります。

主な機能は次の3つに整理できます。

  • 利益確定・損切りラインの自動設定(TP/SL)
  • 利益が乗った後にストップラインを追随させるトレーリングストップ
  • 一定時間が経過したポジションを自動で決済する時間決済

このうち、時間決済だけを単独で使う、あるいは他の条件と組み合わせて使うケースが多く見られます。

なぜ時間ベースが感情を排除しやすいのか

価格やpipsを基準にした損切りルールは、多くのFX解説記事で紹介されています。ただし、これらのルールには共通の弱点があります。価格が近づくほど、判断の余地が生まれるという点です。

「あと少しで戻るかもしれない」「このラインを少し割っただけだから待ってみよう」——価格ベースのルールは、決済すべき瞬間になるほど、そのルールを破りたくなる誘惑が強くなります。これが、ルールを決めても守れない典型的な原因です。

時間ベースのルールは、この構造を回避します。時間は価格と違って、相場の値動きに応じて「もう少し待とう」と解釈を変える余地がありません。「30分経過したら決済する」というルールは、含み損が拡大していても縮小していても、同じ条件で機械的に実行されます。

判断の余地が無いことは、一見すると柔軟性を失うように感じられますが、ルールを守れない最大の原因が「判断の余地」そのものである以上、これは弱点ではなく設計上の利点です。

MT5で時間ベースの決済を実装する2つの方法

方法1:アラームを設定して手動で決済する

最も手軽な方法は、エントリー時にMT5のアラーム機能で時間を設定し、鳴ったタイミングで手動で決済することです。ツールを使わずに始められる分、実行するかどうかは自分の意志に委ねられます。

この方法は「時間ベースのルールを試してみたい」という段階には向きますが、結局は決済ボタンを押す判断が人間に残るため、完全に判断の余地を排除できるわけではありません。

方法2:EAで自動化する

MQL5では、ポジションの決済はOrderSend()関数に決済用の取引リクエスト(TRADE_ACTION_DEAL、対象ポジションのチケット番号を指定)を渡すことで実行します。MQL4にあった専用のOrderClose()関数は、MQL5には存在しません。

時間ベースの決済ロジックは、大まかには次の考え方で組み立てます。

  • ポジションを開いた時刻を記録する
  • ティックが更新されるたびに、現在時刻との差を計算する
  • 差が指定時間を超えたら、そのポジションに対して決済リクエストを送る

実装自体はシンプルですが、複数ポジションを同時に持つ場合の管理や、決済リクエストが約定しなかった場合の再試行処理など、実際に組んでみると細部でつまずく点がいくつかあります。

自作する場合につまずきやすい点

実際にMQL5で時間決済ツールを開発した経験から、特につまずきやすい点を3つ挙げます。

  • ポジションごとの開始時刻の管理。 複数ポジションを同時に持つ場合、どのポジションがいつ開いたかを個別に追跡する必要があります
  • サーバー時間とローカル時間のズレ。 「何分後」の基準をサーバー時間にするかローカル時間にするかで、決済タイミングが数時間ズレることがあります
  • 決済リクエストの失敗時の扱い。 スプレッド拡大時などにリクエストが通らないことがあり、一度送って終わりにすると決済されないまま放置される場合があります

すでに動くものを使いたい場合

自分で組む時間が取れない場合、上記の考え方をすでに実装したツールを使う選択肢もあります。当サイトで配布している「TimerClose_EA」は、この記事で説明した時間ベースの決済ロジックを、複数ポジションの管理・サーバー時間基準の判定を含めて実装したものです。

TimerClose_EAの入力パラメータ設定画面。強制決済秒数や損益別の遅延設定が確認できる

設定項目はシンプルで、基本の強制決済までの秒数に加えて、含み損のポジションだけ決済を遅らせる、含み益のポジションだけ決済を遅らせる、といった条件を個別に指定できます。損失を早めに切りつつ、利益は伸ばす余地を残す、という調整が可能です。また「手動エントリーのみ対象とする」設定により、他のEAが自動発注したポジションを誤って決済しない設計になっています。

時間による決済は、含み損・含み益にかかわらず条件に達したら機械的に実行される仕組みです。決済の直後に相場が反転し、そのまま持っていた方が有利だったという結果になることもあります。損失を確実に防ぐものではなく、あくまで「判断の余地を減らす」ための手法である点をご理解のうえでご利用ください。

TimerClose_EAの詳細を見る

関連記事