物美价廉的神经网络 - 链接 NeuroPro 与 MetaTrader 5·综合运用
📘

物美价廉的神经网络 - 链接 NeuroPro 与 MetaTrader 5·综合运用

第 3/3 篇

「把 24 根 BAR 压成三个 Sigmoid 特征」

这段逻辑用三组固定权重,把最近 24 根 BAR 的归一化数值线性组合后送进 Sigmoid1,得到 Syndrome1_13、Syndrome1_14、Syndrome1_15 三个 0~1 之间的特征量。权重是离线拟合出来的,不是拍脑袋给的,比如 Syndrome1_13 里 BAR[21] 的系数达到 -0.5771574,是整组里绝对值最大的负向项,说明倒数第 21 根 BAR 对这组特征倾向产生明显压制。 Syndrome1_14 的结构不一样,BAR[6] 系数 +0.607367 为最大正向拉动,而 BAR[17] 的 -0.5361071 是主要反向项;Syndrome1_15 更极端,BAR[6] 系数 -0.8008425、BAR[17] 系数 +0.745619,两组远端 BAR 几乎在拉扯同一个信号。 外汇与贵金属杠杆高、滑点随机,这类特征只描述历史形态概率,不预示下一根必走哪边。开 MT5 把这三行直接贴进 EA,打印三个 double 值,观察它们在 EURUSD 15M 上穿 0.5 阈值前后的分布,比单纯看权重表有用。

MQL5 / C++
class="type">class="kw">double Syndrome1_13=Sigmoid1( -class="num">0.05370994*BAR[class="num">1]+class="num">0.2999545*BAR[class="num">2]-class="num">0.2855853*BAR[class="num">3]+class="num">0.1123754*BAR[class="num">4]+class="num">0.2561198*BAR[class="num">5]-class="num">0.2846766*BAR[class="num">6]+class="num">0.008345681*BAR[class="num">7]+class="num">0.1896221*BAR[class="num">8]-class="num">0.1973753*BAR[class="num">9]+class="num">0.3510076*BAR[class="num">10]+class="num">0.4492245*BAR[class="num">11]-class="num">0.09004608*BAR[class="num">12]+class="num">0.002758034*BAR[class="num">13]+class="num">0.03157447*BAR[class="num">14]+class="num">0.02175433*BAR[class="num">15]-class="num">0.399723*BAR[class="num">16]-class="num">0.2736914*BAR[class="num">17]+class="num">0.1198452*BAR[class="num">18]+class="num">0.2808644*BAR[class="num">19]-class="num">0.06968442*BAR[class="num">20]-class="num">0.5771574*BAR[class="num">21]+class="num">0.3748633*BAR[class="num">22]-class="num">0.2721373*BAR[class="num">23]-class="num">0.2329663*BAR[class="num">24]+class="num">0.07683773 );
class="type">class="kw">double Syndrome1_14=Sigmoid1( class="num">0.094418*BAR[class="num">1]+class="num">0.2155959*BAR[class="num">2]-class="num">0.4787674*BAR[class="num">3]+class="num">0.3605456*BAR[class="num">4]+class="num">0.06799955*BAR[class="num">5]+class="num">0.607367*BAR[class="num">6]-class="num">0.3518007*BAR[class="num">7]+class="num">0.1633829*BAR[class="num">8]+class="num">0.3040094*BAR[class="num">9]+class="num">0.3707297*BAR[class="num">10]+class="num">0.02556368*BAR[class="num">11]-class="num">0.0885786*BAR[class="num">12]-class="num">0.3713907*BAR[class="num">13]-class="num">0.2014098*BAR[class="num">14]-class="num">0.289242*BAR[class="num">15]-class="num">0.09950806*BAR[class="num">16]-class="num">0.5361071*BAR[class="num">17]+class="num">0.4154459*BAR[class="num">18]+class="num">0.02827369*BAR[class="num">19]-class="num">0.04972957*BAR[class="num">20]-class="num">0.1700879*BAR[class="num">21]+class="num">0.2973098*BAR[class="num">22]-class="num">0.2097459*BAR[class="num">23]-class="num">0.0422597*BAR[class="num">24]+class="num">0.2318914 );
class="type">class="kw">double Syndrome1_15=Sigmoid1( class="num">0.02161242*BAR[class="num">1]+class="num">0.5484816*BAR[class="num">2]+class="num">0.002152426*BAR[class="num">3]-class="num">0.3017516*BAR[class="num">4]+class="num">0.02010602*BAR[class="num">5]-class="num">0.8008425*BAR[class="num">6]-class="num">0.2985114*BAR[class="num">7]+class="num">0.5151479*BAR[class="num">8]+class="num">0.1572166*BAR[class="num">9]-class="num">0.04494689*BAR[class="num">10]+class="num">0.2529401*BAR[class="num">11]-class="num">0.02046412*BAR[class="num">12]-class="num">0.05892481*BAR[class="num">13]-class="num">0.1359019*BAR[class="num">14]-class="num">0.2005993*BAR[class="num">15]+class="num">0.03077302*BAR[class="num">16]+class="num">0.745619*BAR[class="num">17]-class="num">0.4197147*BAR[class="num">18]-class="num">0.1354882*BAR[class="num">19]-class="num">0.6034228*BAR[class="num">20]-class="num">0.04950687*BAR[class="num">21]-class="num">0.1093793*BAR[class="num">22]-class="num">0.46851*BAR[class="num">23]+class="num">0.2340346*BAR[class="num">24]-class="num">0.1910115 );

把 25 根 BAR 压成三个综合征信号

下面这段逻辑直接拿 25 根 BAR 的归一化值做线性组合,再塞进 Sigmoid1 压到 0~1 区间,得到三个互相错位的综合征读数。BAR[1] 是最新已收盘根,BAR[24] 是 24 根之前的那根,顺序倒着排。 Syndrome1_16 的权重里 BAR[3] 是 -0.6587076、BAR[2] 是 +0.2311719,近端第三根拖累最重,说明这个信号更怕三天前的反向波动。常数项 +0.01395546 很小,基线接近零轴。 Syndrome1_17 完全换了脸:BAR[16] 权重 +0.4313999 是全集最大正项,BAR[20] 是 -0.3331767,它吃的是半个月前那截行情的记忆。BAR[9] 的 -0.3622932 也说明第九根旧柱对它压制明显。 Syndrome1_18 里 BAR[2] 飙到 +0.8255618、BAR[21] 也有 +0.5094138,但 BAR[19] 是 -0.4490997,属于近端第二根和远端第 21 根唱多、第 19 根唱空的拉锯结构。外汇和贵金属波动大,这种合成信号仅作概率参考,实盘前务必在 MT5 用历史数据跑一遍验证权重敏感性。

MQL5 / C++
class="type">class="kw">double Syndrome1_16=Sigmoid1( class="num">0.06201033*BAR[class="num">1]+class="num">0.2311719*BAR[class="num">2]-class="num">0.6587076*BAR[class="num">3]-class="num">0.1937433*BAR[class="num">4]-class="num">0.3063492*BAR[class="num">5]+class="num">0.0458253*BAR[class="num">6]+class="num">0.2621455*BAR[class="num">7]-class="num">0.3292437*BAR[class="num">8]-class="num">0.07124191*BAR[class="num">9]+class="num">0.03962434*BAR[class="num">10]-class="num">0.03539502*BAR[class="num">11]+class="num">0.1602975*BAR[class="num">12]+class="num">0.1252141*BAR[class="num">13]-class="num">0.1939677*BAR[class="num">14]-class="num">0.3524359*BAR[class="num">15]-class="num">0.02675135*BAR[class="num">16]-class="num">0.1550312*BAR[class="num">17]+class="num">0.2015329*BAR[class="num">18]-class="num">0.1383009*BAR[class="num">19]+class="num">0.3079963*BAR[class="num">20]+class="num">0.06971535*BAR[class="num">21]-class="num">0.2415089*BAR[class="num">22]-class="num">0.03791533*BAR[class="num">23]+class="num">0.01494107*BAR[class="num">24]+class="num">0.01395546 );
class="type">class="kw">double Syndrome1_17=Sigmoid1( -class="num">0.03211073*BAR[class="num">1]-class="num">0.2057187*BAR[class="num">2]-class="num">0.2208917*BAR[class="num">3]+class="num">0.1034868*BAR[class="num">4]+class="num">0.003785761*BAR[class="num">5]-class="num">0.1510143*BAR[class="num">6]-class="num">0.04637882*BAR[class="num">7]-class="num">0.01963908*BAR[class="num">8]-class="num">0.3622932*BAR[class="num">9]+class="num">0.03135398*BAR[class="num">10]-class="num">0.1296021*BAR[class="num">11]-class="num">0.2571803*BAR[class="num">12]+class="num">0.02485986*BAR[class="num">13]-class="num">0.05831699*BAR[class="num">14]+class="num">0.2441404*BAR[class="num">15]+class="num">0.4313999*BAR[class="num">16]-class="num">0.05117986*BAR[class="num">17]-class="num">0.06832605*BAR[class="num">18]-class="num">0.01433043*BAR[class="num">19]-class="num">0.3331767*BAR[class="num">20]-class="num">0.09270683*BAR[class="num">21]+class="num">0.1077102*BAR[class="num">22]+class="num">0.0517161*BAR[class="num">23]+class="num">0.1463209*BAR[class="num">24]+class="num">0.08033083 );
class="type">class="kw">double Syndrome1_18=Sigmoid1( -class="num">0.01044874*BAR[class="num">1]+class="num">0.8255618*BAR[class="num">2]-class="num">0.3581862*BAR[class="num">3]+class="num">0.2379437*BAR[class="num">4]-class="num">0.05247816*BAR[class="num">5]+class="num">0.3858318*BAR[class="num">6]-class="num">0.04216846*BAR[class="num">7]+class="num">0.2305764*BAR[class="num">8]-class="num">0.2754549*BAR[class="num">9]+class="num">0.1255125*BAR[class="num">10]-class="num">0.1954638*BAR[class="num">11]+class="num">0.04934186*BAR[class="num">12]-class="num">0.08713531*BAR[class="num">13]+class="num">0.08193728*BAR[class="num">14]-class="num">0.01578137*BAR[class="num">15]+class="num">0.04301662*BAR[class="num">16]-class="num">0.01941852*BAR[class="num">17]+class="num">0.0321704*BAR[class="num">18]-class="num">0.4490997*BAR[class="num">19]-class="num">0.2165072*BAR[class="num">20]+class="num">0.5094138*BAR[class="num">21]-class="num">0.08077756*BAR[class="num">22]-class="num">0.1167052*BAR[class="num">23]+class="num">0.008337143*BAR[class="num">24]-class="num">0.1847742 );

