Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
    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 = {}
Пример #4
0
    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()
Пример #5
0
    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')
Пример #6
0
 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
Пример #7
0
    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
        }
Пример #8
0
    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']
Пример #9
0
    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'
            },
        }