这个策略能编译,加载以后没有交易信号显示,能帮忙看一下吗?
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric Lots(1);
Vars
Series<Numeric> MACDDiff;
Numeric AvgMACD;
Numeric MACDValue;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线
AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线
MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱
//交易条件快线上过0轴做多,下过0轴平仓。
if(MarketPosition<>0 And CrossOver(MACDDiff,0))
Buy(lots,Open);
If(MarketPosition==1 And CrossUnder(MACDDiff,0));
Sell(Lots,Open);
}
}
crossover和crossunder单独用用bool变量先计算 再把这个boo变量放到if里
还是不行
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric Lots(1);
Vars
Series<Numeric> MACDDiff;
Numeric AvgMACD;
Numeric MACDValue;
Bool M;
Bool N;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线
AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线
MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱
M = CrossOver(MACDDiff,0);
N = CrossUnder(MACDDiff,0);
//交易条件快线上过0轴做多,下过0轴平仓。
if(MarketPosition<>0 And M)//在空仓的情况下 快线上过0轴
Buy(lots,Open);
If(MarketPosition==1 And N);//持有多单 快线下过0轴
Sell(Lots,Open);
}
}
还是没有交易信号出现, 求解答。
代码逻辑错误了,帮助文档看看mp的用法http://www.tbquant.net/fun/542.html,一开始就mp<>0(有持仓的意思),是无法进场的,改成mp == 0 然后buy,不要主观认为满足信号,代码满足就是满足,不满足就是不满足,可以用输出类的函数输出if()条件里的条件是否都满足加以判断
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Numeric Lots(1);
Vars
Series<Numeric> MACDDiff;
Numeric AvgMACD;
Numeric MACDValue;
Series<Bool> M(false,2);
Series<Bool> N(false,2);
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;//dif快线
AvgMACD = XAverage(MACDDiff,MACDLength);//dea慢线
MACDValue = MACDDiff - AvgMACD;//柱体, >0 红柱,<0 绿柱
PlotNumeric("MACDDiff",MACDDiff);
PlotNumeric("zero",0);
M = CrossOver(MACDDiff,0);
N = CrossUnder(MACDDiff,0);
//Commentary("M="+IIFString(M,"True","False"));
//Commentary("N="+IIFString(N,"True","False"));
//交易条件快线上过0轴做多,下过0轴平仓。
if(MarketPosition<>1 And M[1]) //在空仓的情况下 快线上过0轴
Buy(lots,Open);
If(MarketPosition==1 And N[1]) //持有多单 快线下过0轴
Sell(0,Open);
}
}