Ejemplo n.º 1
0
 def __init__(self,
              account=None,
              platform=None,
              strategy=None,
              order_no=None,
              symbol=None,
              action=None,
              price=0,
              quantity=0,
              remain=0,
              status=ORDER_STATUS_NONE,
              avg_price=0,
              order_type=ORDER_TYPE_LIMIT,
              trade_type=TRADE_TYPE_NONE,
              ctime=None,
              utime=None):
     self.platform = platform
     self.account = account
     self.strategy = strategy
     self.order_no = order_no
     self.action = action
     self.order_type = order_type
     self.symbol = symbol
     self.price = price
     self.quantity = quantity
     self.remain = remain if remain else quantity
     self.status = status
     self.avg_price = avg_price
     self.trade_type = trade_type
     self.ctime = ctime if ctime else tools.get_cur_timestamp_ms()
     self.utime = utime if utime else tools.get_cur_timestamp_ms()
Ejemplo n.º 2
0
    def _update_asset(self, data):
        """ Asset update.

        Args:
            data: asset data.
        
        Returns:
            None.
        """
        assets = {}
        for item in data["data"]:
            symbol = item["symbol"].upper()
            total = float(item["margin_balance"])
            free = float(item["margin_available"])
            locked = float(item["margin_frozen"])
            premium_frozen = float(item.get("premium_frozen", 0))
            premium_in = float(item.get("premium_in", 0))
            premium_out = float(item.get("premium_out", 0))
            delta = float(item.get("delta", 0))
            gamma = float(item.get("gamma", 0))
            theta = float(item.get("theta", 0))
            vega = float(item.get("vega", 0))
            option_value = float(item["option_value"])
            if total > 0:
                assets[symbol] = {
                    "total": "%.8f" % total,
                    "free": "%.8f" % free,
                    "locked": "%.8f" % locked,
                    "premium_frozen": "%.8f" % premium_frozen,
                    "premium_in": "%.8f" % premium_in,
                    "premium_out": "%.8f" % premium_out,
                    "delta": "%.8f" % delta,
                    "gamma": "%.8f" % gamma,
                    "theta": "%.8f" % theta,
                    "vega": "%.8f" % vega,
                    "option_value": "%.8f" % option_value
                }
        if assets == self._assets:
            update = False
        else:
            update = True

        if hasattr(self._assets, "assets") is False:
            info = {
                "platform": self._platform,
                "account": self._account,
                "assets": assets,
                "timestamp": tools.get_cur_timestamp_ms(),
                "update": update
            }
            asset = Asset(**info)
            self._assets = asset
            SingleTask.run(self._asset_update_callback,
                           copy.copy(self._assets))
        else:
            for symbol in assets:
                self._assets.assets.update({symbol: assets[symbol]})
            self._assets.timestamp = tools.get_cur_timestamp_ms()
            SingleTask.run(self._asset_update_callback,
                           copy.copy(self._assets))
Ejemplo n.º 3
0
    def _update_asset(self, data):
        """ Asset update.

        Args:
            data: asset data.
        
        Returns:
            None.
        """
        assets = {}
        for item in data["data"]:
            symbol = item["symbol"].upper()
            total = float(item["margin_balance"])
            free = float(item["margin_available"])
            locked = float(item["margin_frozen"])
            if total > 0:
                assets[symbol] = {
                    "total": "%.8f" % total,
                    "free": "%.8f" % free,
                    "locked": "%.8f" % locked
                }
        if assets == self._assets:
            update = False
        else:
            update = True
        info = {
            "platform": self._platform,
            "account": self._account,
            "assets": assets,
            "timestamp": tools.get_cur_timestamp_ms(),
            "update": update
        }
        asset = Asset(**info)
        self._assets = asset
Ejemplo n.º 4
0
 def __init__(self, platform=None, account=None, strategy=None, symbol=None, leverage=None,\
     short_quantity=None, short_avg_price=None, short_pnl_ratio=None, short_pnl_unreal=None,\
        short_pnl=None, long_quantity=None, long_avg_price=None,  long_pnl_ratio=None, long_pnl_unreal=None,\
          long_pnl=None, long_pos_margin=None,  short_pos_margin=None, liquid_price=None, maint_margin_ratio=None, utime=None ):
     """ 初始化持仓对象
     @param platform 交易平台
     @param account 账户
     @param strategy 策略名称
     @param symbol 合约名称
     """
     self.platform = platform
     self.account = account
     self.strategy = strategy
     self.symbol = symbol
     self.leverage = leverage  # 杠杆倍数
     self.short_quantity = short_quantity  # 空仓数量
     self.short_avg_price = short_avg_price  # 空仓持仓平均价格
     self.short_pnl_ratio = short_pnl_ratio  # 空仓收益率
     self.short_pnl_unreal = short_pnl_unreal  # 空仓未实现盈亏
     self.short_pnl = short_pnl  # 空仓已实现盈亏
     self.long_quantity = long_quantity  # 多仓数量
     self.long_avg_price = long_avg_price  # 多仓持仓平均价格
     self.long_pnl_ratio = long_pnl_ratio  # 多仓收益率
     self.long_pnl_unreal = long_pnl_unreal  # 多仓未实现盈亏
     self.long_pnl = long_pnl  # 多仓已实现盈亏
     self.long_pos_margin = long_pos_margin  # 多仓持仓保证金
     self.short_pos_margin = short_pos_margin  #  空仓持仓保证金
     self.liquid_price = liquid_price  # 预估爆仓价格
     self.maint_margin_ratio = maint_margin_ratio  #  保证金率
     self.utime = utime if utime else tools.get_cur_timestamp_ms()
Ejemplo n.º 5
0
    def _update_asset(self, data):
        """ Asset update.

        Args:
            data: asset data.
        
        Returns:
            None.
        """
        assets = {}
        for item in data["data"]:
            symbol = item["margin_account"].upper()
            total = float(item["margin_balance"])
            #free = float(item["margin_available"])
            locked = float(item["margin_frozen"]) + float(
                item["margin_position"])
            free = total - locked
            if total > 0:
                assets[symbol] = {
                    "total": "%.8f" % total,
                    "free": "%.8f" % free,
                    "locked": "%.8f" % locked
                }
        if assets == self._assets:
            update = False
        else:
            update = True
        if hasattr(self._assets, "assets") is False:
            info = {
                "platform": self._platform,
                "account": self._account,
                "assets": assets,
                "timestamp": tools.get_cur_timestamp_ms(),
                "update": update
            }
            asset = Asset(**info)
            self._assets = asset
            SingleTask.run(self._asset_update_callback,
                           copy.copy(self._assets))
        else:
            for symbol in assets:
                self._assets.assets.update({symbol: assets[symbol]})
            self._assets.timestamp = tools.get_cur_timestamp_ms()
            SingleTask.run(self._asset_update_callback,
                           copy.copy(self._assets))
Ejemplo n.º 6
0
 def update(self,
            short_quantity=0,
            short_avg_price=0,
            long_quantity=0,
            long_avg_price=0,
            liquid_price=0,
            utime=None):
     self.short_quantity = short_quantity
     self.short_avg_price = short_avg_price
     self.long_quantity = long_quantity
     self.long_avg_price = long_avg_price
     self.liquid_price = liquid_price
     self.utime = utime if utime else tools.get_cur_timestamp_ms()