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()