◍ 两级 Sigmoid 征候的权重拼接

这段逻辑把价格序列先压成 20 个一级征候,再拿这 20 个输出去喂第二级 Sigmoid,属于典型的两层感知机结构。一级里 Syndrome1_19 用了 BAR[1] 到 BAR[24] 共 24 根归一化柱线,偏置项固定为 0.1479857;Syndrome1_20 的偏置则是 -0.1358235,两者权重分布差异明显,前者在 BAR[7] 上给了 0.5814793 的正向权重,后者在 BAR[18] 上却是 -0.633949 的强负向。 第二级 Syndrome2_1 不再碰原始 BAR,而是用 Syndrome1_1 至 Syndrome1_20 的二十路输出做线性组合再过一个 Sigmoid2。注意它对 Syndrome1_13 取了 -0.4040487 的最大负系数,对 Syndrome1_7 取了 0.3920829 的最大正系数,偏置为 -0.07152162,这种跨级耦合意味着一级里某几个特定窗口的形态会被二级显著放大或抹除。 开 MT5 把这段直接贴进 EA 的 OnCalc 段,把 BAR[] 换成你自己的标准化收盘价数组,就能看到两级输出在 EURUSD 的 M15 上多数时间落在 0.3~0.7 区间,极端行情才逼向 0 或 1。外汇与贵金属杠杆高,信号仅作概率参考,实盘前务必用历史数据跑一遍验证权重稳定性。

MQL5 / C++
class="type">class="kw">double Syndrome1_19=Sigmoid1( class="num">0.07863438*BAR[class="num">1]+class="num">0.6541001*BAR[class="num">2]-class="num">0.0287532*BAR[class="num">3]-class="num">0.07992863*BAR[class="num">4]-class="num">0.1936443*BAR[class="num">5]+class="num">0.2021953*BAR[class="num">6]+class="num">0.5814793*BAR[class="num">7]+class="num">0.1076662*BAR[class="num">8]-class="num">0.2505759*BAR[class="num">9]-class="num">0.1958519*BAR[class="num">10]+class="num">0.2982949*BAR[class="num">11]-class="num">0.130183*BAR[class="num">12]-class="num">0.2418064*BAR[class="num">13]-class="num">0.03213368*BAR[class="num">14]-class="num">0.1050228*BAR[class="num">15]-class="num">0.04116086*BAR[class="num">16]+class="num">0.1059578*BAR[class="num">17]-class="num">0.09407587*BAR[class="num">18]+class="num">0.2511382*BAR[class="num">19]+class="num">0.03090675*BAR[class="num">20]-class="num">0.2050715*BAR[class="num">21]+class="num">0.07968493*BAR[class="num">22]-class="num">0.1085312*BAR[class="num">23]-class="num">0.3073632*BAR[class="num">24]+class="num">0.1479857 );
class="type">class="kw">double Syndrome1_20=Sigmoid1( class="num">0.01779699*BAR[class="num">1]+class="num">0.1517631*BAR[class="num">2]+class="num">0.1832252*BAR[class="num">3]+class="num">0.4329565*BAR[class="num">4]-class="num">0.1528609*BAR[class="num">5]-class="num">0.2424133*BAR[class="num">6]+class="num">0.1942621*BAR[class="num">7]+class="num">0.1390828*BAR[class="num">8]-class="num">0.3387062*BAR[class="num">9]+class="num">0.3891163*BAR[class="num">10]+class="num">0.3485644*BAR[class="num">11]+class="num">0.06489421*BAR[class="num">12]-class="num">0.01458877*BAR[class="num">13]-class="num">0.1127466*BAR[class="num">14]+class="num">0.1122861*BAR[class="num">15]-class="num">0.1973242*BAR[class="num">16]+class="num">0.4340822*BAR[class="num">17]-class="num">0.633949*BAR[class="num">18]+class="num">0.1276167*BAR[class="num">19]+class="num">0.2476585*BAR[class="num">20]-class="num">0.4445719*BAR[class="num">21]+class="num">0.6248969*BAR[class="num">22]-class="num">0.2169943*BAR[class="num">23]-class="num">0.501359*BAR[class="num">24]-class="num">0.1358235 );
class=class="str">"cmt">//--- 第二级征候:
class="type">class="kw">double Syndrome2_1=Sigmoid2( class="num">0.2332734*Syndrome1_1-class="num">0.2002641*Syndrome1_2-class="num">0.03174414*Syndrome1_3-class="num">0.3868614*Syndrome1_4-class="num">0.1933812*Syndrome1_5-class="num">0.2366997*Syndrome1_6+class="num">0.3920829*Syndrome1_7+class="num">0.1015497*Syndrome1_8-class="num">0.1333193*Syndrome1_9+class="num">0.05584235*Syndrome1_10-class="num">0.2983295*Syndrome1_11+class="num">0.1034668*Syndrome1_12-class="num">0.4040487*Syndrome1_13-class="num">0.2103508*Syndrome1_14-class="num">0.2480657*Syndrome1_15-class="num">0.1906435*Syndrome1_16+class="num">0.2692898*Syndrome1_17+class="num">0.2760854*Syndrome1_18-class="num">0.1738693*Syndrome1_19-class="num">0.1861307*Syndrome1_20-class="num">0.07152162 );

「第二层综合征的加权叠加」

把第一层 20 个 Syndrome1 因子塞进 Sigmoid2,就得到第二层综合征向量。下面五条语句各自是一个独立神经元,权重是离线训练出来的固定值,运行时只做线性组合再加偏置。 Syndrome2_2 里 Syndrome1_20 的权重冲到 0.5925598,偏置却是 -0.279602,说明该因子对这路输出的拉动最强,但整路天然倾向压抑。Syndrome2_5 的 Syndrome1_10 权重为 -0.7546657、Syndrome1_16 为 -0.5843646,是五路里负向拉扯最狠的一对。 直接把这五段贴进 MT5 的 EA 或指标源码,配合前一篇的 Syndrome1 数组就能跑出第二层输出。外汇与贵金属杠杆高,信号只作概率参考,实盘前先用策略测试器看分布。

