两个问题:为什么求不出来MACDDIFF / 为什么回测不成功
各位老师,同学,我编写了一段基于MACD的代码(时间单位为1TICK),但是遇到了两个问题:
1.在图标上能看到MACD和 MACDAVE的值,但 MACDDIFF却显示为N/A.
2. 回测不成功,只能显示一次成交,但实际上应该有很多次。
先谢谢大家。
QUOTE'
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric Lots(2);
Vars
NumericSeries MACDValue;
Numeric AvgMACD;
Numeric MACDDiff;
NumericSeries BarSinceEntry;
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACD",MACDValue);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDValue<=-10 && AvgMACD<=-10)
If(MarketPosition==0 && MACDDiff> 0)
{
Buy(Lots,Open);
PlotNumeric("MACDDiff",MACDDiff,0,Red);
}
If(MarketPosition==1 && BarSinceEntry>=1 && MACDDiff<0)
{
Sell(0,open);
PlotNumeric("MACDDiff",MACDDiff,0,Green);
}
End
"unquote 你的代码里,MACDDIFF是要求在条件里输出显示的。
也就是说只有在开仓以及平仓那个K线上都有值输出。其它K线就显示为N/A了。
如果想要所有K线上都显示,请修改公式代码 。 小米老师,看了您很多的帖子。现在我得到您的回复(我第一次问问题),真是有点小激动。我修改了我的代码,去掉了要求输出的语句,而且编译也成功,但是还是两天只有一次成交,这是不应该的。以下是我修改过的代码,请指教。谢谢
QUOTE"
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric Lots(2);
Vars
NumericSeries MACDValue;
Numeric AvgMACD;
Numeric MACDDiff;
NumericSeries BarSinceEntry;
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
If (MACDValue<=-10 && AvgMACD<=-10)
If(MarketPosition==0 && MACDDiff> 0)
{
Buy(Lots,Open);
}
If(MarketPosition==1 && BarSinceEntry>=1 && MACDDiff<0)
{
Sell(0,open);
}
End
"uNQUOTE yg1025 发表于 2018-5-31 16:24 static/image/common/back.gif
小米老师,看了您很多的帖子。现在我得到您的回复(我第一次问问题),真是有点小激动。我修改了我的代码, ...
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric Lots(2);
Vars
NumericSeries MACDValue;
Numeric AvgMACD;
Numeric MACDDiff;
// NumericSeries BarSinceEntry;
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
If (MACDValue<=-10 && AvgMACD<=-10)
If(MarketPosition==0 && MACDDiff> 0)
{
Buy(Lots,Open);
}
If(MarketPosition==1 && BarSSinceEntry>=1 && MACDDiff<0)
{
Sell(0,open);
}
End
页:
[1]