平均回帰連続ローソク足反転取引戦略

EMA MR ENTRY EXIT FILTER Trend
作成日: 2025-02-19 10:51:35 最終変更日: 2025-02-19 10:51:35
コピー: 2 クリック数: 430
1
フォロー
1617
フォロワー

平均回帰連続ローソク足反転取引戦略

概要

これは,均等回帰原理に基づく取引戦略で,連続下落と上昇のK線形状を識別することによって,短期的な価格逆転の機会を捕捉する.戦略の核心論理は,連続下落のK線が3回発生した後に入場し,連続上昇のK線が3回発生した後に平仓の出場を行うことである.戦略は,選択的にEMA均等線フィルターと組み合わせて取引の質を向上させることもできる.

戦略原則

この戦略は、次の中核要素に基づいています。

  1. 連続K線カウンタ:連続して上下するK線の数をそれぞれ統計する
  2. 入場条件:指定数量 (デフォルト3根) のクローズアップ価格のK線下落が連続的に発生したときに多信号をトリガーする
  3. 出口条件:指定数量 (デフォルト3根) の連続した閉店価格がK線に上昇すると平仓シグナルをトリガーする
  4. EMAフィルター:トレンドフィルター条件として200周期指数移動平均を選択的に追加
  5. 取引時間ウィンドウ: 取引区間を制限するために,特定の取引開始時間設定できます.

戦略的優位性

  1. 論理がシンプルで明快である: 戦略は,簡単なK線数法を使用して,容易に理解し,実行する
  2. 適応性:異なる時間周期と取引品種に適用できる
  3. パラメータの柔軟性:連続K線数,EMA周期などのパラメータは,必要に応じて調整できます
  4. リスク管理の改善: タイムウィンドウやトレンドフィルターなどの複数のメカニズムでリスク管理
  5. 計算効率が高い: コアロジックは隣接するK線のクローズアップ価格のみを比較し,操作の負担は小さい

戦略リスク

  1. トレンド市場のリスク: 強いトレンドの市場では,偽のブレイクが頻繁に起こる可能性があります.
  2. パラメータの感受性:連続したK行数の設定は,戦略のパフォーマンスに大きな影響を与える
  3. 滑落の影響: 波動的な市場では,滑落のリスクが高くなる可能性があります.
  4. 偽信号の危険性:連続K線形状は市場騒音によって干渉される可能性がある
  5. ストップ・ローズ:戦略に明瞭なストップ・ローズメカニズムが設定されていないため,大きな引き戻しが起こり得る

戦略最適化の方向性

  1. ストップメカニズムを追加: リスク管理のために固定ストップまたは追跡ストップを追加することを推奨する
  2. フィルタリング条件を最適化: 交差量,波動率などの指標を補助フィルタとして導入できる
  3. 動的パラメータ調整:市場の状況に応じて動的に調整される連続K線数要求を考慮する
  4. 倉庫管理を増やす: 倉庫の建設と収縮を分期的に設計して収益を上げることができる
  5. 時間管理の改善: 異なる時間帯に異なる取引パラメータを設定する

要約する

これは,合理的に設計された平均回帰戦略であり,短期的な価格の超跌反弹の機会を捕獲することによって利益を得ます.戦略の主な優点は,論理的にシンプルで,適応性が強いことにあるが,実用的な応用では,リスク管理に注意する必要があり,止損機構を追加し,フィルター条件を最適化するなどによって戦略の安定性を向上させることを提案しています.

ストラテジーソースコード
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("3 Down, 3 Up Strategy", overlay=true, initial_capital = 1000000, default_qty_value = 200, default_qty_type = strategy.percent_of_equity, process_orders_on_close = true, margin_long = 5, margin_short = 5, calc_on_every_tick = true)


//#region INPUTS SECTION
// ============================================
// Time Settings
// ============================================
startTimeInput = input(timestamp("1 Jan 2014"), "Start Time", group = "Time Settings")
endTimeInput = input(timestamp("1 Jan 2099"), "End Time", group = "Time Settings")
isWithinTradingWindow = true

// ============================================
// Strategy Settings
// ============================================
buyTriggerInput = input.int(3, "Consecutive Down Closes for Entry", minval = 1, group = "Strategy Settings")
sellTriggerInput = input.int(3, "Consecutive Up Closes for Exit", minval = 1, group = "Strategy Settings")

// ============================================
// EMA Filter Settings
// ============================================
useEmaFilter = input.bool(false, "Use EMA Filter", group = "Trend Filter")
emaPeriodInput = input.int(200, "EMA Period", minval = 1, group = "Trend Filter")
//#endregion

//#region INDICATOR CALCULATIONS
// ============================================
// Consecutive Close Counter
// ============================================
var int aboveCount = na
var int belowCount = na

aboveCount := close > close[1] ? (na(aboveCount) ? 1 : aboveCount + 1) : 0
belowCount := close < close[1] ? (na(belowCount) ? 1 : belowCount + 1) : 0

// ============================================
// Trend Filter Calculation
// ============================================
emaValue = ta.ema(close, emaPeriodInput)
//#endregion

//#region TRADING CONDITIONS
// ============================================
// Entry/Exit Logic
// ============================================
longCondition = belowCount >= buyTriggerInput and isWithinTradingWindow
exitCondition = aboveCount >= sellTriggerInput

// Apply EMA Filter if enabled
if useEmaFilter
    longCondition := longCondition and close > emaValue
//#endregion

//#region STRATEGY EXECUTION
// ============================================
// Order Management
// ============================================
if longCondition
    strategy.entry("Long", strategy.long)
    
if exitCondition
    strategy.close_all()
//#endregion