引入dataclass做策略配置:
大家使用这个ProjConfig写配置非常容易,IDE还会提示参数。
from gui.proj_loader import ProjConfig, AlgoConfig, from_toml from config import DATA_DIR_PRJ proj = ProjConfig() proj.name = '网格策略' proj.commission = 0.0001 proj.slippage = 0.0001 proj.symbols = ['B0'] # 证券池列表 proj.benchmark = '000300.SH' proj.start_date = '20100101' # 这里是因子列表 proj.fields = ['max(high,1440)', 'min(low,1440)', '(max+min)/2'] proj.names = ['max', 'min', 'mid'] # 这里是策略算子列表 proj.algos.append(AlgoConfig(name='AlgoGrid', args=[])) print(proj) print(proj.load_df().dropna(inplace=True)) # 保存到目录 proj.to_toml(path=DATA_DIR_PRJ.resolve())
写好后可以自动保存成toml使用。
而后可以使用如下脚本来运行toml。
from engine.backtrader_engine import BacktraderEngine from gui.proj_loader import ProjConfig, AlgoConfig, from_toml from config import DATA_DIR_PRJ proj = ProjConfig() name = '网格策略' # 这里修改策略名称即可,策略列表在 data/projs下 p = from_toml(DATA_DIR_PRJ.joinpath('{}.toml'.format(name))) print(p) df = p.load_df() algos = p.parse_algos() print(algos) df.dropna(inplace=True) print(df) e = BacktraderEngine(df, benchmark=p.benchmark, slippage=p.slippage, commission=p.commission) e.run_algo_strategy(algos) e.analysis(console=True)
吾日三省吾身
有同学问及,量化回测有什么用?回测代表不了实盘。
这个问题曾经回答过,回测是实盘“必要非充分“条件,就像成长是成功的”必要非充分条件“。简单说,你自己有一个思路,觉得特别好,你的直觉和所谓盘感都告诉你,这个很好。那最简单的做法就是量化回测验证一下,也没什么成本。昨天去书店转一圈,发现现在讲K线的投资书少了,估计与量化兴起有关。你说”两条均线“打天下,用我们的quantlab,你直接测一下,结果不就出来了嘛。所以量化之一大功能就是”证伪“。
简言之:回测结果好,实盘未必好;但回测结果都不好,实盘能好嘛?
回测能帮你排坑,过滤掉不好的思路,你可以接近零成本试错。
不忘初心,星球的目标是什么?
量化投资里最难的当然是策略思路,AI量化里就有找有用的因子。这是大家一直努力的目标,但过程中,还有一件很繁琐的事情,就是把策略逻辑表达为“代码”。这个过程有大量的细节,调试,而且多数都是重复性的工作。
我们的目标之一,就是让思路到策略代码,尽量简洁。因此有了我们的“积木式”的策略开发,就是强调易用性。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103844
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!