이 전략은
이 전략은 먼저
닫기 가격이 짧은 라인 스톱_쇼트 위에 넘어가면 긴 신호가 생성됩니다. 닫기 가격이 긴 라인 스톱_롱 아래에 넘어가면 짧은 신호가 생성됩니다.
또한 ADX 지표는 트렌드의 강도를 판단하는 데 사용됩니다. ADX가 임계보다 크면만 스톱 로스 신호가 진입을 유발합니다. 이것은 통합에서 비 방향적인 윙톱을 필터링합니다.
이 전략은 트렌드 지표와 스톱 로스 지표의 장점을 결합한다. 비방향 시장에서 휘프사우를 피하면서 트렌드 반전을 적시에 포착할 수 있다.
부적절한 ADX 매개 변수 설정은 트렌드의 시작에서 기회를 놓칠 수 있습니다. ADX 문턱이 너무 높게 설정되면 ADX 값이 여전히 낮을 때 트렌드의 시작에서 진입 기회가 놓칠 수 있습니다.
너무 가까운 스톱 로스 포인트는 전략 포지션의 빈번한 개점 및 폐쇄로 이어질 수 있습니다. 이것은 거래 및 슬리프 비용의 증가를 초래합니다. 트렌드에 약간의 공간을 허용하기 위해 스톱 로스 포인트는 합리적으로 설정되어야합니다.
스톱 로스 신호가 ADX가 임계값을 넘을 때만 트리거되는 것을 고려하십시오. 이것은 엔트리 타이밍의 신뢰성을 향상시킬 수 있습니다. ADX 값을 EMA 기울기와 결합하는 것과 같은 결합 조건에 다른 트렌드 지표도 결합 할 수 있습니다.
스톱 로스 라인은 또한 ATR를 기반으로 동적으로 조정할 수 있으며, 과도한 민감성을 피하기 위해 시장 변동성이 증가할 때 더 넓은 스톱을 허용합니다. 또는 MACD는 트렌드 강도를 평가하고 동적으로 스톱 로스 라인을 조정하는 데 사용할 수 있습니다.
이 전략은 비교적 간단하고 실용적인 트렌드 다음 전략을 구축하기 위해
/*backtest start: 2022-10-30 00:00:00 end: 2023-06-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title = "Chande Kroll Stop", overlay=true) p = input.int(10, minval=1) x = input.int(1, minval=1) q = input.int(9, minval=1) first_high_stop = ta.highest(high, p) - x * ta.atr(p) first_low_stop = ta.lowest(low, p) + x * ta.atr(p) stop_short = ta.highest(first_high_stop, q) stop_long = ta.lowest(first_low_stop, q) plot(stop_long, color=color.blue) plot(stop_short, color=color.orange) adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") ADX_sig = input.int(20, title="minimum ADX threshold for signal") dirmov(len) => up = ta.change(high) down = -ta.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 = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) if ta.crossunder(close, stop_long) and sig>ADX_sig strategy.entry("long", strategy.long) if ta.crossover(close, stop_short) and sig>ADX_sig strategy.entry("short", strategy.short)