Quantower策略中如何调用自定义Sniper指标获取数值?
在Quantower策略中获取自定义Sniper指标数值的解决方案
步骤1:确保Sniper指标已正确安装到Quantower
- 打开Quantower脚本编辑器(快捷键Ctrl+E)。
- 点击「导入」选择Sniper指标文件,或直接将指标代码粘贴到新建的指标脚本中。
- 保存指标(确保代码命名空间为
Trend,与原代码一致)。 - 必要时重启Quantower,确保指标已加载到平台自定义指标库。
步骤2:修改Scalpie策略代码以加载Sniper指标
2.1 添加Sniper指标字段
在Scalpie类中新增私有字段:
private Indicator sniperIndicator;
2.2 在OnRun方法中初始化Sniper指标
在OnRun方法中,完成其他指标初始化后添加以下代码:
// 加载自定义Sniper指标,参数需与指标类属性名完全匹配 sniperIndicator = Core.Indicators.Custom("Sniper", new Dictionary<string, object> { { "Period", 13 }, { "SourcePrice", PriceType.Close }, { "RSIMode", RSIMode.Exponential }, { "VolatilityBand", 34 }, { "StandardDeviation", 1.6185 }, { "FastMaOnRSIPeriod", 2 }, { "FastMAOnRSIMode", MaMode.SMA }, { "CalculationType", IndicatorCalculationType.AllAvailableData } }); // 将Sniper指标绑定到历史数据管理器,同步计算 hdm.AddIndicator(sniperIndicator);
2.3 在OnUpdate方法中获取Sniper指标数值
在OnUpdate方法中通过GetValue获取指标各条线数值:
// 获取当前Bar的Sniper指标数值 double bbUp = sniperIndicator.GetValue(0, 0); // 第一条线:BB Up double bbDown = sniperIndicator.GetValue(0, 1); // 第二条线:BB Down double fastMaOnRsi = sniperIndicator.GetValue(0, 2); // 第三条线:Fast MA on RSI // 示例:用指标数值判断交易信号 if (fastMaOnRsi > bbUp) { // 做空信号逻辑 } else if (fastMaOnRsi < bbDown) { // 做多信号逻辑 }
关键注意事项
- 指标名称匹配:
Core.Indicators.Custom第一个参数必须与Sniper指标类的Name属性完全一致(原代码为"Sniper")。 - 参数名匹配:字典键必须与Sniper指标类的公共属性名一致(如
Period而非显示名称"RSI period")。 - 禁止代码复制:不要将Sniper指标代码直接复制到策略文件,Quantower脚本环境要求指标与策略分开管理,需通过平台加载系统调用。
内容的提问来源于stack exchange,提问作者Shaniel Samadhan
相关产品推荐
相关产品推荐

