def correct_market_precision(self, order_difference, price, asset, current_cost): precision = Asset(asset).precision Asset.clear_cache() unrounded_payout = order_difference * price unrounded_payout += current_cost return float(round(unrounded_payout, precision))
def pool_change(self, new_pool_str): new_data = {} pool_obj = self.bs.rpc.get_object(new_pool_str.split(' ')[1]) self.usd_val_a = 0 self.usd_val_b = 0 self.bts_val_a = 0 self.bts_val_b = 0 self.cny_val_a = 0 self.cny_val_b = 0 asset_a = Asset(pool_obj['asset_a']) asset_b = Asset(pool_obj['asset_b']) share_asset = Asset(pool_obj['share_asset']) self.pool_id = pool_obj['id'] self.asset_a_precision = asset_a.precision new_data['asset_a_precision'] = self.asset_a_precision self.asset_b_precision = asset_b.precision new_data['asset_b_precision'] = self.asset_b_precision self.share_asset_precision = share_asset.precision self.virtual_value = pool_obj['virtual_value'] self.invariant = int(self.virtual_value) / (10**( int(self.asset_a_precision) + int(self.asset_b_precision))) self.asset_a_id = asset_a.identifier new_data['asset_a_id'] = self.asset_a_id self.asset_a_symbol = asset_a.symbol new_data['asset_a_symbol'] = self.asset_a_symbol self.asset_a_balance = str( int(pool_obj['balance_a']) / 10**asset_a.precision) new_data['asset_a_balance'] = self.asset_a_balance self.asset_b_id = asset_b.identifier new_data['asset_b_id'] = self.asset_b_id self.asset_b_symbol = asset_b.symbol new_data['asset_b_symbol'] = self.asset_b_symbol self.asset_b_balance = str( int(pool_obj['balance_b']) / 10**asset_b.precision) new_data['asset_b_balance'] = self.asset_b_balance self.share_asset_id = share_asset.identifier new_data['share_asset_id'] = self.share_asset_id self.share_asset_symbol = share_asset.symbol new_data['share_asset_symbol'] = self.share_asset_symbol temp = self.bs.rpc.get_object( share_asset['dynamic_asset_data_id'])['current_supply'] self.share_asset_balance = str( int(temp) / (10**share_asset['precision'])) new_data['share_asset_balance'] = self.share_asset_balance Asset.clear_cache() # this is the generation of the stats panel information self.swap_fee = f'{pool_obj["taker_fee_percent"] / 100}%' new_data['swap_fee'] = self.swap_fee self.withdraw_fee = f'{pool_obj["withdrawal_fee_percent"] / 100}%' new_data['withdraw_fee'] = self.withdraw_fee history_info = self.generate_history(new_pool_str.split(' ')[1]) # Get pool value self._get_pool_value( self.asset_a_symbol, self.asset_a_balance, self.asset_b_symbol, self.asset_b_balance, ) if self.denomination == 'BitUSD': _precision = 2 new_data['value'] = f'{(self.usd_val_a + self.usd_val_b):.2f} USD' elif self.denomination == 'BTS': _precision = 5 new_data['value'] = f'{(self.bts_val_a + self.bts_val_b):.5f} BTS' elif self.denomination == 'BitCNY': _precision = 4 new_data['value'] = f'{(self.cny_val_a + self.cny_val_b):.4f} CNY' new_data['swap_count'] = history_info['swap_count'] new_data['history'] = [] for item in history_info['history']: new_data['history'].append(item) if float(self.share_asset_balance) != 0: new_data[ 'poolshare_value'] = f'{round(float(new_data["value"].split(" ")[0]) / float(self.share_asset_balance), _precision)} {new_data["value"].split(" ")[1]}' else: new_data['poolshare_value'] = 0 pub.sendMessage('update_pool_change', data=new_data)
def correct_pool_amount(self, higher_amount, lower_amount, asset): precision = Asset(asset).precision Asset.clear_cache() difference = higher_amount - lower_amount return float(round(difference, precision))
"wss://kc-us-dex.xeldal.com/ws" ] ) blockchain = Blockchain( blockchain_instance=bitshares, mode='head' ) for op in blockchain.stream(['transfer']): payee = Account(op['to']).name from_account = Account(op['from']).name asset_symbol = Asset(op['amount']['asset_id']).symbol asset_precision = int(Asset(op['amount']['asset_id']).precision) amount = int(op['amount']['amount']) / (10**asset_precision) Asset.clear_cache() Account.clear_cache() body = '{} sent {} {} {} in block {}.'.format( from_account, payee, amount, asset_symbol, op['block_num']) pprint(body) if payee == ACCOUNT_WATCHING: message = client.messages.create( body=body, from_=BOT_PHONE_NUMBER, to=YOUR_PHONE_NUMBER ) pprint(message.sid)