이 전략은 트렌드 방향을 결정하기 위해 평균 진정한 범위 (ATR) 지표를 사용합니다. 트렌드가 상승할 때 길게 가고 트렌드가 하락할 때 짧게됩니다. 트렌드를 따르는 전략 유형에 속합니다.
이 전략은 먼저 가격의 단순한 이동 평균 (sma) 과 기하급수 이동 평균 (ema) 을 계산합니다. 그 다음 ATR 지표를 계산합니다. 이는 지난 N 일 동안 가격 움직임의 평균 범위입니다.
이 전략은 트렌드 방향을 결정하기 위해 EMA 평균선, 상단 (EMA + ATR * 계수) 및 하단 (EMA - ATR * 계수) 을 사용합니다. 가격이 상단 위에 넘어가면 길고 가격이 하단 아래에 넘어가면 짧습니다.
코드의 주요 논리:
ATR에 기반한 위치를 동적으로 조정함으로써 트렌드 방향을 효과적으로 따라갈 수 있습니다.
해결책:
트렌드를 따르는 전략은 ATR을 사용하여 트렌드 방향을 결정하는 명확한 논리를 가지고 있습니다. 이것은 전형적인 트렌드 추적 시스템입니다. 장점은 단순성과 트렌드를 따르는 능력입니다. 그러나 또한 다른 시장에 대한 최적화가 필요한 위험이 있습니다. 전반적으로 양적 거래 도구로서 큰 잠재력과 가치를 가지고 있습니다.
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Investoz //@version=4 strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len = input(26, type=input.integer, minval=1, title="Length") mul = input(2.618, type=input.float, minval=0, title="Length") mullow = input(2.386, type=input.float, minval=0, title="Length") price = sma(close, 1) average = ema(close, len) diff = atr(len) * mul difflow = atr(len) * mullow bull_level = average + diff bear_level = average - difflow bull_cross = crossunder(price, bear_level) bear_cross = crossunder(bull_level, price) FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2008, title = "From Year", minval = 2008) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2019) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) startTimeOk() => true if (startTimeOk()) and ema(close,1) > ema(close,528) strategy.entry("KOP", strategy.long, when=bull_cross) strategy.close("KOP", when=bear_cross) if (startTimeOk()) and ema(close,1) < ema(close,528) strategy.entry("SALJ", strategy.short, when=bear_cross) strategy.close("SALJ", when=bull_cross) plot(price, title="price", color=color.black, transp=50, linewidth=2) a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1) a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1) a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1) fill(a0, a1, color=color.green, transp=97) fill(a0, a2, color=color.red, transp=97)