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