3.4 KiB
3.4 KiB
HITPositionManagerEA 仕様書(日本語)
1. 概要
HITPositionManagerEA.mq5 は、HITEntryEA.mq5 が作成した約定済みポジションを管理する専用EAです。新規注文やpending注文は作成しません。hedging口座専用とし、起動時に ACCOUNT_MARGIN_MODE_RETAIL_HEDGING でない場合は INIT_FAILED とします。
管理対象は _Symbol と input_managed_magic_number が一致するポジションのみです。複数ポジション、両建て、分割エントリーをticket単位で独立管理します。
2. 使用インジケータ
- 標準・カスタムインジケータは使用しません。
- SLTP管理は現在tick、ポジションの建値/SL/TP/保有時間、シンボルのstop level / freeze levelを使用します。
- 急変時SL引き締めは M1/M3/M5/M10/M15 の始値と現在価格を使用します。
3. パラメータ設定
input_managed_magic_number = 10001: 管理対象ポジションのマジックナンバー。発注EAのinput_entry_magic_numberと一致させます。input_slippage_points = 10: 決済とSL変更の許容偏差。input_position_close_after_h1_bars = 12: 保有時間決済のH1本数。0で無効。input_sltp_manager_enabled = false: SLTP管理全体のON/OFF。input_sltp_show_panel = true: SLTP操作パネルを表示するか。input_sltp_use_breakeven: 通常ブレークイーブン。input_sltp_use_elapsed_breakeven: 保有時間ベースのブレークイーブン。input_sltp_use_active_trailing: アクティブトレーリング。input_sltp_use_tp_progress_stop: TP進捗率SL。input_sltp_use_high_volatility_limit: 急変時SL引き締め。
4. エントリー/エグジット条件
- 新規エントリー条件はありません。このEAは注文作成を行いません。
OnTick()では、まずticket単位で保有時間決済を評価し、その後SLTP管理を実行します。- 時間決済は
POSITION_TIMEからinput_position_close_after_h1_bars * PeriodSeconds(PERIOD_H1)以上経過した対象ticketをCTrade::PositionClose(ticket)で閉じます。 - SLTP管理は、対象ticketの現在SLより利益保護方向へ改善する候補だけを
CTrade::PositionModify(ticket, new_sl, current_tp)で反映します。
5. リスク管理
- すべてのポジション選択は
PositionGetTicket(i)とPositionSelectByTicket(ticket)を使います。 POSITION_SYMBOL == _SymbolかつPOSITION_MAGIC == input_managed_magic_numberのみ処理します。- magic違い、symbol違い、手動ポジション相当には触れません。
- ログにはticket、symbol、magic、position type、retcode、
GetLastError()を含めます。 - 通常ブレークイーブンとアクティブトレーリングの同時ONは設定検証で拒否します。
6. 単体テスト
- 管理EA本体は本番安全性のため新規注文を持ちません。
- Strategy Testerでは
HITPositionManagerTestHarness.mq5を使い、検証用のBUY/SELLおよびmagic違いポジションを作成してから同じ管理クラスを呼び出します。 - テスト観点は、同一symbol/magicの複数ticket管理、BUY/SELL両建て、magic違い非対象、時間決済、SL更新です。
7. 変更履歴
- 2026-06-07:
HIT-EA_refactor_ver6.mq5からポジション管理責務を分離し、hedging口座専用のticket単位管理EAとして新規定義。