代码如下: “‘backtest start: 2021-08-01 00:00:00 end: 2021-08-31 23:59:00 period: 1d basePeriod: 1h exchanges: [{“eid”:“Futures_CTP”,“currency”:“FUTURES”,“balance”:50000}] “’
#定义合约
contracttype = ‘rb888’
#变量定义
HH = 0 #N周期内最高价的最大值
LL = 0 #N周期内最低价的最小值
HC = 0 #N周期内收盘价的最大值
LC = 0 #N周期内收盘价的最小值
N = 5 #K线指标周期
Kup =0.5 #上轨系数
Kdown =0.5 #下轨系数
upTriggerPrice = 0 #上轨触发价
downTriggerPrice = 0 #下轨触发价
bar_arr = [] #获取的周期K线数据
arrlen = 0 #获取的K线数量
N_bar_arr=[] #截取N周期K线
exchange.SetContractType(‘rb888’)
#DUAL THRUST指标计算
def DUAL_THRUST():
global N,HH,LL,LC,HC,N_bar_arr,arrlen
bar_arr=exchange.GetRecords(PERIOD_D1)
lasttime = 0
arrlen=len(bar_arr)
if arrlen>N and bar_arr[arrlen-1]!=lasttime:
lasttime=bar_arr[arrlen-1].Time
Log(‘new K’)
HH = TA.Highest(bar_arr,N,‘High’)
def main(): #Log(exchange.GetAccount())
#主循环,执行策略
while True :
DUAL_THRUST()
Sleep(1000)
在DUAL THRUST函数中,按D1参数获取数据。按照在知乎网站上的文章,通过lasttime来判断新K线。那Log出来因该是每一根K一个Log。但实际运行是几秒就出一个Log。是什么原因呢?大神能否帮忙分析下?
回测日志:
网络文章: