동적 스톱 로스 트레일 전략은 스톱 로스 트레일의 목적을 달성하기 위해 사용자에 의해 설정된 ATR 계수와 결합하여 스톱 로스 트레일의 평균 실제 범위를 기준으로 계산합니다. 주가가 트레일 라인을 넘어서면 전통적인 트렌드 추적 전략을 사용하여 긴 포지션을 설정합니다. 주가가 스톱 로스 라인을 넘어서면 양방향 거래로 수익을 창출하기 위해 반전 전략을 사용하여 짧은 포지션을 설정합니다.
이 전략은 주로 ATR 기술 지표를 사용하여 주식 가격의 평균 실제 범위를 계산하고, 사용자가 주식 파기 구매 및 스톱 로스 판매를 위한 기준으로 입력한 ATR 계수를 결합합니다. 구체적으로, 전략은 먼저 지난 120 일 동안 주식의 ATR 값을 계산하고, 사용자에 의해 설정된 판매 ATR 계수에 곱하여 스톱 로스 판매 참조 가격을, 즉 스톱 로스 라인을 얻습니다. 구매 ATR 계수에 곱하여 구매 참조 가격을, 즉 트레일 라인을 얻습니다. 오늘날의 최고 가격이 트레일 라인을 넘을 때 트렌드 추적 전략을 사용하여 긴 포지션을 설정합니다. 오늘날의 최저 가격이 손실 라인 아래로 떨어지고 긴 포지션을 유지하면, 반전 전략을 사용하여 짧은 포지션을 설정합니다.
이 전략은 또한 스톱 로스 라인과 트레일 라인을 그린다. 이 두 라인의 위치는 주식 가격 변동에 따라 변화하며, 일부 동적 추적 기능을 갖는다. ATR 지표는 주식의 평균 진정한 변동 범위를 더 잘 반영할 수 있다. 스톱 로스 트레일 라인을 설정하기 위해 ATR 지표를 사용하는 것은 거대한 주식 변동으로 인한 손실을 어느 정도 피하는 데 도움이 될 수 있다.
요약하자면, 이것은 전형적인 스톱 로스 트레일 전략이다. 핵심 아이디어는 트렌드 추적을 위해 ATR 지표를 기반으로 스톱 로스 라인과 트레일 라인을 설정하는 것입니다. 이 전략의 장점은 양방향 거래가 가능하고 포지션이 유연하다는 것입니다; ATR 지표는 위험을 제어하는 데 도움이되며 매우 변동성있는 주식에 적합합니다. 그러나 상당히 간단한 거래 규칙으로 인해 일부 블라인드 트래킹 위험이 있습니다; 부적절한 매개 변수 설정은 전략 효과에도 영향을 미칩니다. 미래의 최적화는 전략 성능을 더 견고하게 만들기 위해 거래 타이밍을 개선하고 포지션 크기를 제어하고 과도한 거래를 줄이는 등에 초점을 맞출 수 있습니다.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h 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/ // © phobo3s //@version=4 strategy("ATR Stop Buy Strategy",shorttitle="ATR-ST",initial_capital=1000, overlay = true, default_qty_type = strategy.percent_of_equity, pyramiding = 5, default_qty_value = 20, commission_type = strategy.commission.cash_per_order, commission_value = 1, calc_on_every_tick = true) daysBack = input(defval=120, title="Days Back", type=input.integer) sellCoeff = input(defval=1.5, title="Selling Coefficent For ATR", type=input.float, minval= 0.01, step=0.1) buyCoeff = input(defval=1.2, title = "Buying Coefficent For ATR", type=input.float, minval= 0.01, step=0.1) fromDate = timenow - (daysBack*24*60*60*1000) toDate = timenow ATR = atr(14) stopLossPoint = ATR * sellCoeff buyPoint = ATR * buyCoeff StoplossLine = close[1] - stopLossPoint[1] BuyLine = close[1] + buyPoint[1] if (high > BuyLine and time >= fromDate and time <= toDate ) strategy.entry("GG", strategy.long, comment="Gir") if (low < StoplossLine and strategy.position_avg_price < close and time >= fromDate and time <= toDate ) strategy.entry("GG", strategy.short, comment="Çık") //longFlags = close < StoplossLine //shortFlags = close > BuyLine //plotshape(shortFlags, style=shape.triangledown, location=location.abovebar, color=color.red) //plotshape(longFlags, style=shape.triangleup, location=location.belowbar, color=color.blue) plot(StoplossLine) plot(BuyLine)