hi,下图是个KDJ指标 请问:
1)为什么KValue是Series<Numeric> , DValue是Numeric ,两者的数据类型不一样 。
2)请问下面代码 DValue能否也改成Series<Numeric>数据类型呢 (详见下图红色mark)
//------------------------------------------------------------------------
// 简称: kdj1
// 名称: kdj_me1
Params
Numeric Length(9); // 也有用14的 即(9,3,3) 或 (14,3,3)
Numeric SlowLength(3);
Numeric SmoothLength(3);
Vars
Series<Numeric> HighestValue;
Series<Numeric> LowestValue;
Series<Numeric> KValue;
Numeric DValue; //为什么KValue是Series<Numeric> DValue是Numeric 两者的数据类型不一样
Numeric SumHLValue;
Numeric SumCLValue;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
HighestValue = HighestFC(High, length);
LowestValue = LowestFC(Low, Length);
SumHLValue = SummationFC(HighestValue - LowestValue,slowLength); //过去3根K线的即SlowLength(3) 上轨-下轨的差加起来 H-L 所以是SumHLValue
SumCLValue = SummationFC(Close - LowestValue,SlowLength); //过去3根K线的即SlowLength(3) 收盘价-下轨的差加起来 C-L 所以是SumCLValue
If(SumHLValue <> 0)
{
KValue = SumCLValue/SumHLValue*100;
}Else
{
KValue = 0;
}
DValue = AverageFC(KValue,SmoothLength); // SmoothLength(3)
PlotNumeric("K",KValue);
PlotNumeric("D",DValue);
PlotNumeric("J",3*KValue - 2*DValue);
PlotNumeric("Ref1",20); //超卖 跌太多可能反弹
PlotNumeric("Ref2",80); //超买 涨 太多可能反弹
}
}
Series<Numeric> KValue;
Numeric DValue;
一个是序列变量,一个是普通变量
序列能继承之前的值
至于为什么,看写的人
可能帮你写的人没有强迫症,能跑就行
但你把这个作为一个指标的时候,Series<Numeric> 和 Numeric 这两种类型 都可以
如果你这是策略的一部分,策略其他部分需要回溯引用 K 、D、J的值,就要用Series<Numeric> 类型。具体数据类型的应用场景可以看 零基础学量化 课程