📡
20 种经典交易信号函数库
把 20 种技术信号写成可复用函数,任意组合过滤
#信号#MA交叉#通道#动量#超买超卖
本文把 20 种主流技术信号封装成 TradeSignal_XX() 函数,统一返回 1(买)/-1(卖)/0(无),塞进 SignalTrade.mqh 供任意程序调用。
一、把信号写成可复用函数
信号只是提示可能点位,不是必须执行;用多个信号组合过滤,比单信号裸跑稳健得多。
二、统一函数原型
- 声明 sig = 0;
- 查/建指标句柄;
- CopyBuffer 复制数据;
- ArraySetAsSeries 倒序;
- 比历史柱 [1][2] 赋值返回;
- 句柄在 OnInit 建一次。
三、信号分类
- 均线相交;
- 区间突破(价格/自适应/唐奇安/银/加拉赫通道);
- 超买超卖离开(随机/RSI/CCI/威廉);
- 通道边界反弹(布林/标准差/价格/包络);
- 趋势改变(NRTR/鳄鱼/AMA/AO/一目均衡)。
✦ 组合优于单信号
信号只是提示可能点位,不是必须执行;用多个信号组合过滤,比单信号裸跑稳健得多。
四、举几个典型
- 双 MA 交叉:快 MA(8) 上穿慢 MA(16) 买;
- MACD 主线被信号线自上而下穿买;
- RSI 从 30 下升回买、从 70 上跌回卖;
- 布林碰下轨返回买。
五、做成指标或 EA
指标:OnInit 建全部句柄,OnCalculate 调 20 个函数画箭头;EA:扩展版引入可变参数,用 IndicatorRelease 旧副本、重建新副本省内存。
⚠ 别用当前柱
所有判断都用已收盘的第 1、2 根而非当前柱——当前柱在变,用它会让信号在没走完的 K 上反复翻转。
六、把多个信号组合成过滤器
单信号裸跑噪声大,实战常用「与」过滤:例如快 MA 上穿慢 MA 且 RSI 从超卖区回升才给买。组合时给每个信号一个权重或要求 N 个中有 M 个同向,能显著压低假信号,代价是信号变少、可能错过早期启动。
⚠ 别过度堆叠
信号越多越「严格」,但也可能把真实机会全滤掉。先用历史数据看每个信号单独胜率,再决定组合阈值,而不是凭感觉堆条件。
常见问题
不用。把它们当信号积木库,按你的策略挑 2–3 个互补的(如趋势+动量)组合,比堆 20 个更有效。
解耦发现机会和执行交易,同一套信号既能在指标里画图,也能在 EA 里下单,复用性最高。
当前柱还没收盘,数值会跳动导致信号闪烁;用已收盘的前两根做判断,信号才稳。
最多 512 个;引用时把对应 .mq5 放到 Indicators 文件夹并编译好,否则句柄创建失败。
用与/或逻辑叠加:例如趋势信号=买 且 动量信号=买 才出手,相当于用一层信号过滤另一层噪声。