写了开仓平仓的条件,运行后出现多单马上接空单,空单马上接多单,明明条件没满足,一平马上就开了。帮忙看看有没有逻辑错误,谢谢老师。止盈止损是复制官网文档的。

//开仓 If(CountIf(WBRATE>=up,5)==5 And Summation(WBRATE,sumnum)>=addup) { Buy(1,close); } If(CountIf(WBRATE<=down,5)==5 And Summation(WBRATE,sumnum)<=adddown) { SellShort(1,close); } //止盈止损 MinPoint = MinMove*PriceScale; MyEntryPrice = AvgEntryPrice; If(MarketPosition == 1 And BarsSinceEntry >= 1) // 有多仓的情况 { If(lasttk.last >= MyEntryPrice + TakeProfitSet*MinPoint) // 止赢条件表达式 { MyExitPrice = MyEntryPrice + TakeProfitSet*MinPoint; Sell(0,MyExitPrice); } Else If(lasttk.last <= MyEntryPrice - StopLossSet*MinPoint) // 止损条件表达式 { MyExitPrice = MyEntryPrice - StopLossSet*MinPoint; Sell(0,MyExitPrice); } } Else If(MarketPosition == -1 And BarsSinceEntry >= 1) // 有空仓的情况 { If(lasttk.last <= MyEntryPrice - TakeProfitSet*MinPoint) // 止赢条件表达式 { MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint; BuyToCover(0,MyExitPrice); } Else If(lasttk.last >= MyEntryPrice + StopLossSet*MinPoint) // 止损条件表达式 { MyExitPrice = MyEntryPrice + StopLossSet*MinPoint; BuyToCover(0,MyExitPrice); } } }

建议你找一下和官网文档不一样的地方,控制变量法

回复:你好,我问问我这个wbrate变量是这样定义的Series<Numeric> WBRATE;然后这个判断WBRATE>=0.75会不会变成series<bool>类型,因为我看countif这个函数第一个变量是需要series<bool>类型的。谢谢回复

会不会和这个语句有关:OnInit() { //设置最大连续建仓次数 SetConsecEntries(1); }