·量化投资从入门到入土
·免费提供Ptrade、QMT技术支持与疑问解答
·帮助搭建量化交易平台及风控系统
·欢迎深入交流
~~~~~~~~~~~~~~~~~~~~~~~~~~~华~丽~分~割~线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def initialize(context):
# 初始化模块;
g.security = "600570.SS"
set_universe(g.security)
def handle_data(context, data):
pass
许多量化小白刚下载平台接触到这样的代码的时候就直接傻眼了,为什么他定义函数却不执行?为什么这样的代码可以跑?为什么定义了函数变量但是却没有使用?其实是因为这个是底层用C++写的交易框架,并不是真的意义上和Pycharm一模一样的编程软件,为了加快运行速度,他会将一些代码转化成C++代码执行,不同的框架也会同时运行,所以我们的定义一些需要在多个框架使用的变量时,我们需要将它转化成全局变量。
在Ptrade中initialize和handle_data其实是可以同时运行的,这是量化交易中最重要的两个框架,他们的运行条件不同,可以轻松帮助我们完成量化交易操作。
对于框架中的context对象,他是业务上下文对象,可以让我们便捷地查询一些信息。比如:
def initialize(context):
g.security = ["600570.SS", "000001.SZ"]
set_universe(g.security)
def handle_data(context, data):
#获得当前回测相关时间
pre_date = context.previous_date
log.info(pre_date)
#其中log.info函数是日志信息函数,你可以把他理解成Pycharm中的print函数
year = context.blotter.current_dt.year
log.info(year)
month = context.blotter.current_dt.month
log.info(month)
day = context.blotter.current_dt.day
log.info(day)
hour = context.blotter.current_dt.hour
log.info(hour)
minute = context.blotter.current_dt.minute
log.info(minute)
second = context.blotter.current_dt.second
log.info(second)
#得到"年-月-日"格式
date = context.blotter.current_dt.strftime("%Y-%m-%d")
log.info(date)
#得到周几
weekday = context.blotter.current_dt.isoweekday()
log.info(weekday)
initialize框架中,g其实是全局对象,它用于存储用户的各类可被不同函数调用的全局数据。在initialize中保存的参数,如果不将他储存成为全局变量,那他就不能再其他框架被调用。
def initialize(context):
g.security = "600570.SS"
g.count = 1
g.flag = 0
set_universe(g.security)
def handle_data(context, data):
log.info(g.security)
log.info(g.count)
log.info(g.flag)
欢迎私信交流
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点