如何在Pine Script中根据输入的回测起止时间计算回测天数
在Pine Script中计算起止时间之间的天数
嘿,这事儿好办!你已经用input.time定义了回测的起始和结束时间戳,要算出两者之间的天数其实很简单——核心就是利用时间戳的单位转换来实现。
实现思路
Pine Script里的timestamp()返回的是毫秒级的时间戳,所以我们只需要两步:
- 计算结束时间与起始时间的毫秒差
- 将毫秒差转换为天数(1天 = 24小时 × 60分钟 × 60秒 × 1000毫秒 = 86400000毫秒)
完整代码示例
//@version=5 indicator("计算起止时间天数差", overlay=true) // 定义你的时间输入参数 start_time = input(defval=timestamp("1 May 2021 06:00"), title="Start Time", type=input.time) end_time = input(defval=timestamp("31 Dec 2021 20:00"), title="End Time", type=input.time) // 计算时间差(单位:毫秒) time_difference = end_time - start_time // 转换为天数:用毫秒差除以一天的毫秒数 total_days = time_difference / 86400000.0 // 可选:获取完整天数(舍去小数部分) full_days_count = math.floor(total_days) // 在图表最后一根K线显示结果 var label result_display = label.new(bar_index, high, "", style=label.style_label_down) if barstate.islast label.set_text(result_display, str.format("总天数(含小时/分钟): %.2f\n完整天数: %d", total_days, full_days_count))
关键细节说明
- 用
86400000.0而不是整数,是为了避免Pine Script的整数除法自动舍去小数的问题,这样能保留包含小时/分钟的部分天数 - 如果需要四舍五入的完整天数,可以把
math.floor()换成math.round() - 最后用
label把结果显示在图表上,方便你直接查看计算结果
内容的提问来源于stack exchange,提问作者TJalam
相关产品推荐
相关产品推荐

