Trading Window and Spread Guard
- ユーティリティ
- バージョン: 1.1
- アクティベーション: 5
Trading Window and Spread Guard は、ご自身の EA に「いまは新規を出さないで」と知らせる MetaTrader 5 用のユーティリティです。停止窓(曜日と時間帯。例:毎日のロールオーバー、流動性の薄い深夜、取引会社のスプレッドが広がる時間帯)を最大5本と、スプレッドの上限を設定します。停止窓の中、または銘柄のスプレッドが上限を超えている間、EA が読めるフラグを立てます。選択式で、新規を止めている間に建ったポジションを決済することもできます。
取引を止めるための道具で、売買の手法ではありません。取引に良い時間を探すものではなく、売買シグナルも出さず、リアル口座でもデモ口座でもポジションを建てたり注文を出したりすることはありません。損失を防ぐものではありません。できるのは、EA に新規を見送らせること、または建った後の新規ポジションを決済することだけです。どの時間帯を避けるか、取引するかどうか、どう取引するかはご自身の判断です。
初期設定では何も動きません(停止窓なし、スプレッド上限オフ、決済オフ)。入力を設定するまでは、パネルを表示するだけです。
大切な点:EA の側でフラグを読む必要があります。フラグを確かめない EA は、これまでどおり取引を続けます。確かめるコードは数行です(下に記載)。変更できない EA には「停止中に建った新規を決済」の機能だけが使えますが、これは建った後に決済するもので、スプレッドと手数料がかかります。
機能
・停止窓は最大5本。書き方:12:00-12:30(毎日)、Mon-Fri 23:50-01:15(並べた曜日ごとに始まり、日付をまたげる)、Mon,Wed,Fri 08:00-08:30、Fri 21:00-Mon 01:00(曜日をまたぐ1本)。曜日は英語(Mon でも Monday でも、大文字小文字は不問)か日本語(月・月曜・月曜日)、All=毎日。終わりは 24:00 も可。接する・重なる窓は1つにつなげます
・停止窓の時刻はサーバー時刻(初期値)か、このパソコンの時刻
・スプレッドの上限(ポイント):全銘柄共通の値と、銘柄ごとの値(例 GOLD=50,US30=300)
・対象の銘柄:チャートの銘柄(初期値)、一覧、または *=気配値表示の全銘柄(100銘柄まで)
・EA 向けのフラグ(端末のグローバル変数)と、読み取り用の関数(TWG_Reader.mqh)
・選択式:停止中に建ったポジションの決済。選んだ銘柄とマジック番号だけが対象。ガードが動き始める前からあったポジションには一切触れません
・パネル:状態(通常/停止中とその理由)、次の停止窓と残り時間、設定した窓、スプレッドと上限、決済の設定、フラグの名前、最後のメッセージ。日本語か英語(端末の言語に合わせて自動)。折りたたみボタンあり
・停止の開始・終了、スプレッドの拡大、決済のときのポップアップ通知とプッシュ通知(任意)
主な設定
・Stop windows:停止窓の時刻の基準(サーバー時刻/パソコンの時刻)、Window 1〜Window 5(空欄=オフ)
・Spread limit:オン/オフ(初期値オフ)、スプレッドの上限(ポイント、初期値 30)、銘柄ごとの上限
・Symbols and positions:銘柄(空欄=このチャート、*=気配値表示の全銘柄、または一覧)、停止中に建った新規の決済(初期値オフ)、決済するマジック番号(空欄=すべて、0=手動の取引)
・Flags:グローバル変数の名前の頭(初期値 "TWG")
・Alerts(ポップアップ、プッシュ)、Panel(表示、言語、位置、ずらし幅、文字の大きさ)、決済の最大スリッページ、ストラテジーテスターの実演
・入力は7グループ・23項目
動作のしくみ
・250ミリ秒ごとに確かめ、フラグは約1秒ごとに書き込みます。EA が変化に気づくのは約1〜2秒後です。
・フラグ(端末のグローバル変数。値は UTC の時刻〔秒〕。"TWG" は初期値の頭)
- TWG.TIME:停止窓の中は窓の終わりの時刻、外は 0
- TWG.SPR.<銘柄>(例 TWG.SPR.EURUSD):その銘柄のスプレッドが上限を超えている間、現在の時刻より先の値。見ている銘柄ごとに1つ
- TWG.NEXT:次の停止窓の開始。TWG.HB:最後に更新した時刻(動いている印)
- 値が TimeGMT() より大きい間、フラグはオンです
・EA に入れる基本のチェック(初期値の頭での TWG_Reader.mqh と同じ考え方)
bool GuardBlocks(const string sym)
{
if(MQLInfoInteger(MQL_TESTER)) return false;
double now = (double)TimeGMT();
if(GlobalVariableGet("TWG.HB") < now - 30) return false; // guard not running
return GlobalVariableGet("TWG.TIME") > now || GlobalVariableGet("TWG.SPR." + sym) > now;
}
新規を出す前に:if(GuardBlocks(_Symbol)) return;
・TWG_Reader.mqh には TWG_IsBlocked、TWG_TimeBlocked、TWG_SpreadBlocked、TWG_SecondsLeft、TWG_GuardRunning が入っています。マーケットからのダウンロードは EA 本体だけのため、このファイルの全文はこの商品のコメント欄に載せています。ストラテジーテスターの中では常に「止めない」と答えるので、バックテストの結果は変わりません。
・曜日は「窓が始まる日」です。"Mon-Fri 23:50-01:15" は、月曜 23:50 … 金曜 23:50 に始まり翌日 01:15 に終わる5本の窓になります。月曜 00:00〜01:15 は日曜に始まる分にあたるため含まれません。週末と月曜の朝も止めたいときは、Fri 21:00-Mon 01:15 のような2本目の窓を足してください(Fri 21:00-Mon 01:00 だと、月曜 01:00〜01:15 は止まりません)。
・「停止中に建った」とは、ポジションを建てた時刻が停止窓の中であるか、その時点で銘柄のスプレッドが上限を超えていたことです(スプレッドは建ってから10分以内のポジションで判定)。
・決済は、新しい約定が端末に届いた時点ですぐに出します。
・同じ頭で複数のチャートに入れられます(例:銘柄ごとに見る)。そのときフラグは長い方の値を残します。EA のグループごとに規則を変えたいときは、頭を変えてください。
注意と限界
・保証ではありません。ガード自身が注文を止めるわけではなく、フラグを確かめる EA だけが新規を見送ります。
・最後のガードを外すと、停止は解除されます。外したときやチャートを閉じたときは、すぐにフラグを下ろします。端末が予期せず止まった場合、読み取り側は30秒後に「ガードが止まっている」と判断します。初期設定ではそのとき取引を許します。ガードが動いていないときに EA を待たせたい場合は TWG_IsBlocked(_Symbol, "TWG", true)(blockIfGuardStopped = true)と書いてください。
・フラグは約1〜2秒遅れます。窓やスプレッド拡大の最初の1秒に出た注文は通ることがあります。確認の間隔より短いスプレッドの広がりは見逃すことがあります。
・待機注文は削除も変更もしません。停止中に約定した待機注文は新しいポジションになり、決済の機能がオンで対象の範囲のときだけ決済されます。
・ネッティング口座では、前から持っているポジションへの買い増し・売り増しは新しいポジションではないため、決済されません。
・マジック番号の欄が空欄のとき、決済の機能は対象の範囲でご自身が手動で建てた取引も決済します(マジック 0=手動の取引)。決済のたびにスプレッドと手数料がかかり、損失で終わることもあります。ガードはほかの EA が注文を出すのを止められません。停止中に建て続ける EA があると、そのたびに決済します。
・スプレッドのフラグは、見ている銘柄にだけ立ちます。EA がほかの銘柄も取引するなら、一覧に加えるか * を使ってください。
・停止窓の時刻は選んだ時計に従います。サーバー時刻は取引会社の夏時間で動き、パソコンの時刻はこのパソコンに従います。
・端末のグローバル変数は端末ごとです。ガードは EA と同じ MetaTrader 5 の端末で動かしてください。
・MetaTrader 5 が起動・接続している間だけ動きます。決済には、アルゴリズム取引がオン(ツールバーのボタン)で EA の設定でも許可されていることが必要です。
・ストラテジーテスター:フラグはメモリの中だけです。入力 "Tester only: demo window and small demo positions" がオン(初期値)のとき、小さな実演ポジション(最小ロット、マジック 73190)を建てます。窓の前に1つ(ガードは決済しません)、窓の中に1つ(ガードがすぐ決済します)で、実演のポジションは数分後に片付けます。停止窓を設定していないときは、実演用の窓(30分または2本分、1日に1回まで)を使います。テスターのレポートはこの実演だけで、売買の成績ではなく、小さなマイナスになることがあります。入金がとても少ない(例 10ドル)と実演の取引がないことがあります。実演はリアル口座・デモ口座では決して動きません。
動作環境とサポート
・MetaTrader 5 専用(ヘッジ口座・ネッティング口座)。MetaTrader 4 版は別売りです。1つのチャートに入れてください。必要なときだけチャートを増やします。
・DLL、インターネット、外部のサーバーは使いません。
・設定はまずデモ口座でお試しください。
・サポートは MQL5 のメッセージで、3営業日以内に返信します。対応は導入・設定・不具合のご報告と、読み取り関数の呼び方です。どの時間帯やスプレッドを避けるべきかの助言、相場観、売買の判断、お客様の EA の改造はお受けできません。
・取引の結果について、約束や示唆は一切ありません。
