
이 전략의 핵심 아이디어는 응답 시간 범위를 유연하게 선택할 수 있는 프레임 워크를 구현하는 것이며, 사용자가 다양한 요구에 따라 자동으로 또는 수동으로 응답 시작 시간을 설정할 수 있도록 합니다.
전략은 입력된 파라미터를 통해 4가지의 날짜 범위 선택 방법을 제공합니다. 전체 히스토리 데이터, 최근 지정된 날, 최근 지정된 주간 또는 수동으로 지정된 날짜 범위를 사용한다. 전략은 선택된 날짜 범위에 따라 역동적으로 재측정 창을 설정하며 거래 논리는 변하지 않고, 서로 다른 시간 창에서 전략의 성과에 대한 차이를 비교할 수 있다.
이 전략은 재검토 날짜 범위 선택 모듈과 쌍 MA 거래 전략 모듈으로 구성된다.
이 전략은 일반적인 재검사 날짜 범위 프레임워크로서 유연하고 사용자 정의 가능하며 사용자의 다양한 테스트 요구를 충족시킬 수 있습니다. 간단한 효과적인 쌍 MA 거래 논리와 함께 전략을 신속하게 검증하고 비교 할 수 있습니다. 이후 필터, 스톱 로직 등을 추가하여 전략을 최적화하여 실물 응용에 한 걸음 더 다가갈 수 있습니다.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "How To Auto Set Date Range", shorttitle = " ", overlay = true)
// Revision: 1
// Author: @allanster
// === INPUT MA ===
fastMA = input(defval = 14, title = "FastMA", type = input.integer, minval = 1, step = 1)
slowMA = input(defval = 28, title = "SlowMA", type = input.integer, minval = 1, step = 1)
// === INPUT BACKTEST RANGE ===
useRange = input(defval = "WEEKS", title = "Date Range", type = input.string, confirm = false, options = ["ALL", "DAYS", "WEEKS", "MANUAL"])
nDaysOrWeeks = input(defval = 52, title = "# Days or Weeks", type = input.integer, minval = 1)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 15, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2014)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2014)
// === FUNCTION EXAMPLE ===
window() => true
// === LOGIC ===
buy = crossover(sma(close, fastMA), sma(close, slowMA)) // buy when fastMA crosses over slowMA
sell = crossunder(sma(close, fastMA), sma(close, slowMA)) // sell when fastMA crosses under slowMA
// === EXECUTION ===
strategy.entry("L", strategy.long, when=window() and buy) // buy long when "within window of time" AND crossover
strategy.close("L", when=window() and sell) // sell long when "within window of time" AND crossunder
// === PLOTTING ===
plot(sma(close, fastMA), title = 'FastMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot SlowMA