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]))