슈퍼 트렌드 이동 평균 BOLL 지표 전략


생성 날짜: 2023-12-01 16:29:56 마지막으로 수정됨: 2023-12-01 16:30:43
복사: 0 클릭수: 954
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

슈퍼 트렌드 이동 평균 BOLL 지표 전략

개요

BOLL 전략은 ATR 평균의 실제 변동폭을 기반으로 추적하는 일반적인 스톱로드 전략이다. 이 전략은 BOLL 지표와 부린밴드 지표가 결합된 다공간 트렌드 채널을 도표에 그리기 위해 사용된다.

전략 원칙

이 전략은 두 가지 주요 변수인 주기와 곱셈을 사용하여, 각각 10과 3을 기본으로, 초트렌드 평균선을 계산한다. 구체적인 계산 공식은 다음과 같다:

상반선: 종전 가격 - (배 × ATR 평균 실제 변동) 하도선: 마감 가격 + (배 × ATR 평균 실제 변동幅)

종결 가격이 전주기의 상단 궤도보다 높을 때, 다단 신호로 간주; 종결 가격이 전주기의 하단 궤도에서 떨어질 때, 공단 신호로 간주.

이 전략은 또한 브린 밴드 지표와 결합하여 중간 궤도를 기준으로 하위 궤도와 중간 궤도 사이의 두 가지 표준 격차를 분리합니다. 가격이 아래에서 위쪽으로 중간 궤도를 돌파 할 때 구매 신호를 생성하고 상향에서 아래로 중간 궤도를 돌파 할 때 판매 신호를 생성합니다.

전략적 이점

  1. ATA 동적 계산으로 변동의 폭을 계산하여 시장의 변화 추세를 빠르게 파악할 수 있습니다.
  2. 브린 띠 지표와 결합하여 거래 신호를 더욱 신뢰성 있게 만듭니다.
  3. 사용자 정의 가능한 매개 변수, 다른 시장 환경에 적응

전략적 위험

  1. 지진이 발생했을 때 잘못된 신호가 발생하기 쉽다.
  2. 잘못된 매개 변수 설정으로 인해 거래가 자주 발생할 수 있습니다.
  3. “전략적 전환점을 판단할 수 없고, 다소 뒤떨어진 상황”

최적화 방향

  1. filters로 ATR 주기 변수를 최적화하여 노이즈 트랜잭션을 줄여줍니다.
  2. 다른 지표와 함께 저항 지점을 판단하여 수익 회귀 가능성을 낮추는 것
  3. 자금 관리 모듈을 추가하여 단독 손실을 제어합니다.

요약하다

트렌드 초평선 BOLL 지표 전략은 여러 가지 기술 지표의 장점을 통합하고, 동적 추적 스톱 로드 메커니즘을 사용하여 시장 추세를 효과적으로 추적할 수 있다. 이 전략의 매개 변수는 사용자 정의 가능하며, 적응력이 강하며, 바람직한 돌파 추적 전략이다. 그러나 스톱 로드 타격과 거래 빈도의 위험을 예방하는 데 주의를 기울여야하며, 더 복잡한 시장 환경에 적응하기 위해 추가 최적화가 필요합니다.

전략 소스 코드
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 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/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
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 = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short)
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)