def load_traders(): global trader_domains global trader_names trader_domains = get_trader(return_type='domain') for trader in trader_domains: account_readers.append( AccountReader(trader_names=[trader.trader_name], level=trader.level)) order_readers.append(OrderReader(trader_names=[trader.trader_name])) trader_names = [item.trader_name for item in trader_domains]
import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output from zvt.api.business import get_trader from zvt.app import app from zvt.charts.dcc_components import get_trader_detail_figures from zvt.domain import business from zvt.reader.business_reader import AccountReader, OrderReader account_readers = [] order_readers = [] # init the data trader_domains: List[business.Trader] = get_trader(return_type='domain') trader_names: List[str] = [item.trader_name for item in trader_domains] def load_traders(): global trader_domains global trader_names trader_domains = get_trader(return_type='domain') for trader in trader_domains: account_readers.append( AccountReader(trader_names=[trader.trader_name], level=trader.level)) order_readers.append(OrderReader(trader_names=[trader.trader_name]))
def __init__(self, security_list: List[str] = None, exchanges: List[str] = ['sh', 'sz'], codes: List[str] = None, start_timestamp: Union[str, pd.Timestamp] = None, end_timestamp: Union[str, pd.Timestamp] = None, provider: Union[str, Provider] = Provider.JOINQUANT, level: Union[str, TradingLevel] = TradingLevel.LEVEL_1DAY, trader_name: str = None, real_time: bool = False, kdata_use_begin_time: bool = False) -> None: assert self.security_type is not None if trader_name: self.trader_name = trader_name else: self.trader_name = type(self).__name__.lower() self.trading_signal_listeners = [] self.state_listeners = [] self.selectors: List[TargetSelector] = [] self.security_list = security_list self.exchanges = exchanges self.codes = codes # FIXME:handle this case gracefully if self.security_list: security_type, exchange, code = decode_security_id(self.security_list[0]) if not self.security_type: self.security_type = security_type if not self.exchanges: self.exchanges = [exchange] self.provider = Provider(provider) # make sure the min level selector correspond to the provider and level self.level = TradingLevel(level) self.real_time = real_time if start_timestamp and end_timestamp: self.start_timestamp = to_pd_timestamp(start_timestamp) self.end_timestamp = to_pd_timestamp(end_timestamp) else: assert False if real_time: logger.info( 'real_time mode, end_timestamp should be future,you could set it big enough for running forever') assert self.end_timestamp >= now_pd_timestamp() self.kdata_use_begin_time = kdata_use_begin_time self.account_service = SimAccountService(trader_name=self.trader_name, timestamp=self.start_timestamp, provider=self.provider, level=self.level) self.add_trading_signal_listener(self.account_service) self.init_selectors(security_list=security_list, security_type=self.security_type, exchanges=self.exchanges, codes=self.codes, start_timestamp=self.start_timestamp, end_timestamp=self.end_timestamp) self.selectors_comparator = self.init_selectors_comparator() self.trading_level_asc = list(set([TradingLevel(selector.level) for selector in self.selectors])) self.trading_level_asc.sort() self.trading_level_desc = list(self.trading_level_asc) self.trading_level_desc.reverse() self.targets_slot: TargetsSlot = TargetsSlot() self.session = get_db_session('zvt', StoreCategory.business) trader = get_trader(session=self.session, trader_name=self.trader_name, return_type='domain', limit=1) if trader: self.logger.warning("trader:{} has run before,old result would be deleted".format(self.trader_name)) self.session.query(business.Trader).filter(business.Trader.trader_name == self.trader_name).delete() self.session.commit() self.on_start()
def __init__(self, entity_ids: List[str] = None, exchanges: List[str] = ['sh', 'sz'], codes: List[str] = None, start_timestamp: Union[str, pd.Timestamp] = None, end_timestamp: Union[str, pd.Timestamp] = None, provider: str = None, level: Union[str, IntervalLevel] = IntervalLevel.LEVEL_1DAY, trader_name: str = None, real_time: bool = False, kdata_use_begin_time: bool = False, draw_result: bool = True) -> None: assert self.entity_schema is not None if trader_name: self.trader_name = trader_name else: self.trader_name = type(self).__name__.lower() self.trading_signal_listeners = [] self.selectors: List[TargetSelector] = [] self.entity_ids = entity_ids self.exchanges = exchanges self.codes = codes self.provider = provider # make sure the min level selector correspond to the provider and level self.level = IntervalLevel(level) self.real_time = real_time if start_timestamp and end_timestamp: self.start_timestamp = to_pd_timestamp(start_timestamp) self.end_timestamp = to_pd_timestamp(end_timestamp) else: assert False if real_time: logger.info( 'real_time mode, end_timestamp should be future,you could set it big enough for running forever' ) assert self.end_timestamp >= now_pd_timestamp() self.kdata_use_begin_time = kdata_use_begin_time self.draw_result = draw_result self.account_service = SimAccountService( trader_name=self.trader_name, timestamp=self.start_timestamp, provider=self.provider, level=self.level) self.add_trading_signal_listener(self.account_service) self.init_selectors(entity_ids=entity_ids, entity_schema=self.entity_schema, exchanges=self.exchanges, codes=self.codes, start_timestamp=self.start_timestamp, end_timestamp=self.end_timestamp) self.selectors_comparator = self.init_selectors_comparator() self.trading_level_asc = list( set([IntervalLevel(selector.level) for selector in self.selectors])) self.trading_level_asc.sort() self.trading_level_desc = list(self.trading_level_asc) self.trading_level_desc.reverse() self.targets_slot: TargetsSlot = TargetsSlot() self.session = get_db_session('zvt', 'business') trader = get_trader(session=self.session, trader_name=self.trader_name, return_type='domain', limit=1) if trader: self.logger.warning( "trader:{} has run before,old result would be deleted".format( self.trader_name)) self.session.query(business.Trader).filter( business.Trader.trader_name == self.trader_name).delete() self.session.commit() self.on_start()
import dash import dash_core_components as dcc import dash_daq as daq import dash_html_components as html from dash.dependencies import Input, Output from zvt.api.business import get_trader from zvt.charts.dcc_components import get_trader_detail_figures from zvt.domain import TradingLevel, CoinTickKdata from zvt.reader.business_reader import AccountReader, OrderReader from zvt.reader.reader import DataReader trader = 'singlecointrader' security = 'coin_binance_EOS/USDT' trader_domain = get_trader(trader_name=trader, return_type='domain')[0] account_reader = AccountReader(trader_names=['singlecointrader'], level=TradingLevel.LEVEL_1MIN) order_reader = OrderReader(trader_names=['singlecointrader']) price_reader = DataReader(security_list=[security], data_schema=CoinTickKdata, provider='ccxt', start_timestamp=trader_domain.start_timestamp, end_timestamp=trader_domain.end_timestamp, level=TradingLevel.LEVEL_TICK, real_time=True) def serve_layout(): layout = html.Div([ daq.LEDDisplay(id='current_price',
from dash.dependencies import Input, Output from zvt.api.business import get_trader from zvt.charts.dcc_components import get_trader_detail_figures from zvt.domain import TradingLevel from zvt.reader.business_reader import AccountReader, OrderReader account_reader = AccountReader(trader_names=['cointrader'], level=TradingLevel.LEVEL_1MIN) order_reader = OrderReader(trader_names=['cointrader']) account_readers = [] order_readers = [] # init the data trader_domains = get_trader(return_type='domain') for trader in trader_domains: account_readers.append( AccountReader(trader_names=[trader.trader_name], level=trader.level)) order_readers.append(OrderReader(trader_names=[trader.trader_name])) trader_names = [item.trader_name for item in trader_domains] def serve_layout(): layout = html.Div([ html.Div([ dcc.Dropdown(id='trader-selector', options=[{ 'label': item, 'value': i