KAMAとMACDに基づく適応型トレンド追跡定量取引戦略

KAMA MACD ATR SL TP
作成日: 2025-02-20 10:33:36 最終変更日: 2025-02-20 15:01:37
コピー: 1 クリック数: 521
2
フォロー
319
フォロワー

KAMAとMACDに基づく適応型トレンド追跡定量取引戦略 KAMAとMACDに基づく適応型トレンド追跡定量取引戦略

概要

この戦略は,カフマン自己適応移動平均 ((KAMA) とMACDに基づくトレンド追跡システムである.それは,KAMAを主要トレンド判断指標として,MACDを動力確認指標として組み合わせることで,市場トレンドのスマートな追跡と取引タイミングの正確な把握を実現している.この戦略は,4時間の時間枠で動作し,ダイナミックな止損と利益の目標を使用してリスクを管理する.

戦略原則

戦略の中核となるロジックは、次の主要な要素に基づいています。

  1. KAMA計算:50周期のKAMAを主要トレンド指標として使用し,効率比率を動的に調整することで,平滑係数を調整し,移動平均を市場条件によりよく適応させる.
  2. MACD確認:トレンド確認のツールとして,より遅い設定のMACD ((26,52,18) を採用し,取引方向が全体的な動力と一致することを確認する.
  3. ATRストップ: 14サイクルATRの3倍を動的ストップと利益目標の計算ベースとして使用する.
  4. 取引のルール:
    • 多条件:価格がKAMAを通過し,MACDは値状態にある
    • 平仓条件:価格がKAMAを通過し,MACDは下落状態にある
    • リスク管理:ATRベースの動的止損と利益目標設定

戦略的優位性

  1. 適応性:KAMAは,市場の効率性に応じて自律的に感性を調整し,異なる市場環境で良好なパフォーマンスを維持します.
  2. 信号の信頼性:MACDの確認と併せて,偽突破のリスクを大幅に低減した.
  3. リスク管理の改善: リスク管理をより適応的にするために,変動率に基づくダイナミックな止損と利益目標を採用.
  4. パラメータの最適化空間は広い: 重要なパラメータは,異なる市場の特徴に応じて調整することができる.

戦略リスク

  1. トレンド反転リスク: 市場が激しく波動すると,偽信号が多く発生する可能性があります.
  2. 遅滞のリスク:KAMAとMACDは遅滞があるため,最高の入場時間を逃す可能性があります.
  3. パラメータの敏感性:異なる市場条件により,戦略の効果を維持するためにパラメータの調整が必要になる可能性があります.
  4. 取引コストの影響: 取引頻度が高い場合,取引コストが高くなります.

戦略最適化の方向性

  1. 市場波動率のフィルターを導入し,高波動率の環境で戦略パラメータを調整するか,取引を一時停止する.
  2. トレンド判断の精度向上のために,取引量分析の指標を増やす.
  3. MACDパラメータの設定を4時間枠に最適化しました.
  4. 市場変動の動態に応じてATR倍数を調整する.
  5. 市場が流動性が低い時に取引を避けるため,タイムフィルターを追加します.

要約する

これは,クラシックな技術指標であるKAMAとMACDの革新性を組み合わせたトレンド追跡戦略である.この戦略は,自己適応性のある移動平均と動量の確認による配合,および完善したリスク管理システムにより,強力な実用性と安定性を有している.ある程度の遅れとパラメータ感受性のリスクがあるものの,推奨された最適化の方向によって,戦略の安定性と収益性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mckat

//@version=5
strategy("4-Hour KAMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
ama_length = input.int(50, title="KAMA Length for 4H")
fast_length = input.int(3, title="KAMA Fast Length")
slow_length = input.int(30, title="KAMA Slow Length")
atr_length = input.int(14, title="ATR Length")
atr_mult = input.float(3.0, title="ATR Multiplier for Stop-Loss & Take-Profit")
// === KAMA Calculation ===
var float kama = na
price_change = math.abs(close - close[ama_length])
volatility_sum = 0.0
for i = 0 to ama_length - 1
    volatility_sum := volatility_sum + math.abs(close[i] - close[i + 1])
efficiency_ratio = price_change / volatility_sum
smoothing_constant = math.pow(efficiency_ratio * (2 / (fast_length + 1) - 2 / (slow_length + 1)) + 2 / (slow_length + 1), 2)
kama := na(kama[1]) ? close : kama[1] + smoothing_constant * (close - kama[1])
// Plot KAMA
plot(kama, color=color.blue, title="KAMA (50)")
// === ATR for Stop-Loss and Take-Profit ===
atr = ta.atr(atr_length)
stop_loss = close - atr * atr_mult
take_profit = close + atr * atr_mult
// === MACD for Momentum Confirmation (Slow Settings for 4H) ===
[macd_line, signal_line, _] = ta.macd(close, 26, 52, 18)
macd_bullish = macd_line > signal_line
macd_bearish = macd_line < signal_line
// === Entry and Exit Conditions ===
buy_condition = ta.crossover(close, kama) and macd_bullish
sell_condition = ta.crossunder(close, kama) and macd_bearish
// === Execute Trades ===
if (buy_condition)
    strategy.entry("Buy", strategy.long)
if (sell_condition)
    strategy.close("Buy")
// === Dynamic Stop-Loss and Take-Profit ===
strategy.exit("Exit", "Buy", stop=stop_loss, limit=take_profit)
// === Plot Signals ===
plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")