MQL5 / C++
  class="type">class="kw">double Syndrome2_2=Sigmoid2( -class="num">0.1242675*Syndrome1_1+class="num">0.05587832*Syndrome1_2+class="num">0.1567961*Syndrome1_3+class="num">0.1077346*Syndrome1_4-class="num">0.2112047*Syndrome1_5+class="num">0.04008683*Syndrome1_6-class="num">0.1716478*Syndrome1_7+class="num">0.3083204*Syndrome1_8-class="num">0.1864694*Syndrome1_9+class="num">0.08867304*Syndrome1_10-class="num">0.06801239*Syndrome1_11-class="num">0.1810985*Syndrome1_12-class="num">0.05133555*Syndrome1_13+class="num">0.2981661*Syndrome1_14-class="num">0.01543425*Syndrome1_15-class="num">0.1859617*Syndrome1_16+class="num">0.027973*Syndrome1_17-class="num">0.1715439*Syndrome1_18-class="num">0.1249511*Syndrome1_19+class="num">0.5925598*Syndrome1_20-class="num">0.279602 );
  class="type">class="kw">double Syndrome2_3=Sigmoid2( -class="num">0.4745722*Syndrome1_1-class="num">0.1248492*Syndrome1_2-class="num">0.1128288*Syndrome1_3+class="num">0.1485692*Syndrome1_4-class="num">0.3948999*Syndrome1_5+class="num">0.2633227*Syndrome1_6-class="num">0.2046695*Syndrome1_7-class="num">0.03632757*Syndrome1_8+class="num">0.259578*Syndrome1_9-class="num">0.07442582*Syndrome1_10+class="num">0.06552354*Syndrome1_11-class="num">0.2452848*Syndrome1_12-class="num">0.1599011*Syndrome1_13+class="num">0.1749917*Syndrome1_14-class="num">0.07113215*Syndrome1_15-class="num">0.1524421*Syndrome1_16+class="num">0.3606906*Syndrome1_17+class="num">0.3524929*Syndrome1_18+class="num">0.1315838*Syndrome1_19+class="num">0.1981817*Syndrome1_20+class="num">0.0126604 );
  class="type">class="kw">double Syndrome2_4=Sigmoid2( -class="num">0.3605324*Syndrome1_1+class="num">0.2803221*Syndrome1_2+class="num">0.07412126*Syndrome1_3+class="num">0.2101911*Syndrome1_4-class="num">0.1933928*Syndrome1_5-class="num">0.2068641*Syndrome1_6+class="num">0.1302721*Syndrome1_7+class="num">0.04962961*Syndrome1_8+class="num">0.2879501*Syndrome1_9-class="num">0.04214102*Syndrome1_10-class="num">0.02194729*Syndrome1_11-class="num">0.0501424*Syndrome1_12+class="num">0.007969459*Syndrome1_13+class="num">0.1151657*Syndrome1_14+class="num">0.04063402*Syndrome1_15+class="num">0.1461606*Syndrome1_16-class="num">0.07482237*Syndrome1_17-class="num">0.3319329*Syndrome1_18+class="num">0.2494595*Syndrome1_19-class="num">0.09345333*Syndrome1_20-class="num">0.1831799 );
  class="type">class="kw">double Syndrome2_5=Sigmoid2( -class="num">0.03081687*Syndrome1_1-class="num">0.419345*Syndrome1_2-class="num">0.01301429*Syndrome1_3+class="num">0.008855551*Syndrome1_4+class="num">0.2869771*Syndrome1_5+class="num">0.06881366*Syndrome1_6-class="num">0.1612982*Syndrome1_7-class="num">0.491662*Syndrome1_8+class="num">0.04266098*Syndrome1_9-class="num">0.7546657*Syndrome1_10+class="num">0.0472151*Syndrome1_11-class="num">0.5099863*Syndrome1_12+class="num">0.1196823*Syndrome1_13+class="num">0.2611973*Syndrome1_14-class="num">0.0241531*Syndrome1_15-class="num">0.5843646*Syndrome1_16+class="num">0.08374172*Syndrome1_17+class="num">0.041931*Syndrome1_18-class="num">0.181801*Syndrome1_19+class="num">0.6314354*Syndrome1_20+class="num">0.2967799 );
  class="type">class="kw">double Syndrome2_6=Sigmoid2( class="num">0.2783457*Syndrome1_1+class="num">0.05858535*Syndrome1_2+class="num">0.03348543*Syndrome1_3-class="num">0.09202126*Syndrome1_4+class="num">0.09466362*Syndrome1_5-class="num">0.01946918*Syndrome1_6-class="num">0.008507644*Syndrome1_7+class="num">0.1967683*Syndrome1_8-class="num">0.1593684*Syndrome1_9+class="num">0.2202749*Syndrome1_10-class="num">0.2754305*Syndrome1_11-class="num">0.08108314*Syndrome1_12+class="num">0.1606592*Syndrome1_13+class="num">0.03723634*Syndrome1_14+class="num">0.3494412*Syndrome1_15-class="num">0.139782*Syndrome1_16+class="num">0.03641316*Syndrome1_17-class="num">0.1216527*Syndrome1_18-class="num">0.2194063*Syndrome1_19+class="num">0.3015033*Syndrome1_20-class="num">0.1307777 );

第二层综合征网络的权重展开

下面这段是第二隐藏层第 7~11 个神经元的线性组合,全部塞进 Sigmoid2 激活函数里做非线性压缩。20 个第一层输出 Syndrome1_1 到 Syndrome1_20 各自带着不同系数参与运算,正负号分布很不均衡,说明模型对不同初级特征的倾向性差异极大。 以 Syndrome2_8 为例,Syndrome1_2 的系数是 -1(即直接减去该值),而 Syndrome1_11 的系数达到 +0.7518402,是这批里正向拉动最猛的一项;反向压制最重的是 Syndrome1_15 的 -0.7965527。如果你在 MT5 里复现这套网络,改一个系数都可能让隐藏层输出偏移好几个百分点。 外汇与贵金属行情受宏观事件扰动大,这类非线性映射只是历史样本拟合结果,实盘信号出现反转的概率始终存在,高杠杆下风险会被放大。 把下面 5 行直接贴进 EA 的隐藏层计算段,能立刻看到第二层 5 个节点的原始激活值,方便你比对不同品种上哪些 Syndrome1 通道更主导。

MQL5 / C++
class="type">class="kw">double Syndrome2_7=Sigmoid2( -class="num">0.1451617*Syndrome1_1-class="num">0.1851998*Syndrome1_2-class="num">0.2149245*Syndrome1_3-class="num">0.05804037*Syndrome1_4-class="num">0.03970402*Syndrome1_5+class="num">2.506166E-6*Syndrome1_6+class="num">0.223578*Syndrome1_7-class="num">0.1718342*Syndrome1_8+class="num">0.001228896*Syndrome1_9-class="num">0.03911417*Syndrome1_10+class="num">0.3167912*Syndrome1_11+class="num">0.2213001*Syndrome1_12-class="num">0.3518667*Syndrome1_13-class="num">0.6146168*Syndrome1_14-class="num">0.1061097*Syndrome1_15-class="num">0.3044312*Syndrome1_16-class="num">0.04269538*Syndrome1_17-class="num">0.1753355*Syndrome1_18+class="num">0.1989161*Syndrome1_19-class="num">0.3667244*Syndrome1_20+class="num">0.2514035 );
class="type">class="kw">double Syndrome2_8=Sigmoid2( -class="num">0.1430153*Syndrome1_1-Syndrome1_2+class="num">0.02704678*Syndrome1_3+class="num">0.09941091*Syndrome1_4+class="num">0.07057924*Syndrome1_5-class="num">0.3370984*Syndrome1_6+class="num">0.1565579*Syndrome1_7-class="num">0.6226992*Syndrome1_8-class="num">0.4750121*Syndrome1_9+class="num">0.0914355*Syndrome1_10+class="num">0.7518402*Syndrome1_11-class="num">0.3350138*Syndrome1_12-class="num">0.3099903*Syndrome1_13+class="num">0.01266479*Syndrome1_14-class="num">0.7965527*Syndrome1_15-class="num">0.1753905*Syndrome1_16-class="num">0.1435609*Syndrome1_17+class="num">0.1683903*Syndrome1_18+class="num">0.1800467*Syndrome1_19+class="num">0.02699256*Syndrome1_20+class="num">0.3138063 );
class="type">class="kw">double Syndrome2_9=Sigmoid2( -class="num">0.2611458*Syndrome1_1-class="num">0.03994129*Syndrome1_2-class="num">0.2299157*Syndrome1_3+class="num">0.3549923*Syndrome1_4-class="num">0.001759748*Syndrome1_5-class="num">0.1117837*Syndrome1_6+class="num">0.03037107*Syndrome1_7+class="num">0.2023677*Syndrome1_8+class="num">0.2628252*Syndrome1_9+class="num">0.09683131*Syndrome1_10+class="num">0.2576693*Syndrome1_11-class="num">0.06357097*Syndrome1_12-class="num">0.2162403*Syndrome1_13-class="num">0.2190126*Syndrome1_14-class="num">0.1675369*Syndrome1_15-class="num">0.2458067*Syndrome1_16-class="num">0.06660707*Syndrome1_17-class="num">0.2096998*Syndrome1_18+class="num">0.2432118*Syndrome1_19+class="num">0.06210691*Syndrome1_20+class="num">0.1555794 );
class="type">class="kw">double Syndrome2_10=Sigmoid2( class="num">0.1120118*Syndrome1_1-class="num">0.09789048*Syndrome1_2-class="num">0.1146162*Syndrome1_3-class="num">0.02268722*Syndrome1_4-class="num">0.4754501*Syndrome1_5+class="num">0.1567527*Syndrome1_6+class="num">0.4281512*Syndrome1_7+class="num">0.1428995*Syndrome1_8+class="num">0.4317052*Syndrome1_9-class="num">0.1987304*Syndrome1_10-class="num">0.3471439*Syndrome1_11-class="num">0.2485701*Syndrome1_12+class="num">0.2200699*Syndrome1_13-class="num">0.1804247*Syndrome1_14+class="num">0.5553524*Syndrome1_15+class="num">0.004284344*Syndrome1_16-class="num">0.5408193*Syndrome1_17-class="num">0.2304406*Syndrome1_18+class="num">0.2462995*Syndrome1_19+class="num">0.1687378*Syndrome1_20+class="num">0.480715 );
class="type">class="kw">double Syndrome2_11=Sigmoid2( class="num">0.2892572*Syndrome1_1+class="num">0.2819389*Syndrome1_2-class="num">0.2116477*Syndrome1_3-class="num">0.1031269*Syndrome1_4-class="num">0.2198152*Syndrome1_5-class="num">0.2882532*Syndrome1_6-class="num">0.7462316*Syndrome1_7+class="num">0.7820893*Syndrome1_8-class="num">0.05574411*Syndrome1_9-class="num">0.1144354*Syndrome1_10-class="num">0.1073154*Syndrome1_11+class="num">0.5092962*Syndrome1_12-class="num">0.07017706*Syndrome1_13-class="num">0.5550667*Syndrome1_14-class="num">0.5170746*Syndrome1_15-class="num">0.1299864*Syndrome1_16+class="num">0.03325708*Syndrome1_17-class="num">0.5107772*Syndrome1_18+class="num">0.04024922*Syndrome1_19+class="num">0.1836878*Syndrome1_20+class="num">0.0346345 );

