0
点赞
收藏
分享

微信扫一扫

量化交易之回测篇 - 根据回测配置文件生成策略配置文件(strategies_setting.json)

mjjackey 2023-03-02 阅读 25


from public_module.tqz_extern.tools.position_operator.position_operator import TQZJsonOperator
from back_tester_branch.back_tester_source_data import BackTesterFutureConfigPath

class TQZRefreshFutureStrategiesSetting:

@classmethod
def refresh_ma_strategies(cls, tq_main_contracts: list, strategy_template_name: str, fast_ma: int = 30, slow_ma: int = 250):

pos_result = TQZJsonOperator.tqz_load_jsonfile(jsonfile=BackTesterFutureConfigPath.future_pos_result_path())

strategies_setting = TQZJsonOperator.tqz_load_jsonfile(jsonfile=BackTesterFutureConfigPath.future_strategies_setting_path())
for tq_m_symbol in tq_main_contracts:
tq_sym = tq_m_symbol.split('@')[1]
strategy_name = f'{tq_sym}.{strategy_template_name}'

assert tq_sym in pos_result.keys(), f'bad tq_sym({tq_sym})'

strategies_setting[strategy_name] = {
"class_name": strategy_template_name,
"vt_symbol": tq_sym,
"setting": {
"class_name": strategy_template_name,
"fast_window": fast_ma,
"slow_window": slow_ma,
"lots_size": pos_result[tq_sym]["std_pos"]
}
}

TQZJsonOperator.tqz_write_jsonfile(content=strategies_setting, target_jsonfile=BackTesterFutureConfigPath.future_strategies_setting_path())

@classmethod
def refresh_renkoWave_strategies(cls, tq_main_contracts: list, strategy_template_name: str, fast_ma: int = 30, slow_ma: int = 250): # noqa

pos_result = TQZJsonOperator.tqz_load_jsonfile(jsonfile=BackTesterFutureConfigPath.future_pos_result_path())

strategies_setting = TQZJsonOperator.tqz_load_jsonfile(jsonfile=BackTesterFutureConfigPath.future_strategies_setting_path())
for tq_m_symbol in tq_main_contracts:
tq_sym = tq_m_symbol.split('@')[1]
strategy_name = f'{tq_sym}.{strategy_template_name}'

assert tq_sym in pos_result.keys(), f'bad tq_sym({tq_sym})'

strategies_setting[strategy_name] = {
"class_name": strategy_template_name,
"vt_symbol": tq_sym,
"setting": {
"class_name": strategy_template_name,
"fast_window": fast_ma,
"slow_window": slow_ma,
"lots_size": pos_result[tq_sym]["std_pos"],
"renko_size": pos_result[tq_sym]["renko_size"]
}
}

TQZJsonOperator.tqz_write_jsonfile(
content=strategies_setting,
target_jsonfile=BackTesterFutureConfigPath.future_strategies_setting_path()
)


if __name__ == '__main__':
content = TQZJsonOperator.tqz_load_jsonfile(jsonfile=BackTesterFutureConfigPath.future_back_tester_setting_path())

_strategy_template_name = content['future_strategy_template']
_tq_main_contracts = content['tq_main_contracts']
if _strategy_template_name == "DoubleMaStrategy":
TQZRefreshFutureStrategiesSetting.refresh_ma_strategies(tq_main_contracts=_tq_main_contracts, strategy_template_name=_strategy_template_name)
elif _strategy_template_name == "RenkoWaveStrategy":
TQZRefreshFutureStrategiesSetting.refresh_renkoWave_strategies(tq_main_contracts=_tq_main_contracts, strategy_template_name=_strategy_template_name)
elif _strategy_template_name == "TQZRenkoWaveStrategy":
pass
else:
pass


# TQZRefreshFutureStrategiesSetting.refresh_ma_strategies()
# TQZRefreshFutureStrategiesSetting.refresh_renkoWave_strategies()

举报

相关推荐

Maven setting配置文件

0 条评论