헤딩 오스실레이션 역전 전략

저자:차오장, 날짜: 2023-12-20 15:43:18
태그:

img

전반적인 설명

헤지 오시레이션 역전 전략 (Hedging Oscillation Reversal strategy) 은 단기적인 거래 전략으로 볼린거 밴드, 앙벨로프 라인, ADX 및 스토카스틱 (Stochastics) 과 같은 여러 지표를 사용하여 역전 지점을 중심으로 헤지 포지션을 취하기 위해 시장 역전 지점을 식별합니다. 이 전략은 주로 볼린거 밴드 및 앙벨로프 라인을 사용하여 거래 신호를 확인하기 위해 가격이 과도하게 확장되었는지 여부를 결정하는 동시에 ADX를 사용하여 트렌드 강도를 결정하고 스토카스틱을 사용하여 역전 지점을 중심으로 헤지 포지션을 설정합니다.

전략 원칙

헤지 오실레이션 리버스 전략은 다음 판단 규칙에 기초합니다.

  1. 종료 가격은 볼링거 밴드의 상부 레일을 초과하고 앙벨로프 라인의 상부 레일을 초과하면 가격이 과잉 매입 상태일 수 있음을 나타냅니다. 이 시점에서 ADX가 30 미만이라면 트렌드 강도가 강하지 않다는 것을 의미합니다. 한편, 스토카스틱이 50보다 높다면 과잉 매입 영역에 있음을 의미합니다. 따라서 짧은 포지션을 고려 할 수 있습니다.

  2. 폐쇄 가격은 볼링거 밴드의 하부 레일 아래와 앙벨로프 라인의 하부 레일 아래에 있을 때, 가격이 과판된 영역에 있을 수 있음을 나타냅니다. 이 시점에서, ADX가 30보다 작다면, 트렌드 강도가 강하지 않다는 것을 의미합니다. 한편, 스토카스틱이 50보다 작다면, 그것은 과판된 영역에 있다는 것을 의미합니다. 따라서 긴 포지션을 고려할 수 있습니다.

  3. 쇼트 포지션의 스톱 로스 출구 조건은 종료 가격이 볼링거 밴드 하부 레일 이하 또는 앙벨로프 라인의 하부 레일 이하 또는 스토카스틱이 50 이하인 것입니다.

  4. 긴 포지션의 스톱 로스 출구 조건은 종료 가격이 볼링거 밴드 상부 레일 이상 또는 앙벨로프 라인의 상부 레일 이상 또는 스토카스틱이 50보다 높다는 것입니다.

이러한 판단 규칙을 통해 우리는 전환점을 중심으로 헤지 포지션을 설정하고 단기 가격 변동으로부터 이익을 얻을 수 있습니다.

이점 분석

이 헤지 오실레이션 역전 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 판단을 위해 여러 지표를 사용하는 것은 거래 신호를 효과적으로 확인하고 잘못된 브레이크를 피할 수 있습니다.

  2. 트렌드 반전 지점 주변에서 거래하는 것은 상대적으로 높은 성공률을 가지고 있습니다.

  3. 헤지 운영 방법을 채택하면 위험을 효과적으로 제어할 수 있습니다.

  4. 높은 거래 빈도는 단기 거래에 적합합니다.

  5. 수입의 원천은 주로 가격 변동에서 비롯되는데, 트렌드 역행에 전적으로 의존하지 않습니다.

위험 분석

이 헤지 오시슬레이션 리버스 전략은 또한 주의가 필요한 몇 가지 위험을 가지고 있습니다:

  1. 여전히 반전 실패의 가능성이 있고 더 큰 손실로 이어질 것입니다.

  2. 빈번한 거래는 과도한 최적화로 이어집니다.

  3. 회전 시기를 정확하게 파악하지 못하면 손실이 커질 수 있습니다.

  4. 트렌드 돌연변이가 발생할 가능성이 있습니다.

이러한 위험에 대응하기 위해, 우리는 지표 매개 변수를 최적화하고, 스톱 손실을 엄격히 통제하고, 일반적인 방향을 결정하기 위해 트렌드와 근본 분석을 결합해야합니다.

최적화 방향

이 헤지 오시슬레이션 역전 전략은 다음 방향으로도 최적화 될 수 있습니다.

  1. 거래 신호 품질을 향상시키기 위해 지표 매개 변수를 최적화합니다.

  2. 추세에 반하는 거래를 피하기 위해 근본적인 요소 판단을 늘려라.

  3. 성공률을 높이기 위해 V 모양의 반전 패턴 인식을 포함합니다.

  4. 동적으로 스톱 손실 범위를 조정합니다.

  5. 단일 거래 손실을 엄격히 통제하기 위해 자본 관리를 최적화하십시오.

요약

헤딩 오시설션 리버스 전략은 여러 지표 판단에 기초하여 리버스 지점 주위의 헤지 포지션을 취하고 있으며, 이는 높은 거래 빈도와 쉬운 리스크 제어의 장점을 가지고 있습니다. 그러나 리버스 트레이딩의 위험을 무시할 수 없습니다. 우리는 지속적으로 전략을 최적화하고, 거래 규칙을 엄격히 준수하고,이 효율적인 단기 거래 전략을 최대한 활용해야합니다.


/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=5
strategy("Contrarian Scalping Counter Trend",overlay=true)

//bollinger bands
length = input.int(20, minval=1, title="Length BB")
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev BB")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev


//envelope
len = input.int(20, title="Length Envelope", minval=1)
percent = input(1.0)
exponential = input(false)
envelope = exponential ? ta.ema(src, len) : ta.sma(src, len)
k = percent/100.0
upper_env = envelope * (1 + k)
lower_env = envelope * (1 - k)

//adx
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

//stochastic

periodK = input.int(50, title="%K Length", minval=1)
smoothK = input.int(20, title="%K Smoothing", minval=1)
stock = ta.sma(ta.stoch(close, high, low, periodK), smoothK)


short=close> upper and close >upper_env and sig < 30 and stock > 50
long=close< lower and close <lower_env and sig < 30 and stock < 50


short_exit= close < lower or close<lower_env or stock <50
long_exit=close > lower or close>lower_env or stock >50



strategy.entry("short",strategy.short,when=short)
strategy.close("short",when=short_exit)


strategy.entry("long",strategy.long,when=long)
strategy.close('long',when=long_exit)


더 많은