◍ 第二层综合征的权重拼接

上面这段是把第一层 20 个 Syndrome1 信号继续往第二层塞,用 Sigmoid2 压成 0~1 之间的概率倾向。Syndrome2_12 到 Syndrome2_16 各是一组独立线性组合,偏置项分别是 -0.3822223、-0.09863564、0.03536745、-0.3015116、0.2277268,直接决定该神经元的激活门槛。 看系数能嗅出偏好:Syndrome2_14 里 Syndrome1_4 的权重冲到 0.568437,Syndrome1_20 却是 -0.3877438,多空拉扯最凶;Syndrome2_13 的 Syndrome1_5 和 Syndrome1_17 都过 0.34,说明这路更吃中段动量。外汇和贵金属波动大,这类加权输出只代表模型内部倾向,实盘得自己验证。 把代码丢进 MT5 的 EA 里,打印这五个 double 值,能直接看到每一根 K 线喂进去后第二层的响应强度。哪路长期贴 0 或贴 1,就说明对应第一层特征在这品种上基本失效,可以动手砍权重。

MQL5 / C++
  class="type">class="kw">double Syndrome2_12=Sigmoid2( -class="num">0.10614*Syndrome1_1+class="num">0.06027444*Syndrome1_2+class="num">0.08108542*Syndrome1_3-class="num">0.1568731*Syndrome1_4+class="num">0.1509192*Syndrome1_5-class="num">0.1630516*Syndrome1_6+class="num">0.01426157*Syndrome1_7+class="num">0.02186926*Syndrome1_8+class="num">0.1099893*Syndrome1_9-class="num">0.02269597*Syndrome1_10-class="num">0.04576464*Syndrome1_11-class="num">0.161096*Syndrome1_12-class="num">0.1901706*Syndrome1_13-class="num">0.02513908*Syndrome1_14+class="num">0.1317106*Syndrome1_15-class="num">0.06866668*Syndrome1_16+class="num">0.1083753*Syndrome1_17+class="num">0.1449683*Syndrome1_18+class="num">0.006118122*Syndrome1_19+class="num">0.1255394*Syndrome1_20-class="num">0.3822223 );
  class="type">class="kw">double Syndrome2_13=Sigmoid2( -class="num">0.01638931*Syndrome1_1+class="num">0.1172011*Syndrome1_2-class="num">0.1022018*Syndrome1_3+class="num">0.1098846*Syndrome1_4+class="num">0.3456185*Syndrome1_5-class="num">0.276273*Syndrome1_6-class="num">0.1697723*Syndrome1_7-class="num">0.1394644*Syndrome1_8+class="num">0.0530486*Syndrome1_9+class="num">0.04139024*Syndrome1_10-class="num">0.02131393*Syndrome1_11+class="num">0.1144992*Syndrome1_12-class="num">0.1791101*Syndrome1_13+class="num">0.124498*Syndrome1_14+class="num">0.2169005*Syndrome1_15+class="num">0.06764794*Syndrome1_16+class="num">0.3542189*Syndrome1_17+class="num">0.0647957*Syndrome1_18+class="num">0.01778502*Syndrome1_19-class="num">0.0183728*Syndrome1_20-class="num">0.09863564 );
  class="type">class="kw">double Syndrome2_14=Sigmoid2( class="num">0.1046498*Syndrome1_1+class="num">0.1199886*Syndrome1_2-class="num">0.3787079*Syndrome1_3+class="num">0.568437*Syndrome1_4-class="num">0.09216721*Syndrome1_5-class="num">0.07998162*Syndrome1_6-class="num">0.1422648*Syndrome1_7-class="num">0.220407*Syndrome1_8+class="num">0.00417607*Syndrome1_9+class="num">0.2042087*Syndrome1_10+class="num">0.2614584*Syndrome1_11+class="num">0.04491196*Syndrome1_12+class="num">0.1860093*Syndrome1_13-class="num">0.1642074*Syndrome1_14+class="num">0.3918036*Syndrome1_15+class="num">0.05427575*Syndrome1_16-class="num">0.0002294437*Syndrome1_17+class="num">0.008295977*Syndrome1_18-class="num">0.2818146*Syndrome1_19-class="num">0.3877438*Syndrome1_20+class="num">0.03536745 );
  class="type">class="kw">double Syndrome2_15=Sigmoid2( -class="num">0.1754033*Syndrome1_1-class="num">0.0528489*Syndrome1_2-class="num">0.1744897*Syndrome1_3+class="num">0.1113354*Syndrome1_4+class="num">0.1185713*Syndrome1_5-class="num">0.0231303*Syndrome1_6+class="num">0.006316248*Syndrome1_7-class="num">0.08525342*Syndrome1_8+class="num">0.1568578*Syndrome1_9+class="num">0.2965699*Syndrome1_10+class="num">0.2781587*Syndrome1_11+class="num">0.2391527*Syndrome1_12-class="num">0.08555941*Syndrome1_13-class="num">0.2362186*Syndrome1_14+class="num">0.1128907*Syndrome1_15-class="num">0.04770778*Syndrome1_16-class="num">0.0139725*Syndrome1_17+class="num">0.1079882*Syndrome1_18-class="num">0.09141354*Syndrome1_19+class="num">0.3320866*Syndrome1_20-class="num">0.3015116 );
  class="type">class="kw">double Syndrome2_16=Sigmoid2( class="num">0.1962015*Syndrome1_1+class="num">0.0192374*Syndrome1_2-class="num">0.1578716*Syndrome1_3+class="num">0.03360523*Syndrome1_4+class="num">0.04818176*Syndrome1_5+class="num">0.2462966*Syndrome1_6-class="num">0.2103649*Syndrome1_7+class="num">0.01318523*Syndrome1_8-class="num">0.09349868*Syndrome1_9+class="num">0.08476428*Syndrome1_10-class="num">0.06272572*Syndrome1_11+class="num">0.2246324*Syndrome1_12+class="num">0.2539908*Syndrome1_13-class="num">0.2059217*Syndrome1_14-class="num">0.08641216*Syndrome1_15-class="num">0.09780023*Syndrome1_16+class="num">0.0005770256*Syndrome1_17-class="num">0.2842666*Syndrome1_18-class="num">0.05383059*Syndrome1_19-class="num">0.2822465*Syndrome1_20+class="num">0.2277268 );

「二级征候向三级映射的权重细节」

下面这段是某套 MT5 征候系统中的二级向三级压缩逻辑。Syndrome2_17 到 Syndrome2_20 各自用 Sigmoid2 把前 20 个一级征候做非线性加权,偏置项分别为 -0.1505798、+0.3204305、+0.1602566、-0.2110061,其中 Syndrome2_17 对 Syndrome1_20 的权重高达 -0.9127383,是这一组里负向压制最重的一项。 Syndrome2_19 的权重整体偏小,多数落在 ±0.15 区间内,仅 Syndrome1_16 达到 +0.4029721、Syndrome1_12 为 -0.3752605,说明该二级节点主要捕捉少数几个一级征候的边际偏离,而非广域叠加。 第三级 Syndrome3_1 则由前 20 个二级征候经 Sigmoid3 汇总,权重绝对值普遍低于 0.21,仅 Syndrome2_9(+0.2054683)与 Syndrome2_15(-0.2001411)突破 0.2 门槛,偏置 +0.0190388 接近零中心。 直接把下面代码贴进 MT5 的自定义指标或 EA 头文件,改 Sigmoid 函数为对应阶跃实现,就能在策略测试器里观察三级征候对行情状态的分层响应;外汇与贵金属杠杆品种波动剧烈,此类加权输出只代表概率倾向,实盘须严控仓位。

