
이 전략은 빠른 이동 평균과 느린 이동 평균을 사용하여 양 트랙 시스템을 구축하여 트렌드 지수 ADX와 함께 트렌드 판단을 수행하고, 동향 지수 DMI와 함께 트렌드 방향을 판단하여 트렌드 설정 후 트렌드 추적을 수행하고, 트렌드 반전이 발생했을 때 정시에 퇴출하여 추락을 피합니다. 동시에 시간 범위 테스트와 함께 전략의 효과를 다른 시간대에 측정 할 수 있습니다.
빠른 이동 평균과 느린 이동 평균은 쌍레일 시스템을 구축한다. 빠른 이동 평균 상에서 느린 이동 평균을 통과할 때, 황금 포크 신호로, 더 많은 진입을 한다. 빠른 이동 평균 아래에서 느린 이동 평균을 통과할 때, 죽은 포크 신호로, 평점 퇴장한다.
ADX는 트렌드의 존재와 강도를 판단하는 데 사용됩니다. ADX가 설정된 핵심값보다 크면 트렌드가 존재하고 트렌드가 강하다고 간주합니다. 트렌드가 강할 때만 거래 신호를 생성합니다.
DMI의 DI+는 트렌드 방향을 판단하는 데 사용됩니다. DI+가 긍정할 때, 트렌드가 상승하는 것을 나타냅니다. DI+가 부정할 때, 트렌드가 감소하는 것을 나타냅니다. 트렌드 방향에 부합하는 것으로 판단될 때만 거래 신호를 생성합니다.
시간 범위 테스트와 결합하여, 전략의 효과를 다른 시간대에 측정하여 전략을 검증할 수 있다.
이중 레일 시스템을 사용하면 돌파를 필터링하여 가짜 돌파가 손실을 초래하지 않도록 할 수 있습니다.
ADX를 사용하여 동향의 존재와 강도를 판단하고, 불안정한 상황에서 자주 거래하는 것을 피하십시오.
DMI를 사용하여 트렌드 방향을 판단하고, 트렌드 동작을 확인하고, 역동 거래를 피하십시오.
시간 범위 테스트는 전략 변수가 다른 상황들에 대해 유효하는지 확인하고, 변수 설정을 최적화할 수 있다.
이중 레일 시스템은 공중 함정이나 다중 함정으로 형성될 수 있으며, 경보가 정지상태에서 재조정될 필요가 있다.
ADX는 추세 초기 기회를 놓친 지연이 있다고 판단하여 핵심값을 낮출 수 있다.
DMI 판단 방향도 지연되어 있고, 트렌드 초반을 놓칠 수도 있고, 주기 파라미터를 줄일 수 있다.
다른 시간대에서 파라미터 설정은 조정할 필요가 있으며, 상황에 맞게 최적화해야 합니다.
다양한 길이의 주기의 변수 조합을 테스트하여 최적의 변수를 찾을 수 있다.
부린라인과 같은 다른 지표와 결합하여 듀얼 필터링을 수행하여 신호 품질을 향상시킬 수 있다.
손실을 막기 위한 전략이 추가될 수 있습니다.
기계 학습 방법을 통해 자동으로 최적화 가능한 매개 변수 설정.
감정 지표, 뉴스 면 등과 같은 다른 요소와 결합하여 전략의 효과를 높일 수 있습니다.
이 전략은 이동 평균, 트렌드 지수 및 동향 지수의 장점을 통합하여 트렌드를 판단하고 추적합니다. 그것의 매개 변수의 유효성을 검증하는 동시에, 더 많은 시장 상황에 적응하기 위해 지속적인 최적화가 필요하며, 매개 변수 조정, 손해 방지 전략, 다중 인자 통합 등을 더 심화하여 전략의 안정성과 수익성을 향상시킵니다.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// author: codachang0726
strategy(title = "(S)MA+ADX+DI+time", shorttitle = "(S)MA+ADX+DI+time", overlay = true)
// === INPUT MA LENGTHS ===
fastMA = input(defval = 7, title = "FastMA", minval = 1, step = 1)
slowMA = input(defval = 14, title = "SlowMA", minval = 1, step = 1)
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", minval = 1, maxval = 31)
thruYear = input(defval = 2022, title = "Thru Year", minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === MA LOGIC ===
crossOv = sma(close, fastMA) > sma(close, slowMA) // true when fastMA over slowMA
crossUn = sma(close, fastMA) < sma(close, slowMA) // true when fastMA under slowMA
// DI+ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Period")
keyLevel = input(20, title="Keylevel for ADX")
[diplus, diminus, adx] = dmi(dilen, adxlen)
di = (diplus - diminus)
buy = di > 0 and crossOv and adx > keyLevel
sell = di < 0 and crossUn and adx > keyLevel
buy_time = buy and not buy[1]
sell_time = sell and not sell[1]
// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy_time) // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell_time) // exit long when "within window of time" AND crossunder
// === PLOTTING ===
bgcolor(color = showDate and window() ? color.gray : na, transp = 90) // plot "within window of time"
plot(sma(close, fastMA), title = 'FastMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot SlowMA