Ejemplo n.º 1
0
def run_console():
    sas = stock_analysis_system.StockAnalysisSystem()
    sas.check_initialize()

    # update_special()
    # update_local([
    #     # 'Market.SecuritiesInfo',
    #     #
    #     # 'Market.NamingHistory',
    #     # 'Market.TradeCalender',
    #     #
    #     # 'Finance.Audit',
    #     # 'Finance.BalanceSheet',
    #     # 'Finance.IncomeStatement',
    #     # 'Finance.CashFlowStatement',
    #     #
    #     # 'Stockholder.PledgeStatus',
    #     # 'Stockholder.PledgeHistory',
    #     # 'Stockholder.Statistics',
    #     #
    #     # 'TradeData.Stock.Daily',
    #     #
    #     # 'Market.IndexInfo',
    #     # 'TradeData.Index.Daily',
    # ], True)
    # run_strategy()
    run_calc_factor()

    exit(0)
Ejemplo n.º 2
0
def main():
    app = QApplication(sys.argv)
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()
    dlg = WrapperQDialog(DataHubUi(data_center))
    dlg.exec()
Ejemplo n.º 3
0
def run_calc_factor():
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()

    # factor_center = sas.get_factor_center()
    # factor_center.reload_plugin()
    # df = factor_center.query('000021.SZSE',
    #                          ['货币资金/有息负债', '货币资金/短期负债', '流动比率', '速动比率'],
    #                          (default_since(), now()), {}, {})
    # print(df)

    check_fields = [
        '货币资金/有息负债', '货币资金/短期负债', '有息负债/资产总计', '有息负债/货币金融资产', '流动比率', '速动比率'
    ]

    df = data_center.query('Factor.Finance',
                           '000021.SZSE', (default_since(), now()),
                           fields=check_fields,
                           readable=True)
    print(df)

    data_center.update_local_data('Factor.Finance',
                                  '000021.SZSE', (default_since(), now()),
                                  fields=check_fields)
    df = data_center.query('Factor.Finance',
                           '000021.SZSE', (default_since(), now()),
                           fields=check_fields,
                           readable=True)
    print(df)
def test_entry() -> bool:
    ret = True
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()

    df = data_center.query_from_plugin('Finance.BalanceSheet',
                                       '600000',
                                       (text2date('2010-01-01'), today()),
                                       test_flag=True)
    if df is None:
        ret = False
        print('Dump Finance.BalanceSheet Failed.')

    df = data_center.query_from_plugin('Finance.IncomeStatement',
                                       '600000',
                                       (text2date('2010-01-01'), today()),
                                       test_flag=True)
    if df is None:
        ret = False
        print('Dump Finance.IncomeStatement Failed.')

    df = data_center.query_from_plugin('Finance.CashFlowStatement',
                                       '600000',
                                       (text2date('2010-01-01'), today()),
                                       test_flag=True)
    if df is None:
        ret = False
        print('Dump Finance.CashFlowStatement Failed.')

    return ret
Ejemplo n.º 5
0
def main():
    sas = stock_analysis_system.StockAnalysisSystem()
    sas.check_initialize()

    app = QApplication(sys.argv)
    main_wnd = main_ui.MainWindow()
    main_wnd.show()
    app.exec_()
Ejemplo n.º 6
0
def main():
    sas = stock_analysis_system.StockAnalysisSystem()
    sas.check_initialize()

    # run_console()
    run_ui()
    # run_test()

    print('Process Quit.')
Ejemplo n.º 7
0
def run_test():
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()
    result = data_center.query('Finance.BalanceSheet', '600000.SSE',
                               fields=['存货', '长期待摊费用', '拆出资金'], readable=True)
    assert '存货' in result.columns
    assert '拆出资金' in result.columns
    assert '长期待摊费用' in result.columns
