이중 이동 평균 오스실레이션 브레이크 전략

저자:차오장, 날짜: 2024-01-08 14:43:48
태그:

img

전반적인 설명

이중 이동 평균 오스실레이션 브레이크아웃 전략 (Dual Moving Average Oscillation Breakout strategy) 은 이중 이동 평균 시스템을 활용한 단기 거래 전략이다. 이 전략은 가격 채널과 이중 볼링거 밴드 (double Bollinger Bands) 를 기반으로 빠른 RSI 지표에 의해 도움을 받아 과잉 구매 및 과잉 판매 조건을 결정하는 거래 신호를 생성한다. 이 전략은 중장기 가격 추세에서 수익을 위해 브레이크아웃을 포착하는 것을 목표로 한다.

전략 논리

이중 이동 평균 오스실레이션 브레이크아웃 전략은 20 기간 가격 채널과 볼링거 밴드를 주요 거래 지표로 사용합니다. 가격 채널은 현재 가격 오스실레이션 범위를 나타내는 가장 높고 가장 낮은 가격의 이동 평균으로 구성됩니다. 볼링거 밴드는 가격 채널의 중간선과 표준 편차로 형성되며 가격의 변동 범위를 직관적으로 설명합니다. 가격이 채널의 상부 및 하부 레일에 접근하면 가격이 오스실레이션 범위를 뚫고 새로운 트렌드를 형성 할 수 있음을 나타냅니다. 이 시점에서 과소매 또는 과소매 조건을 판단하기 위해 빠른 RSI 지표와 결합하여 트렌드 방향을 결정하고 거래 결정을 내릴 수 있습니다.

특히, 빠른 RSI가 5보다 낮을 때 과판된 구역으로 간주되며, 빠른 RSI가 99을 초과할 때 과반 구매된 구역으로 간주됩니다. 또한, K-라인 엔티티의 방향 및 새로운 가격의 최고 (하락) 과 같은 요소도 잘못된 브레이크오프를 피하기 위해 고려해야합니다. 위의 조건이 충족되면 구매 및 판매 신호가 생성됩니다.

장점

이중 이동 평균 오스실레이션 브레이크아웃 전략의 가장 큰 장점은 수익을 위해 중장기 가격 트렌드의 굴곡 지점을 포착한다는 것입니다. 단일 이동 평균과 채널에 비해 이중 볼링거 밴드는 가격 변동과 볼륨을 더 직관적으로 반영합니다. 그리고 20 일 및 60 일 이동 평균과 같은 더 긴 사이클 지표에 비해 가격 변화에 더 빠르게 반응하고 회전을 포착하는 데 더 높은 성공률을 가지고 있습니다. 또한 빠른 RSI 지표를 결합하면 잘못된 브레이크아웃을 효과적으로 필터 할 수 있습니다. 따라서이 전략은 수익 가능성을 극대화 할 수 있습니다.

위험성

이중 이동 평균 오스실레이션 브레이크아웃 전략에는 몇 가지 위험이 있습니다. 첫째, 중장기 거래 자체는 더 높은 스톱 손실 위험을 가지고 있습니다. 강한 트렌드에서는 중장기 지표에서 여러 번 잘못된 브레이크아웃이 발생하여 스톱이 발생할 수 있습니다. 둘째, 과잉 구매 및 과잉 판매 구역을 판단하는 빠른 RSI 지표의 효과는 시장 정서에 영향을 받게됩니다. 시장에서 구조적 변화가 발생하면 그러한 보조 지표의 유용성이 감소합니다. 마지막으로 폐쇄 가격, 부피 및 매출과 같은 다른 요인을 통합하면 의사 정확성이 향상 될 수 있습니다.

대책은 스톱 로스 범위를 적절하게 조정하고 상승 추세에서 스톱 로스 지점을 느슨하게하고 하락 추세에서 강화하는 것입니다. 또한 하나 또는 두 가지 지표에만 의존하는 것을 피하기 위해 더 많은 보조 지표를 완전히 고려하십시오. 판단 효과가 감소하면 위험을 피하기 위해 위치를 적절히 줄이십시오.

최적화 방향

이중 이동 평균 오스실레이션 브레이크아웃 전략의 추가 최적화에 여전히 여지가 있습니다. 첫째, 매개 변수 최적화. 최적의 매개 변수 조합을 찾기 위해 더 많은 사이클 매개 변수를 테스트 할 수 있습니다. 둘째, 모델 최적화. 과잉 구매 및 과잉 판매 영역을 더 정확하게 판단하기 위해 기계 학습 모델을 도입하십시오. 셋째, 시간 프레임 최적화. 최상의 응용 시나리오를 결정하기 위해 매일 및 60 분과 같은 다른 시간 프레임 아래 테스트하십시오. 넷째, 조건 최적화. 볼륨 확장 트렌드 및 인덱스 DMI와 같은 필터 신호에 더 많은 볼륨 및 가격 지표를 추가하십시오.

결론

이중 이동 평균 오스실레이션 브레이크아웃 전략은 이중 볼링거 밴드 시스템을 구축하여 중장기 가격 브레이크아웃을 포착하며 효과적인 트렌드 추적 전략입니다. 이 전략은 높은 성공률과 빠른 응답을 가지고 있으며 효과적으로 수익을 얻을 수 있습니다. 매개 변수 최적화, 모델 최적화, 시간 프레임 선택 및 기타 방법을 통해 전략 성능을 더욱 향상시킬 수 있습니다. 이 전략은 정량 개선 및 응용을 수행하는 경험이 많은 정량 트레이더에게 적합합니다.


/*backtest
start: 2023-01-07 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.4", shorttitle = "NoroBands str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Use ColorBar")
usecb = input(true, "Use CryptoBottom")
usersi = input(true, "Use RSI")
usemm = input(true, "Use min/max")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
needlo = input(false, defval = false, title = "Show Locomotive")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) and (min < min[1] or usemm == false) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) and (max > max[1] or usemm == false) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 ? 1 : 0
//dn3 = fastrsi > 99 ? 1 : 0

//Locomotive
uploco = trend == 1 and close < open and min < min[1] and close < center ? 1 : 0
plotarrow(needlo == true and uploco == 1 ? 1 : 0, colorup = black, colordown = black, transp = 0)

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true)
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

더 많은