请看问题在哪?开仓即平仓

Params //此处添加参数 Numeric Length(35); Numeric Lots(1); Vars //此处添加变量 Series<Numeric> MA; Numeric StopPrice1; Numeric StopPrice2; Numeric MA1; Events //此处添加公式函数 OnBar(ArrayRef<Integer> indexs) { MA1 = Average(Close,Length); MA=IntPart(MA1); PlotNumeric("MA",MA); If(MArketPosition!=1&&Close[1]>Open[1]&&MA[1]>MA[2]) //趋势向上,阳线开多 { Buy(Lots,Open); } If(MArketPosition==1 && BarsSinceEntry==0) { StopPrice1=Lowest(LOW,3); // 取止损价 } If(MArketPosition==1 && Close[1]<StopPrice1) { SellShort(Lots,Open); //止损反手空 } If(MArketPosition==1 &&BarsSinceEntry>2&& MA[1]<MA[2]) { Sell(Lots,Open); } If(MArketPosition!=-1&&Close[1]<Open[1]&&MA[1]<MA[2]) //趋势向下,阴线开空 { SellShort(Lots,Open); } If(BarsSinceEntry==0 && MArketPosition==-1) { StopPrice2=Highest(High,3); // 取止损价 PlotString("CandleStick",Text(StopPrice2),High,Red); //数值显示在取值的那根BAR上 } If(MArketPosition==-1 && Close[1]>StopPrice2) { Buy(Lots,Open); //止损反手多 } If(MArketPosition==-1 &&BarsSinceEntry>=2&& (MA[1]>MA[2])) { BuyToCover(Lots,Open); } }

在on_init里加上 设置双向持仓交易方向 //SetTradeSide(1); 我找了几天时间,从MC里再返到TB里找出来。

检查一下stopprice1和stopprice2的值计算是否正确,这两个容器的计算最好不要放在分支结构里

回复:If(MArketPosition!=1&&Close[1]>Open[1]&&MA[1]>MA[2]) { Buy(Lots,Open); StopPrice1=Lowest(LOW,3); } /*If(MArketPosition==1 && BarsSinceEntry==0) { StopPrice1=Lowest(LOW,3); }*/ 改了还是不行 If(MArketPosition!=-1&&Close[1]<Open[1]&&MA[1]<MA[2]) { SellShort(Lots,Open); StopPrice2=Highest(High,3); } /*If(BarsSinceEntry==0 && MArketPosition==-1) { StopPrice2=Highest(High,3); PlotString("CandleStick",Text(StopPrice2),High,Red); }*/ 这个也改了

回复:这还是在分支结构里啊! 这两个price不要放在if里! 视频区看一下序列类型使用须知 把price的计算放在最外面的结构里

回复:我迷糊了,因为要计算进场位置前三根K线的最高和最低来确定止损价,不IF我这小白还不会,请教了

回复:哥,前两天就你前面那个帖子里面给你回复了正确的写法,去看看啊

回复:If(BarsSinceEntry==0 && MArketPosition==-1) { StopPrice2=Highest(High,3); // 取止损价 PlotString("CandleStick",Text(StopPrice2),High,Red); //数值显示在取值的那根BAR上 } 是这样吗?如果不对能给个答案吗?

回复:刘老师反复的给你说:不要在IF分支结构里面计算序列变量。你偏要在分支结构里面计算序列变量。我给你说:我在你前面的帖子里面给你写好了正确的写法,只需去看看就行了。你偏不去看。 无话可说了,告辞。