Пример #1
0
    class DataFetcher(QThread):
        def __init__(self, parent=None):
            super().__init__(parent)
            from KRData.HKData import HKFuture
            self.hf = HKFuture()
            self.finished.connect(self.parent().show_data_fetch_finished)

        def run(self) -> None:
            parent = self.parent()
            if parent:
                parent.raw_data['HSI'] = self.hf.get_main_contract_bars('HSI', start='20190101')
def pack_to_traindatas2(data_path, train_path, zong_t, time_lidu, hc_zq=3):
    '''

    '''

    #  1.读取回测文件
    train_datas = {}
    with open(data_path, 'rb') as f0:
        resdf = pickle.load(f0)

    #  2.1读取训练数据地址,保存一个空文件。
    time0 = time.strftime("%m-%d", time.localtime())
    train_path = train_path.split(
        '.')[0] + f'_周期{time_lidu}_回测周期{hc_zq}_{time0}' + '.pickle'
    if os.path.exists(train_path):  # 读取保存地址
        print(f'地址存在{train_path}。')

    #  2.2读取训练数据地址,保存一个空文件。
    else:
        print(f'文件地址可用,新建一个空文件:{train_path}')
        with open(train_path, 'wb') as f_new:
            pickle.dump(train_datas, f_new)
            print(f'空文件保存在:{train_path}')
    # 3.0 获取历史信息。
    hf = HKFuture()  # 首次使用先配置..KRData
    h_data = hf.get_main_contract_bars('HSI',
                                       start=zong_t[0],
                                       end=(zong_t[-1] +
                                            datetime.timedelta(days=27)))
    #  3.按策略名字生成训练数据数据
    for k in resdf.keys():  # 遍历里面的策略名
        da = resdf[k]  #da是df数据,所有月份和参数。
        #   生成数据
        if len(da.keys()) > 0:
            print(f'{k}开始生成训练数据')
            # trainda 数据格式:{时间:数据,时间:数据。}
            trainda = generate_train_data2(da,
                                           zong_t=zong_t,
                                           hc_zq=hc_zq,
                                           h_data=h_data)
            train_datas[k] = trainda
            print(f'训练数据已经添加,当前:{k}')
            print('已存在》key:', train_datas.keys())

    with open(train_path, 'wb') as f1:
        pickle.dump(train_datas, f1)
        print('生成完毕:已存在key:')
        for i in train_datas.keys():
            print(i)
        print(f'\n保存在:{train_path}')