NinjaTrader 8获取配置分享服务报错:Globals无ShareServices定义
NinjaTrader 8指标中获取已配置分享服务名称的正确方法
错误原因
你遇到的“Globals不包含ShareServices的定义”错误,本质是NinjaTrader 8中ShareServices属性属于NinjaTrader.Core命名空间下的Globals类,代码未正确引用该命名空间,导致无法识别属性。
解决方案
1. 添加必要的命名空间引用
在指标代码的顶部添加以下引用,确保能访问到目标类和Linq方法:
using NinjaTrader.Core; using System.Linq;
2. 修正后的完整代码示例
替换原有代码为以下内容:
else if (State == State.Configure) { // 获取所有Telegram相关的分享服务名称 telegramServiceNames = Globals.ShareServices .Where(s => s.Name.ToLower().Contains("telegram")) .Select(s => s.Name) .ToList(); if (telegramServiceNames.Count > 0 && string.IsNullOrEmpty(SelectedServiceName)) { SelectedServiceName = telegramServiceNames[0]; } // 获取所有账户名称 accountNames = Account.All.Select(a => a.Name).ToList(); if (accountNames.Count > 0 && string.IsNullOrEmpty(SelectedAccountName)) { SelectedAccountName = accountNames[0]; } } else if (State == State.DataLoaded) { // 获取选中的Telegram分享服务 selectedTelegramService = Globals.ShareServices.FirstOrDefault(s => s.Name == SelectedServiceName); // 获取选中的账户 selectedAccount = Account.All.FirstOrDefault(a => a.Name == SelectedAccountName); if (selectedAccount != null) { selectedAccount.ExecutionUpdate += OnExecutionUpdate; } }
3. 额外注意事项
- 新建的NinjaTrader指标项目默认会引用核心程序集,无需额外配置;若为手动创建的项目,需确认已添加对
NinjaTrader.Core.dll的引用。 Globals.ShareServices返回IEnumerable<ShareService>类型,每个实例包含Name、Description等属性,可根据需求调用。
内容的提问来源于stack exchange,提问作者Shubham Vyas
相关产品推荐
相关产品推荐

