
부린반도 평균회귀 전략은 부린반도 지표에 기반한 정량 거래 전략이다. 이 전략은 가격의 평평선 주위의 변동의 통계적 법칙을 활용하여 부린반도에서 벗어난 가격의 하락을 거꾸로 조작하여 가격의 평균회귀 시 수익을 얻으려는 것이다.
브린 띠는 3개의 선으로 구성된다: 중앙 궤도는 이동 평균이고, 상하 궤도는 중앙 궤도 기초에 일정 배수의 표준차를 더하고 빼는 것이다. 통계학 원칙에 따르면, 정규 분포의 경우, 약 95%의 값은 거리의 평균값이 양 표준차의 범위에서 분포한다.
부린띠 평균값 회귀 전략은 바로 이 원리를 이용한다. 가격 상위에서 부린띠를 통과하면, 가격이 너무 높을 수 있음을 나타내고, 회귀의 위험이 있다. 가격 하위에서 부린띠를 통과하면, 가격이 너무 낮을 수 있음을 나타내고, 회귀의 기회가 있다. 따라서, 이 전략은 가격이 부린띠를 통과할 때 공백을 만들고, 아래로 도달할 때 더 많이 하고, 가격의 평균값 회귀의 수익 공간을 잡을 수 있다.
정책 코드의 주요 논리는 다음과 같습니다.
지정된 주기의 이동 평균을 계산하고, 브린 띠의 중간 궤도를 낸다. SMA, EMA, SMMA, WMA, VWMA 등 다양한 유형의 평균을 선택할 수 있다.
이 주기 내의 표준차를 계산하고 사용자가 설정한 배수 파라미터와 결합하여, 브린띠의 오르락 내리락을 얻는다.
종결 가격에서 브린을 통과하면 판매 신호가 발생하고, 종결 가격에서 브린을 통과하면 구매 신호가 발생한다.
전략적 거래 실행: 구매 신호가 발생했을 때 더 많은 포지션을 열고, 판매 신호가 나타나기 전까지 평형 포지션을 열기.
위와 같은 과정을 통해, 전략은 가격이 평균선에서 크게 벗어나면 반전 포지션을 설정할 수 있으며, 가격이 평균값으로 돌아가는 경우 수익을 얻을 수 있습니다.
브린带均值回归策略은 다음과 같은 장점이 있다:
논리는 간단하고 이해하기 쉽고 구현할 수 있다. 이 전략은 통계학의 기본 원칙에 기초하여, 브린 띠를 통해 가격의 변동 범위를 도식화하고, 입구와 출구 조건을 명확하게 명시한다.
적응력이 강하여 여러 시장과 품종에 적용할 수 있다. 브린띠는 보편성이 강한 기술 지표로, 유행성 및 변동성 시장에 대한 어느 정도의 적응력이 있다. 사용자는 다른 시장 특성에 맞게 매개 변수를 유연하게 조정할 수 있다.
가격 변동의 기회를 잡는다. 부린 띠의 확장과 수축은 가격의 변동성을 반영하며, 이 전략은 가격이 상대적으로 높은 지점이나 낮은 지점에 도달했을 때 포지션을 구축하여 가격 회귀 평균의 이익을 얻으려고 한다.
스톱스트로드는 상대적으로 명확하다. 브린의 대역이 일정 신뢰 영역에 대응하기 때문에 이 전략의 스톱스트로드 위치가 상대적으로 쉽게 결정되어 위험을 통제하는데 도움이 된다.
브린의 평균 반향 전략에는 장점이 있지만, 위험도 있습니다.
트렌딩 시장에서 부실한 성능. 시장에서 연속적인 일방적인 트렌드가 나타나고 가격이 부린띠의 상반기 또는 하반기 근처에서 지속적으로 운행되면 이 전략은 자주 손실 거래가 발생할 수 있다.
매개 변수 설정은 민감하다. 브린 밴드의 주기 및 배수 매개 변수는 전략의 성능에 상당한 영향을 미치며, 다른 매개 변수 조합은 매우 다른 결과를 초래할 수 있다. 매개 변수 설정이 부적절하면 전략의 유효성이 크게 저하된다.
빈번한 변동의 위험에 직면한다. 시장의 변동성이 커서 가격이 부린의 상하 경로 사이에 빈번하게 변동할 때, 이 전략은 연속적으로 작은 손실이 발생할 수 있으며, 전체 수익률이 떨어질 수 있다.
거래 비용이 고려되지 않습니다. 이 예제 코드는 점차, 수수료와 같은 거래 비용 요소를 고려하지 않습니다. 실제 응용에서 이러한 요소는 전략의 순 수익에 어느 정도 영향을 미칩니다.
위와 같은 위험에 대응하기 위해, 다음의 조치를 고려하여 전략을 최적화할 수 있습니다.
트렌드 지표와 결합하여 필터링한다. 신호를 판단할 때, 이동 평균과 같은 트렌드 지표를 보조적으로 사용할 수 있다.
최적화 매개 변수 선택. 역사적 데이터에 대한 회귀를 통해, 다양한 매개 변수 조합 하에 전략의 성과를 분석하고, 현재 시장에 적합한 최적의 매개 변수를 선택한다. 매개 변수 평가를 정기적으로 수행하고 조정한다.
다른 필터 조건을 도입한다. ATR과 같은 변동률 지표를 고려하고, 변동률이 너무 높을 때 거래를 중지하거나, 거래량과 같은 다른 지표를 참조하여 신호의 신뢰성을 추가로 확인한다.
거래 비용 요소를 포함하십시오. 전략의 실제 성과를 더 정확하게 평가하기 위해, 점차, 수수료와 같은 거래 비용을 재검토 및 실적에서 계산해야합니다.
위와 같이 언급된 위험 대응 이외에, 다음과 같은 측면에서 브린带均值回归策略을 최적화할 수 있다:
동적으로 조정하는 파라미터. 시장의 변화에 따라, 동적으로 조정하는 브린 밴드의 주기 및 배수 파라미터. 적응성 평균선 (KAMA와 같은) 을 중도로 사용하는 것을 고려할 수 있습니다. 또는 ATR과 같은 지표에 따라 동적으로 조정하는 배수 파라미터를 현재의 시장의 리듬에 맞게 조정합니다.
여러 공백 포지션 관리를 도입한다. 포지션을 개시할 때, 가격과 브린 띠 중간 궤도와의 거리에 따라 포지션 크기를 동적으로 조정할 수 있다. 중간 궤도에서 멀리 떨어져 있을수록, 포지션 개시 비율이 적절히 감소되어 위험을 제어할 수 있다. 중간 궤도에서 가까이 있을수록, 포지션 개시 비율이 적절히 증가하여 더 많은 기회를 잡을 수 있다.
다른 기술 지표와 결합. 브린 밴드를 다른 기술 지표 (RSI, MACD 등) 와 결합하여 더 안정적인 신호 확인 메커니즘을 형성합니다. 여러 지표가 공명 할 때만 거래하여 신호의 신뢰성을 향상시킵니다.
다중 포지션 관리를 고려하십시오. 적절한 조건에서 여러 포지션을 동시에 보유하여 위험을 분산 할 수 있습니다. 예를 들어, 다른 시간 주기에서이 전략을 적용하거나 더 안정적인 수익을 얻기 위해 다른 거래 품종에 대해 동시에 포지션을 열 수 있습니다.
이러한 최적화 조치의 목적은 전략의 적응성, 안정성 및 수익성을 향상시키는 것입니다. 동적 조정, 다중 지표 결합, 포지션 관리와 같은 수단으로 시장 변화에 더 잘 대응하고 위험을 제어하고 더 많은 거래 기회를 잡을 수 있습니다.
브린 띠 평균 회귀 전략은 통계학적인 원리에 기반한 정량 거래 전략으로, 브린 띠를 통해 가격의 변동 범위를 그리고, 가격이 궤도 상향을 벗어나면 반향으로 작동하여 평균 회귀의 수익을 얻습니다. 이 전략은 논리적으로 간단하고 적응력이 강하며 가격 변동의 기회를 잡을 수 있지만, 동시에 추세 시장의 부실성, 민감한 파라미터 설정, 빈번한 진동 등의 위험에 직면합니다.
이러한 위험에 대해, 트렌드 지표, 최적화 매개 변수 선택, 다른 필터 조건의 도입, 거래 비용의 포함과 같은 조치를 결합하여 최적화 할 수 있습니다. 또한, 동적으로 매개 변수를 조정, 다중 포지션 위치 관리, 다른 기술 지표, 다중 포지션 관리와 같은 방법으로 전략의 적응성과 안정성을 더욱 향상시킬 수 있습니다.
전체적으로 볼 때, 브린 반 평균 회귀 전략은 양적 거래에 대한 간단하고 효과적인 아이디어를 제공합니다. 실제 응용에서는 특정 시장 특성과 거래 요구에 따라 전략에 적절한 최적화와 개선이 필요합니다. 지속적인 테스트와 조정을 통해 자신에게 가장 적합한 거래 방식을 찾는 것은 양적 거래의 길에서 장기적인 성공을 거둘 수 있습니다.
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BB Strategy", shorttitle="BB", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
// Calculate moving average based on selected type
ma(source, length, _type) =>
switch _type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Plot Bollinger Bands
plot(basis, "Basis", color=#FF6D00)
p1 = plot(upper, "Upper", color=#2962FF)
p2 = plot(lower, "Lower", color=#2962FF)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
// Buy condition: Price below lower Bollinger Band
buy_condition = close < lower
// Sell condition: Price above upper Bollinger Band
sell_condition = close > upper
// Execute trades
strategy.entry("Buy", strategy.long, when=buy_condition)
strategy.close("Buy", when=sell_condition)