启动策略的一瞬间为什么会连续发错误单?

//------------------------------------------------------------------------

Params

   Numeric Length(60);  //均线周期

   Numeric lots(1); //开仓手数

Vars    

   Series<Numeric> AvgValue;

   Series<Bool> jincha;

   Series<Bool> sicha;

   global array<signal> signals_book;

   

Events

//此处实现事件函数

//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作

OnInit()

{

//与数据源有关

Range[0:DataCount-1]

{

//=========数据源相关设置==============

AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权


AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格


AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓


AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算

Array<String> symbols;

//获取数据源委托映射合约

Bool ret = GetLayerOrderMapSymbols(symbols);

Print("GetLayerOrderMapSymbols:" + IIFString(ret, "True", "False") + "," + TextArray(symbols));

//委托映射到主力

ret = SetOrderMap2MainSymbol();

Print("SetOrderMap2MainSymbol:" + IIFString(ret, "True", "False"));

ArrayClear(symbols);

//获取数据源委托映射合约

ret = GetLayerOrderMapSymbols(symbols);

Print("GetLayerOrderMapSymbols:" + IIFString(ret, "True", "False") + "," + TextArray(symbols));

}

}

OnReady()

{

PrintClear;

}

OnBar(ArrayRef<Integer> indexs)

{    

AvgValue = AverageFC(Close,Length);

If(Close > AvgValue)

{

 PlotAuto("均线",AvgValue,AvgValue,Red,Enum_Line,Enum_Solid);

 }Else

 {

 PlotAuto("均线",AvgValue,AvgValue,Green,Enum_Line,Enum_Solid);

  }

jincha = CrossOver(Low,AvgValue);

sicha = CrossUnder(High,AvgValue);


       //开平仓交易

If(MarketPosition <> 1 && jincha[1])

{        

Buy(lots,Open);

}

If(MarketPosition <> -1 && sicha[1])    

{

SellShort(lots,Open);

}

}

OnSignal(ArrayRef<Signal> sigs)

   {

       Print("OnSignal:" + TextArray(sigs));

       Integer i = 0;

       For i = 0 To GetArraySize(sigs) - 1

       {

           SignalRef sig = sigs[i];

           If(sigs[i].comboffset == Enum_Entry)

           {

            //检查一下有没有未成交委托单

               If(A_GetOpenOrderCount()==0)

               {

                Array<Integer> orderids;

                A_SendOrderEx(data[sigs[i].index].symbol,sigs[i].side,sigs[i].comboffset,sigs[i].volume,sigs[i].price,orderids);

                print("---onsignal没有未成交单---");

                print("bartime:"+TimeTostring(time));

                   print("currenttime:"+TimeToString(currenttime));

               }Else

               {

                   //把信号做一个记录,等到后面成交以后再发单

                   arraypushback(signals_book,sigs[i]);

                   print("---onsignal有成交单---");

                   print("大小:"+text(GetArraySize(signals_book)));

                 }

               }Else

               {

                 Array<Integer> orderids;

                 A_SendorderEx(data[sigs[i].index].symbol,sigs[i].side,sigs[i].comboffset,sigs[i].volume,sigs[i].price,orderids);

                 print("---onsignal正常平仓---");

                 print("bartime:+TimeToString(time)");

               }

           }

       }

   

   OnFill(FillRef ordFill)

   {

    If(A_GetOpenOrderCount()<>0)

{

return;

}Else

{

signals_book;

Numeric i;

for i =0 to GetArraySize(signals_book) - 1

{

array<Integer> orderids;

   A_SendorderEx(data[signals_book[i].index].symbol,signals_book[i].side,signals_book[i].comboffset,signals_book[i].volume,signals_book[i].price,orderids);

   print("---onfi11开仓---");

   print("bartime:"+TimeToString(time));

   print("currenttime:"+TimeToString(currenttime));

}

ArrayClear(signals_book);

print("--删除数组--");

print("大小:"+text(GetArraySize(signals_book)));

    }

}

//------------------------------------------------------------------------

// 编译版本 2024/12/20 141420

// 版权所有 wt9821506389

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

OnBarClose发两次单
在开盘一瞬间下单的问题
后复权会导致的错误
发单可以发永久单,或者隔夜单吗
为什么策略交易工作区会失效?
策略运行管理重新启动策略单元时,是只启动onbar,还是全启动,包括oninit?
策略运行管理重新启动策略单元时,是只启动onbar,还是全启动,包括oninit?
有没有高手研究过连续错误下单问题
请问一下,用最新价发委托单,会发生信号闪烁,不停的开单,怎么解决?谢谢工程师!
如何启动策略报警呢?

看看右边废除的原因是什么?

可平仓仓位不足,策略启动那一瞬间是没有信号的,突然就出现了一堆平仓信号

手机上粗看了下你的代码,BUYSELL图表信号,通过信号代理A函数发单,之前正常用过吗? 我觉得A函数下单部分应该有问题