#!/usr/bin/env python

coding:utf-8

from PoboAPI import *
import datetime

#开始事件
def OnStart(context) :

#登录交易账号 context.myacc = None if "回测期货" in context.accounts : if context.accounts["回测期货"].Login() : context.myacc = context.accounts["回测期货"] # 存每天的主力合约 g.code_list = [] # 存换月的主力合约(只存一次) g.main_code_list = [] # 存发生主力合约换月的对应日期 g.main_date_list = []

初始化事件

def OnMarketQuotationInitialEx(context, exchange, daynight) :

# 不是上海期货交易所则过滤率掉 if exchange != 'SHFE': return # 获取螺纹钢的主力合约 g.code = GetMainContract('SHFE', 'rb', 20) # 订阅K线数据,用于驱动OnBar事件 SubscribeBar(g.code, BarType.Day)

K线事件

def OnBar(context, code, bartype) :

#过滤掉不需要的行情通知 if code != g.code: return # 将获取的主力合约码写入列表 g.code_list.append(g.code) # 合约列表里的合约码数量大于1时 if len(g.code_list) > 1 : # 最近的相邻的合约码不一样则可判断更换主力合约了 if g.code_list[-1] != g.code_list[-2] : # 最新的主力合约写入列表 g.main_code_list.append(g.code_list[-1]) # 主力合约对应的更换日期写入列表 g.main_date_list.append(YMD()) # 在测试结束的那一天打印获取的数据 if YMD() == '20210319' : print(g.main_code_list) print(g.main_date_list)

自定义函数用于获取年月日(输出值为字符串类型)

def YMD() :
ymd = GetCurrentTradingDate('SHFE').strftime('%Y%m%d')
return ymd

本段代码已在真格量化平台(https://quant.pobo.net.cn)编译通过