
이 전략은 평균 가이더 ((ADX), 진행 지표 ((DMI) 와 상품 경로 지표 ((CCI) 와 같은 동력 지표를 사용하여 트렌드 방향을 판단하고 트렌드 추적을 한다. ADX와 트렌드 지표가 트렌드가 형성되는 것을 확인 할 때, CCI 오버오프 시점에 포지션을 구축한다.
ADX, DMI 및 CCI 지표를 계산한다.
트렌드 방향에 대한 판단
출전 손해
ADX를 사용하여 트렌드를 판단하고, 트렌드가 보이지 않을 때 거래하는 것을 피하십시오.
DMI를 사용하여 트렌드 방향을 결정하여 잘못된 판단의 가능성을 줄입니다.
CCI 오버오프 시 입장은 트렌드 전환점을 적시에 포착하여 입점 위험을 줄일 수 있다.
동력 지표의 조합을 사용하면 판단의 정확도를 높일 수 있다.
단 하나의 손실을 제한할 수 있는 손해 방지 장치가 있습니다.
ADX가 하락할 때, 여러 번 불안 거래로 인해 손실이 발생할 수 있다. ADX 입시 하락값을 적절히 높여서, 트렌드가 충분히 분명하도록 할 수 있다.
DMI 지표가 뒤쳐져 있고, 트렌드 초기 기회를 놓칠 수 있다. 진입 시기를 결정하기 위해 다른 지표 또는 그래픽 기술 분석과 함께 사용할 수 있다.
CCI는 빈번한 거래를 유발할 수 있다. CCI 경계가 적절히 완화되어 일부 잡음이 필터링될 수 있다.
포지션을 보유하면서 포지션을 많이 하락시키는 경우 주식 시장 중립 전략을 채택하고, 종합 포지션 위험을 줄이기 위해 시점 보호 규칙을 수립하는 것을 고려할 수 있습니다.
ADX 변수를 최적화하여 filtering noise와 catching trend in time 사이의 최적의 균형을 찾습니다.
DMI 매개 변수를 최적화하여 지연성과 민감성을 균형 잡는다.
CCI 파라미터를 최적화하고 거래 주파수와 반전을 포착하는 능력을 균형 잡는다.
테스트는 더 나은 조합 효과를 찾기 위해 다른 지표를 추가하거나 수정합니다. 예를 들어 MACD, KDJ 등이 있습니다.
거래 품종을 테스트하여 가장 적합한 품종을 찾습니다.
포지션 관리 전략을 최적화하고, 트렌드를 추적하는 능력을 유지하면서 위험을 통제한다.
이 전략은 ADX 판단 트렌드, DMI 방향을 결정, CCI 위치 역점의 사고를 사용하여 트렌드 추적 거래를합니다. 이 전략은 강력한 논리성을 가지고 있습니다. 그러나 여전히 매개 변수를 대상으로 최적화를 수행하고 포지션 관리와 함께 위험을 제어해야합니다. 각 매개 변수가 적절한 수준으로 조정되어 트렌드가 명백한 품종에 적용되면 이 전략은 안정적인 수익을 얻을 수 있습니다. 그러나 거래자는 시장 환경의 변화에 주의를 기울이고 매개 변수를 동적으로 조정해야합니다.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX Strategy", currency = "USD", initial_capital = 1000, overlay=true)
adxlen = input(9, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_Entry = input(25, title="ADX Entry")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, 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]
[sig, up, down] = adx(dilen, adxlen)
cci_length = input(20, minval=1, title="CCI Length")
cci_ma = sma(close, cci_length)
cci = (close - cci_ma) / (0.015 * dev(close, cci_length))
stop_loss = syminfo.mintick * 100
open_longs = strategy.position_size > 0
open_shorts = strategy.position_size < 0
possible_bull = false
possible_bull := not open_longs ? (possible_bull[1] and not crossunder(up,down) ? true : false) : false
possible_bear = false
possible_bear := not open_shorts ? (possible_bear[1] and not crossunder(down,up) ? true : false) : false
bool bull_entry = crossover(up,down)
if(bull_entry and up < ADX_Entry and cci < 0)
possible_bull := true
bull_entry := false
if(possible_bull and up > ADX_Entry and cci > -100)
bull_entry := true
bool bear_entry = crossover(down,up)
if(bear_entry and down < ADX_Entry and cci > 0)
possible_bear := true
bear_entry := false
if(possible_bear and down >= ADX_Entry and cci < 100)
bear_entry := true
strategy.entry("Short", strategy.short, qty = 1,comment="Short", stop=high[1] - stop_loss, when = bear_entry)
strategy.entry("Long", strategy.long, qty = 1, comment="Long", stop=low[1] - stop_loss, when = bull_entry )
strategy.close_all(when = (open_shorts and (crossover(up,down) or crossover(sig,down))) or (open_longs and ( crossover(down,up) or crossover(sig, up))))