缺少分号

Params Vars Numeric MA1; Numeric MA3; Events OnBar(ArrayRef<Integer> indexs) { PlotNumeric("MA1",AverageFC(Close,5)); PlotNumeric("MA3",AverageFC(Close,20)); if(CrossOver(MA1,MA3)) PlotBool("金叉",true); if(MarketPosition<>1) and CrossOver(MA1,MA3)); { buy(1,Close); } if(MarketPosition<>-1)and CrossUnder(MA1,MA3)); { sellShort(1,Close); } } 编译的时候错误 第20行缺少分号。 可是我分号加进去还是一样显示同样的错吴。求大神指导一下。

if(MarketPosition<>1) and CrossOver(MA1,MA3)) 多个括号

回复:已解决,多谢。写程序比绣花要困难100倍

回复:编译已经成功,添加到K线图上,没有交易信号。是哪里错了吗?看视频里是有信号的。

回复:Params Vars Numeric MA1; Numeric MA3; Bool B; Bool S; Events OnBar(ArrayRef<Integer> indexs) { MA1 = AverageFC(Close,5); MA3 = AverageFC(Close,20); PlotNumeric("MA1",MA1); PlotNumeric("MA3",MA3); B = CrossOver(MA1,MA3); S = CrossUnder(MA1,MA3); if(B) PlotBool("金叉",true); if(MarketPosition<>1 and B) { buy(1,OPEN); } if(MarketPosition<>-1 and S) { sellShort(1,OPEN); } } 对比一下这组代码和你那组代码的区别,在看一下网上老师讲课的视频你就知道问题差在哪了。 买入卖出的close换成了open,是因为用close会产生信号闪烁 信号闪烁产生原因及处理方法20211104 http://www.tbquant.net/train/239.html

回复:用open的话,回测不是会出现偷价的问题吗?

回复:open是开盘价,出现之后就固定死了,不会变的,怎么可能会出现偷价

回复:用CrossOver(MA1,MA3)和MA1>MA3 And MA1[1]<MA3{1]有没有区别?

回复:@xdqh10180603 没区别

不是缺少分号,而是分号太多了。if(MarketPosition<>1) and CrossOver(MA1,MA3));和if(MarketPosition<>1) and CrossOver(MA1,MA3));这两句后面是不能有分号的。 顺便说一句,你把CrossOver放到 if 语句内部是会出问题的。具体可以看看这个视频:http://www.tbquant.net/train/121.html

回复:我分号去掉还是显示同样的错误,我也是看你发我的这个视频开始学做的,编译不了,做不下去了,卡在这里。