输入/搜索内容
0
关注
0
关注者
关于获取的K线周期问题
帮助
创建于 2021-09-09 20:25:24  更新于 2021-09-10 14:19:45
 3
 1430

重新提问:
获取K线数据代码如下:
def linktoexchange():
global N_bar_arr
exchange.SetContractType(contracttype)
bar_arr = exchange.GetRecords(606024)
period = exchange.GetPeriod()/60/60
x=len(bar_arr)
if x>N:
N_bar_arr=bar_arr[x-N:N]
Log("K线周期:", period , "小时")
Log('K线数量:',x)
Log('日期:', _D(bar_arr[0]['Time']/1000),'第一K线开盘价:',bar_arr[0]['Open'])
Log('日期:', _D(bar_arr[-1]['Time']/1000),'最后K线开盘价:',bar_arr[-1]['Open'])
回测参数设置如下:
img

运行结果如下;
img
img

为什么日K的数量要超过选取的时间范围内的数量?为什么选取的BAR的日期不是回测时间范围内的?

正在尝试编写的策略代码如下:
'''backtest
start: 2021-06-11 00:00:00
end: 2021-09-08 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES","balance":50000}]
'''

#DUAL THRUST指标设计
contracttype = 'rb888'
def DUAL_THRUST():
#变量定义
HH = 0 #N周期内最高价的最大值
HL = 0 #N周期内最低价的最大值
HC = 0 #N周期内收盘价的最大值
LC = 0 #N周期内收盘价的最小值
N = 5 #K线指标周期
Kup =0.5 #上轨系数
Kdown =0.5 #下轨系数
upTriggerPrice = 0 #上轨触发价
downTriggerPrice = 0 #下轨触发价

#获取指定合约K线数据
exchange.SetContractType(contracttype)
bar_arr = exchange.GetRecords()
period = exchange.GetPeriod()
Log("K线周期:", period , "小时")

#计算指标
if len(bar_arr)>N:
N_bar = bar_arr[-(N+1):-1]
for i in range(N):
Log(N_bar[i]['Time'],N_bar[i]['Open'],)

def main():
#Log(exchange.GetAccount())

#主循环,执行策略
#while True :
DUAL_THRUST()
Sleep(1000)

期望运行之后,能得到最后N个K线数据,但是模拟回测结果如下:
img

这是为什么?百思不得其解。

相关推荐
评论
全部评论 (0)
暂无数据
暂无数据
  • 1
iPhone 下载
社区
回测系统
© 2015 - ∞ YouQuant 豫ICP备19046564号