スマートリバーサルロジックを備えた高度な時間セッション取引戦略

EMAT RSI SL/TP RR NY SESSION LIMIT ORDERS risk management FIBONACCI
作成日: 2025-06-27 11:33:45 最終変更日: 2025-06-27 11:33:45
コピー: 4 クリック数: 256
2
フォロー
319
フォロワー

スマートリバーサルロジックを備えた高度な時間セッション取引戦略 スマートリバーサルロジックを備えた高度な時間セッション取引戦略

概要

“Advanced Time Session Trading Strategy with Intelligent Reversal Logic”は,1時間の時間枠内でのセッション取引を目的に設計された精密な量化取引戦略である.この戦略は,方向確認,リスクパラメータのプレデフィケーション,そして夜間実行される限値オーダーを利用して市場優位性を獲得する.その核心は,ニューヨーク時間08:00の開場価格と18:00の閉場価格を比較して取引の方向を決定し,前日のトレンドに基づいてインテリジェント・リバースを判断して,動力の枯渇を効果的に回避し,修正的なリバースを捕捉する.この戦略は,ユーザー定義に基づくストップ・ロス,ストップ・セット,およびリスクパラメータ制御により,完全に自動化された取引環境を実現する.

戦略原則

この戦略の核心となる原理は,時間特定のポイントの価格関係分析とスマート反転の論理に基づいています.

  1. 方向確認メカニズム:毎日ニューヨーク時間18:00で,システムはその日の08:00の開場価格と18:00の閉場価格を比較する.その日の価格方向が前日のものと同じであれば,戦略は信号を反転させる;その方向が異なる場合は,その日のトレンド方向を維持する.この論理は,トレンドの枯渇を回避し,価格修正を捕捉することを目的としている.

  2. 入口点の定義確認した方向に応じて,システムで自動的に入口の場所が設定されます.

    • 買取シグナル:当日の最低価格を入場ポイントとして使用する
    • 販売シグナル:当日の最高価格を入場ポイントとして使用する システムでは,ユーザが定義したポイント数に基づいてストップ・ロズとストップ・ストップのレベルを設定します.
  3. 制限時間での入場:注文はニューヨーク時間18:00以降に発送され,次の日の18:00から08:00までの任意の時間で発動できます.次の日の08:00までにエントリーポイントに触れなければ,注文は自動的にキャンセルされます.

  4. 手動平衡機能: 取引が設定された時間 (デフォルトニューヨーク時間09:00) に開いている場合,システムは,現実的な日内退出シナリオを模倣して,すべてのポジションを閉鎖します.

  5. リスクに基づくポジション計算ポジションのサイズ: ポジションのサイズは,口座のサイズ,リスクの割合,ストップダストの距離に基づいて動的に計算され,市場の変動に関係なく,リスクの露出が常に一致することを保証します.

戦略的優位性

この戦略は,コードを深く分析することで,以下の重要な利点が示されています.

  1. 取引の正確な実行時間策略:特定の時間点 (ニューヨーク時間08:00と18:00) を利用して意思決定と実行を行い,市場の重要な瞬間に機会を捉えることを保証する.この時間ベースの方法により,取引の騒音が減り,取引の予測性が増加する.

  2. 論理を反転させる策略は,連続した2日の価格方向を比較することによって,潜在的トレンドの尽き点を認識し,適時に方向を逆転することができます.この方法は,過剰に延長されたトレンドを追いかけるのを避け,入場の精度を高めるのに役立ちます.

  3. リスク管理の統合戦略には,以下のような包括的なリスク管理機能が組み込まれています.

    • 既定の停止/停止設定
    • アカウントサイズとリスクの許容度に基づくダイナミックポジション計算
    • タイムベースの自動平衡メカニズム
  4. 制限価格注文の利点: 市場価格ではなく,制限価格注文を使用し,取引をより有利な価格で実行し,滑り場を減らす,不利な条件で入場を避ける.

  5. 完全に自動化設定すると,戦略は完全に自動化され,継続的な監視を必要とせず,感情的干渉や人為的エラーを減らすことができます.

