이 전략은
이 전략의 핵심은 현재 트렌드 방향을 판단하기 위해 슈퍼 트렌드 지표에 의존합니다. 슈퍼 트렌드 지표는 평균 진실 범위 (ATR) 를 기반으로 상부 및 하부 대역을 계산합니다. 가격이 상부 대역을 통과하면 상승 신호이며 가격이 하부 대역을 통과하면 하향 신호입니다.
슈퍼 트렌드 지표가 상승 추세를 결정할 때, 촛불이 빨간색 몸 (폐기 아래 오픈) 인 경우, 긴 거. 슈퍼 트렌드 지표가 하락 추세를 결정할 때, 촛불이 녹색 몸 (폐기 위 오픈) 인 경우, 짧은 거. 이것은 모멘텀 브레이크아웃 거래에 따라 추세를 달성합니다.
이 전략은 트렌드 판단과 모멘텀 특성을 결합하여 잘못된 브레이크오프를 효과적으로 필터링하고 거래 신호의 유효성을 향상시킵니다. 또한 트렌드 따라 거래하면 트렌드 반대 작전을 피하고 수익 확률을 크게 향상시킵니다.
주요 장점은 다음과 같이 요약됩니다.
이 전략의 주요 위험은 다음과 같습니다.
대책은 다음과 같습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
일반적으로 이 전략은 중장기 및 단기 포지션에 매우 적합하다. 트렌드 판단과 브레이크오웃 모멘텀을 결합함으로써 소음을 효과적으로 필터링하고 승률을 향상시킬 수 있다. 동시에, 더 나은 전략 성능을 얻기 위해 매개 변수 최적화를 위한 여지가 있다.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy("Noro's SuperTrend Strategy v1.0", shorttitle = "ST str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR") Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100) ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100) centr = input(true, defval = true, title = "need center of ATR?") border = input(false, defval = false, title = "need border?") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Super Trend ATR 1 src = close Up=hl2-(Factor*atr(ATR)) Dn=hl2+(Factor*atr(ATR)) TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1) Tsl1 = Trend==1? TUp: TDown Tsl2 = Trend==1? TDown: TUp limit = (Tsl1 - Tsl2) / 100 * cloud upcloud = Tsl1 - limit dncloud = Tsl2 + limit //Cloud linecolor = Trend == 1 ? green : red centercolor = centr == true ? blue : na cloudcolor = Trend == 1 ? green : red cline = (Tsl1 + Tsl2) / 2 P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1") P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2") P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center") P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1") P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1") fill(P1, P4, color = linecolor == red ? red : lime, transp = 50) fill(P2, P5, color = linecolor == red ? red : lime, transp = 50) //Signals up = Trend == 1 and close < open //and low < cline dn = Trend == -1 and close > open //and high > cline //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong ? lot : 0) if dn strategy.entry("Short", strategy.short, needshort ? lot : 0)