当前位置:   article > 正文

量化交易平台Ptrade的对象

ptrade

对于只学过一些python编程但是又想学习量化的朋友来说,他可能不太理解什么是对象,但是对象贯穿于整个编程过程,如果不会使用对象的话,可能很难学会量化编程。在python里,对象其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。

  1. #我们先定义一个类
  2. class para():
  3. pass
  4. #然后
  5. para = para() #这里的para参数其实就是一个对象
  6. #我们可以使用para在不同的函数之间传递传输
  7. #例如:
  8. def initialize(context):
  9. para.A = 5
  10. def handle_data(context, data):
  11. log.info(para.A)

Ptrade里面有一个全局对象g,我们可以直接用来传递参数,例如:

  1. def initialize(context):
  2. g.A = 5
  3. def handle_data(context, data):
  4. log.info(g.A)

当然了Ptrade作为一个十分成熟的量化平台还有其他很好用的对象,里面包含了一些常用的方法,可以让你获取到一些数据。比如:

Context 上下文对象

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 -- 收益曲线值

使用示例:

  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. year = context.blotter.current_dt.year
  9. log.info(year)
  10. month = context.blotter.current_dt.month
  11. log.info(month)
  12. day = context.blotter.current_dt.day
  13. log.info(day)
  14. hour = context.blotter.current_dt.hour
  15. log.info(hour)
  16. minute = context.blotter.current_dt.minute
  17. log.info(minute)
  18. second = context.blotter.current_dt.second
  19. log.info(second)
  20. #得到"年-月-日"格式
  21. date = context.blotter.current_dt.strftime("%Y-%m-%d")
  22. log.info(date)
  23. #得到周几
  24. weekday = context.blotter.current_dt.isoweekday()
  25. log.info(weekday)

SecurityUnitData对象

要点:要在initialize框架种设置股票池,data才会更新其SecurityUnitData对象,data的key是股票代码sid,值是对应的SecurityUnitData对象

基本方法:

  1. dt 时间
  2. open 时间段开始时价格
  3. close 时间段结束时价格
  4. price结束时价格
  5. low 最低价
  6. high 最高价
  7. volume 成交的股票数量
  8. money 成交的金额

使用示例:

  1. def initialize(context,data):
  2.     list = ['600519.SS']
  3.     set_universe(list) #设置股票池,使data中更新对应的SecurityUnitData对象
  4. def handle_data(context,data):
  5.     data['600519.SS'].price #取该标的价格

Portfolio对象

内容:

  1. cash 当前可用资金(不包含冻结资金)
  2. positions 当前持有的标的(包含不可卖出的标的),dict类型,key是标的代码,value是Position对象
  3. portfolio_value 当前持有的标的和现金的总价值
  4. positions_value 持仓价值
  5. capital_used 已使用的现金
  6. returns 当前的收益比例, 相对于初始资金
  7. pnl 浮动盈亏
  8. start_date 开始时间

使用示例:

  1. def initialize(context):
  2.     pass
  3. def handle_data(context, data):
  4. log.info(context.portfolio.portfolio_value)

Position对象

内容:

  1. sid 标的代码
  2. enable_amount 可用数量
  3. amount 总持仓数量
  4. last_sale_price 最新价格
  5. cost_basis 持仓成本价格(期货不支持)
  6. today_amount 今日开仓数量(期货不支持,且仅回测有效)
  7. 期货专用字段:
  8. delivery_date 交割日,期货使用
  9. today_short_amount 空头今仓数量
  10. today_long_amount 多头今仓数量
  11. long_cost_basis 多头持仓成本
  12. short_cost_basis 空头持仓成本
  13. margin_rate 保证金比例
  14. contract_multiplier 合约乘数
  15. long_amount 多头总持仓量
  16. short_amount 空头总持仓量
  17. long_pnl 多头浮动盈亏
  18. short_pnl 空头浮动盈亏
  19. long_enable_amount 多头可用数量
  20. short_enable_amount 多空头可用数量
  21. business_type 业务类型

使用示例:

  1. def initialize(context):
  2. g.security = '600570.SS'
  3. set_universe(g.security)
  4. def handle_data(context, data):
  5. order(g.security,1000)
  6. position = get_position(g.security)
  7. log.info(position)

Order对象

内容:

  1. id -- 订单号
  2. dt -- 订单产生时间
  3. limit -- 指定价格
  4. symbol -- 标的代码(备注:标的代码尾缀为四位,上证为XSHG,深圳为XSHE,如需对应到代码请做代码尾缀兼容)
  5. amount -- 下单数量,买入是正数,卖出是负数
  6. created -- 订单生成时间, datetime.date对象
  7. filled -- 成交数量,买入时为正数,卖出时为负数
  8. entrust_no -- 委托编号
  9. priceGear -- 盘口档位
  10. status -- 订单状态(str),该字段取值范围:
  11. '0' -- "未报"
  12. '1' -- "待报"
  13. '2' -- "已报"
  14. '3' -- "已报待撤"
  15. '4' -- "部成待撤"
  16. '5' -- "部撤"
  17. '6' -- "已撤"
  18. '7' -- "部成"
  19. '8' -- "已成"
  20. '9' -- "废单"
  21. '+' -- "已受理"
  22. '-' -- "已确认"
  23. 'V' -- "已确认"

示例:

  1. def initialize(context):
  2. g.security = '600570.SS'
  3. set_universe(g.security)
  4. def handle_data(context, data):
  5. order(g.security, 100)
  6. order_obj = get_orders()
  7. log.info(order_obj)

欢迎私信交流

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

闽ICP备14008679号