Ejemplo n.º 8
0
def test_entry() -> bool:
    ret = True
    sas = stock_analysis_system.StockAnalysisSystem()
    if not sas.check_initialize():
        print('StockAnalysisSystem init fail.')
        print(sas.get_log_errors())
        return False

    data_hub = sas.get_data_hub_entry()
    se = sas.get_strategy_entry()

    # stock_list = data_hub.get_data_utility().get_stock_list()
    # stock_ids = [_id for _id, _name in stock_list]
    # stock_ids = ['600518.SSE']
    stock_ids = ['000004.SZSE']

    clock = Clock()

    result = se.run_strategy(
        stock_ids,
        [
            # '7a2c2ce7-9060-4c1c-bca7-71ca12e92b09',
            # 'e639a8f1-f2f5-4d48-a348-ad12508b0dbb',
            # 'f39f14d6-b417-4a6e-bd2c-74824a154fc0',
            # '3b01999c-3837-11ea-b851-27d2aa2d4e7d',
            # '1fdee036-c7c1-4876-912a-8ce1d7dd978b',

            # 'b0e34011-c5bf-4ac3-b6a4-c15e5ea150a6',
            # 'd811ebd6-ee28-4d2f-b7e0-79ce0ecde7f7',
            # '2c05bb4c-935e-4be7-9c04-ae12720cd757',
            # 'e6ab71a9-0c9f-4500-b2db-d682af567f70',
            # '4ccedeea-b731-4b97-9681-d804838e351b',
            'e515bd4b-db4f-49e2-ac55-1927a28d2a1c',
        ])

    # Dummy analyzers for test
    # result = se.run_strategy(stock_ids, [
    #     '5d19927a-2ab1-11ea-aee4-eb8a702e7495',
    #     'bc74b6fa-2ab1-11ea-8b94-03e35eea3ca4',
    #     '6b23435c-2ab1-11ea-99a8-3f957097f4c9',
    #     'd0b619ba-2ab1-11ea-ac32-43e650aafd4f',
    #     '78ffae34-2ab1-11ea-88ff-634c407b44d3',
    #     'd905cdea-2ab1-11ea-9e79-ff65d4808d88',
    # ])

    print('Analysis time spending: ' + str(clock.elapsed_s()) + ' s')

    passed_securities = pick_up_pass_securities(result, 50)
    print('Passed securities' + str(passed_securities))

    clock.reset()
    name_dict = sas.get_strategy_entry().strategy_name_dict()
    generate_analysis_report(result, 'analysis_report.xlsx', name_dict)
    print('Generate report time spending: ' + str(clock.elapsed_s()) + ' s')

    return ret
Ejemplo n.º 9
0
def run_ui():
    app = QApplication(sys.argv)
    sas = stock_analysis_system.StockAnalysisSystem()

    while not sas.is_initialized():
        dlg = WrapperQDialog(config_ui.ConfigUi())
        dlg.exec()
        sas.check_initialize()

    main_wnd = main_ui.MainWindow()
    main_wnd.show()
    sys.exit(app.exec())
Ejemplo n.º 10
0
def update_special():
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()
    data_utility = data_hub.get_data_utility()

    df1 = data_center.query_from_plugin('Finance.Audit', '000021.SZSE', force=True)
    df2 = data_center.query_from_plugin('Finance.BalanceSheet', '000021.SZSE', force=True)
    df3 = data_center.query_from_plugin('Finance.IncomeStatement', '000021.SZSE', force=True)
    df4 = data_center.query_from_plugin('Finance.CashFlowStatement', '000021.SZSE', force=True)

    print(df1)
    print(df2)
    print(df3)
    print(df4)
Ejemplo n.º 11
0
def update_local(update_list: [str], force: bool = False):
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()
    data_utility = data_hub.get_data_utility()

    if 'Market.SecuritiesInfo' in update_list:
        print('Updating SecuritiesInfo...')
        data_center.update_local_data('Market.SecuritiesInfo', force=force)

    if 'Market.NamingHistory' in update_list:
        print('Updating Naming History...')
        data_center.update_local_data('Market.NamingHistory', force=force)

    if 'Market.TradeCalender' in update_list:
        print('Updating TradeCalender...')
        data_center.update_local_data('Market.TradeCalender', exchange='SSE', force=force)

    stock_list = data_utility.get_stock_list()

    start_total = time.time()
    print('Updating Finance Data for All A-SHARE Stock.')

    counter = 0
    for stock_identity, name in stock_list:
        start_single = time.time()
        print('Updating Finance Data for ' + stock_identity + ' [' + name + ']')
        if 'Finance.Audit' in update_list:
            data_center.update_local_data('Finance.Audit', stock_identity, force=force)
        if 'Finance.BalanceSheet' in update_list:
            data_center.update_local_data('Finance.BalanceSheet', stock_identity, force=force)
        if 'Finance.IncomeStatement' in update_list:
            data_center.update_local_data('Finance.IncomeStatement', stock_identity, force=force)
        if 'Finance.CashFlowStatement' in update_list:
            data_center.update_local_data('Finance.CashFlowStatement', stock_identity, force=force)
        if 'Stockholder.PledgeStatus' in update_list:
            data_center.update_local_data('Stockholder.PledgeStatus', stock_identity, force=force)
        if 'Stockholder.PledgeHistory' in update_list:
            data_center.update_local_data('Stockholder.PledgeHistory', stock_identity, force=force)

        counter += 1
        print('Done (%s / %s). Time Spending: %s s' % (counter, len(stock_list), time.time() - start_single))

        # For the sake of:
        # 抱歉,您每分钟最多访问该接口80次,权限的具体详情访问:https://tushare.pro/document/1?doc_id=108
        # time.sleep(1)

    print('Update Finance Data for All A-SHARE Stock Done. Time Spending: ' + str(time.time() - start_total) + 's')
