듀얼 트랙 빠른 양적 반전 거래 전략


생성 날짜: 2023-12-19 15:59:36 마지막으로 수정됨: 2023-12-19 15:59:36
복사: 0 클릭수: 580
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

듀얼 트랙 빠른 양적 반전 거래 전략

개요

이 전략은 가격 채널, 브린 밴드, 빠른 RSI 지표에 기반한 쌍로 역전 거래 전략이다. 이 전략은 채널 지표의 트렌드 식별, 브린 밴드의 지원 저항의 식별, 그리고 빠른 RSI 판단 과매매의 신호를 결합하여 효율적인 역전 거래를 수행한다.

전략 원칙

이 전략은 주로 다음과 같은 지표들을 기반으로 거래 결정을 내립니다.

  1. 가격 통로: 일정 주기 동안의 최고 가격과 최저 가격을 계산하고 통로의 중축을 그리기 . 가격이 통로를 뚫을 때 거래 신호를 발생 .

  2. 부린 띠: 중앙축은 가격 통로의 중앙축으로, 가격과 중앙축의 오차 표준차를 계산하여 상하를 구성한다. 가격과 부린 띠 상하 궤도 상호 작용할 때 거래 신호가 발생한다.

  3. 빠른 RSI ((2주기): 가격의 과매매 상황을 판단하여, RSI는 5보다 낮으면 상가하고, 95보다 높으면 공백한다.

  4. 암호화폐 바닥 지표: 가격의 지지부진을 판단하고, 빠른 RSI와 결합하여 높은 확률을 달성하는 방법.

가격 돌파 통로, 브린 시간대, RSI 초매 초매 시간대에 따라 더 많은 코카이팅, 즉 이 전략의 핵심 거래 논리를 구성한다.

전략적 이점

이 전략에는 다음과 같은 장점이 있습니다.

  1. 이중 레일 시스템, 신호 정확도를 높인다. 가격 채널은 큰 추세를 판단하고, 부린 벨트는 정확한 지원 저항 지점을 식별하며, 둘은 신호 품질을 향상시킨다.

  2. 빠른 RSI 지표는 과매매를 판단하고, 반전 시점을 잡습니다. RSI 파라미터는 2이며, 반전 노트를 신속하게 판단 할 수 있습니다.

  3. CryptoBottom은 멀티 헤드 신호 확립을 가속화한다. 지원 지점 아래로 떨어지면 바닥 특성을 빠르게 판단하고, 멀티 헤드 신호의 누락을 방지한다.

  4. 정책 변수 설정은 합리적이고, 쉽게 최적화할 수 있다. 변수 조합은 간단하고 명확하며, 변수 최적화에 적합하다.

전략적 위험

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

  1. 브린 밴드 파라미터가 잘못 설정되어 큰 상황을 놓치거나 잘못된 신호를 생성할 수 있다.

  2. 이중 레일 상호 작용 모델은 복잡하고, 올바른 판단을 위해 기술적인 축적이 필요합니다.

  3. 하지만, 이 모든 것을 고려해 볼 때, 이 역전 실패의 위험은 여전히 존재하며, 다시 한번 역전될 가능성을 완전히 피할 수는 없다.

  4. 매개 변수 최적화 난이도, 최적의 매개 변수는 시장 환경 변화에 따라 유효하지 않을 수 있다.

전략 최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 부린 밴드의 파라미터를 최적화하여 상하 레일을 가격에 더 가깝게 만들고 신호의 정확도를 향상시킵니다.

  2. 손실이 일정 비율에 도달했을 때 손실을 멈추고 위험을 효과적으로 제어하는 손실을 줄이는 전략.

  3. 더 많은 지표와 함께 트렌드를 판단하고, 저항을 지원하고, 잘못된 신호를 줄여줍니다.

  4. 기계 학습 알고리즘을 추가하고, 변수를 자동으로 최적화하여 시장 환경 변화에 대응할 수 있도록 한다.

요약하다

이 전략은 가격 통로, 브린 밴드 및 빠른 RSI 지표를 통합하여 2 경로 역전 거래 시스템을 구축합니다. 큰 추세를 판단하면서 지원 저항과 오버 바이 오버 판매 기회를 신속하게 잡습니다. 파라미터 설정은 간단하고 직접적이며 이해하기 쉽고 최적화됩니다.

전략 소스 코드
/*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)