리소스 로딩... 로딩...

이중 트랙 빠른 양적 역전 거래 전략

저자:차오장, 날짜: 2023-12-19 15:59:36
태그:

img

전반적인 설명

이것은 가격 채널, 볼링거 밴드 및 빠른 RSI 인디케이터를 기반으로 한 듀얼 트랙 역전 거래 전략입니다. 효율적인 역전 거래를 달성하기 위해 트렌드를 식별하기 위해 채널 인덱스, 지원 및 저항 수준을 인식하기 위해 볼링거 밴드 및 과잉 구매 및 과잉 판매 신호를 감지하기 위해 빠른 RSI를 결합합니다.

전략 논리

이 전략은 주로 다음과 같은 지표에 의존하여 거래 결정을 내립니다.

  1. 가격 채널: 일정 기간 동안 가장 높고 가장 낮은 가격을 계산하고 채널 중심을 그래프화합니다. 거래 신호는 가격이 채널을 통과 할 때 생성됩니다.

  2. 볼링거 밴드 (Bollinger Bands): 중앙선은 가격 채널의 중앙선이다. 상부와 하부 밴드는 중앙선에서 가격의 편차의 표준편차에 따라 계산된다. 거래 신호는 가격이 볼링거 밴드와 상호 작용할 때 생성된다.

  3. 빠른 RSI (Period = 2): 가격에 대한 과잉 구매 및 과잉 판매 상황을 결정합니다. RSI가 5 이하로 떨어지면 길게 이동하고 RSI가 95 이상으로 상승하면 짧습니다.

  4. 암호화 바닥 지표: 가격이 지원 수준을 돌파했는지 여부를 결정합니다. 빠른 RSI와 결합하여 높은 확률의 긴 신호를 생성합니다.

가격의 타이밍에 따라 채널과 볼린거 대역을 통해 거래를하고, RSI의 과잉 구매 및 과잉 판매 지표에 따라 길거나 짧게 이동하면 이 전략의 핵심 거래 논리가 형성됩니다.

전략 의 장점

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

  1. 듀얼 트랙 시스템은 신호의 정확성을 높인다. 가격 채널은 주요 트렌드를 판단하고 볼링거 밴드는 정확한 지원 및 저항 수준을 식별한다. 이 조합은 신호 품질을 향상시킨다.

  2. 빠른 RSI 인디케이터는 과반 구매 및 과반 판매를 감지하여 반전 기회를 캡처합니다. RSI 기간은 2로 설정되어 있으므로 빠르게 반전 노드를 식별 할 수 있습니다.

  3. 크립토바텀은 긴 신호의 확인을 가속화합니다. 지원 수준을 깨는 것은 바닥 특성에 대한 빠른 판단을 허용하고 긴 신호를 놓치지 않도록합니다.

  4. 합리적인 매개 변수 설정 및 최적화하기 쉽습니다. 간단하고 직관적인 매개 변수 조합은 매개 변수 최적화를 쉽게합니다.

전략 의 위험

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

  1. 부적절한 Bollinger Bands 매개 변수 설정은 중요한 가격 움직임을 놓칠 수 있거나 잘못된 신호를 생성 할 수 있습니다.

  2. 이중 트랙 사이의 상호 작용 패턴은 복잡할 수 있으며 정확한 판단을 위해 약간의 기술적 정교성이 필요합니다.

  3. 가격 인하의 확률이 제거 될 수 없기 때문에 실패한 반전 위험이 여전히 존재합니다.

  4. 매개 변수 최적화에 어려움이 있습니다. 최적의 매개 변수는 시장 조건이 변하면 비효율적일 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 볼링거 대역의 매개 변수를 최적화하여 상위 및 하위 대역을 가격에 더 가깝게 만들고 거래 신호의 정확성을 향상시킵니다.

  2. 손실을 줄이기 위한 스톱 로스 메커니즘을 추가합니다. 특정 임계 비율에 도달하면. 이것은 위험을 효과적으로 제어합니다.

  3. 추세, 지원 및 저항 수준을 결정하기 위해 더 많은 지표를 포함하여 잘못된 신호를 줄이십시오.

  4. 기계 학습 알고리즘을 도입하여 변동하는 시장 환경에 적응하도록 매개 변수를 자동 조정합니다.

결론

이 전략은 가격 채널, 볼링거 밴드 및 빠른 RSI 지표를 통합하여 듀얼 트랙 반전 거래 시스템을 구축합니다. 주요 트렌드를 판단하면서 지원, 저항 및 과잉 구매 / 과잉 판매 기회를 빠르게 포착합니다. 매개 변수 설정은 간단하고 직접적이며 이해하기 쉽고 최적화됩니다. 반전 기회를 효과적으로 식별하고 알고리즘 거래에 적합합니다.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-11-30 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.3", shorttitle = "NoroBands str 1.3", 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")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
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

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

//Lines
colo = needbb == false ? na : black
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")

//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) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 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

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)

더 많은