运行环境TBQ3, 按照文档测试【事件发送器功能】 https://tbq3.tbquant.net/helper?product_id=991&keyword=440&content_id=266&selectedkey=4033&type=article
动态参数修功能没有任何问题,但是发送事件就无法被公式接收
公式sbx_unit_eventSender代码如下
//------------------------------------------------------------------------
// 简称: sbx_unit_eventSender
// 名称: 事件发送器
// 类别: 策略应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Integer P_1(1);
Vars
//此处添加变量
Defs
//此处添加策略函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
PrintClear();
SubscribeEvent("TestEventSender");
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBarOpen(ArrayRef<Integer> indexs)
{
If(CurrentBar % 5 == 0)
Print("参数P_1的值:" + Text(P_1) + " @Bar #" + Text(CurrentBar));
If(CurrentBar % 6 == 0) {
Map<String, String> evtValue;
evtValue["k"] = "v";
//PublishEvent("TestEventSender", evtValue);
}
}
OnEvent(StringRef evtName,MapRef<String,String> evtValue)
{
Print("* Event Received: " + evtName + " - " + TextMap(evtValue));
}运行在图表中,经测试注释掉的PublishEvent代码是可以工作的,发布的事件参数会被OnEvent接收并打印
事件发送器界面设置和操作如下, 按照文档上的截图,键名和键值我都没加双引号,默认为字符串(试了加双引号也不行):

调试台没有任何输出,请老师们帮忙看下是哪里没弄对?
搞定了,需要在订阅的时候指定键名
SubscribeEvent("TestEventSender", ["a","b","c"]);只要在代码中指定一个键名,就可以在【事件发送器】中自定义额外的键名