戦略リスク

この戦略の設計は精巧ですが,以下のリスクがあります.

  1. 取引の機会を逃したエントリーポイントは,当日の最高/最低値に基づいており,時間制限があるため,価格が設定ポイントに達していない場合に戦略が取引機会を逃す可能性があります.特に低変動の環境では,これはより一般的です.

  2. 逆転論理の失敗のリスク: 強いトレンド市場では,方向の類似性に基づく反転論理は,過早な逆転取引を引き起こし,損失のリスクを増やす可能性があります.

  3. 時間の依存性戦略は特定の時間点 (ニューヨーク時間) に高度に依存し,異なる市場や不規則な取引時間において効果が低下する可能性があります.

  4. 固定ストップリスク: 固定ポイントをストップポイントとして使うことは,すべての市場条件に適さないかもしれない,特に突然の波動性の増加の場合.

解決策は

  • 市場変動に応じて調整する自律的な止損を実施
  • 極端な市場条件での取引を避けるための追加フィルタリング条件
  • 入場信号の質を高めるために,複数の時間枠の確認を導入
  • ポジションの規模を低減することを検討する

最適化の方向

この戦略は以下の方向で最適化できます.

  1. 動的停止/停止レベル:現在の戦略は,固定ポイントをストップとストップとして使用し,異なる市場条件にうまく適応するために,ATRまたは波動率に基づいたダイナミックレベルに改善することができます.これは,市場の波動性が時間とともに変化するので,固定ポイントは,高波動期には過小であり,低波動期には過大である可能性があります.

  2. トレンドフィルターを追加: トレンド指標の導入 ((移動平均クロスまたはADXのような) 追加の確認として,有利なトレンド環境でのみ取引する.これは,整合市場での誤信号を減らす,全体的な勝率を向上させるだろう.

  3. タイムウィンドウの最適化異なる時間点の組み合わせを回測し,特定の市場の最適な時間窓を見つけます. 異なる金融商品は,異なる時間帯で独特の行動パターンを表す可能性があります.

  4. 多周期確認を追加する:より高い時間枠 (例えば4時間または日線) の方向をチェックすることで1時間のシグナルを検証し,取引がより大きなトレンドに従っていることを確認する.この方法は逆転取引のリスクを低減する.

  5. 部分利回りの仕組みの導入:特定の利益レベルに達したときに部分的にポジションを平らにする機能を追加し,利益の一部をロックし,残ったポジションを継続させます.これは,高い収益の可能性を維持しながら,全体的な利益の安定性を向上させることができます.

要約する

“Advanced Time Session Trading Strategy with Intelligent Reversal Logic”は,時間特有の意思決定ポイント,インテリジェント・ディレクション・コンファインメント,および総合的なリスク管理を組み合わせた精巧に設計された量化取引システムである.この戦略は,ニューヨーク時間08:00と18:00のキータイムポイントで価格関係を分析し,インテリジェント・リバース・ロジックを適用することで,潜在的トレンドの尽き点と修正的リバース・チャンスを効果的に識別することができる.

戦略の限値注文機構は,より有利な入場価格を保証し,既定のリスクパラメータとダイナミックなポジション計算は,一貫したリスク制御を提供します. 取引機会を逃す,および特定の市場条件下での反転論理の失効などのいくつかの固有のリスクがあるにもかかわらず,これらは,推奨された最適化方向によって緩和できます.

ダイナミックなストップ/ストップレベルを導入し,トレンドフィルターを追加し,タイムウィンドウを最適化し,多周期確認と部分利益メカニズムを追加することで,この戦略は,その性能と適応性をさらに向上させる可能性がある.全体的に,これは,構造が整った,論理が明確な取引システムであり,特に日内取引で自動化と規律性を実現したいトレーダーに適しています.

ストラテジーソースコード
/*backtest
start: 2024-06-27 00:00:00
end: 2025-06-25 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/

//@version=6
strategy("LANZ Strategy 1.0 [Backtest]", overlay=true, default_qty_type=strategy.cash, default_qty_value=100)

// === TIMEFRAME RESTRICTION ===
if timeframe.period != "60"
    runtime.error("🚫 LANZ Strategy 1.0 is only available on the 1h timeframe.")

// === INPUTS ===
accountSizeUSD = input.int(100000, title="Account #1 - Capital ($)", minval=1, group="💸 Main Account Management")
riskPercent = input.float(1.0, title="Account #1 - Risk (%)", minval=0.1, maxval=100, group="💸 Main Account Management")
slPipsInput = input.int(18, title="Stop Loss (pips)", minval=1, group="📏 Risk Settings")
tpPipsInput = input.int(54, title="Take Profit (pips)", minval=1, group="📏 Risk Settings")
manualCloseHour = input.int(9, title="Hora de Cierre Manual (NY)", minval=0, maxval=23, group="🔚 Cierre Manual")

// === GLOBALS ===
pipSize = syminfo.mintick * 10
var float openAt0800 = na
var float closeAt1800 = na
var int priceDirection = na
var int prevPriceDirection = na
var int todayPriceDirection = na
var int finalSignalDirection = na
var float baseLevel = na
var float baseSL = na
var float baseTP = na
var bool orderSent = false

// === KEY TIMES ===
is0800 = (hour(time, "America/New_York") == 8 and minute(time, "America/New_York") == 0)
is1800 = (hour(time, "America/New_York") == 18 and minute(time, "America/New_York") == 0)
nyHour = hour(time, "America/New_York")
nyMinute = minute(time, "America/New_York")
entryWindow = (nyHour >= 18 or nyHour < 8)
cutoffPassed = not entryWindow
isManualClose = (nyHour == manualCloseHour and nyMinute == 0)

// === CAPTURE OPEN AND CLOSE ===
if is0800
    openAt0800 := open
if is1800
    closeAt1800 := close
    priceDirection := closeAt1800 > openAt0800 ? 1 : closeAt1800 < openAt0800 ? -1 : 0
    prevPriceDirection := todayPriceDirection
    todayPriceDirection := priceDirection

    coinciden = priceDirection == prevPriceDirection and not na(prevPriceDirection)
    finalSignalDirection := coinciden ? priceDirection : -1 * priceDirection

    fibRange = high - low
    baseLevel := finalSignalDirection == -1 ? low : high
    baseSL := finalSignalDirection == -1 ? baseLevel - slPipsInput * pipSize : baseLevel + slPipsInput * pipSize
    baseTP := finalSignalDirection == -1 ? baseLevel + tpPipsInput * pipSize : baseLevel - tpPipsInput * pipSize

    orderSent := false

// === LIMIT ORDER SENDING (AT 19:00 AND FOLLOWING IF NOT YET TOUCHED) ===
canPlaceOrder = not orderSent and strategy.opentrades == 0 and entryWindow
if canPlaceOrder
    slPips = math.abs(baseLevel - baseSL) / pipSize
    riskUSD = accountSizeUSD * (riskPercent / 100)
    qty = slPips > 0 ? (riskUSD / (slPips * 10)) : na
    if not na(qty)
        isLong = finalSignalDirection == -1
        if isLong
            strategy.entry("BUY", strategy.long, qty=qty, limit=baseLevel)
            strategy.exit("TP/SL BUY", from_entry="BUY", stop=baseSL, limit=baseTP)
        else
            strategy.entry("SELL", strategy.short, qty=qty, limit=baseLevel)
            strategy.exit("TP/SL SELL", from_entry="SELL", stop=baseSL, limit=baseTP)
        orderSent := true

// === CANCEL IF NO EP TOUCHED BEFORE 08:00 NY ===
if cutoffPassed and strategy.opentrades == 0 and orderSent
    strategy.cancel("BUY")
    strategy.cancel("SELL")
    orderSent := false

// === MANUAL CLOSING AT HH:00 NY CONFIGURABLE ===
if strategy.opentrades > 0 and isManualClose
    strategy.close("BUY")
    strategy.close("SELL")