def __init__(self, auto_logon=True): super().__init__() self.name = BROKER_TYPE.TTS self.config = TTSConfig() self.order_handler = QA_OrderHandler() self._endpoint = 'http://%s:%s/api' % ( self.config.values['trade_server_ip'], self.config.values['trade_server_port']) self._encoding = "utf-8" if self.config.values['transport_enc_key'] == '' or self.config.values[ 'transport_enc_iv'] == '': self._transport_enc = False self._transport_enc_key = None self._transport_enc_iv = None self._cipher = None else: self._transport_enc = True self._transport_enc_key = bytes( self.config.values['transport_enc_key'], encoding=self._encoding) self._transport_enc_iv = bytes( self.config.values['transport_enc_iv'], encoding=self._encoding) self._cipher = Cipher(algorithms.AES(self._transport_enc_key), modes.CBC(self._transport_enc_iv), backend=default_backend()) self._session = requests.Session() self.client_id = 0 self.gddm_sh = 0 # 上海股东代码 self.gddm_sz = 0 # 深圳股东代码 if auto_logon is True: self.logon()
def __init__(self, if_start_orderthreading=True, *args, **kwargs): """MARKET的初始化过程 Market的初始属性: session: MARKET的账户字典 _broker: 当前所有的broker集合 TODO: 转移到QAParameter broker: MARKET的broker字典 running_time: MARKET当前的运行时间 last_query_data: MARKET上次获取的数据 if_start_orderthreading: MARKET是否开启订单队列线程的开关 order_handler: 订单队列 Keyword Arguments: if_start_orderthreading {bool} -- 是否在初始化的时候开启查询子线程(实盘需要) (default: {False}) @2018-08-06 change : 子线程全部变成后台线程 market线程崩了 子线程全部结束 """ super().__init__() # 以下是待初始化的账户session self.session = {} # 以下都是官方支持的交易前置 self._broker = { BROKER_TYPE.BACKETEST: QA_BacktestBroker, BROKER_TYPE.RANDOM: QA_RandomBroker, BROKER_TYPE.REAL: QA_RealBroker, BROKER_TYPE.SIMULATION: QA_SimulatedBroker, BROKER_TYPE.SHIPANE: QA_SPEBroker, BROKER_TYPE.TTS: QA_TTSBroker, } self.broker = {} self.running_time = None self.last_query_data = None self.if_start_orderthreading = if_start_orderthreading self.order_handler = QA_OrderHandler()
def __init__(self, if_nondatabase=False): """[summary] Keyword Arguments: commission_fee_coeff {[type]} -- [description] (default: {0}) environment {[type]} -- [description] (default: {RUNNING_ENVIRONMENT}) if_nondatabase {[type]} -- [description] (default: {False}) """ super().__init__() self.dealer = QA_Dealer() self.order_handler = QA_OrderHandler() self.engine = { MARKET_TYPE.STOCK_CN: self.dealer.backtest_stock_dealer} self.fetcher = {(MARKET_TYPE.STOCK_CN, FREQUENCE.DAY): QA_fetch_stock_day, (MARKET_TYPE.STOCK_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.ONE_MIN): QA_fetch_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.FIVE_MIN): QA_fetch_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.THIRTY_MIN): QA_fetch_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.SIXTY_MIN): QA_fetch_stock_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.DAY): QA_fetch_index_day, (MARKET_TYPE.INDEX_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.ONE_MIN): QA_fetch_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.FIVE_MIN): QA_fetch_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.THIRTY_MIN): QA_fetch_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.SIXTY_MIN): QA_fetch_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.DAY): QA_fetch_index_day, (MARKET_TYPE.FUND_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.ONE_MIN): QA_fetch_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.FIVE_MIN): QA_fetch_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.THIRTY_MIN): QA_fetch_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.SIXTY_MIN): QA_fetch_index_min} self.market_data = None self.if_nondatabase = if_nondatabase self.name = BROKER_TYPE.BACKETEST self._quotation = {} # 一个可以缓存数据的dict self.broker_data = None self.deal_message = {}
def __init__(self, if_start_orderthreading=True, *args, **kwargs): """[summary] Keyword Arguments: if_start_orderthreading {bool} -- 是否在初始化的时候开启查询子线程(实盘需要) (default: {False}) @2018-08-06 change : 子线程全部变成后台线程 market线程崩了 子线程全部结束 """ super().__init__() # 以下是待初始化的账户session self.session = {} # 以下都是官方支持的交易前置 self._broker = { BROKER_TYPE.BACKETEST: QA_BacktestBroker, BROKER_TYPE.RANODM: QA_RandomBroker, BROKER_TYPE.REAL: QA_RealBroker, BROKER_TYPE.SIMULATION: QA_SimulatedBroker, BROKER_TYPE.SHIPANE: QA_SPEBroker } self.broker = {} self.running_time = None self.last_query_data = None self.if_start_orderthreading = if_start_orderthreading self.order_handler = QA_OrderHandler()
def start_order_threading(self): """开启查询子线程(实盘中用) """ self.if_start_orderthreading = True self.order_handler = QA_OrderHandler() self.trade_engine.create_kernel('ORDER') self.trade_engine.start_kernel('ORDER')
def __init__(self): super().__init__() self.name = BROKER_TYPE.SHIPANE self.order_handler = QA_OrderHandler() self.setting = get_config_SPE() self._session = requests self._endpoint = self.setting.uri self.key = self.setting.key
def __init__(self, endpoint="http://127.0.0.1:10092/api", encoding="utf-8", enc_key=None, enc_iv=None): super().__init__() self.name = BROKER_TYPE.TTS self.order_handler = QA_OrderHandler() self._endpoint = endpoint self._encoding = "utf-8" if enc_key == None or enc_iv == None: self._transport_enc = False self._transport_enc_key = None self._transport_enc_iv = None self._cipher = None else: self._transport_enc = True self._transport_enc_key = enc_key self._transport_enc_iv = enc_iv backend = default_backend() self._cipher = Cipher(algorithms.AES(enc_key), modes.CBC(enc_iv), backend=backend) self._session = requests.Session() self.client_id = 0 self.gddm_sh = 0 #上海股东代码 self.gddm_sz = 0 #深圳股东代码 self.fetcher = { (MARKET_TYPE.STOCK_CN, FREQUENCE.DAY): QA_fetch_get_stock_day, (MARKET_TYPE.STOCK_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.ONE_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.FIVE_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.THIRTY_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.SIXTY_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.DAY): QA_fetch_get_index_day, (MARKET_TYPE.INDEX_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.ONE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.FIVE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.THIRTY_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.SIXTY_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.DAY): QA_fetch_get_index_day, (MARKET_TYPE.FUND_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.ONE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.FIVE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.THIRTY_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.SIXTY_MIN): QA_fetch_get_index_min }
def __init__(self): self.order_handler = QA_OrderHandler() self.setting = get_config_SPE() self._session = requests self._endpoint = self.setting.uri self.key = self.setting.key #self.account_headers = ['forzen_cash','balance_available','cash_available','pnl_money_today','total_assets','pnl_holding','market_value','money_available'] self.fillorder_headers = ['name', 'datetime', 'towards', 'price', 'amount', 'money', 'trade_id', 'order_id', 'code', 'shareholder', 'other'] self.holding_headers = ['code', 'name', 'hoding_price', 'price', 'pnl', 'amount', 'sell_available', 'pnl_money', 'holdings', 'total_amount', 'lastest_amounts', 'shareholder'] self.askorder_headers = ['code', 'towards', 'price', 'amount', 'transaction_price', 'transaction_amount', 'status', 'order_time', 'order_id', 'id', 'code', 'shareholders']
def __init__(self, endpoint="http://127.0.0.1:10092/api", encoding="utf-8", enc_key=None, enc_iv=None): super().__init__() self.name = BROKER_TYPE.TTS self.order_handler = QA_OrderHandler() self._endpoint = endpoint self._encoding = "utf-8" if enc_key == None or enc_iv == None: self._transport_enc = False self._transport_enc_key = None self._transport_enc_iv = None self._cipher = None else: self._transport_enc = True self._transport_enc_key = enc_key self._transport_enc_iv = enc_iv backend = default_backend() self._cipher = Cipher(algorithms.AES(enc_key), modes.CBC(enc_iv), backend=backend) self._session = requests.Session() self.client_id = 0 self.gddm_sh = 0 #上海股东代码 self.gddm_sz = 0 #深圳股东代码 self.fetcher = { (MARKET_TYPE.STOCK_CN, FREQUENCE.DAY): QA_fetch_get_stock_day, (MARKET_TYPE.STOCK_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.ONE_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.FIVE_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.THIRTY_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.STOCK_CN, FREQUENCE.SIXTY_MIN): QA_fetch_get_stock_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.DAY): QA_fetch_get_index_day, (MARKET_TYPE.INDEX_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.ONE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.FIVE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.THIRTY_MIN): QA_fetch_get_index_min, (MARKET_TYPE.INDEX_CN, FREQUENCE.SIXTY_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.DAY): QA_fetch_get_index_day, (MARKET_TYPE.FUND_CN, FREQUENCE.FIFTEEN_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.ONE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.FIVE_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.THIRTY_MIN): QA_fetch_get_index_min, (MARKET_TYPE.FUND_CN, FREQUENCE.SIXTY_MIN): QA_fetch_get_index_min } #通过代码前缀区分market_type self.code_table = { '000': { 'type': 'stock', 'market': 'SZ' }, '001': { 'type': 'stock', 'market': 'SZ' }, '002': { 'type': 'stock', 'market': 'SZ' }, '150': { 'type': 'fj', 'market': 'SZ' }, '159': { 'type': 'etf', 'market': 'SZ' }, '161': { 'type': 'etf', 'market': 'SZ' }, '163': { 'type': 'etf', 'market': 'SZ' }, '164': { 'type': 'etf', 'market': 'SZ' }, '168': { 'type': 'etf', 'market': 'SZ' }, '169': { 'type': 'etf', 'market': 'SZ' }, '300': { 'type': 'stock', 'market': 'SZ' }, '501': { 'type': 'etf', 'market': 'SH' }, '502': { 'type': 'fj', 'market': 'SH' }, '510': { 'type': 'etf', 'market': 'SH' }, '511': { 'type': 'etf', 'market': 'SH' }, '512': { 'type': 'etf', 'market': 'SH' }, '513': { 'type': 'etf', 'market': 'SH' }, '518': { 'type': 'etf', 'market': 'SH' }, '600': { 'type': 'stock', 'market': 'SH' }, '601': { 'type': 'stock', 'market': 'SH' }, '603': { 'type': 'stock', 'market': 'SH' }, }