以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 交易策略发布专区 (http://weistock.com/bbs/list.asp?boardid=10) ---- 【zzc_python】封装品种持仓 (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=173168) |
-- 作者:yukizzc -- 发布时间:2019/11/18 14:25:58 -- 【zzc_python】封装品种持仓 #类似pel那种方式把一些常用的数据给整合了下,目前有多空的持仓以及成本、四个指令的未成交订单id列表(通过该列表我们可以方便计算挂单数量并进一步执行撤单) #如果大家有其他的常用的交易有关的方法,也可以在下面罗列,后期我这边再给完善 from PythonApi import * class Jzt: def __init__(self,code,account): self.code = code self.account = account self.portfolio = get_portfolio(self.code,account=self.account,type=2) self.orders = get_orders(self.code,account = self.account,type=0) #多头总持 def buyholding(self): return self.portfolio.buy_quantity #期货多头今仓,股票表示可卖数量(老仓) def today_buyholding(self): return self.portfolio.buy_today_quantity #空头总持 def sellholding(self): return self.portfolio.sell_quantity #期货空头今仓 def today_sellholding(self): return self.portfolio.sell_today_quantity #多头开仓成本,另外一个字段buy_avg_holding_price表示持仓成本也就是老仓的价格统一按昨结算计入(一般不使用所以这里未加) def buyholding_price(self): return self.portfolio.buy_avg_open_price #空头开仓成本 def sellholding_price(self): return self.portfolio.sell_avg_holding_price #未成交单数量,返回二维列表 #第一个维度0,1,2,3分别表示开多,平多,开空,平空 #第二个维度表示对应的订单id,订单id可用于具体的操作 #order.num()[0]就是开多的订单id表,order.num()[1]就是平多的订单id表 def order_num(self): num1 = [i.order_id for i in self.orders if i.side==\'buy\' and i.position_effect ==\'open\'] num2 = [i.order_id for i in self.orders if i.side==\'sell\' and i.position_effect ==\'close\'] num3 = [i.order_id for i in self.orders if i.side==\'sell\' and i.position_effect ==\'open\'] num4 = [i.order_id for i in self.orders if i.side==\'buy\' and i.position_effect ==\'close\'] return [num1,num2,num3,num4] # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现) def init(context): # 在context中保存全局变量 print(Jzt(\'IC06\',\'88\').buyholding()) print(len(Jzt(\'IC06\',\'88\').order_num()[1])) |