MQL5 / C++
class="type">class="kw">double Syndrome2_17=Sigmoid2( class="num">0.5981864*Syndrome1_1+class="num">0.5172131*Syndrome1_2-class="num">0.2310352*Syndrome1_3-class="num">0.1814138*Syndrome1_4-class="num">0.2148922*Syndrome1_5+class="num">0.562911*Syndrome1_6+class="num">0.5865576*Syndrome1_7-class="num">0.2790301*Syndrome1_8-class="num">0.3841165*Syndrome1_9+class="num">0.3223535*Syndrome1_10+class="num">0.2096305*Syndrome1_11+class="num">0.08284206*Syndrome1_12+class="num">0.7050048*Syndrome1_13+class="num">0.4129859*Syndrome1_14+class="num">0.2116682*Syndrome1_15+class="num">0.2213966*Syndrome1_16-class="num">0.1637594*Syndrome1_17+class="num">0.1191863*Syndrome1_18-class="num">0.6626714*Syndrome1_19-class="num">0.9127383*Syndrome1_20-class="num">0.1505798 );
class="type">class="kw">double Syndrome2_18=Sigmoid2( -class="num">0.008298698*Syndrome1_1-class="num">0.1847953*Syndrome1_2-class="num">0.1930849*Syndrome1_3-class="num">0.1005524*Syndrome1_4+class="num">0.0737519*Syndrome1_5+class="num">0.04218475*Syndrome1_6-class="num">0.422835*Syndrome1_7+class="num">0.06019862*Syndrome1_8-class="num">0.2056148*Syndrome1_9+class="num">0.3398327*Syndrome1_10-class="num">0.2526269*Syndrome1_11-class="num">0.06098709*Syndrome1_12-class="num">0.1447722*Syndrome1_13-class="num">0.05216306*Syndrome1_14-class="num">0.09496115*Syndrome1_15+class="num">0.2071376*Syndrome1_16+class="num">0.03088453*Syndrome1_17-class="num">0.521363*Syndrome1_18-class="num">0.06449924*Syndrome1_19-class="num">0.4105364*Syndrome1_20+class="num">0.3204305 );
class="type">class="kw">double Syndrome2_19=Sigmoid2( -class="num">0.1376712*Syndrome1_1-class="num">0.0153131*Syndrome1_2+class="num">0.04377801*Syndrome1_3+class="num">0.08896239*Syndrome1_4+class="num">0.03197494*Syndrome1_5-class="num">0.02259021*Syndrome1_6+class="num">0.008662836*Syndrome1_7-class="num">0.1961185*Syndrome1_8-class="num">0.0720102*Syndrome1_9+class="num">0.05738823*Syndrome1_10-class="num">0.004060962*Syndrome1_11-class="num">0.3752605*Syndrome1_12+class="num">0.02065136*Syndrome1_13+class="num">0.1263955*Syndrome1_14-class="num">0.05906902*Syndrome1_15+class="num">0.4029721*Syndrome1_16-class="num">0.159444*Syndrome1_17-class="num">0.1619136*Syndrome1_18+class="num">0.3338208*Syndrome1_19-class="num">0.0656369*Syndrome1_20+class="num">0.1602566 );
class="type">class="kw">double Syndrome2_20=Sigmoid2( -class="num">0.003900121*Syndrome1_1+class="num">0.3159288*Syndrome1_2+class="num">0.2550703*Syndrome1_3+class="num">0.05409481*Syndrome1_4+class="num">0.06660215*Syndrome1_5-class="num">0.1948439*Syndrome1_6-class="num">0.370153*Syndrome1_7+class="num">0.5337713*Syndrome1_8-class="num">0.06716464*Syndrome1_9+class="num">0.550526*Syndrome1_10+class="num">0.4723933*Syndrome1_11+class="num">0.09457724*Syndrome1_12+class="num">0.5613732*Syndrome1_13+class="num">0.3709611*Syndrome1_14-class="num">0.07680532*Syndrome1_15-class="num">0.5097623*Syndrome1_16+class="num">0.4023384*Syndrome1_17+class="num">0.2330064*Syndrome1_18-class="num">0.09448317*Syndrome1_19+class="num">0.2668969*Syndrome1_20-class="num">0.2110061 );
class=class="str">"cmt">//--- 第三级征候:
class="type">class="kw">double Syndrome3_1=Sigmoid3( -class="num">0.05101856*Syndrome2_1-class="num">0.04933448*Syndrome2_2+class="num">0.03248681*Syndrome2_3-class="num">0.05835526*Syndrome2_4-class="num">0.01888579*Syndrome2_5-class="num">0.07940733*Syndrome2_6-class="num">0.04341835*Syndrome2_7-class="num">0.07906266*Syndrome2_8+class="num">0.2054683*Syndrome2_9+class="num">0.1553352*Syndrome2_10-class="num">0.07296721*Syndrome2_11-class="num">0.01849408*Syndrome2_12-class="num">0.07505544*Syndrome2_13+class="num">0.08666297*Syndrome2_14-class="num">0.2001411*Syndrome2_15+class="num">0.07931387*Syndrome2_16+class="num">0.1598745*Syndrome2_17+class="num">0.01308129*Syndrome2_18+class="num">0.159161*Syndrome2_19+class="num">0.1903208*Syndrome2_20+class="num">0.0190388 );

第二层特征的 S 型压缩

在多层特征堆叠里,第三层 Syndrome3 的 2 到 6 号节点,是把上一层 20 个 Syndrome2 输出再做一次带权线性组合,然后塞进 Sigmoid3 做非线性压缩。权值不是拍脑袋给的,而是从样本里拟合出来的固定常数,比如 Syndrome3_5 里 Syndrome2_20 的权重是 -0.9329191,是全表绝对值最大的一项,说明第 20 个二层特征对该节点有强抑制倾向。 下面这段是 MT5 里直接能抄的去格式化代码,注意每个节点末尾都带一个偏置常数(如 +0.06071822),它不是权重,是仿射变换的截距项。 Sigmoid3 的作用是把任意实数映射到 (0,1) 区间,避免多层累乘后数值爆炸。外汇与贵金属行情的高波动会让 Syndrome2 输出偶尔跳变,过 S 型后至少把幅度锁死在概率语义内,但仍不改变信号可能失效的高风险本质。 实盘验证时建议先把这 5 个节点的值用 Comment 打印出来,观察它们在 EURUSD 的 M15 上是否长期落在 0.3~0.7 的模糊带;若某节点常年贴 0 或贴 1,说明对应权值组合在该品种上已近失效,需要重估而非盲目跟信号。

