이 전략은 슈퍼트렌드 지표에 기반하고 있으며 코인베이스 거래소에서 ETH/USD 거래 쌍에서 실행할 수 있습니다.
이 전략은 트렌드 방향을 결정하기 위해 고전적인 트렌드 추적 지표인 슈퍼 트렌드 지표를 사용합니다. 슈퍼 트렌드 지표는 두 개의 라인으로 구성됩니다.
가격이 상승 추세에서 하락 추세로 전환되면, 짧은 포지션을 개척합니다. 가격이 하락 추세에서 상승 추세로 전환되면, 긴 포지션을 개척합니다.
또한, 전략은 스톱 로스 라인을 동적으로 조정하기 위해 ATR 지표를 사용합니다. 구체적으로, 상승 트렌드 스톱 로스 라인 포지션은 가장 높은 최고와 가장 낮은 낮은 마이너스 ATR의 평균을 계수로 곱합니다. 하락 트렌드 스톱 로스 라인 포지션은 가장 높은 최고와 가장 낮은 ATR의 평균을 계수로 곱합니다. 이것은 시장 변동성에 따라 스톱 로스를 조정 할 수 있습니다.
엔트리 신호가 발사된 후, 만약 가격이 스톱 로스 라인을 넘어선다면, 손실을 멈추게 됩니다.
이것은 다음과 같은 장점을 가진 전략에 따라 비교적 성숙한 경향입니다.
이 전략에는 몇 가지 위험도 있습니다.
위의 위험을 완화하기 위해 ATR 계수를 조정하거나 다른 지표와 함께 필터를 추가 할 수 있습니다. 중지 손실 버퍼도 고려 할 수 있습니다.
추가 개선의 여지가 있습니다.
전체적으로 이것은 성숙하고 신뢰할 수있는 트렌드 다음 전략입니다. 트렌드 방향을 결정하기 위해 슈퍼 트렌드 지표를 사용하고 수익을 창출하는 동안 위험을 제어하기 위해 ATR로 스톱 로스를 조정합니다. 이 전략은 이더리움과 같은 높은 변동성 암호화폐에 잘 작동합니다. 추가 최적화는 안정적인 오버 퍼포먼스를 위해 더 많은 시장에 응용 프로그램을 확장 할 수 있습니다.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SuperTrend Strategy", overlay=true, initial_capital=2e3, process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.1 ) length = input(title="ATR Period", type=input.integer, defval=21) mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) useDate = input(title="Start from Specific Date ?", defval=false) yearStart = input(title="Start Year", defval=2019) monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) startFrom = useDate ? time(timeframe.period) >= startTime : true atr = mult * ta.atr(length) longStop = hl2 - atr longStopPrev = nz(longStop[1], longStop) longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = hl2 + atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir longColor = color.green shortColor = color.red plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) longCondition = dir[1] == -1 and dir == 1 if longCondition and startFrom strategy.entry("Long", strategy.long, stop=longStop) else strategy.cancel("Long") shortCondition = dir[1] == 1 and dir == -1 if shortCondition and startFrom strategy.entry("Short", strategy.short, stop=shortStop) else strategy.cancel("Short")