Пример #1
0
    def QA_backtest_get_block(self, block_list):
        block_ = QA_fetch_stock_block_adv()
        _data = []

        try:
            for item in block_list:

                _data.extend(block_.get_block(item).code)
            return np.unique(_data).tolist()
        except Exception as e:
            raise e
Пример #2
0
def get_day_once():

    _time1 = datetime.datetime.now()
    from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
    code = QA_fetch_stock_block_adv().code
    x = QA_Tdx_Executor()
    return x.get_security_bar_concurrent(code, 'day', 1)
Пример #3
0
def get_bar(timeout=1, sleep=1):
    sleep = int(sleep)
    _time1 = datetime.datetime.now()
    from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
    code = QA_fetch_stock_block_adv().code
    print(len(code))
    x = QA_Tdx_Executor(timeout=float(timeout))
    print(x._queue.qsize())
    print(x.get_available())

    while True:
        _time = datetime.datetime.now()
        if QA_util_if_tradetime(_time):  # 如果在交易时间
            data = x.get_security_bar_concurrent(code, 'day', 1)

            print('Time {}'.format(
                (datetime.datetime.now() - _time).total_seconds()))
            time.sleep(sleep)
            print('Connection Pool NOW LEFT {} Available IP'.format(
                x._queue.qsize()))
            print('Program Last Time {}'.format(
                (datetime.datetime.now() - _time1).total_seconds()))

            return data
        else:
            print('Not Trading time {}'.format(_time))
            time.sleep(sleep)
Пример #4
0
    def run(self):

        sleep = int(self.sleep_time)
        _time1 = datetime.datetime.now()
        database = DATABASE.get_collection('realtime_{}'.format(
            datetime.date.today()))
        database.create_index([('code', QA_util_sql_mongo_sort_ASCENDING)])
        database.create_index([('datetime', QA_util_sql_mongo_sort_ASCENDING)])

        from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
        code = QA_fetch_stock_block_adv().code

        while True:
            _time = datetime.datetime.now()
            if QA_util_if_tradetime(_time):  # 如果在交易时间
                data = x.get_realtime_concurrent(code)

                data[0]['datetime'] = data[1]
                x.save_mongo(data[0])

                print('Time {}'.format(
                    (datetime.datetime.now() - _time).total_seconds()))
                time.sleep(sleep)
                print('Connection Pool NOW LEFT {} Available IP'.format(
                    x._queue.qsize()))
                print('Program Last Time {}'.format(
                    (datetime.datetime.now() - _time1).total_seconds()))
            else:
                print('Not Trading time {}'.format(_time))
                time.sleep(sleep)
Пример #5
0
def QA_etl_stock_block(ui_log= None):
    QA_util_log_info(
        '##JOB Now ETL STOCK Block ==== {}'.format(str(datetime.date.today())), ui_log)
    data = QA_fetch_stock_block_adv().data.reset_index()
    QA_util_sql_store_mysql(data, "stock_block",if_exists='replace')
    QA_util_log_info(
        '##JOB ETL STOCK Block HAS BEEN SAVED ==== {}'.format(str(datetime.date.today())), ui_log)
Пример #6
0
def bat(timeout):

    _time1 = datetime.datetime.now()
    from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
    code = QA_fetch_stock_block_adv().code
    print(len(code))
    x = QA_Tdx_Executor(timeout=timeout)
    print(x._queue.qsize())
    print(x.get_available())

    database = DATABASE.get_collection('realtime_{}'.format(
        datetime.date.today()))

    print(database)
    database.create_index([('code', QA_util_sql_mongo_sort_ASCENDING),
                           ('datetime', QA_util_sql_mongo_sort_ASCENDING)])

    for i in range(100000):
        _time = datetime.datetime.now()
        if QA_util_if_tradetime(_time):  # 如果在交易时间
            data = x.get_realtime_concurrent(code)

            data[0]['datetime'] = data[1]
            x.save_mongo(data[0])

            print('Time {}'.format(
                (datetime.datetime.now() - _time).total_seconds()))
            time.sleep(1)
            print('Connection Pool NOW LEFT {} Available IP'.format(
                x._queue.qsize()))
            print('Program Last Time {}'.format(
                (datetime.datetime.now() - _time1).total_seconds()))
        else:
            print('Not Trading time {}'.format(_time))
            time.sleep(1)
Пример #7
0
    def __init__(self, block=None, block_name=None, lens=90, *args, **kwargs):

        try:
            self.block_code = block.code
        except:
            self.block_code = block

        if block_name is not None:
            self.block_code = QA_fetch_stock_block_adv().get_block(block_name).code
        self.lens = lens