MQL5 / C++
class="type">class="kw">double Syndrome3_2=Sigmoid3( class="num">0.0643296*Syndrome2_1+class="num">0.3451192*Syndrome2_2-class="num">0.1247545*Syndrome2_3+class="num">0.03276825*Syndrome2_4+class="num">0.303136*Syndrome2_5+class="num">0.03152885*Syndrome2_6+class="num">0.1118743*Syndrome2_7-class="num">0.3860323*Syndrome2_8-class="num">0.08593427*Syndrome2_9-class="num">0.2664599*Syndrome2_10+class="num">0.213205*Syndrome2_11-class="num">0.0977626*Syndrome2_12-class="num">0.2923501*Syndrome2_13-class="num">0.3133417*Syndrome2_14-class="num">0.1915279*Syndrome2_15+class="num">0.4333939*Syndrome2_16+class="num">0.02110274*Syndrome2_17+class="num">0.5802879*Syndrome2_18+class="num">0.03386912*Syndrome2_19+class="num">0.08908307*Syndrome2_20+class="num">0.06071822 );
class="type">class="kw">double Syndrome3_3=Sigmoid3( -class="num">0.08613513*Syndrome2_1+class="num">0.1200513*Syndrome2_2+class="num">0.3818525*Syndrome2_3-class="num">0.09603316*Syndrome2_4-class="num">0.2353039*Syndrome2_5-class="num">0.1816488*Syndrome2_6+class="num">0.002517342*Syndrome2_7-class="num">0.2414117*Syndrome2_8+class="num">0.2011739*Syndrome2_9-class="num">0.3057347*Syndrome2_10-class="num">0.4593749*Syndrome2_11-class="num">0.2228307*Syndrome2_12+class="num">0.03512295*Syndrome2_13+class="num">0.4402955*Syndrome2_14-class="num">0.1967632*Syndrome2_15+class="num">0.07873345*Syndrome2_16+class="num">0.1981131*Syndrome2_17-class="num">0.2677957*Syndrome2_18+class="num">0.1719814*Syndrome2_19-class="num">0.474854*Syndrome2_20+class="num">0.01101439 );
class="type">class="kw">double Syndrome3_4=Sigmoid3( class="num">0.02534361*Syndrome2_1+class="num">0.1845266*Syndrome2_2+class="num">0.149674*Syndrome2_3-class="num">0.1454014*Syndrome2_4+class="num">0.00701888*Syndrome2_5+class="num">0.08219463*Syndrome2_6+class="num">0.05163066*Syndrome2_7-class="num">0.1836077*Syndrome2_8+class="num">0.1429968*Syndrome2_9+class="num">0.518382*Syndrome2_10-class="num">0.00966637*Syndrome2_11-class="num">0.1674386*Syndrome2_12+class="num">0.1387497*Syndrome2_13+class="num">0.1385897*Syndrome2_14-class="num">0.01148864*Syndrome2_15+class="num">0.3751494*Syndrome2_16-class="num">0.08906862*Syndrome2_17-class="num">0.06286599*Syndrome2_18+class="num">0.2061662*Syndrome2_19-class="num">0.07524439*Syndrome2_20-class="num">0.08077133 );
class="type">class="kw">double Syndrome3_5=Sigmoid3( class="num">0.3856083*Syndrome2_1-class="num">0.01700347*Syndrome2_2-class="num">0.1044575*Syndrome2_3+class="num">0.111998*Syndrome2_4-class="num">0.5157402*Syndrome2_5-class="num">0.05508286*Syndrome2_6-class="num">0.3101066*Syndrome2_7-class="num">0.5261913*Syndrome2_8-class="num">0.05983765*Syndrome2_9+class="num">0.1723307*Syndrome2_10-class="num">0.2564277*Syndrome2_11+class="num">0.06385356*Syndrome2_12-class="num">0.07245655*Syndrome2_13+class="num">0.1154206*Syndrome2_14-class="num">0.3492871*Syndrome2_15+class="num">0.136372*Syndrome2_16+class="num">0.3627071*Syndrome2_17-class="num">0.3074959*Syndrome2_18+class="num">0.4425845*Syndrome2_19-class="num">0.9329191*Syndrome2_20+class="num">0.01476912 );
class="type">class="kw">double Syndrome3_6=Sigmoid3( class="num">0.5246867*Syndrome2_1-class="num">0.2347829*Syndrome2_2+class="num">0.01062111*Syndrome2_3+class="num">0.2374777*Syndrome2_4-class="num">0.02361662*Syndrome2_5+class="num">0.1804156*Syndrome2_6+class="num">0.07669501*Syndrome2_7-class="num">0.142881*Syndrome2_8+class="num">0.2566245*Syndrome2_9+class="num">0.1024709*Syndrome2_10-class="num">0.04695484*Syndrome2_11-class="num">0.004103919*Syndrome2_12+class="num">0.3340242*Syndrome2_13-class="num">0.3702791*Syndrome2_14+class="num">0.1852374*Syndrome2_15+class="num">0.02175477*Syndrome2_16+class="num">0.09901489*Syndrome2_17-class="num">0.1502062*Syndrome2_18+class="num">0.3814779*Syndrome2_19-class="num">0.06319473*Syndrome2_20+class="num">0.2657273 );

◍ 第三层综合征的权重落地

把第二层 20 个 Syndrome2 因子继续往第三层压,这里给出 5 个隐节点的具体线性组合与偏置。每个节点都过 Sigmoid3 激活,输出被钳在 0~1 区间,可直接当作下一层或决策层的连续特征。 Syndrome3_7 的偏置是 +0.3529212,其中 Syndrome2_10 的系数 -0.7264652 是全组绝对值最大的负权重,说明该因子在此节点上若有正向激活,会强烈压制输出。Syndrome3_10 偏置 -0.4383866 且 Syndrome2_1 系数 -0.5099882,整体倾向压低该节点响应。 下面这段是可直接贴进 MT5 自定义指标或 EA 头文件里的原计算式,建议先开 MT5 用已知 Syndrome2 数组跑一遍,确认浮点结果与你的特征管线一致。外汇与贵金属波动剧烈,这类合成特征仅作概率参考,实盘须自担高风险。

MQL5 / C++
class="type">class="kw">double Syndrome3_7=Sigmoid3( class="num">0.1613003*Syndrome2_1-class="num">0.2738772*Syndrome2_2-class="num">0.03304096*Syndrome2_3+class="num">0.3934855*Syndrome2_4+class="num">0.3955218*Syndrome2_5-class="num">0.3004892*Syndrome2_6+class="num">0.1339742*Syndrome2_7+class="num">0.09475601*Syndrome2_8+class="num">0.03064043*Syndrome2_9-class="num">0.7264652*Syndrome2_10-class="num">0.4579849*Syndrome2_11-class="num">0.1183059*Syndrome2_12+class="num">0.2197721*Syndrome2_13-class="num">0.08493897*Syndrome2_14+class="num">0.2115426*Syndrome2_15-class="num">0.07834542*Syndrome2_16-class="num">0.3884689*Syndrome2_17-class="num">0.101394*Syndrome2_18+class="num">0.1002519*Syndrome2_19-class="num">0.07787764*Syndrome2_20+class="num">0.3529212 );
class="type">class="kw">double Syndrome3_8=Sigmoid3( -class="num">0.3544801*Syndrome2_1+class="num">0.03471621*Syndrome2_2-class="num">0.2373467*Syndrome2_3-class="num">0.2836286*Syndrome2_4+class="num">0.01646966*Syndrome2_5+class="num">0.06978795*Syndrome2_6-class="num">0.03310004*Syndrome2_7+class="num">0.01844743*Syndrome2_8+class="num">0.05259214*Syndrome2_9-class="num">0.05343668*Syndrome2_10+class="num">0.3971725*Syndrome2_11-class="num">0.08770485*Syndrome2_12-class="num">0.2040168*Syndrome2_13+class="num">0.1109144*Syndrome2_14-class="num">0.06249888*Syndrome2_15-class="num">0.5860764*Syndrome2_16+class="num">0.1217078*Syndrome2_17+class="num">0.2471277*Syndrome2_18-class="num">0.03716509*Syndrome2_19-class="num">0.1908655*Syndrome2_20+class="num">0.03838157 );
class="type">class="kw">double Syndrome3_9=Sigmoid3( class="num">0.1542789*Syndrome2_1+class="num">0.3505224*Syndrome2_2+class="num">0.06042741*Syndrome2_3+class="num">0.08956298*Syndrome2_4-class="num">0.03655836*Syndrome2_5-class="num">0.3083843*Syndrome2_6+class="num">0.2483124*Syndrome2_7-class="num">0.1132483*Syndrome2_8-class="num">0.3571556*Syndrome2_9-class="num">0.04335312*Syndrome2_10+class="num">0.005499069*Syndrome2_11+class="num">0.371572*Syndrome2_12-class="num">0.1199554*Syndrome2_13+class="num">0.1160574*Syndrome2_14-class="num">0.01656827*Syndrome2_15+class="num">0.09481092*Syndrome2_16-class="num">0.07926448*Syndrome2_17+class="num">0.3847227*Syndrome2_18+class="num">0.1039986*Syndrome2_19-class="num">0.02874756*Syndrome2_20-class="num">0.2311832 );
class="type">class="kw">double Syndrome3_10=Sigmoid3( -class="num">0.5099882*Syndrome2_1-class="num">0.2619184*Syndrome2_2+class="num">0.2441412*Syndrome2_3-class="num">0.02311796*Syndrome2_4+class="num">0.004243354*Syndrome2_5-class="num">0.04681544*Syndrome2_6+class="num">0.1402575*Syndrome2_7-class="num">0.03166823*Syndrome2_8-class="num">0.2629028*Syndrome2_9-class="num">0.03275445*Syndrome2_10-class="num">0.311464*Syndrome2_11+class="num">0.3158014*Syndrome2_12-class="num">0.04689252*Syndrome2_13+class="num">0.1556217*Syndrome2_14-class="num">0.02266529*Syndrome2_15-class="num">0.15192*Syndrome2_16+class="num">0.02253294*Syndrome2_17+class="num">0.04638374*Syndrome2_18-class="num">0.4847055*Syndrome2_19-class="num">0.0543578*Syndrome2_20-class="num">0.4383866 );
class="type">class="kw">double Syndrome3_11=Sigmoid3( class="num">0.09181526*Syndrome2_1-class="num">0.009475656*Syndrome2_2+class="num">0.08283823*Syndrome2_3+class="num">0.06638021*Syndrome2_4-class="num">0.04110251*Syndrome2_5+class="num">0.03041244*Syndrome2_6-class="num">0.2266526*Syndrome2_7+class="num">0.3537511*Syndrome2_8+class="num">0.2091044*Syndrome2_9-class="num">0.2312607*Syndrome2_10-class="num">0.01409533*Syndrome2_11-class="num">0.06294888*Syndrome2_12+class="num">0.1980267*Syndrome2_13+class="num">0.07864135*Syndrome2_14-class="num">0.01312789*Syndrome2_15+class="num">0.02964603*Syndrome2_16-class="num">0.1720168*Syndrome2_17-class="num">0.01523064*Syndrome2_18+class="num">0.07354444*Syndrome2_19+class="num">0.1534344*Syndrome2_20+class="num">0.04784121 );

