def build_transfer_ratio_text(self, market_ctx):
        trade_ratios = [
            TransferRatio.build_transfer_ratio(chain, market_ctx)
            for chain in self.chains
        ]
        trade_ratios = sorted(
            trade_ratios,
            key=lambda x: to_comparable_repr(x.exchange_pair + x.equity))

        last_exchange_pair = trade_ratios[0].exchange_pair
        lines = []
        for trade_ratio in trade_ratios:
            # exchange_pair가 바뀌었다면 한 줄 띄워준다.
            if last_exchange_pair != trade_ratio.exchange_pair:
                last_exchange_pair = trade_ratio.exchange_pair
                lines.append('')
            # TradeRatio에 대해 한줄씩 넣어준다.
            equity = trade_ratio.equity
            ratio = trade_ratio.ratio
            price_diff = trade_ratio.price_diff
            percentile = (ratio - 1) * 100
            log_percentile = 100 * math.log1p(ratio - 1)
            diff = int(price_diff)
            lines.append('{0:12}: {1:+.3f} % ({2:+.3f} ln%) [{3:+,d}]'.format(
                equity, percentile, log_percentile, diff))
        return '\n'.join(lines)
 def _build_balance_status_text(self):
     asset_volumes = self._total_asset_volumes().items()
     asset_volumes = sorted(asset_volumes,
                            key=lambda x: to_comparable_repr(x[0]))
     texts = []
     for (equity, volume) in asset_volumes:
         texts.append(ContentLines.get_balance_line(equity, volume))
     return '\n'.join(texts)
Пример #3
0
 def _build_assets_text(self, assets):
     texts = []
     sorted_keys = sorted(assets.keys(),
                          key=lambda x: to_comparable_repr(x))
     for key in sorted_keys:
         asset = assets[key]
         texts.append('  {}'.format(
             ContentLines.get_balance_line(key, asset.volume)))
     return '\n'.join(texts)
Пример #4
0
  def balance_changes(self):
    equities = self.participating_equities
    equities = sorted(equities, key=lambda x: to_comparable_repr(x))

    changes = []
    for equity in equities:
      old_asset_volume = self.before_balance.assets[equity].volume
      new_asset_volume = self.after_balance.assets[equity].volume
      diff = new_asset_volume - old_asset_volume
      change = TradeTaskAssetChange()
      change.equity = equity
      change.volume = new_asset_volume
      change.diff = diff
      changes.append(change)
    return changes
    def build_orderbook_spread_text(self, market_ctx):
        orderbook_spreads = OrderbookSpread.build_orderbook_spreads(
            self.chains, market_ctx)
        orderbook_spreads = sorted(
            orderbook_spreads,
            key=lambda x: to_comparable_repr(x.orderbook_key))

        last_exchange = orderbook_spreads[0].exchange
        lines = []
        for orderbook_spread in orderbook_spreads:
            # exchange가 바뀌었다면 한 줄 띄워준다.
            if last_exchange != orderbook_spread.exchange:
                last_exchange = orderbook_spread.exchange
                lines.append('')
            orderbook_key = orderbook_spread.orderbook_key
            spread_percentile = orderbook_spread.spread * 100
            lines.append('{0:16}: {1:.5f} %'.format(orderbook_key,
                                                    spread_percentile))
        return '\n'.join(lines)
Пример #6
0
  def total_balance_changes(self):
    equities = self.participating_equities

    total_changes_builder = {}
    for equity in equities:
      _, symbol = equity.split(':')
      old_asset_volume = self.before_balance.assets[equity].volume
      new_asset_volume = self.after_balance.assets[equity].volume
      diff = new_asset_volume - old_asset_volume
      if symbol not in total_changes_builder:
        change = TradeTaskAssetChange()
        change.equity = symbol
        change.volume = 0
        change.diff = 0
        total_changes_builder[symbol] = change
      change = total_changes_builder[symbol]
      change.volume += new_asset_volume
      change.diff += diff
    changes = total_changes_builder.values()
    return sorted(changes, key=lambda x: to_comparable_repr(x.equity))