TradingView Pine Script策略仅回测最近500根K线免手动调参求助
修改后完整代码
//@version=4 strategy("Simple alert strategy", overlay=true, max_lines_count=500, max_bars_back=5000, pyramiding=10000, commission_type=strategy.commission.percent, commission_value=0.015) //////////////////////////////////////////////////////////////////////////////// // 回测范围设置 use_date_range = input.bool(false, title="使用自定义时间范围回测(关闭则自动使用最近N根K线)") backtest_bars = input.int(500, title="回测使用最近K线数量", minval=10) // 自定义时间范围参数(开启上面的开关才会生效) // From Date Inputs fromMinute = input(defval = 0, title = "From Minute", minval = 0, maxval = 59) fromHour = input(defval = 0, title = "From Hour", minval = 0, maxval = 23) fromDay = input(defval = 9, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 11, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2021, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 11, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2100, title = "To Year", minval = 1970) // 计算回测条件 startDate = timestamp(fromYear, fromMonth, fromDay, fromHour, fromMinute, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) date_cond = time >= startDate and time <= finishDate // 最近N根K线条件 last_n_bars_cond = bar_index >= last_bar_index - backtest_bars + 1 // 最终回测生效条件 time_cond = use_date_range ? date_cond : last_n_bars_cond //////////////////////////////////////////////////////////////////////////////// strategy.order("long", true, 1, when = close<open and time_cond, alert_message='Long') strategy.order("short", false, 1, when = close>open and time_cond, alert_message='Short')
改动说明
- 新增回测模式切换开关,默认关闭自定义时间范围,自动使用最近500根K线回测,无需每次手动调整时间参数
- 新增可自定义的最近K线数量参数,默认500根,可直接在参数设置界面调整数值
- 完全保留原有自定义时间范围的功能,需要用的时候打开开关即可,无需修改代码
- 核心逻辑通过内置
last_bar_index变量获取当前图表最新K线的编号,自动往前倒推指定数量的K线作为回测范围,适配任意周期的K线图表
内容的提问来源于stack exchange,提问作者Jakx
相关产品推荐
相关产品推荐