Пример #8
0
def bat(timeout=0.2, sleep=1, thread=2, size=80):
    sleep = int(sleep)
    _time1 = datetime.datetime.now()
    from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
    code = QA_fetch_stock_block_adv().code
    print(len(code))
    x = QA_Tdx_Executor(timeout=float(timeout),
                        thread_num=int(thread),
                        max_size=int(size))
    print(x._queue.qsize())
    print(x.get_available())

    database = DATABASE.get_collection('realtime_{}'.format(
        datetime.date.today()))

    print(database)

    # mongodb在排序时,复合索引并不能像关系型数据库一样提升效率,反而会降低排序性能
    # 在测试的过程,发现datetime倒序索引在倒序查询时性能更高,但写入性能较低
    # 此表属于写多读少,所以索引继续采用正序
    database.create_index([('code', QA_util_sql_mongo_sort_ASCENDING)])
    database.create_index([('datetime', QA_util_sql_mongo_sort_ASCENDING)])

    while True:
        _time = datetime.datetime.now()
        if QA_util_if_tradetime(_time):  # 如果在交易时间
            data = x.get_realtime_concurrent(code)

            data[0]['datetime'] = data[1]
            x.save_mongo(data[0])

            print('Time {}'.format(
                (datetime.datetime.now() - _time).total_seconds()))
            time.sleep(sleep)
            print('Connection Pool NOW LEFT {} Available IP'.format(
                x._queue.qsize()))
            print('Program Last Time {}'.format(
                (datetime.datetime.now() - _time1).total_seconds()))
        else:
            print('Not Trading time {}'.format(_time))
            time.sleep(sleep)
Пример #9
0
def bat():

    _time1 = datetime.datetime.now()
    from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
    code = QA_fetch_stock_block_adv().code
    print(len(code))
    x = QA_Tdx_Executor()
    print(x._queue.qsize())
    print(x.get_available())
    #data = x.get_security_bars(code[0], '15min', 20)
    # print(data)
    # for i in range(5):
    #     print(x.get_realtime_concurrent(code))

    for i in range(100000):
        _time = datetime.datetime.now()
        if QA_util_if_tradetime(_time):  # 如果在交易时间
            #data = x.get_realtime(code)
            data = x.get_realtime_concurrent(code)

            data[0]['datetime'] = data[1]
            x.save_mongo(data[0])
            # print(code[0])
            #data = x.get_security_bars(code, '15min', 20)
            # if data is not None:
            print(len(data[0]))
            # print(data)
            print('Time {}'.format(
                (datetime.datetime.now() - _time).total_seconds()))
            time.sleep(1)
            print('Connection Pool NOW LEFT {} Available IP'.format(
                x._queue.qsize()))
            print('Program Last Time {}'.format(
                (datetime.datetime.now() - _time1).total_seconds()))
        else:
            print('Not Trading time {}'.format(_time))
            time.sleep(1)
Пример #10
0
        code = str(code)
        if code[0] in ['5', '6', '9'] or code[:3] in [
                "009", "126", "110", "201", "202", "203", "204"
        ]:
            return 1
        return 0

    def save_mongo(self):
        pass


if __name__ == '__main__':
    import time
    _time1 = datetime.datetime.now()
    from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_block_adv
    code = QA_fetch_stock_block_adv().code
    x = QA_Tdx_Executor()
    print(x._queue.qsize())
    print(x.get_available())
    for i in range(100000):
        _time = datetime.datetime.now()
        #data = x.get_realtime(code)
        data = x.get_realtime_concurrent(code)
        # if data is not None:
        # print(len(data))
        # print(data[0])
        print('Time {}'.format(
            (datetime.datetime.now() - _time).total_seconds()))
        time.sleep(1)
        print('Connection Pool NOW LEFT {} Available IP'.format(
            x._queue.qsize()))
Пример #11
0
def QA_etl_stock_block():
    data = QA_fetch_stock_block_adv(list(QA_fetch_stock_list_adv()['code'])).data.reset_index()
    QA_util_sql_store_mysql(data, "stock_block",if_exists='replace')
Пример #12
0
 def block(self):
     return QA_fetch_stock_block_adv(code=self.code_list)
Пример #13
0
def get_block_code(code, type='zjhhy') -> (str):
    """按照证监会行业分类,获取指定股票的同分类所有股票代码"""
    df = QA_fetch_stock_block_adv()
    k = df.get_code(code).data
    name = k[k['type'] == type].reset_index()['blockname'].values[0]
    return [c for c in df.get_block(name).code if c != code]
Пример #14
0
# coding:utf-8

# 输入一个stock_list/stock_block
# 生成相关因子

from QUANTAXIS.QAFetch.QAQuery_Advance import QA_fetch_stock_day_adv, QA_fetch_stock_min_adv, QA_fetch_stock_block_adv
from QUANTAXIS.QAAnalysis.QAAnalysis_dataframe import QA_Analysis_stock


class QA_Analysis_block():
    def __init__(self, block, *args, **kwargs):
        self.block_code = block

    def market_data(self, start, end, _type='day'):
        return QA_fetch_stock_day_adv(self.block_code, start, end)

    def calc_pcg(self, market_data):
        pass


ana = QA_Analysis_block(
    QA_fetch_stock_block_adv().get_block('昨日涨停').code.tolist())
print(ana.market_data('2017-10-01', '2017-10-30'))