
이 전략은 동력 지표인 ADX, RSI, 그리고 부린 밴드를 사용하여 시장의 추세와 과매매 과매매 상황을 판단하여 낮은 가격과 높은 가격으로 판매하고 수익으로 빠져 나가는 자동 거래 전략을 수행합니다.
위의 지표에 따라 시장 상태를 판단하여 다음과 같이 거래 전략을 수립하십시오.
구매 조건:
판매 조건:
이 전략은 복합적으로 여러 지표를 사용하여 시장 상태를 판단하여 단일 지표 판단 오류의 확률을 피합니다. 동시에, 트렌드, 오버 바이, 오버 세 상태의 판단을 통해 시장 전환점을 효과적으로 잠금하여 낮은 구매, 높은 판매를 달성 할 수 있습니다.
트렌드 지표만 사용하는 것보다 이 전략은 더 빠른 시간에 단기 기회를 잡을 수 있다. 충격 지표만 사용하는 것보다 이 전략은 트렌드 방향을 더 잘 파악할 수 있다. 따라서 이 전략은 트렌드 추적의 장점을 유지하면서도 역동적인 동작의 유연성을 지니고 있어 잠재적으로 더 높은 효율성을 가진 양적 전략이다.
이 전략에는 다음과 같은 위험들이 있습니다.
대응 위험 관리 조치:
이 전략의 최적화 공간은 다음과 같은 부분에서 이루어집니다.
최적화 지표 파라미터 . 지능형 최적화 알고리즘을 도입하여 다양한 품종의 파라미터를 위해 독립적으로 최적화 할 수 있습니다.
특징 공학을 추가한다. 가격 기술 지표를 더 많이 도입하고, 훈련하기 위해 벡터 머신과 같은 모델을 지원하는 모델을 구축하고, 신호 정확도를 향상시킨다.
융합 돌파전략. 다양한 품종의 특성에 따라 통로, 지원 저항 등에 기반한 판단 규칙을 적용하여 돌파점 위치를 파악하고 전략의 안정성을 강화한다.
스톱 스톱 손실 메커니즘을 최적화한다. 추적 스톱, 이동 스톱 등의 방법을 도입하여 스톱 스톱 손실 동적 조정, 최대 이익 잠금, 효과적으로 위험을 제어한다.
이 전략은 ADX, RSI, 브린밴드 등 여러 가지 기술 지표를 사용하여 시장 상태를 판단하는 중·단기 수량 거래 전략으로 시장 구조가 크게 변할 때 매매를 수행한다. 전략 논리는 명확하게 설명할 수 있으며, 단일 기술 지표 판단 오류의 가능성을 크게 줄일 수 있다. 동시에, 전략은 잘못된 신호를 발산하는 경고 지표, 너무 급진적인 정지 및 손실 파라미터 오차 등의 위험을 설정하는 전략의 안정성과 효율성을 높이기 위해 위험 관리 및 모델 최적화 측면에서 시작해야합니다.
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)
//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
dirmov(len) =>
up = change(high)
down = -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 = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
adx
[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)
//Creo RSI
src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")
//Creo Bande di Bollinger
source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)
//Stabilisco regole di ingresso
if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
//strategy.exit("exit", "COMPRA", loss = 90)
strategy.cancel(id="COMPRA")
if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
//strategy.exit("exit", "VENDI", loss = 90)
strategy.cancel(id="VENDI")
//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)