Files
EA_with_Python/docs/MyProject/HITPositionManagerEA_spec_ja.md
T
2026-06-14 22:02:17 +09:00

5.2 KiB

HITPositionManagerEA 仕様書(日本語)

1. 概要

HITPositionManagerEA.mq5 は、HITEntryEA.mq5 が作成した約定済みポジションを管理する専用EAです。新規注文やpending注文は作成しません。hedging口座専用とし、起動時に ACCOUNT_MARGIN_MODE_RETAIL_HEDGING でない場合は INIT_FAILED とします。

管理対象は _Symbolinput_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 = false: 通常ブレークイーブン。
  • input_sltp_breakeven_trigger_pips = 30.0: 通常ブレークイーブン開始pips。
  • input_sltp_breakeven_buffer_pips = 3.0: 通常ブレークイーブン時の利益方向バッファpips。
  • input_sltp_use_elapsed_breakeven = false: 保有時間ベースのブレークイーブン。
  • input_sltp_elapsed_breakeven_hours = 4.0: 保有時間ベースのブレークイーブン開始時間。
  • input_sltp_elapsed_breakeven_buffer_pips = 3.0: 保有時間ベースのブレークイーブン時の利益方向バッファpips。
  • input_sltp_use_active_trailing = false: アクティブトレーリング。
  • input_sltp_active_breakeven_pips = 30.0: アクティブトレーリング開始pips。
  • input_sltp_active_stop_loss_offset_pips = 5.0: 開始時に建値から固定する利益pips。
  • input_sltp_active_step_trigger_pips = 10.0: SLを1段進めるために必要な追加利益pips。
  • input_sltp_active_step_move_pips = 5.0: 1段ごとにSLを利益方向へ動かすpips。
  • input_sltp_use_tp_progress_stop = false: TP進捗率SL。
  • input_sltp_tp_progress_trigger_percent = 70.0: TP進捗率SL開始率。
  • input_sltp_tp_progress_sl_lock_percent = 30.0: 建値からTPまでの距離のうちSLで固定する割合。
  • input_sltp_use_high_volatility_limit = false: 急変時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) で反映します。
  • 急変時SL引き締めは、BUYでは建値以上、SELLでは建値以下となる候補だけを採用し、損失側へのSL候補は破棄します。

5. リスク管理

  • すべてのポジション選択は PositionGetTicket(i)PositionSelectByTicket(ticket) を使います。
  • POSITION_SYMBOL == _Symbol かつ POSITION_MAGIC == input_managed_magic_number のみ処理します。
  • magic違い、symbol違い、手動ポジション相当には触れません。
  • ログにはticket、symbol、magic、position type、retcode、GetLastError() を含めます。
  • 通常ブレークイーブンとアクティブトレーリングの同時ONは設定検証で拒否します。
  • input_sltp_manager_enabled=false の場合、SLTP詳細設定に矛盾があってもEA全体は停止せず、時間決済を継続します。SLTP管理をONにする時点で詳細設定を検証します。

6. 単体テスト

  • 管理EA本体は本番安全性のため新規注文を持ちません。
  • Strategy Testerでは HITPositionManagerTestHarness.mq5 を使い、検証用のBUY/SELLおよびmagic違いポジションを作成してから同じ管理クラスを呼び出します。
  • テスト観点は、同一symbol/magicの複数ticket管理、BUY/SELL両建て、magic違い非対象、時間決済、SL更新です。

7. 変更履歴

  • 2026-06-14: SLTPマスターOFF時は詳細設定の矛盾でEA全体を停止しないよう変更。急変時SL引き締めに建値保護条件を追加し、損失側SL候補を採用しないようにした。
  • 2026-06-13: SLTP関連inputの既定値を HIT-EA_refactor_ver6.mq5 と同じ初期状態に同期し、仕様書へ各既定値を明記。
  • 2026-06-07: HIT-EA_refactor_ver6.mq5 からポジション管理責務を分離し、hedging口座専用のticket単位管理EAとして新規定義。