·量化投资从入门到入土
·免费提供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对象,他是业务上下文对象,可以让我们便捷地查询一些信息。比如:
capital_base -- 起始资金
previous_date –- 前一个交易日
sim_params -- SimulationParameters对象
capital_base -- 起始资金
data_frequency -- 数据频率
portfolio -- 账户信息,可参考Portfolio对象
initialized -- 是否执行初始化
slippage -- 滑点,VolumeShareSlippage对象
volume_limit -- 成交限量
price_impact -- 价格影响力
commission -- 佣金费用,Commission对象
tax—印花税费率
cost—佣金费率
min_trade_cost—最小佣金
blotter -- Blotter对象(记录)
current_dt -- 当前单位时间的开始时间,datetime.datetime对象(北京时间)
recorded_vars -- 收益曲线值
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)
欢迎私信交流