前言
这个对象可不是常说的找对象,而是在python中储存信息的实体!今天就来和大家分享一下关于ptrade的相关对象!
具体的开通渠道可以看文章末尾!
一、g——全局对象
对象说明
全局对象g,用于存储用户的各类可被不同函数(包括自定义函数)调用的全局数据,如:
示例
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)
二、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 -- 收益曲线值
示例
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)
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)
三、SecurityUnitData
对象说明
一个单位时间内的股票的数据,是一个字典,根据sid获取BarData对象数据
基本属性
以下属性也能通过get_history/get_price获取到
dt 时间
open 时间段开始时价格
close 时间段结束时价格
price结束时价格
low 最低价
high 最高价
volume 成交的股票数量
money 成交的金额
四、Portfolio
对象说明
对象数据包含账户当前的资金,标的信息,即所有标的操作仓位的信息汇总
内容
cash 当前可用资金(不包含冻结资金)
positions 当前持有的标的(包含不可卖出的标的),dict类型,key是标的代码,value是Position对象
portfolio_value 当前持有的标的和现金的总价值
positions_value 持仓价值
capital_used 已使用的现金
returns 当前的收益比例, 相对于初始资金
pnl 浮动盈亏
start_date 开始时间
示例
def initialize(context):
g.security = "600570.SS"
set_universe([g.security])
def handle_data(context, data):
log.info(context.portfolio.portfolio_value)
五、Position
对象说明
持有的某个标的的信息。
内容
sid 标的代码
enable_amount 可用数量
amount 总持仓数量
last_sale_price 最新价格
cost_basis 持仓成本价格(期货不支持)
today_amount 今日开仓数量(期货不支持,且仅回测有效)
期货专用字段:
delivery_date 交割日,期货使用
today_short_amount 空头今仓数量
today_long_amount 多头今仓数量
long_cost_basis 多头持仓成本
short_cost_basis 空头持仓成本
margin_rate 保证金比例
contract_multiplier 合约乘数
long_amount 多头总持仓量
short_amount 空头总持仓量
long_pnl 多头浮动盈亏
short_pnl 空头浮动盈亏
long_enable_amount 多头可用数量
short_enable_amount 多空头可用数量
business_type 业务类型
示例
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
order(g.security,1000)
position = get_position(g.security)
log.info(position)
六、Order
对象说明
买卖订单信息
内容
id -- 订单号
dt -- 订单产生时间
limit -- 指定价格
symbol -- 标的代码(备注:标的代码尾缀为四位,上证为XSHG,深圳为XSHE,如需对应到代码请做代码尾缀兼容)
amount -- 下单数量,买入是正数,卖出是负数
created -- 订单生成时间, datetime.date对象
filled -- 成交数量,买入时为正数,卖出时为负数
entrust_no -- 委托编号
priceGear -- 盘口档位
status -- 订单状态(str),该字段取值范围:
'0' -- "未报"
'1' -- "待报"
'2' -- "已报"
'3' -- "已报待撤"
'4' -- "部成待撤"
'5' -- "部撤"
'6' -- "已撤"
'7' -- "部成"
'8' -- "已成"
'9' -- "废单"
'+' -- "已受理"
'-' -- "已确认"
'V' -- "已确认"
示例
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
order(g.security, 100)
order_obj = get_orders()
log.info(order_obj)
结语
ptrade的渠道可以通过《ptrade开通详则》来获取,感谢看到这里,如果有更多疑问欢迎在评论区指出!
对于相关函数的介绍就到此结束了,后续可能会更新一些具体策略相关的吧,可以关注期待一下!