볼링거 밴드 및 골든 비율에 기초한 평균 반전 거래 전략

저자:차오장, 날짜: 2023-11-16 16:52:55
태그:

img

전반적인 설명

이 전략은 골든 비율 라인을 사용한다. 이 전략은 골든 비율 라인을 사용한다. 이 전략은 골든 비율 라인을 사용한다.

전략 논리

  1. 볼링거 대역을 계산합니다. 중간 대역, 상단 대역 및 황금 비율 하단 대역
  • 중간 대역: n 기간의 vwma
  • 상단역: 중단역 + k * n 기간 표준편차
  • 황금 비율 하위 대역: 중간 대역 - 0.618 * n 기간 표준편차
  1. 판사 구성
  • 50일 MA가 200일 MA보다 높으면 상승 추세를 나타냅니다.
  • 가격 접촉 또는 아래 황금 비율 하단 밴드, 구매 신호로
  1. 출구
  • 가격이 BB 상단 범위를 넘으면 가격이 하단 범위를 벗어나고 닫은 지위가 있다고 간주됩니다.
  1. 스톱 로스
  • 일정한 비율의 스톱 로스를 설정합니다. 예를 들어 5%

장점

  1. BB 중선에 SMA 대신 vwma를 사용하는 것은 가격 움직임을 더 잘 반영합니다.

  2. 황금 비율은 중요한 지원/저항입니다. 반향의 기초를 제공합니다.

  3. 상승 추세에서 MA는 전체 추세가 상승하는 것을 보장합니다.

  4. 매 거래에 대한 고정 스톱 손실 통제 손실

위험성

  1. 골든 비율 라인은 지원을 보장하지 않습니다, 가격은 통과 할 수 있습니다

  2. 고정 스톱 손실은 임의적일 수 있습니다. 변동성에 따라 조정하는 것을 고려해야 합니다.

  3. MA 상승 추세는 잘못된 브레이크오웃이 될 수 있습니다. 더 많은 지표를 확인해야 합니다.

  4. 회전 길이 확실하지 않습니다, 출구 합리적인 수익을 필요로

강화

  1. BB 기간, SD 곱셈, 고정 스톱 손실 비율 등 파라미터의 다른 조합을 테스트합니다.

  2. 시장 추세와 반전 확률을 결정하기 위해 더 많은 지표를 추가하십시오. 예를 들어 MACD, KD 등.

  3. ATR 또는 후속 중지와 같은 동적 중지 고려

  4. 이윤 취득을 최적화 하는 것, 예를 들어 이윤 정지, 부분 이윤 취득 등

요약

이 전략 거래는 명확한 논리, 간단한 매개 변수 및 제어 가능한 드라우다운과 함께 BB 황금 비율 라인을 사용하여 회귀를 의미합니다. 그러나 또한 위험이 있으며, 추세에 대한 더 많은 기술적 지표와 실제 사용 전에 더 나은 정지 / 출구를 추가하여 추가 테스트 및 최적화를 필요로합니다. 전반적으로 양 거래에서 황금 비율을 사용하는 아이디어를 제공합니다. 더 자세히 탐구 할 가치가 있습니다.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © mohanee

//@version=4

strategy(title="Bollinger Band with Fib Golden Ratio (0.618)",  shorttitle="Bollinger Band with Fib Golden Ratio" , overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  

length = input(50,title="BB Length" , minval=1)
src1 = input(hlc3, title="Source")
//mult1 = input(1.33, minval=0.001, maxval=50)
mult = input(1.5,title="multplier", minval=0.001, maxval=50)

stopLoss=input(5,title="Stop Loss",minval=1)

basis = vwma(src1, length)
dev = mult * stdev(src1, length)

//dev3 = mult3 * stdev(src, length)

upper_618= basis + (0.618*dev)
lower_618= basis - (0.618*dev)

//lower_618_dev3= basis - (0.618*dev3)



plot_upper618= plot(upper_618, color=color.purple, linewidth=2, title="0.618")
plot(basis, color=color.purple,style=plot.style_circles,  linewidth=2)

plot_lower618= plot(lower_618, color=color.purple, linewidth=2, title="0.618 entry")
//plot_lower618_dev3= plot(lower_618_dev3, color=color.red, linewidth=1, title="0.618 stop")

//plot_lower618= plot(lower_618, color=color.purple, linewidth=1, title="0.618 entry")

ema200=ema(close,200)
ema50=ema(close,50)

plot (ema200, title="ema200", color=color.orange, linewidth=2)
plot (ema50, title="ema50", color=color.blue , linewidth=2)


longCondition= ema50 > ema200

strategy.entry(id="BB_Fib618", long=true, when = longCondition and ( close < lower_618  or  low <= lower_618)  )

strategy.close(id="BB_Fib618",  comment="points="+tostring(close - strategy.position_avg_price,  "###.##") , when = strategy.position_size >= 1  and crossover(close,upper_618 )) 

//stoploss exit
stopLossVal = strategy.position_size>=1 ?  strategy.position_avg_price * ( 1 - (stopLoss/100) ) : 0.00
strategy.close(id="BB_Fib618", comment="SL="+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and close < stopLossVal ) //and close > strategy.position_avg_price )


더 많은