开仓后为何还会重复开仓?是A_SendOrder的语法问题吗?
Params Numeric AfStep( 0.02); Numeric AfLimit( 0.2 ) ; Numeric timeExit(0.1455); Numeric timeInto(0.0900); Numeric a(0.006); Numeric initcapital(100); //单位:万 Numeric moneyrate(80); //资金使用比例:单位% Numeric money(100); //固定市值开仓:单位万 Vars Numeric oParCl( 0 ); Numeric oParOp( 0 ); Numeric oPosition( 0 ); Numeric oTransition( 0 ); Series<Numeric> sar1( 0 ); Series<Numeric> ParCl( 0 ); Series<Numeric> CC( 0 ); Numeric lots(0); //下单手数 Events OnInit() { SetInitCapital(initcapital*10000); //设定初始资金 SetMarginRate(0.1); //设定保证金比例 SetBeginBarMaxCount(1); SubscribeBar("rb2110.SHFE","3m",20210501); } OnBar(ArrayRef<Integer> indexs) { Range[0:DataSourceSize() - 1] { data1.ParabolicSAR( AfStep, AfLimit, oParCl, oParOp, oPosition, oTransition ) ; PlotNumeric( "ParCl" , data1.oParCl) ; ParCl = data1.oParCl; sar1 = data1.ParCl[1]; CC = data1.Close[1]; lots=IntPart(A_CurrentEquity*0.7/(myprice*contractunit*BigPointValue*0.1)); //计算开仓手数 If(A_FreeMargin == A_CurrentEquity) { If( CC > sar1 And Time < timeExit And Time >= timeInto) { A_SendOrder(Enum_Buy,Enum_Entry,lots,MIN(Close*1.01,Q_AskPrice)); } } If(A_TotalPosition == 1) { If(CC < sar1 || Time > timeExit) { A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),MAX(Close*0.99,Q_BidPrice)); } } } }