You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MQL语言中sinput与input的核心差异及优化限制解析

MQL中sinput与input的核心差异及“无法优化”的具体说明

核心差异总结

  • 优化权限不同:这是最核心的区别。普通input变量支持在MT4/MT5策略测试器中做参数优化;sinput变量完全不参与优化,值全程固定。
  • 用途侧重不同:input用于需要通过优化找到最优值的交易核心参数;sinput多用于功能性开关、参数分组标识这类不需要调整的配置项,起到逻辑分组、简化参数面板的作用。

“无法优化”的具体含义及示例

所谓“无法优化”,就是在策略测试器的参数优化流程中,sinput变量不会被纳入优化范围,它的初始值会在所有测试迭代中保持不变,你没法给它设置参数范围让系统自动遍历测试。

举个实际的EA开发例子:
假设你写了一个基于均线的趋势交易EA,里面有两类参数:

1. 普通input参数(可优化)

这类是影响交易信号或收益的核心变量,比如均线周期:

input int MA_Period = 20; // 均线周期,支持优化

在策略测试器里,你可以给MA_Period设置优化范围(比如10到50,步长5),启动优化后,测试器会自动遍历10、15、20...50这些值,对比不同周期下的回测收益、胜率等指标,最终给出最优的均线周期。

2. sinput参数(不可优化)

这类是EA的功能性配置,不需要通过优化调整,比如日志开关、交易方向限制:

sinput bool Enable_Log = true; // 启用运行日志,不可优化
sinput bool Only_Long = false; // 仅允许做多,不可优化

打开策略测试器的优化面板,你会发现这两个参数根本没有优化选项——不管你跑多少次优化,Enable_Log始终是true,Only_Long始终是false。因为这些是固定的功能设置,不需要系统帮你找“最优值”。

再举一个参数分组的例子:
用sinput做参数面板的分组标题,让配置更清晰:

sinput string Signal_Group = "=== 信号参数 ===";
input int RSI_Period = 14;
input int MACD_Fast = 12;

sinput string Risk_Group = "=== 风控参数 ===";
input double StopLoss_Pips = 50;
input double TakeProfit_Pips = 100;

这里的Signal_Group和Risk_Group就是用sinput实现的分组标识,它们不会参与EA的任何计算,也不能被优化,只是让参数面板按功能划分,可读性更强。

内容的提问来源于stack exchange,提问作者MohammadSaleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:01:05