//------------------------------------------------------------------------
Params
Numeric FastLengthMA(20);// 短期指数平均线参数
//Numeric SlowLengthMA(20);// 长期指数平均线参数
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Series<Numeric> MACDDiff;
Series<Numeric> AvgMACD;
Series<Numeric> MACDValue;
Series<Numeric> Fast_ma;
Series<Numeric> Slow_ma;
Plot pen1;
Plot pen2;
Events
OnReady()
{
SetBackBarMaxCount(1+Max(FastLength,SlowLength));
Range[0:DataSourceSize() - 1]
{
setPlotOption("MA1", "begin-bar", FastLengthMA);
//setPlotOption("MA2", "begin-bar", SlowLengthMA);
setPlotOption("MACDDiff", "begin-bar", SlowLength);
setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength);
setPlotOption("MACD", "begin-bar", SlowLength + MACDLength);
}
pen2.figure(0); //开个副图
}
OnBar(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLengthMA);
// AvgValue2 = AverageFC(Close,SlowLengthMA);
PlotNumeric("MA1",AvgValue1);
// PlotNumeric("MA2",AvgValue2);
{
If(CurrentBar==0)
{Fast_ma=Close;
Slow_ma=Close;
MACDDiff=Fast_ma-Slow_ma;
AvgMACD=MACDDiff;
} Else
{
Fast_ma=Fast_ma[1]+(Close-Fast_ma[1])*2/(FastLength+1);
Slow_ma=Slow_ma[1]+(Close-Slow_ma[1])*2/(SlowLength+1);
MACDDiff=Fast_ma-Slow_ma;
AvgMACD=AvgMACD[1]+(MACDDiff-AvgMACD[1])*2/(MACDLength+1);
AvgMACD=AvgMACD[1]+(Fast_ma-Slow_ma-AvgMACD[1])*2/(MACDLength+1);
}
pen2.line("MACDDiff",date+time,MACDDiff);//画出MACD的两条均线
pen2.Line("macddea",date+time,AvgMACD);
Numeric X;
X=((FastLength+1)*(SlowLength+1)*((AvgMACD[1]*(MACDLength+1)-2*(AvgMACD[1]))/(MACDLength-1)-Fast_ma[1]+Slow_ma[1])/2+(SlowLength+1)*Fast_ma[1]-(FastLength+1)*Slow_ma[1])/(SlowLength-FastLength);
pen1.line("X",X);
MACDValue = MACDDiff - AvgMACD;
pen1.line("X",X);
既然你画的是X,那么就验算X的值
这两个参数你确定对的么?
分开的,一个是用来计算均线的,一个是用来计算MACD的