Params
Integer Length(10);
Vars
Series<Numeric> MA_Value; // 简单移动平均;
Series<Numeric> MA_Slope; // 简单移动平均斜率;
Plot plt_MA;
Events
OnInit()
{
Range[0:DataSourceSize-1]
{
AddDataFlag(Enum_Data_RolloverForWard()); // 前复权
plt_MA.figure(0);
plt_MA.setOption("x-format", "time");
plt_MA.setOption("y-format", "numeric");
}
}
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize-1]
{
MA_Value = Average(Close, Length); // 计算均线;
MA_Slope = MA_Value - MA_Value[1]; // 计算均线斜率;
Commentary("均线斜率= " + Text(MA_Slope));
PlotNumeric("MA主",MA_Value,MA_Value,White());
// 画副图
If(MA_Slope>0) // 斜率为正数时,均线显示为红色圆点;
{
plt_MA.setOption("MA副", "color", Red());
plt_MA.setOption("MA副", "line-type",Enum_Dot);
// 用下面三行代码取代上面两行代码
/*plt_MA.setOption("MA副+", "color", Red());
plt_MA.setOption("MA副+", "line-type",Enum_Dot);
plt_MA.line("MA副+",MA_Value);*/
}
Else // 斜率为负数时,均线显示为绿色十字点;
{
plt_MA.setOption("MA副", "color", Green());
plt_MA.setOption("MA副", "line-type",Enum_Cross);
// 用下面三行代码取代上面两行代码
/*plt_MA.setOption("MA副-", "color", Green());
plt_MA.setOption("MA副-", "line-type",Enum_Cross);
plt_MA.line("MA副-",MA_Value);*/
}
plt_MA.line("MA副",MA_Value);
}
}上述代码是要在副图中用Enum_Dot和Enum_Cross来取代线画均线,其中当前均线值小于前一均线值时(均线斜率为正数)画红圆点,反之(均线斜率为负数)画绿十字点。
问题是,当plot输出均线值的名称相同时,均线斜率由正值变负值时,均线最后一个正值画成了红十字点。反之均线斜率由负变正,均线最后一个负值画成了绿色圆点。只有在使用不同的名称才能达到我要求的目的(用代码中的注释块部分取代)。
请问者是否是个Bug,如何处理才能使用同一画线名称达到目的?

