리소스 로딩... 로딩...

볼링거 밴드 스토카스틱 오시레이터 전략

저자:차오장, 날짜: 2024-05-09 15:59:11
태그:SMA

img

전반적인 설명

이 전략은 볼링거 밴드와 스토카스틱 오시레이터 (Stochastic Oscillator) 를 기반으로 한 거래 전략이다. 시장의 변동성 범위를 결정하기 위해 볼링거 밴드를 활용하고 시장의 과잉 구매 및 과잉 판매 상태를 판단하기 위해 스토카스틱 오시레이터를 사용합니다. 가격이 상부 볼링거 밴드 (Bollinger Band) 를 넘으면 전략은 길게; 가격이 하부 볼링거 밴드 (Bollinger Band) 를 넘으면 전략은 짧게. 동시에 전략의 정확성과 신뢰성을 향상시키기 위해 거래 신호를 필터링하기 위해 스토카스틱 오시레이터를 사용합니다.

전략 원칙

이 전략의 핵심은 두 가지 기술 지표: 볼링거 밴드 (Bollinger Band) 와 스토카스틱 오시레이터 (Stochastic Oscillator) 이다. 볼링거 밴드는 세 가지 라인으로 구성되어 있다: 중간 밴드, 상위 밴드, 하부 밴드. 중간 밴드는 가격의 간단한 이동 평균이며, 상위 및 하부 밴드는 중간 밴드 더하기 마이너스 가격의 표준 편차의 특정 배수이다. 가격이 상위 밴드 이상으로 넘으면 시장이 과잉 구매 될 수 있음을 나타냅니다. 가격이 하위 밴드 아래에 떨어지면 시장이 과잉 판매 될 수 있음을 나타냅니다.

스토카스틱 오시레이터는 %K 라인과 %D 라인 두 줄로 구성됩니다. %K 라인은 최근 기간 동안 가장 높고 가장 낮은 가격 내에서 종료 가격의 위치를 측정하고, %D 라인은 %K 라인의 이동 평균입니다. %K 라인이 %D 라인 위에 넘어가면 시장이 과소 구매 될 수 있음을 나타냅니다. %K 라인이 %D 라인 아래에 넘어가면 시장이 과소 판매 될 수 있음을 나타냅니다.

이 전략은 이 두 가지 지표를 결합한다. 가격이 상부 볼링거 밴드 위에 돌파하고 스토카스틱 오시레이터 %K 라인이 %D 라인을 넘을 때, 전략은 긴; 가격이 하부 볼링거 밴드 아래에 떨어지고 스토카스틱 오시레이터 %K 라인이 %D 라인을 넘을 때, 전략은 짧은. 이 조합은 불안정한 시장에서 빈번한 거래를 피하면서 효과적으로 시장 추세를 포착 할 수 있다.

전략적 장점

  1. 이는 트렌드와 변동적인 시장 상태를 나타내는 지표를 결합하여 다양한 시장 환경에서 안정적인 수익을 얻을 수 있습니다.
  2. 볼링거 밴드는 시장 변동성의 변화에 동적으로 적응하여 전략의 적응력을 향상시킬 수 있습니다.
  3. 스토카스틱 오시레이터는 일부 잘못된 브레이크오웃 신호를 효과적으로 필터링하여 전략의 정확성을 향상시킬 수 있습니다.
  4. 전략 논리는 명확하고 이해하기 쉽고 구현하기 쉽기 때문에 다양한 수준의 거래자에게 적합합니다.

전략 위험

  1. 시장 트렌드가 불분명하거나 변동성이 높은 상황에서 전략은 많은 잘못된 신호를 생성하여 빈번한 거래와 손실로 이어질 수 있습니다.
  2. 이 전략은 역사적인 데이터에 의존하고 있으며 예상치 못한 사건이나 시장 이상으로 인해 상당한 마감이 발생할 수 있습니다.
  3. 전략 매개 변수 선택은 전략 성과에 상당한 영향을 미치며, 다른 매개 변수들은 완전히 다른 결과를 가져올 수 있습니다.

전략 최적화 방향

  1. 더 많은 필터링 조건, 예를 들어 거래량, 다른 기술적 지표 등을 추가하는 것을 고려하여 신호의 신뢰성을 더욱 향상시킵니다.
  2. 현재 시장에 가장 적합한 매개 변수 조합을 찾기 위해 볼링거 밴드 및 스토카스틱 오시레이터 매개 변수를 최적화하십시오.
  3. 단일 거래의 위험을 제어하기 위해 스톱 로스 및 트레일링 스톱 로스와 같은 리스크 관리 메커니즘을 도입합니다.
  4. 이 전략을 다른 전략과 결합하여 더 강력한 전략 포트폴리오를 형성하는 것을 고려하십시오.

요약

이 전략은 두 가지 고전적인 기술 지표인 볼린거 밴드 (Bollinger Bands) 와 스토카스틱 오시레이터 (Stochastic Oscillator) 를 결합하여 트렌딩 및 오시일레이션 시장 상태에서 안정적인 수익을 달성하는 간단하면서도 효과적인 거래 전략입니다. 이 전략은 또한 일부 위험과 한계를 가지고 있지만 적절한 최적화 및 개선으로 전략의 성능과 적응력을 더욱 향상시킬 수 있으며 참조 및 학습 가치가있는 거래 전략이 될 수 있습니다.


/*backtest
start: 2023-05-03 00:00:00
end: 2024-05-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Unique Bollinger Bands Strategy", overlay=true)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))




// Parameters
bbLength = input.int(34, title="Length", minval=1)
bbMultiplier = input.float(2.0, title="Multiplier", minval=0.001, maxval=50)

// Source
priceData = close // Unique name for price data source

// Bollinger Bands Calculation
bbBasis = ta.sma(priceData, bbLength)
bbDeviation = ta.stdev(priceData, bbLength)
bbDeviationMultiplied = bbMultiplier * bbDeviation

bbUpperBand = bbBasis + bbDeviationMultiplied
bbLowerBand = bbBasis - bbDeviationMultiplied

// Plot Bollinger Bands
plot(bbBasis, color=color.blue, linewidth=2)
plot(bbUpperBand, color=color.blue)
plot(bbLowerBand, color=color.orange)

// Strategy Logic for Entry and Exit
enterLong = ta.crossover(priceData, bbUpperBand)
enterShort = ta.crossunder(priceData, bbLowerBand)

// Enter Long when price crosses over upper band
if (enterLong)
    strategy.entry("Long", strategy.long)
// Enter Short when price crosses under lower band
if (enterShort)
    strategy.entry("Short", strategy.short)

// Close Long when Short condition is met (i.e., price under lower band)
if (enterShort)
    strategy.close("Long")
// Close Short when Long condition is met (i.e., price over upper band)
if (enterLong)
    strategy.close("Short")






관련

더 많은