当前位置:   article > 正文

量化交易平台Ptrade、QMT框架,入门_ptrade代码

ptrade代码

·量化投资从入门到入土

·免费提供Ptrade、QMT技术支持与疑问解答

·帮助搭建量化交易平台及风控系统

·这个账号会持续更新相关示例的讲解,欢迎关注

·欢迎深入交流

~~~~~~~~~~~~~~~~~~~~~~~~~~~华~丽~分~割~线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. def initialize(context):
  2. # 初始化模块;
  3. g.security = "600570.SS"
  4. set_universe(g.security)
  5. def handle_data(context, data):
  6. pass

        许多量化小白刚下载平台接触到这样的代码的时候就直接傻眼了,为什么他定义函数却不执行?为什么这样的代码可以跑?为什么定义了函数变量但是却没有使用?其实是因为这个是底层用C++写的交易框架,并不是真的意义上和Pycharm一模一样的编程软件,为了加快运行速度,他会将一些代码转化成C++代码执行,不同的框架也会同时运行,所以我们的定义一些需要在多个框架使用的变量时,我们需要将它转化成全局变量。

        在Ptrade中initialize和handle_data其实是可以同时运行的,这是量化交易中最重要的两个框架,他们的运行条件不同(详见开发文档),可以轻松帮助我们完成量化交易操作。

        对于框架中的context对象,他是业务上下文对象,可以让我们便捷地查询一些信息。比如:

  1. capital_base -- 起始资金
  2. previous_date –- 前一个交易日
  3. sim_params -- SimulationParameters对象
  4. capital_base -- 起始资金
  5. data_frequency -- 数据频率
  6. portfolio -- 账户信息,可参考Portfolio对象
  7. initialized -- 是否执行初始化
  8. slippage -- 滑点,VolumeShareSlippage对象
  9. volume_limit -- 成交限量
  10. price_impact -- 价格影响力
  11. commission -- 佣金费用,Commission对象
  12. tax—印花税费率
  13. cost—佣金费率
  14. min_trade_cost—最小佣金
  15. blotter -- Blotter对象(记录)
  16. current_dt -- 当前单位时间的开始时间,datetime.datetime对象(北京时间)
  17. recorded_vars -- 收益曲线值

context对象的使用非常简单,可以参考示例

  1. def initialize(context):
  2. g.security = ['600570.SS', '000001.SZ']
  3. set_universe(g.security)
  4. def handle_data(context, data):
  5. #获得当前回测相关时间
  6. pre_date = context.previous_date
  7. log.info(pre_date)
  8. #其中log.info函数是日志信息函数,你可以把他理解成Pycharm中的print函数
  9. year = context.blotter.current_dt.year
  10. log.info(year)
  11. month = context.blotter.current_dt.month
  12. log.info(month)
  13. day = context.blotter.current_dt.day
  14. log.info(day)
  15. hour = context.blotter.current_dt.hour
  16. log.info(hour)
  17. minute = context.blotter.current_dt.minute
  18. log.info(minute)
  19. second = context.blotter.current_dt.second
  20. log.info(second)
  21. #得到"年-月-日"格式
  22. date = context.blotter.current_dt.strftime("%Y-%m-%d")
  23. log.info(date)
  24. #得到周几
  25. weekday = context.blotter.current_dt.isoweekday()
  26. log.info(weekday)

        initialize框架中,g其实是全局对象,它用于存储用户的各类可被不同函数(包括自定义函数)调用的全局数据。在initialize中保存的参数,如果不将他储存成为全局变量,那他就不能再其他框架被调用。

  1. def initialize(context):
  2. g.security = "600570.SS"
  3. g.count = 1
  4. g.flag = 0
  5. set_universe(g.security)
  6. def handle_data(context, data):
  7. log.info(g.security)
  8. log.info(g.count)
  9. log.info(g.flag)

欢迎私信交流

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/607636
推荐阅读
相关标签
  

闽ICP备14008679号