확정된 격차 전략

저자:차오장, 날짜: 2024-01-15 15:19:56
태그:

img

전반적인 설명

확정된 분산 전략은 더 신뢰할 수 있는 입점 지점을 결정하기 위해 RSI 지표와 Awesome 오시일레이터로부터의 이중 분산 신호를 활용합니다. RSI와 AO 지표가 최고 또는 최저의 역전을 형성하는 동안 가격이 새로운 최고 또는 최저를 형성하면 분산 신호입니다. 이 전략은 일부 잘못된 신호를 필터링하고 진입 효과를 향상시키기 위해 동시에 두 지표에서 분리를 필요로합니다.

전략 원칙

이 전략은 가격 상승과 하락의 크기와 RSI 및 AO 지표의 값 사이의 차이에 따라 구매 및 판매 포인트를 판단합니다. 구체적인 판단 방법은 다음과 같습니다.

상승차별: RSI와 AO가 상승할 때 가격이 하락하고 RSI와 AO가 상승할 때 가격이 하락하여 상승차별 신호를 형성합니다.

하향적 분산: RSI와 AO가 하향적 분산 신호를 형성하는 동안 RSI와 AO가 하향적 분산 신호를 형성하는 동안 가격이 상승합니다.

이 전략은 두 지표가 동시에 분산 기준을 충족하도록 요구하여 단일 지표의 잘못된 분산에서 오류 신호를 피합니다. 분산 신호가 설정되면 볼린거 반도의 하단 또는 상단 레일 근처에, 특히 하단 레일 위에 또는 상단 레일 아래에 정지 손실을 설정합니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이중 지표 필터링은 신호의 신뢰성을 높이고 단일 지표에서 잘못된 분리가 발생하는 신호를 피합니다.

  2. 매입점과 매출점을 결정하기 위해 지표의 분산 특성을 사용하는 것은 상대적으로 작은 회퇴 가능성을 가지고 있습니다.

  3. 격차 신호는 좋은 지속 가능성과 더 큰 수익 잠재력을 가지고 있습니다.

  4. 주요 지지 또는 저항 근처에 스톱 로스를 설정하면 개별적인 큰 손실의 가능성을 감소시킵니다.

위험 분석

이 전략에는 또한 몇 가지 위험이 있습니다.

  1. 이중 필터링의 조건은 덜 자주 충족되고, 아마도 일부 무역 기회를 놓칠 수 있습니다.

  2. 분리는 100% 신뢰할 수 있는 신호가 아니며, 일부 개별 상황에서 손실이 발생할 수 있습니다.

  3. 부적절한 Bollinger Bands 매개 변수 설정은 너무 느슨하거나 너무 단단한 스톱 손실을 초래할 수 있습니다.

최적화 방향

이 전략은 여러 가지 방법으로 최적화 될 수 있습니다.

  1. 분리를 판단하는 사이클 매개 변수를 조정하여 분기 신호의 매개 변수를 최적화합니다.

  2. 트레일링 스톱 또는 동적 스톱 손실과 같은 다른 스톱 손실 방법을 테스트합니다.

  3. 신호 신뢰성을 더 향상시키기 위해 거래량과 같은 다른 지표에 의한 필터링을 증가시킵니다.

  4. 트렌드, 지원/저항 및 다른 요인을 종합적으로 고려하여 분산 신호의 품질을 식별합니다.

요약

확정된 분산 전략은 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)


더 많은