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

//开仓

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

}

}

}

评论区
Ronald123

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

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

2024-01-31 10:26
Ronald123

会不会和这个语句有关:

OnInit()

   {

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

       SetConsecEntries(1);

   }

2024-01-31 08:32
顶部