DAKELAX-XRPUSDT 볼링거 밴드 평균 역전 전략

저자:차오장, 날짜: 2023-11-02 16:18:34
태그:

img

전반적인 설명

DAKELAX-XRPUSDT는 바이낸스에서 XRPUSDT를 위한 거래 봇 전략이다. 볼링거 밴드를 사용하는 간단한 역대 전략이며, 2019년 5월부터 8월까지 H1 시간 프레임에서 백테스트에서 좋은 성과를 거두며 실시간으로 실행된다.

전략 논리

이 전략은 먼저 20주기 SMA와 상부/하부 볼링거 밴드를 계산한다. 상부 밴드는 SMA + 1.5 표준편차이고, 하부 밴드는 SMA - 2.2 표준편차이다. 그 다음 밴드의 수축 속도를 계산한다. 수축이 > 1.3, 그렇지 않으면 빨간색이라면 노란색으로 채워진다.

클로즈가 하위 지대 아래에 있을 때, 20개의 동전으로 긴 거래를 합니다. 클로즈가 상위 지대 위에 있을 때, 모든 포지션을 닫습니다.

이 전략은 또한 7주기 EMA 빠른 라인과 18주기 EMA 느린 라인을 계산합니다. 느린 라인의 위의 빠른 라인의 크로스오버는 구매 신호이며, 아래의 크로스오버는 판매 신호입니다.

이점 분석

  • 볼링거 밴드와 수축율은 직관적으로 트렌드와 변동성을 식별합니다.
  • EMA 크로스오버와 결합하면 신호에 힘을 더합니다.
  • 좋은 백테스트 결과 및 라이브 거래에서 비교적 안정적

위험 분석

  • 밴드 수축 후 파열 시 고실패 확률
  • 포지션 사이징 위험 과잉 거래 없이 고정 금액 구매
  • 다양한 시장에서 너무 많은 크로스오버가 손실을 초래할 위험이 있습니다.
  • 일일 요인만 고려하고 더 큰 시간 프레임 트렌드를 놓치고 있습니다.

위험을 제어하기 위해 동적 위치 사이즈 또는 스톱 로스를 고려하십시오. 범위 시장에서 위프사를 피하기 위해 크로스오버 전략을 최적화하십시오. 더 큰 움직임을 식별하기 위해 더 높은 시간 프레임 트렌드 지표를 추가하십시오.

최적화 방향

  • 밴드 너비에 따라 구매 금액을 조정합니다. 계약할 때 더 적고 확장 할 때 더 많습니다.

  • 수축이 보이지만 신호가 아직 발생하지 않은 경우 위치를 축적 고려

  • 전체 방향을 결정하기 위해 더 긴 시간 프레임 트렌드 표시기를 추가하십시오. 명확하지 않은 경우 전략을 일시 중지하십시오.

  • 위험을 제어하기 위해 스톱 로스를 포함, 최근 폭의 낮은 근처에 설정할 수 있습니다

  • EMA 기간과 같은 크로스오버 매개 변수를 최적화하여 갇히지 않도록하십시오.

요약

DAKELAX-XRPUSDT는 EMA 크로스오버와 볼링거 밴드 수축을 사용하는 거래 봇 전략이다. 직관적이며 좋은 백테스트 결과를 가지고 있지만 약간의 위험을 포함하고 있다. 포지션 사이징, 스톱 전략, 스톱 로스 추가 및 크로스오버 로직 최적화를 통해 이러한 위험을 줄일 수 있다. 전반적으로 볼링거 밴드 전략의 명확한 예를 제공하지만 안정적인 라이브 이윤을 위해 쌍별 최적화가 필요하다.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="Tradebotler DAKELAX Binance:XRPUSDT Study-strategy", overlay=true)
strategy(title="Tradebotler DAKELAX Binance:XRPUSDT Strategy", overlay=true)

buyAmount = input(20, minval=1)

// SMA20
len2 = input(20, minval=1)
src2 = input(close)
out2 = sma(src2, len2)

// BB contraction value (medium tight)
contraction_value = 1.3
// BB contraction value (very tight)
contraction_value2 = 0.1

// 2xSTDEV BB calculation
dev = stdev(src2, len2)
upper_BB = out2  + 1.5*dev
lower_BB = out2  - 2.2*dev
x1 = plot(upper_BB, color=blue, linewidth = 2)
x2 = plot(lower_BB, color=blue, linewidth = 2)

contraction = (upper_BB-lower_BB)/out2

//fills the BBands according to the contraction value (threshold)

// Calculate values
fastMA  = ema(close, 7)
slowMA  = ema(close, 18)

// Determine alert setups
crossUp   = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)

buySignal   = (crossUp or crossUp[1]) and (low > slowMA)
shortSignal = (crossDown or crossDown[1]) and (high < slowMA)

// Highlight alerts on the chart
bgColour =
     (buySignal and barstate.isrealtime) ? green :
     (shortSignal and barstate.isrealtime) ? red :
     na

signalBuy = (buySignal ) ? true : false
signalSell = (shortSignal ) ? true : false

test = true

test := not test[1]

closesBelowLowerBB = close < lower_BB
closesAboveUpperBB = close > upper_BB

tmptext = "blah"

// Plot values
plot(series=fastMA, color=teal)
plot(series=slowMA, color=orange)

plot(out2, color=black, linewidth = 1)
fill(x1, x2, color = contraction > contraction_value ? black : contraction < contraction_value2 ? yellow: red)

isInRed = contraction < contraction_value and contraction >= contraction_value2
isInYellow = contraction < contraction_value and contraction < contraction_value2

if ( closesBelowLowerBB )
    strategy.order('Buy', strategy.long, buyAmount)

if ( closesAboveUpperBB )
    strategy.close_all()



더 많은