基于MarketPosition == 0条件判断开仓,为什么会重复开仓?
我在前面的那根阴线已经开了2手多单,但是为什么在画圈的这根K线又建了2手多单呢?打印出来的MarketPosition也是1.代码如下:
我在前面的那根阴线已经开了2手多单,但是为什么在画圈的这根K线又建了2手多单呢?打印出来的MarketPosition也是1.代码如下:
又在交易条件里看到global了
回复:是global的问题吗
回复:建议你看一下零基础课程吧。一般新手我是不建议用globa类型作为交易信号的状态条件。global不是说不行,只是如果没有设计好业务逻辑就很容易出错,99%会信号闪烁。当然有一些熟练的开发者也是会用global作为交易信号的状态条件这个熟练的前提,最基本也要求两条第一条非常了解onbar行情驱动的机制第二条非常了解global数据结构的特性这两条你可以问问自己评估一下如果得不到答案,我建议你先看一下零基础课程。 https://video.tbquant.net/?menu=%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%AD%A6%E9%87%8F%E5%8C%96
是否跟我定义的变量有关系,之前定义的是series类型
另外,我前面写了均线止损逻辑,不知道会不会对下面的开仓逻辑有影响?AvgValue20 = AverageFC(Close,MALength); PlotNumeric("MA20",AvgValue20); //空单止损 if(Close[1]<=AvgValue20[1] && Close>AvgValue20) { myExitPrice = Close;// myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); // 大跳空的时候用开盘价代替// BuyToCover(0,myExitPrice); // 数量用0的情况下将全部平仓// CanOpenShort = True; If(BuyToCover(0,myExitPrice)) {//下单成功,做多标识取消 CanOpenShort=True; } } //多单止损 if(Close[1]>=AvgValue20[1] && Close<AvgValue20) { myExitPrice = Close;// myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的时候用开盘价代替// Sell(0,myExitPrice); // 数量用0的情况下将全部平仓// PreBreakoutFailure = True;// CanOpenLong = True; If(Sell(0,myExitPrice)) {//下单成功,做多标识取消 CanOpenLong=True; } }
11.3 今天又出现这个问题了。在11.3收盘的时候又出现下单了,从图上可以看出,我在下单之前用了MarketPosition 。CanOpenLong做了双重控制,还是可以重复开多单。消息中心未出现闪烁信号。onbarclose设置执行的时间是:
看看消息中心有没有那个闪烁提示
正常开仓没问题,你已有仓位了A,MarketPosition ==0条件1不附合,那往下走条件2附合,B附合走条件3开仓。1、改MarketPosition <=0,2、查B有仓位了是False,为什么变成True了,3、把3删IF(..........)
回复:按说1条件不符合,应该就走不进去了,为啥还要判断2 、和3 呢?