이 전략은 부린 반지와 일일 강도 지수를 기반으로 한 평균 회귀 전략이다. 가격의 부린 반지를 뚫고 하향으로, 거래량 지수의 일일 강도 지수에 결합하여 진출 시기를 판단한다. 전략의 장점은 다음과 같습니다: 가격의 평균 회귀 특성을 활용하고, 양 에너지 지표 필터링 신호에 결합한다. 그러나 회귀가 확대되고, 수익 시간이 길어지는 등의 위험이 있습니다.
이 전략은 먼저 브린 띠의 중간 궤도, 상단 궤도 및 하단 궤도를 계산한다. 중간 궤도는 종전 가격의 간단한 이동 평균 또는 지수 이동 평균이다. 상단 궤도는 표준 격차를 계산하여 중간 궤도에서 하단 표준 격차의 두 배를 추가하여 구성한다. 가격이 하단 궤도를 돌파 할 때 평균값으로 돌아가는 기회를 볼 때, 다중 포지션을 취한다. 가격이 상단 궤도를 돌파 할 때, 가격이 평균값에서 과도하게 이탈 할 때, 빈 포지션을 취한다.
보조적인 판단 지표로서, 전략은 일일 강도 지수를 도입한다. 이 지표는 가격 정보와 거래량 정보를 결합한다. 지수가 긍정할 때 구매력이 증가하는 것을 나타내고, 더 많은 포지션 신호로 한다. 지수가 부정할 때 판매력이 증가하는 것을 나타내고, 빈 포지션 신호로 한다.
포지션 개시 측면에서, 전략은 가격의 브루린을 뚫고 하향 경로를 동시에 필요로 하며, 일일 강도 지수의 판단 지표이다. 중지 측면에서, 전략은 시간을 두고 중지하고, 일정 주기를 넘어서서 이익을 얻지 못하면 중지하고 퇴출을 선택한다.
이 전략의 가장 큰 장점은 가격의 평균 회귀 특성을 활용하여 이익을 얻는 데 있습니다. 가격이 큰 편차를 나타낸 후, 통계 법칙에 따라 가격이 평균축으로 회귀할 확률이 높기 때문에 전략의 작동에 이론적 기반을 제공합니다.
또 다른 장점은 거래량이 가격 신호를 필터링하기 위해 거래량 지표와 일간 강도 지수를 추가한다는 것입니다. 거래량은 가격 신호의 유효성을 증명할 수 있습니다. 이것은 일부 가격의 급격한 변동과 거래량이 부족할 경우 잘못된 신호를 발생시키는 것을 피합니다.
이 전략은 가격의 평균 회귀의 확률적 사건에 의존하여 수익을 창출하지만, 시장 가격의 무작위적인 이동은 또한 스톱 손실이 유발되어 손실을 초래할 수 있습니다. 이것은 평균 회귀 전략이 일반적으로 직면하는 위험입니다.
또 다른 주요 위험은 가격의 평균으로 돌아가는 것은 그 자체로 긴 시간 주기의 과정이라는 것입니다. 투자자에게는 자금이 한동안 갇혀있을 수 있습니다. 이러한 시간 위험은 투자자가 다른 더 나은 투자 기회를 잃을 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
다른 시장의 변동 환경에 적응하기 위해 브린 벨트 변수, 조정 주기, 표준 격차 지표를 최적화
다른 종류의 이동 평균을 시도해 보세요. 예를 들어, 선형 가중 이동 평균은 부드러움을 향상시킵니다.
다른 종류의 거래량 지표를 사용해 더 나은 거래량 확인 신호를 찾으십시오.
단 하나의 주문의 최대 손실을 제어하기 위해 Stop Loss Halt 전략을 추가합니다.
이 전략은 전체적으로 전형적인 평균 회귀 전략이다. 확률적 사건에 의존하여 수익을 얻지만 위험도 마찬가지로 분명하다. 매개 변수를 조정하여 지표 최적화는 더 나은 결과를 얻을 수 있다. 그러나 투자자에게는 이 전략의 속성을 올바르게 파악하는 것도 중요합니다.
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Bollinger Bands Strategy with Intraday Intensity Index
// by SparkyFlary
//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Bollinger Bands Strategy with Intraday Intensity Index", shorttitle="Bollinger Bands Strategy", overlay=true)
BBlength = input(20, title="Bollinger Bands length")
BBmaType = input("SMA", title="Bollinger Bands MA type", type=input.string, options=["SMA", "EMA"])
BBprice = input(close, title="source")
timeStop = input(10, title="Time-based stop length")
BBmult = input(2.0, title="Bollinger Bands Standard Deviation")
withIII = input(true, title="with Intraday Intensity Index?")
IIIlength = input(21, title="Intraday Intensity Index length")
//function for choosing moving averages
f_ma(type, src, len) =>
float result = 0
if type == "SMA"
result := sma(src, len)
if type == "EMA"
result := ema(src, len)
result
//Intraday Intensity Index
k1 = (2 * close - high - low) * volume
k2 = high != low ? high - low : 1
i = k1 / k2
iSum = sum(i, IIIlength)
//Bollinger Bands
BBbasis = f_ma(BBmaType, BBprice, BBlength)
BBdev = BBmult * stdev(BBprice, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
plot(BBupper, title="Bollinger Bands Upper Line")
plot(BBlower, title="Bollinger Bands Lower Line")
plot(BBbasis, title="Bollinger Bands Mid line", color=color.maroon)
//Strategy
buy = close[1]<BBlower[1] and close>BBlower and (withIII ? iSum>0 : 1)
sell = close>BBbasis or buy[timeStop] or (strategy.openprofit>0 and buy==0 and buy[1]==0 and buy[2]==0 and buy[3]==0)
short = close[1]>BBupper[1] and close<BBupper and (withIII ? iSum<0 : 1)
cover = close<BBbasis or short[timeStop] or (strategy.openprofit>0 and short==0 and short[1]==0 and short[2]==0 and short[3]==0)
strategy.entry(id="enter long", long=true, when=buy)
strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
strategy.close(id="enter short", comment="exit short", when=cover)