欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件交易策略发布专区 → 【zzc_python】封装品种持仓

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3364人关注过本帖树形打印复制链接

主题:【zzc_python】封装品种持仓

帅哥哟,离线,有人找我吗?
yukizzc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
【zzc_python】封装品种持仓  发帖心情 Post By:2019/11/18 14:25:58 [只看该作者]

#类似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]))

 回到顶部