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

//开仓

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);

}

}

}

【发单】平多的指令成了开空单
多单开仓条件下,多单止损后如何不让再开多单
麻烦老师把文字部分(先平掉所有空单再开多单,先平掉所有多单再开空单)
能只开多单或者只开空单吗
在持有多单的情况下开空单如何表达
如何获取当前持仓空单的数量和多单的数量
条件单
实现多空单同时存在问题?
设置条件单
buy指令只开了多单,但没有把原有的空单平仓。请问这样合理吗?

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

你好,我问问我这个wbrate变量是这样定义的Series<Numeric> WBRATE;

然后这个判断WBRATE>=0.75会不会变成series<bool>类型,因为我看countif这个函数第一个变量是需要series<bool>类型的。谢谢回复

会不会和这个语句有关:

OnInit()

   {

       //设置最大连续建仓次数

       SetConsecEntries(1);

   }