我想写一个多图层的判断,但是条件判断的结果与想法不符,在多图层遍历的时候,计划在条件符合的图层输出bool值,实际在条件不符合的图层也输出了,并且同时写入了map数组,实在找不到原因,请教大神。图片和代码如下:
//------------------------------------------------------------------------
// 简称: test6
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
//此处添加参数
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
//此处添加变量
Numeric MACDDiff;
Numeric AvgMACD;
Numeric MACDValue;
Global Map<String,String> my_map;
Series<Numeric> x;
Series<String> s1;
Series<Bool> con1;
Numeric i;
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
x = 0;
}
OnReady()
{
//my_map["期货代码"] = "rb888.SHFE";
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
Commentary("macd="+Text(MACDDiff));
If(Time == 0.1459 And x == 0)
{
If(MACDDiff > 0)
{
s1 = symbol;
Commentary("s1:"+s1);
con1 = True;
//PublishEvent("我的选股",my_map,"所有订阅者");
}
Else
{
con1 = False;
}
x = 1;
}
If(Time == 0.210000)
{
x = 0;
}
//PlotBool("data[i].con1",con1,Low,Green);
}
If(Time == 0.1459)
{
For i = 0 to DataSourceSize() - 1
{
If(data[i].con1 == True);
{
data[i].PlotBool("data[i].con1",data[i].con1,Low,Green);
data[i].Commentary("Data[i].s1:"+s1);
my_map["期货代码"] = my_map["期货代码"] + "," +Data[i].s1;
}
}
}
Commentary(my_map["期货代码"]);
If(Day <> Day[1])
{
my_map["期货代码"] = "";
}
}
//------------------------------------------------------------------------
// 编译版本 2022-12-21 133331
// 版权所有 bluegreat
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
建议投稿 详细说明
老师,都半个多月没有线上答疑了