
확정 분산 전략은 RSI 지표와 Awesome Oscillator 지표의 듀얼 분산 신호를 사용하여 더 신뢰할 수 있는 진출 시기를 결정한다. 가격이 새로운 고위 또는 새로운 낮은 것을 형성하고 RSI와 AO 지표가 역으로 높은 고위 또는 낮은 것을 형성하면 분산 신호를 낸다. 이 전략은 두 지표가 동시에 분산되도록 요구하며, 따라서 일부 가짜 신호를 필터링하여 진출 효과를 높인다.
이 전략은 가격 상승과 RSI 및 AO 지표 값 사이의 분산으로 매도점을 판단한다. 구체적인 판단 방법은 다음과 같다:
다발적 분산: 가격이 최근의 새로운 낮은 지점을 형성하고, RSI와 AO는 가격 하락과 RSI와 AO의 상승을 형성하여 다발적 분산 신호를 형성한다.
빈 머리 분산: 가격이 최근에 새로운 고점을 형성하고 RSI와 AO가 최근에 새로운 낮은 곳을 형성합니다. 즉, 가격이 상승하고 RSI와 AO가 떨어지면서 빈 머리 분산 신호를 구성합니다.
전략은 두 가지 지표가 동시에 분산 조건을 충족하도록 요구하여 단일 지표의 가짜 분산으로 인한 잘못된 신호를 피합니다. 분산 신호가 설정되면, 부린을 타고 하계 레일 또는 상계 레일 인근에 스톱 로드를 설정하고, 구체적인 스톱 로드는 하계 레일 위 또는 상계 레일 아래에 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이중 지표 필터링은 신호의 신뢰성을 증가시키고, 단일 지표의 가짜 발산 신호를 방지한다.
지표의 분산 특성을 이용하여 매매점을 판단하고, 철회 가능성은 낮다.
분산 신호는 더 나은 지속성을 가지고 있으며, 수익의 여지가 크다.
중요한 지지 또는 저항 근처에 스톱로드를 설정하여 개별적으로 큰 손실을 줄일 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이중 필터링 조건이 동시에 성립하는 시간은 짧아지고, 일부 거래 기회를 놓칠 수 있다.
그러나, 이 신호는 100% 신뢰할 수 있는 신호가 아니며, 경우에 따라서는 손실이 발생할 수 있습니다.
브린 띠의 파라미터 설정이 잘못되면 막이 너무 느슨하거나 너무 좁아질 수 있다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
분산 판단의 주기 변수를 조정하고, 분산 신호의 변수를 최적화한다.
트레일링 스톱이나 다이내믹 스톱과 같은 다양한 스톱 방식을 테스트합니다.
거래량과 같은 다른 지표 필터를 추가하여 신호의 신뢰성을 더욱 높입니다.
종합적으로 추세, 지원 저항과 같은 요소를 고려하여 분산 신호의 질을 식별한다.
확산 분산 전략은 RSI와 AO의 이중 분산 신호를 통해 시장 진출 시기를 판단하고, 이중 필터 메커니즘은 가짜 신호를 효과적으로 줄여 수익 가능성을 높인다. 전략은 또한 위험을 제어하기 위해 중요한 위치에 스톱로스를 설정하고, 더 나은 위험 수익 특성을 가지고 있다. 변수를 최적화하고, 신호 필터링을 증가시키는 등의 수단을 통해 전략의 안정성과 거래 효과를 더욱 향상시킬 수 있다.
/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Confirmed Divergence Strategy", overlay=true)
source = close
length = input(30, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
// SETTING UP VARIABLES //
src = close
// RSI //
rsiprd = input(title="RSI period",defval=14)
rv = rsi(src,rsiprd)
ob = input(title="Overbought Level", defval=70)
os = input(title="Oversold Level", defval=30)
lengthAO1=input(title="Awesome Short MA", defval=5, minval=1) //5 periods
lengthAO2=input(title="Awesome Long MA", defval=34, minval=1) //34 periods
//Awesome//
AO = sma((high+low)/2, lengthAO1) - sma((high+low)/2, lengthAO2)
// look back periods //
x = input(title = "short lookback period",defval=5)
z = input(title = "long lookback period",defval=25)
// END SETUP //
////////////////////////
// BULLISH DIVERGENCE //
////////////////////////
// define lower low in price //
srcLL = src > lowest(src,x) and lowest(src,x)<lowest(src,z)[x]
// define higher low in rsi //
rsiHL = rv>lowest(rv,x) and lowest(rv,x) > lowest(rv,z)[x] and lowest(rv,z)<os
// define higher low in AO //
aoHL = AO > lowest(AO,x) and lowest(AO,x) > lowest(AO,z)[x] and lowest(AO, x) < 0
BullishDiv = srcLL and rsiHL and aoHL
////////////////////////
// BEARISH DIVERGENCE //
////////////////////////
// define higher high in price //
srcHH = src < highest(src,x) and highest(src,x)>highest(src,z)[x]
// define lower high in RSI //
rsiLH = rv<highest(rv,x) and highest(rv,x) < highest(rv,z)[x] and highest(rv,z)>ob
// define lower high in AO //
aoLH = AO<highest(AO,x) and highest(AO,x) < highest(AO,z)[x] and highest(AO, x) > 0
BearishDiv = srcHH and rsiLH and aoLH
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
if (BullishDiv)
strategy.entry("DivLE", strategy.long, stop=lower, oca_name="BullishDiv",comment="DivLE")
else
strategy.cancel(id="DivLE")
if (crossover(close, lower))
strategy.close("DivSE")
if (crossunder(close, upper))
strategy.close("DivLE")
if (BearishDiv)
strategy.entry("DivSE", strategy.short, stop=upper, oca_name="BearishDiv",comment="DivSE")
else
strategy.cancel(id="DivSE")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)