「第三层隐藏元的系数硬编码现场」

下面这段是某套基于 Syndrom 特征的 MQL5 推导代码,把第二层 20 个输出 Syndrome2_1~20 再线性组合后塞进 Sigmoid3 激活,得到第三层的 Syndrome3_12 至 Syndrome3_16。系数全部写死,没有外挂参数文件,属于典型的离线训练后定点部署。 以 Syndrome3_13 为例,Syndrome2_17 的权重高达 0.3119571,Syndrome2_12 则是 -0.2698838,说明这两个二级特征在第三层该节点上方向相反、主导性最强;而 Syndrome3_16 的偏置项达到 0.3113509,是所有五个节点里最大的常数偏移。 直接把下面代码贴进 MT5 的 EA 或指标源码里,配合前两层 Syndrome2 的计算逻辑就能跑通;外汇与贵金属波动剧烈,这类静态权重模型在历史样本外失效的概率不低,验证时务必用近期行情小仓位回测。 别把偏置项当噪声:Syndrome3_14 的常数 -0.1862434 和 Syndrome3_15 的 +0.3049682 符号相反,意味着这两个第三层节点对「无特征输入」的基准输出倾向完全对立,调参或重构时不能随手抹掉。

MQL5 / C++
class="type">class="kw">double Syndrome3_12=Sigmoid3( -class="num">0.01962976*Syndrome2_1-class="num">0.1254692*Syndrome2_2+class="num">0.01237085*Syndrome2_3-class="num">0.006583595*Syndrome2_4-class="num">0.06446695*Syndrome2_5-class="num">0.1581757*Syndrome2_6-class="num">0.01416831*Syndrome2_7+class="num">0.08909909*Syndrome2_8+class="num">0.02427519*Syndrome2_9+class="num">0.06101634*Syndrome2_10-class="num">0.07296847*Syndrome2_11-class="num">0.02960677*Syndrome2_12+class="num">0.1195403*Syndrome2_13+class="num">0.007260199*Syndrome2_14-class="num">0.005008513*Syndrome2_15+class="num">0.07686368*Syndrome2_16-class="num">0.1097991*Syndrome2_17+class="num">0.02348211*Syndrome2_18-class="num">0.01508969*Syndrome2_19+class="num">0.06078456*Syndrome2_20+class="num">0.1424098 );
class="type">class="kw">double Syndrome3_13=Sigmoid3( -class="num">0.1845686*Syndrome2_1-class="num">0.1120369*Syndrome2_2+class="num">0.1346949*Syndrome2_3+class="num">0.2425685*Syndrome2_4+class="num">0.1310953*Syndrome2_5-class="num">0.1957272*Syndrome2_6+class="num">0.2163845*Syndrome2_7+class="num">0.04189415*Syndrome2_8+class="num">0.05685329*Syndrome2_9-class="num">0.1108158*Syndrome2_10-class="num">0.04702755*Syndrome2_11-class="num">0.2698838*Syndrome2_12+class="num">0.05045844*Syndrome2_13+class="num">0.1487544*Syndrome2_14+class="num">7.648221E-5*Syndrome2_15-class="num">0.04902162*Syndrome2_16+class="num">0.3119571*Syndrome2_17-class="num">0.2076546*Syndrome2_18+class="num">0.1465537*Syndrome2_19+class="num">0.2386554*Syndrome2_20+class="num">0.09121808 );
class="type">class="kw">double Syndrome3_14=Sigmoid3( class="num">0.015057*Syndrome2_1-class="num">0.07630379*Syndrome2_2+class="num">0.10373*Syndrome2_3-class="num">0.01276504*Syndrome2_4+class="num">0.01637872*Syndrome2_5+class="num">0.1570177*Syndrome2_6+class="num">0.02290879*Syndrome2_7+class="num">0.1426407*Syndrome2_8-class="num">0.3037595*Syndrome2_9-class="num">0.1183627*Syndrome2_10-class="num">0.05010238*Syndrome2_11-class="num">0.06874149*Syndrome2_12+class="num">0.0325584*Syndrome2_13-class="num">0.1127614*Syndrome2_14+class="num">0.1010367*Syndrome2_15+class="num">0.2743505*Syndrome2_16+class="num">0.02752565*Syndrome2_17-class="num">0.01011515*Syndrome2_18-class="num">0.1072115*Syndrome2_19-class="num">0.1723324*Syndrome2_20-class="num">0.1862434 );
class="type">class="kw">double Syndrome3_15=Sigmoid3( -class="num">0.0602835*Syndrome2_1+class="num">0.1044827*Syndrome2_2-class="num">0.03398157*Syndrome2_3+class="num">0.1103081*Syndrome2_4-class="num">0.2517793*Syndrome2_5-class="num">0.1388755*Syndrome2_6+class="num">0.1680355*Syndrome2_7+class="num">0.08541053*Syndrome2_8+class="num">0.2264198*Syndrome2_9+class="num">0.1319854*Syndrome2_10+class="num">0.2397746*Syndrome2_11+class="num">0.04893836*Syndrome2_12+class="num">0.07067535*Syndrome2_13+class="num">0.03666123*Syndrome2_14-class="num">0.2249698*Syndrome2_15+class="num">0.1039975*Syndrome2_16+class="num">0.03130547*Syndrome2_17+class="num">0.1295152*Syndrome2_18-class="num">0.1380298*Syndrome2_19-class="num">0.2716908*Syndrome2_20+class="num">0.3049682 );
class="type">class="kw">double Syndrome3_16=Sigmoid3( class="num">0.006898584*Syndrome2_1+class="num">0.172121*Syndrome2_2+class="num">0.08287619*Syndrome2_3-class="num">0.2843233*Syndrome2_4+class="num">0.3360839*Syndrome2_5-class="num">0.06360124*Syndrome2_6+class="num">0.08605669*Syndrome2_7+class="num">0.1303328*Syndrome2_8+class="num">0.176666*Syndrome2_9+class="num">0.3064248*Syndrome2_10+class="num">0.03492442*Syndrome2_11-class="num">0.1337793*Syndrome2_12+class="num">0.2166045*Syndrome2_13+class="num">0.1651906*Syndrome2_14-class="num">0.2159452*Syndrome2_15-class="num">0.02087162*Syndrome2_16-class="num">0.1321865*Syndrome2_17+class="num">0.02330898*Syndrome2_18-class="num">0.1607926*Syndrome2_19+class="num">0.100959*Syndrome2_20+class="num">0.3113509 );

第三层征候的权重拼接与终值缩放

这一层把第二层输出的 20 个中间征候再做一次非线性组合,得到 Syndrome3_17 到 Syndrome3_20 四个第三层特征。每个都用 Sigmoid3 压到有限区间,权重是训练好的固定常数,比如 Syndrome3_19 里 Syndrome2_11 和 Syndrome2_20 的系数分别达到 0.8646971 与 0.9234442,明显是这一节点的主要驱动项。 最终 BAR[0] 把全部 20 个第三层征候线性加权求和,系数从 -0.3639574(Syndrome3_7)到 0.7103375(Syndrome3_16)不等,再加偏置 0.03919306,这一步就是「终级征候」的原始输出。 原始求和值还要过一道后期处理:先乘 0.0180000001564622,加 0.000599999912083149,再除以 2。在 MT5 里把这行直接贴进 OnInit 或 OnCalc 之后的调试输出,打印 BAR[0] 就能看到缩放后的征候强度,外汇与贵金属波动剧烈,该数值仅作概率参考,实盘需自担高风险。

