描述
成交量门控通常被实现为一种抑制信号的过滤器,这使得策略难以调试:图表显示交叉,机器人却无动于衷,而且没有任何记录可以解释原因。此软件包即使在成交量门控拒绝交叉信号时也会返回该信号,其中 `gated_by` 参数指定了阻止信号的原因。 成交量比较是相对的——即当前成交量与窗口平均成交量之比——因此该阈值可跨交易品种通用,无需为每个交易品种设置绝对成交量阈值。相对比较也是唯一一种不受报价货币变更或交易场所迁移影响的比较方式。 何时使用此功能 • 代理需要一个趋势交叉入场点,其拒绝信号必须可审计。• 您正在调试“图表上已触发但机器人未触发的信号”。• 您需要一个无需重新调整即可跨品种通用的成交量门控。 在震荡行情中表现疲软:MACD交叉点集中在一个区间内,每次交叉都代表小幅亏损。成交量门控减少了交叉点的数量,但并未解决这种波动性问题。 本包裹特意不包含以下内容 这是一个框架版本,并非经过优化的生产版本。具体来说: • 无仓位大小、止损或目标位设置。• 无直方图或零线逻辑。此交易仅涉及信号线交叉;直方图斜率变体的行为有所不同。• 无调整周期或成交量比率。 • 代码中没有默认阈值。scripts/macd_gate.py 会抛出 PARAM_INCOMPLETE 异常,而不是回退到一个数值。这种静默的默认值会让你误以为自己正在运行一个经过校准的系统,而实际上你运行的是别人的参数。 每一个决策边界都是一个输入。这就是整个合同。 决策合同 • 动作:条件 • 长线:MACD 向上穿过信号线且音量门通过 • 退出:MACD 向下穿过信号线 • 平线:没有交叉,或交叉被音量门拒绝(参见 gated_by) 响应数据包含 macd、signal_line、histogram、volume_ratio 和 gated_by 参数。当信号正常时,gated_by 参数为空;当信号被拒绝时,gated_by 参数为一个短字符串。 输出方案 { "action": "flat", "price": 62980.0, "macd": 41.2, "signal_line": 40.1, "histogram": 1.1, "volume_ratio": 0.94, "gated_by": "volume", "reason": "MACD crossed up but relative volume 0.94 < 1.30" } 操作是唯一必须基于其进行分支的字段。原因字段仅供日志记录和代理向用户反馈,请勿解析。 运行它 python3 scripts/macd_gate.py \ --params references/params-example.json \ --symbol BTC/USDT \ --interval 1h references/params-example.json 文件包含一些整数,显然是为了便于说明。它们的存在是为了确保命令能够一次性成功运行,并非因为它们本身是正确的。 进料位置状态: python3 scripts/macd_gate.py --params my.json --state '{"avg_entry": 61250.5, "layers": 2}' 校准阈值 1. 快/慢/信号——保持快<慢且信号<慢;模块会验证这一点。快/慢的比率比绝对值更重要,因此先按比率划分网格,再按信号划分网格,比直接按三者划分网格搜索效率更高。 2. 成交量比率 - 相对于窗口平均值的参与要求。衡量您所交易品种的相对成交量分布:将其设置为中位数会拒绝一半的交叉交易,这几乎肯定过于严格。 3. 校准过程中要注意拒绝率。如果一个门会拒绝 90% 的交叉点,那它就不是选择性门,而只是一种样本量较少、速度较慢的策略。 按时间顺序进行验证,采用约 70/30 的比例分配信号,并比较两个模块中的信号计数和抑制计数。在一个模式下校准的门电路通常会抑制下一个模式下的所有信号。 已知极限 • EMA 种子由第一个窗口的平均值计算得出,因此最初的几个值带有固定种子偏差。获取的数据远多于慢速 K 线加信号 K 线。• 成交量门控使用与交叉点相同的 K 线。如果交叉点出现在已完成的 K 线中,而其后一根 K 线的成交量仍在形成中,则该交叉点不会被计入。• 退出机制不以成交量为准——死亡交叉总是会退出。这种不对称性是有意为之,但值得注意。• 正在形成的 K 线会被排除在外,因此决策不会重绘。 免责声明 这是一个用于研究和教育的决策框架。它并非投资建议、盈利声明或回测结果。加密货币衍生品可能损失超过本金。您需对您选择的参数以及您的执行人下的每一笔订单负责。