本人初学者,纯小白,用系统提供的macd 尝试加载,编译可以通过,但是只有一个开仓信号,有没有其他的信号了,一直不知道问题出在哪,麻烦老师给看看,谢谢。
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric lots(1);
Vars
Numeric MACDDiff;
Numeric AvgMACD;
series<Numeric> MACDValue;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; //计算快速均线与慢速均线的差值
AvgMACD = XAverage(MACDDiff,MACDLength); //再次计算平均
MACDValue = MACDDiff - AvgMACD; //计算差值
PlotNumeric(\"MACDDiff\",MACDDiff); //输出线
PlotNumeric(\"MACDDEA\",AvgMACD); //输出线
If (MACDValue >= 0) //如果MACDValue的值大于或等于零,金叉
PlotAuto(\"MACD\",MACDValue,0,Red,Enum_Bar); //输出红柱
Else //否则,死叉
PlotAuto(\"MACD\",MACDValue,0,Green,Enum_Bar); //输出绿柱
PlotNumeric(\"零线\",0);
}
//判断是否做多
If(MarketPosition<>1 And MACDValue[1]>0) //如果当前净持仓。。和金叉
{
Buy(lots,open);
}
//判断是否做空
If(MarketPosition<>1 And MACDValue[1]<0) //如果当前净持仓。。和死叉
{
SellShort(lots,open);
}
}
明白了,应该改成:If(MarketPosition<>-1 And MACDValue[1]<0) ,谢谢。
改成MarketPosition<=0,>=0就正常了,非常感谢。
再仔细想想这里怎么回事