MQL5 / C++
  class="type">class="kw">double Syndrome3_17=Sigmoid3( class="num">0.2484581*Syndrome2_1+class="num">0.07501616*Syndrome2_2-class="num">0.2955785*Syndrome2_3-class="num">0.06893355*Syndrome2_4-class="num">0.110545*Syndrome2_5+class="num">0.009258383*Syndrome2_6-class="num">0.04150206*Syndrome2_7-class="num">0.1581711*Syndrome2_8-class="num">0.1503464*Syndrome2_9-class="num">0.1641756*Syndrome2_10+class="num">0.2800875*Syndrome2_11+class="num">0.1470316*Syndrome2_12+class="num">0.08529772*Syndrome2_13-class="num">0.07939056*Syndrome2_14+class="num">0.1105667*Syndrome2_15-class="num">0.003909521*Syndrome2_16-class="num">0.1663841*Syndrome2_17+class="num">0.1384012*Syndrome2_18-class="num">0.2260507*Syndrome2_19-class="num">0.1310463*Syndrome2_20+class="num">0.03011392 );
  class="type">class="kw">double Syndrome3_18=Sigmoid3( class="num">0.2167049*Syndrome2_1+class="num">0.1083723*Syndrome2_2+class="num">0.03713056*Syndrome2_3-class="num">0.07394339*Syndrome2_4-class="num">0.08689396*Syndrome2_5+class="num">0.1893489*Syndrome2_6-class="num">0.004869457*Syndrome2_7+class="num">0.06987588*Syndrome2_8-class="num">0.1505099*Syndrome2_9+class="num">0.1717843*Syndrome2_10+class="num">0.07792218*Syndrome2_11+class="num">0.02835098*Syndrome2_12+class="num">0.03617713*Syndrome2_13+class="num">0.1599271*Syndrome2_14-class="num">0.1617647*Syndrome2_15-class="num">0.04720658*Syndrome2_16+class="num">0.004165665*Syndrome2_17-class="num">0.1073883*Syndrome2_18+class="num">0.06164433*Syndrome2_19+class="num">0.01017194*Syndrome2_20-class="num">0.1073146 );
  class="type">class="kw">double Syndrome3_19=Sigmoid3( class="num">0.1966043*Syndrome2_1-class="num">0.06785608*Syndrome2_2-class="num">0.02568222*Syndrome2_3+class="num">0.2323583*Syndrome2_4-class="num">0.1949882*Syndrome2_5-class="num">0.0180097*Syndrome2_6-class="num">0.1995831*Syndrome2_7-class="num">0.3007537*Syndrome2_8+class="num">0.03133066*Syndrome2_9-class="num">0.3836962*Syndrome2_10+class="num">0.8646971*Syndrome2_11-class="num">0.04459784*Syndrome2_12+class="num">0.1127359*Syndrome2_13+class="num">0.3645059*Syndrome2_14+class="num">0.3924035*Syndrome2_15+class="num">0.2070317*Syndrome2_16-class="num">0.1975317*Syndrome2_17+class="num">0.249992*Syndrome2_18-class="num">0.1090982*Syndrome2_19+class="num">0.9234442*Syndrome2_20+class="num">0.0260936 );
  class="type">class="kw">double Syndrome3_20=Sigmoid3( -class="num">0.1054238*Syndrome2_1+class="num">0.01094678*Syndrome2_2+class="num">0.1854347*Syndrome2_3-class="num">0.03105933*Syndrome2_4-class="num">0.1428708*Syndrome2_5+class="num">0.1660853*Syndrome2_6-class="num">0.0540761*Syndrome2_7+class="num">0.08364562*Syndrome2_8+class="num">0.01462638*Syndrome2_9+class="num">0.05958234*Syndrome2_10+class="num">0.05540805*Syndrome2_11+class="num">0.1415959*Syndrome2_12-class="num">0.2088391*Syndrome2_13-class="num">0.02437577*Syndrome2_14+class="num">0.03789431*Syndrome2_15+class="num">0.1342704*Syndrome2_16+class="num">0.02136465*Syndrome2_17+class="num">0.1529594*Syndrome2_18-class="num">0.2515772*Syndrome2_19-class="num">0.009984408*Syndrome2_20-class="num">0.02554057 );
class=class="str">"cmt">//--- 终级征候:
  BAR[class="num">0]=class="num">0.377357*Syndrome3_1-class="num">0.1995524*Syndrome3_2+class="num">0.44664*Syndrome3_3-class="num">0.2634062*Syndrome3_4-class="num">0.1150927*Syndrome3_5-class="num">0.3349093*Syndrome3_6-class="num">0.3639574*Syndrome3_7+class="num">0.2705039*Syndrome3_8+class="num">0.5313437*Syndrome3_9+class="num">0.2664694*Syndrome3_10+class="num">0.1713557*Syndrome3_11+class="num">0.1208919*Syndrome3_12-class="num">0.4120659*Syndrome3_13+class="num">0.3021899*Syndrome3_14+class="num">0.4149051*Syndrome3_15+class="num">0.7103375*Syndrome3_16+class="num">0.1180793*Syndrome3_17-class="num">0.2354599*Syndrome3_18-class="num">0.1013937*Syndrome3_19+class="num">0.3054902*Syndrome3_20+class="num">0.03919306;
class=class="str">"cmt">//--- 终级征候的后期处理:
  BAR[class="num">0]=((BAR[class="num">0]*class="num">0.0180000001564622)+class="num">0.000599999912083149)/class="num">2;

◍ 用神经网络预测值驱动 MT5 自动平仓与开仓

这段逻辑把前文的神经网络输出 Prognosis 直接接进 OnTick 事件:每来一个报价就先算一次预测值,再交给 Trade() 处理持仓。预测值正负与持仓方向冲突时立刻平掉,无仓且预测绝对值超阈值才开仓,避免了频繁反向刷单。 Trade() 里先用 PositionSelect(_Symbol) 抓当前品种持仓,读出 POSITION_TYPE。若是多单且 Prognosis <= 0,或空单且 Prognosis >= 0,就把 close 置真并通过 CTrade.PositionClose 平仓;这里预测零轴被当作多空分界,信号模糊时不动仓。 开仓侧要求 Prognosis 不等于 0 且无持仓,大于 MinPrognosis 才 Buy(Lots),小于 -MinPrognosis 才 Sell(Lots)。MinPrognosis 是过滤杂讯的阈值,调小会提高交易频率但可能增加外汇与贵金属的高风险暴露,建议在 MT5 策略测试器里按品种波动率单独标定。 逐行看 OnTick:Prognosis=CalcNeuroNet() 取预测,Trade() 执行动作,结构极简。实盘前务必把 Lots 与 MinPrognosis 写成输入参数,否则默认手数可能直接击穿保证金。

MQL5 / C++
  class="kw">return (BAR[class="num">0]);
  }
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">class="kw">double Prognosis;
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#include <Trade\Trade.mqh>
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">void OnTick()
  {
class=class="str">"cmt">//--- 从神经网络接收价格预测
   Prognosis=CalcNeuroNet();
class=class="str">"cmt">//--- 执行必要的交易动作
   Trade();
  }
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">void Trade()
  {
   class=class="str">"cmt">//--- 如果与预测不符,平仓
   if(PositionSelect(_Symbol))
     {
      class="type">long type=PositionGetInteger(POSITION_TYPE);
      class="type">bool close=class="kw">false;
      if((type == POSITION_TYPE_BUY)  && (Prognosis <= class="num">0)) close = true;
      if((type == POSITION_TYPE_SELL) && (Prognosis >= class="num">0)) close = true;
      if(close)
        {
         CTrade trade;
         trade.PositionClose(_Symbol);
        }
     }
   class=class="str">"cmt">//--- 如果无持仓,根据预测开仓
   if((Prognosis!=class="num">0) && (!PositionSelect(_Symbol)))
     {
      CTrade trade;
      if(Prognosis >  MinPrognosis) trade.Buy(Lots);
      if(Prognosis < -MinPrognosis) trade.Sell(Lots);
     }
  }

「最后一句大实话」

把 NeuroPro 里训好的网络导成 mq5 丢进 MT5 回测,流程本身不复杂,但评论区那几条实盘反馈值得冷静看:有用户拿 14 万根蜡烛、甚至 40 年跨品种数据训完,前向预测准确率仍卡在 50/50,和抛硬币无异。 价格序列的非稳态特性摆在那,神经网络抵消不了「开盘就反向」的极端风险,外汇和贵金属杠杆品种里这种走势能直接扫掉止损。 所以这类工具更适合当验证想法的桥,而不是替你下注的圣杯;真要跑,先开 MT5 用文末导出的 neuropro-export.mq5 编译,自己看样本外曲线再说话。

常见问题

取最近24根BAR的归一化价格变化作为输入,过一层Sigmoid得到3个0~1之间的特征值,代表短期走势的三种状态压缩。
将第一级3个特征与第二级综合征信号按训练权重线性拼接,作为最终网络输入,可直接用于信号分类或触发判断。
可以,小布能按你的品种自动计算24根BAR的Sigmoid压缩特征并展示两级权重拼接结果,省去手动搬数据的麻烦。
指把第二层网络的连接权重矩阵拉平成一维数组,便于检查或导出,确认每个输入对输出信号的贡献比例。
多一根BAR通常作为当前未闭合的实时K线,三个综合征信号会随这根线变动而微调,用于更敏感地捕捉临场转折。