チャンデ・クロールストップ動的ATRトレンドフォロー戦略は,チャンデ・クロールストップ指標とシンプルムービング・アベア (SMA) をベースとした定量的な取引戦略である.この戦略は,動的ストップ損失レベルを使用してリスクを管理しながら上向きの市場トレンドを把握することを目的としている.チャンデ・クロールストップ指標は,異なる市場変動条件に適応するために,平均真のレンジ (ATR) をベースとしたストップ損失レベルを動的に調整する.21期SMAは,トレンドフィルターとして使用され,トレンドが主要なトレンドの方向に行われていることを保証する.
この戦略の核心は,動的ストップロスのレベルを計算するためにATRを使用するチャンド・クロールストップインジケーターである.ATRは市場の変動を測定し,ストップロスのレベルはATRと倍数に基づいて動的に調整される.これはストップロスのポジションが現在の市場状況に適応することを保証する.さらに,21期SMAはトレンドフィルターとして機能し,閉値がSMAを超える場合にのみロングシグナルが起動する.これは熊市中に取引を避けるのに役立ちます. ロングエントリー条件: 閉じる価格がチャンデ・クロールの下帯を突破し,21期間のSMAを超えるとロングポジションが開始されます. 終了条件: 閉じる価格がチャンド・クロールの上位帯を下回ると,ポジションは閉じる.
チャンデ・クロールストップ動的ATRトレンドフォロー戦略は,動的ストップ損失とトレンドフォロー原則に基づいた定量的な取引戦略である.チャンデ・クロールストップ指標とSMAトレンドフィルターを組み合わせることで,戦略はリスクを効果的に管理しながら上向きの傾向を把握することができる.戦略パラメータの柔軟性と動的なポジションサイジングは,戦略の適応性をさらに高めます.戦略には一定のリスクがありますが,合理的なリスク管理措置と継続的な最適化と改善により,戦略は長期的な安定した収益を達成する可能性があります.
/*backtest start: 2023-06-08 00:00:00 end: 2024-06-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Kroll Stop Strategy", overlay=true, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.01, slippage = 3) // Chande Kroll Stop parameters calcMode = input.string(title="Calculation Mode", defval="Exponential", options=["Linear", "Exponential"]) riskMultiplier = input(5, "Risk Multiplier") atrPeriod = input(10, "ATR Period") atrMultiplier = input(3, "ATR Multiplier") stopLength = input(21, "Stop Length") smaLength = input(21, "SMA Length") // Calculate ATR atr = ta.atr(atrPeriod) // Calculate Chande Kroll Stop highStop = ta.highest(high, stopLength) - atrMultiplier * atr lowStop = ta.lowest(low, stopLength) + atrMultiplier * atr sma21 = ta.sma(close, smaLength) // Entry and Exit conditions longCondition = ta.crossover(close, lowStop) and close > sma21 exitLongCondition = close < highStop // Funktion zur Berechnung der Menge calc_qty(mode, riskMultiplier) => lowestClose = ta.lowest(close, 1560) if mode == "Exponential" qty = riskMultiplier / lowestClose * 1000 * strategy.equity / strategy.initial_capital else qty = riskMultiplier / lowestClose * 1000 // Berechnung der Menge basierend auf der Benutzerwahl qty = calc_qty(calcMode, riskMultiplier) // Execute strategy if (longCondition) strategy.entry("Long", strategy.long, qty=qty) alert("Buy Signal", alert.freq_once_per_bar_close) if (exitLongCondition) strategy.close("Long") alert("Sell Signal", alert.freq_once_per_bar_close) // Plotting plotshape(series=longCondition, location=location.belowbar, color=#0097a7, style=shape.triangleup, size=size.small, title="Buy Signal") plotshape(series=ta.crossunder(close, highStop), location=location.abovebar, color=#ff195f, style=shape.triangledown, size=size.small, title="Sell Signal") plot(sma21, color=color.gray) plot(highStop, color=#0097a7) plot(lowStop, color=#ff195f)