볼링거 밴드 추적 전략

저자:차오장, 날짜: 2024-02-27 16:11:44
태그:

img

전반적인 설명

이 전략은 트렌드 추적 거래를 구현하기 위해 볼링거 밴드 지표와 추적 스톱 로스를 결합하여 트렌드 추적 거래를 사용합니다. 가격이 상부 레일을 통과 할 때 짧고 가격이 하부 레일을 통과 할 때 길게됩니다. 스톱 로스 및 영업 가격을 설정함으로써 이익을 잠금 할 수 있습니다. 한편,이 전략은 옵션 역전 엔트리 선택도 제공합니다. 이것은 가격이 밴드에 다시 들어갈 때 역전 주문을하는 것을 의미합니다.

전략 원칙

이 전략은 먼저 볼링거 밴드의 중간 레일, 상부 레일 및 하부 레일을 계산합니다. 중간 레일은 WMA와 Len의 길이를 나타내고 상부 및 하부 레일은 표준 편차가 편차로 곱되는 것을 나타냅니다.

가격이 상단 레일을 넘을 때, 짧게; 가격이 하단 레일을 넘을 때, 길게. 포지션을 열면, 스톱 로스를 설정하고 이윤을 취합니다. 스톱 로스 가격은 입력 스톱 값이고, 이윤을 취하는 가격은 입력 제한 값입니다.

또한, 전략은 또한 반전 오픈 옵션을 제공합니다. 반전 엔트리가 확인되면 가격이 MEAN REVERSION 거래에 속하는 볼링거 밴드에 다시 들어갈 때 반전 주문이 수행됩니다.

트렌드 오프닝이나 리버스 오프닝이든, 스톱 로스 및 영업 취득의 설정은 동일합니다. 스톱 로스 및 영업 취득의 두 가지 옵션이 있습니다. 고정 스톱 로스 또는 트레일링 스톱, 가격 변화에 따라 조정됩니다.

이점 분석

이 전략은 볼링거 밴드 지표와 스톱 로스 추적을 결합하여 트렌드 이윤을 잠금하는 동시에 위험을 효과적으로 제어합니다. 역전 오픈은 스톱 로스 발생 가능성을 줄일 수 있습니다.

볼링거 밴드 상부 및 하부 레일은 가격 돌파구를 명확하게 결정할 수 있습니다. 밴드 트레이딩 방법은 PnL 결과를 명확하게합니다. 추적 스톱 손실은 얻은 이익이 철회되는 것을 방지하기 위해 스톱 손실 위치를 조정합니다.

위험 분석

볼링거 밴드 전략의 가장 큰 위험은 트렌드 역전이다. 가격이 상부 레일을 통과 할 때 짧은 지점에 가면 가격이 V 모양의 역전으로 나타날 수 있으며 빠른 스톱 손실로 이어질 수 있습니다. 긴 포지션은 비슷한 상황에 직면합니다.

리버스 오프닝은 트렌드 지속 기회를 놓칠 수 있습니다. 가격이 다시 범위에 들어갈 때 리버스 오더를 하는 것은 이익을 줄일 수 있습니다.

또한 부적절한 매개 변수 설정 또한 위험을 증폭시킬 수 있습니다. Len 및 Deviation은 조심스럽게 설정되어야합니다. 그렇지 않으면 중지 손실의 위험이 증가 할 것입니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 매개 변수 적응 기능을 추가합니다. 렌과 오차는 시장 변동성에 따라 동적으로 조정하여 볼링거 밴드를 가격에 더 가깝게 만들 수 있습니다.

  2. 오픈 포지션 필터를 추가합니다. 다시 끌어내리지 않도록 거래량 급증 및 거래 거래 증가와 같은 추가 조건을 추가 할 수 있습니다.

  3. 다른 지표 필터 신호와 결합합니다. 잘못된 신호 또는 놓친 신호를 피하기 위해 MACD 및 KDJ와 같은 지표를 사용하여 트렌드 경향을 판단하십시오.

  4. 시간 제한을 추가합니다. 특정 기간 동안만 거래하면 오버나이트 위험을 줄일 수 있습니다.

요약

볼링거 밴드 추적 전략은 볼링거 밴드 인디케이터를 사용하여 가격 돌파구를 결정합니다. 그것은 스톱 로스 및 취리 수익을 설정하여 수익을 잠금하고 위험을 조정하기 위해 스톱 로스를 추적합니다. 전략은 간단하고 실용적입니다. 시장 조건에 따라 트렌드 거래 또는 역전 거래를 선택할 수 있습니다. 매개 변수를 최적화하고 필터 조건을 추가함으로써 더 안정적인 이익을 얻기 위해 위험을 더 줄일 수 있습니다.


/*backtest
start: 2024-02-19 00:00:00
end: 2024-02-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="BB Strategy (Basic)",overlay=true, initial_capital=25000, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=3.02)
len = input(20, minval=1, title="Length")
src = input(close, title="Source")
mult = input(2.0, "Deviation", minval=0.001, maxval=50)
//price_drop = input(.003, "When price drops (In Ticks) Enter Long", step=.001)
//price_climb = input(.003, "When price climbs (In Ticks) Enter Short", step=.001)
trail = input(true, "Trailing Stop(checked), Market stop(unchecked)")
stop = input(10000, "Stop (in ticks)", step=5)
limit = input(20000, "Limit Out", step=5)
//size = input(1, "Limit Position Size (pyramiding)", minval=1)
revt = input(true, "Reversal Entry(checked, Trend Entry(unchecked)")
timec = input(false, "Limit Time of Day (Buying Side)")

//calculations and plots
revti = if revt==false
    true
basis = wma(src, len)
dev = mult * stdev(src, len)
upper = basis + dev
lower = basis - dev
plot(basis, color=red)
p1 = plot(upper, color=teal)
p2 = plot(lower, color=teal)
fill(p1, p2)
u = crossover(high, upper) 
d = crossunder(low, lower)
//Time Session
sess = input("1600-0500", "Start/Stop trades (Est time)")
t = time(timeframe.period, sess)

//Orders
if(timec)
    strategy.entry("Enterlong", long=revt, when=d and t>1)
else
    strategy.entry("Enterlong", long=revt, when=d)
if(trail)
    strategy.exit("Exit","Enterlong", profit=limit, trail_points = 0, trail_offset = stop )
else
    strategy.exit("Exit","Enterlong", profit=limit, loss = stop )
    
if(timec)
    strategy.entry("Entershort", long=revti, when=u and t>1)
else
    strategy.entry("Entershort", long=revti, when=u)
if(trail)
    strategy.exit("Exit","Entershort", profit=limit, trail_points = 0, trail_offset = stop )
else
    strategy.exit("Exit","Entershort", profit=limit, loss = stop )
  



더 많은