def test_entry() -> bool:
    ret = True
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()

    df = data_center.query_from_plugin('Market.SecuritiesInfo',
                                       '',
                                       test_flag=True)
    if df is None:
        ret = False
        print('Test Market.SecuritiesInfo Failed.')

    df = data_center.query_from_plugin('Market.TradeCalender',
                                       'A-SHARE', (default_since(), today()),
                                       test_flag=True)
    if df is None:
        ret = False
        print('Test Market.SecuritiesInfo Failed.')

    return ret
Ejemplo n.º 13
0
def update_local(update_list: [str], force: bool = False):
    sas = stock_analysis_system.StockAnalysisSystem()
    data_hub = sas.get_data_hub_entry()
    data_center = data_hub.get_data_center()
    data_utility = data_hub.get_data_utility()

    if 'Market.SecuritiesInfo' in update_list:
        print('Updating SecuritiesInfo...')
        data_center.update_local_data('Market.SecuritiesInfo', force=force)

    if 'Market.NamingHistory' in update_list:
        print('Updating Naming History...')
        data_center.update_local_data('Market.NamingHistory', force=force)

    if 'Market.TradeCalender' in update_list:
        print('Updating TradeCalender...')
        data_center.update_local_data('Market.TradeCalender',
                                      exchange='SSE',
                                      force=force)

    stock_list = data_utility.get_stock_list()

    start_total = time.time()
    print('Updating Finance Data for All A-SHARE Stock.')

    counter = 0
    for stock_identity, name in stock_list:
        start_single = time.time()
        print('Updating Finance Data for ' + stock_identity + ' [' + name +
              ']')
        if 'Finance.Audit' in update_list:
            data_center.update_local_data('Finance.Audit',
                                          stock_identity,
                                          force=force)
        if 'Finance.BalanceSheet' in update_list:
            data_center.update_local_data('Finance.BalanceSheet',
                                          stock_identity,
                                          force=force)
        if 'Finance.IncomeStatement' in update_list:
            data_center.update_local_data('Finance.IncomeStatement',
                                          stock_identity,
                                          force=force)
        if 'Finance.CashFlowStatement' in update_list:
            data_center.update_local_data('Finance.CashFlowStatement',
                                          stock_identity,
                                          force=force)

        if 'TradeData.Stock.Daily' in update_list:
            data_center.update_local_data('TradeData.Stock.Daily',
                                          stock_identity,
                                          force=force)

        if 'Stockholder.PledgeStatus' in update_list:
            data_center.update_local_data('Stockholder.PledgeStatus',
                                          stock_identity,
                                          force=force)
        if 'Stockholder.PledgeHistory' in update_list:
            data_center.update_local_data('Stockholder.PledgeHistory',
                                          stock_identity,
                                          force=force)
        if 'Stockholder.Statistics' in update_list:
            data_center.update_local_data('Stockholder.Statistics',
                                          stock_identity,
                                          force=force)

        counter += 1
        print('Done (%s / %s). Time Spending: %s s' %
              (counter, len(stock_list), time.time() - start_single))

    if 'Market.IndexInfo' in update_list:
        print('Updating IndexInfo...')
        data_center.update_local_data('Market.IndexInfo',
                                      force=force,
                                      dump_flag=True)

    from DataHub.DataHubEntry import DEPENDS_INDEX
    # index_list = data_utility.get_index_list()
    index_list = DEPENDS_INDEX

    print('Updating Index Data for All Support Market.')

    counter = 0
    for index_identity, name in index_list:
        start_single = time.time()

        if 'TradeData.Index.Daily' in update_list:
            data_center.update_local_data('TradeData.Index.Daily',
                                          index_identity,
                                          force=force)

        counter += 1
        print('Done (%s / %s). Time Spending: %s s' %
              (counter, len(index_list), time.time() - start_single))

    print('Update Finance Data for All A-SHARE Stock Done. Time Spending: ' +
          str(time.time() - start_total) + 's')