股票策略参数设置为什么没生效:核对代码默认值与回测配置
股票策略参数看起来没生效时,应从规格追到真正使用它的表达式。JSON里有一个窗口字段,不会自动进入无参数构造类。记录实际值和来源,再用一段改变一个参数就应改变信号的短输入验证。不能只看配置文字更新,或凭大回测结果没变化猜测加载器行为。
本指南使用作者编写的最小加载器和显式替代适配器,CoTrading参数注入仍为规划或待核实。最小路径故意复现字段被忽略,不证明所有外部runner都忽略同名键。交付是生效表与实际反例,不做参数搜索,也不输出未运行的收益排名。
每个参数有唯一生效来源
分别列策略窗口、比较阈值、执行排程与账户成本。窗口控制指标切片,延迟控制订单时点,佣金控制现金。同一配置文件有相近名字,不代表同一组件会读它们,更不代表修改任何字段都应改变信号。先明确预期影响层,才能判断是否真的失效。
每字段保存请求值、允许类型、默认、生效值、来源和消费表达式。来源可以是源码常量,也可以是实际实现的适配器。提示词或界面写了某值,不是生效证据;需要代码或解析后实例快照证明连接。未实现的自动注入不能靠命名习惯假定存在。
本例类常量窗口三、阈值零,没有必填构造参数。Python inspect官方文档说明签名检查,脚本断言类签名为空。这证明本类能无参构造,不证明任意配置字段都会注入。接口合规与参数控制逻辑是两项验收,不能互相替代。
阈值单位先写清
规则为当前完整收盘严格高于尾部均值乘一加阈值。零表示高于均值,零点二表示高于均值百分之二十,不是二十个价格单位,也不是零点二个百分点。规格里写单位,避免两份实现都叫threshold,却做完全不同运算,最后只能从结果差异猜含义。
窗口包含当前观察,不足时本信号契约输出零。改窗口同时改变热身与均值,测试应分别看,不假设只可能影响最后行。默认窗口三、阈值零属于批准规则,不能为方便加载随便换值;只要影响信号,默认就是策略选择,而不是无关工程细节。
规格与类默认不一致,即使导入和运行成功,也是契约问题。报告应指出差异在哪里,不把不报错当正确。真实框架可能有另一份配置覆盖,需要取得最终实例值,不能拿源码某行常量当全链证据,也不能只看用户请求跳过解析过程。
复现被忽略字段
作者最小reference_style_load(config)只返回默认实例,不读取策略参数。空字典加载一次,再传请求窗口二加载一次,两者实际仍三。这是可控机制实验,不联系产品服务。名称用于表示无参风格,不宣称已经在真实CoTrading界面测到该键失效。
收盘十、二十、十八,三条均值十六,十八满足。默认和被忽略配置均输出[0,0,1],报告请求二、生效三。相同信号由明确代码解释,而不是从漫长净值曲线猜测。这个输入使窗口差异可见,避免选一个不敏感样本后误以为任何参数都不起作用。
真实事件中先读实际加载器、允许字段和解析实例,再宣布字段忽略。引擎可能在别处消费它,或使用另名适配。保存证据,别仅因字段名字直观就擅自新增注入路径。若增加路径,属于需要明示的新实现,不应说原先产品本来支持,只是用户没点对。
通过显式适配器绑定
本例另写explicit_adapter(spec),精确接受窗口与阈值,生成带这两个类常量的子类,再无参实例化。这是已演示的本地机制,不冒称CoTrading已经提供。输入与类之间有可查看连接,读者可以追到真正消费值的切片和比较,不靠隐含全局配置。
窗口二、阈值零得到[0,1,0]。索引一,二十高于十与二十均值十五;最后十八低于二十与十八均值十九。最后决策按预期反转,并且热身缩短产生更早一。这两个变化都由窗口定义解释,不能只看最后输出而遗漏热身差异。
再恢复窗口三,只改阈值零点二,最后门槛十六乘一点二为十九点二,十八不满足,得到[0,0,0]。两次每次只改一个声明参数,证明它们实际进入表达式。没有根据哪条更赚钱选设置,也没有把输出一更多视为策略更好,任务仅是生效核对。
算价格前先验参数
支持窗口为至少二的整数,布尔值拒绝,不能利用Python某些操作把真当一。阈值有限且非负。Python数学说明支持有限门槛,NaN不能让每个比较悄悄变假,然后被误写成合法全零信号。错误输入应有明确失败,不悄悄退回默认。
样例传窗口零、布尔窗口和NaN阈值,生成时均抛ValueError。适配器字段缺失或多余也不在模式内。不允许失败后继续默认运行并标成功,否则正好重现本来要修的请求与生效分离。实际系统可采用不同错误呈现,但原因和使用了哪个值必须可见。
这些检查不是优化器,没有网格、收益挑选或跨运行排名。短价格为区分算式而选,不因某参数能赚钱。没有账户收益也不缺任务,因为本题产物是参数真实控制逻辑,资金和执行应由其他独立验收包负责,不能为了显得完整而伪造绩效。
运行参数生效包
下载完整示例,保存R578.py,用Python 3.12及以上执行python R578.py。只用标准库和合成价格,文件docs/growth/research/round-5/examples/R578.py无需外部配置、模型或行情。请求与生效同时输出,避免只读JSON漏掉关键结果。
断言检查无参构造、默认与忽略配置相同、生效窗口三、显式二窗口序列、显式阈值序列和坏参数拒绝。若删除绑定语句,区分样本应失败,不能只跑导入确认类存在。实际检查最好附消费表达式位置,让后续修复者不必重新搜索整个生成代码才能定位值流向。
故障交接需要哪些工件
真实报告附规格、配置、策略版本、加载器版本、生效快照和逐行计算,指出请求与实际首个分叉。若源码常量是批准权威,就修误导配置;若预期适配器,应实现并测试绑定。不要同时改默认、阈值和执行层,造成结果变了却无法解释哪项修复有效。
指标等价测试不混入无关引擎参数。费率变化可改权益却不改信号,窗口变化应改本区分输入。分别命名预期影响,让合法不变不会被误判。重新生成代码可能改变默认,来源与值一起保存,不能依赖旧截图或上一轮提示词作为当前运行证明。
加载路径变化后重新验收
类、加载器或模式变化后重跑一条区分样本,先看生效来源再看信号。完成条件不是新值已经写进文件,而是另一位读者能沿值追到计算,并复现一参数变化。保留忽略字段控制,防止以后重构重新断开连接却仍通过导入测试,绿色状态只证明了程序能加载。
同一值来自多处时,还应记录优先级,而不是把最终巧合相同当不存在冲突。源码三与配置三当前一致,未来只改一处就可能分歧。明确唯一权威或显式覆盖顺序,删除无效重复设置,才能减少再次出现“我明明改过”的故障。这个治理动作围绕已证实值流,不能凭猜测替换整个配置体系。
显式适配器也测试拒绝额外佣金字段,它属于账户或引擎契约,不在这两个策略参数模式内。静默接受会让调用者以为它控制了什么,实际却从未消费。应拒绝或明确指向另一个消费组件,不能把配置读入成功当成字段生效。这个负例直接覆盖跨层参数混入的问题。
交接时展示请求对象和生成前解析类常量。如果重复默认只是碰巧一致,仍要决定哪处权威,因为下一次只改一处就会暴露优先级未定。变动后重跑区分夹具,生效连接才持续是已观察行为,而不是根据名字推测。报告里留下被忽略字段和拒绝字段两类,不把不同原因统一写成参数失败,便于下一位实现者采取正确修复。
常见问题
JSON键会自动成为构造参数吗?
不会,需要加载器或适配器明确实现绑定。
净值没变化就说明参数被忽略吗?
不能,先核生效值,再用预期应改变计算的样本验证。