周期为1分钟时,成交一次就卡住了

周期为2分钟时,则正常了,每天几次成交,到时间14::56分准时退出。
是什么原因呢?
有多个退出条件,当周期越小,越容易出现满足退出条件不执行,而把周期设置大一点就正常了,这是什么原因呢?
当周期为15s,30s,时都会出现满足退出条件不执行,当周期大于1分钟时,则能够正常运行,一天成交几次
代码看看,time是k线时间
周期太小的话0.1455 后面还有1456 1457
Params
//此处添加参数
array<string> mysymbol([\"000016.SSE\",\"HO2304-P-2400.CFFEX\",\"HO2304-C-2450.CFFEX\",\"HO2304-P-2450.CFFEX\",\"HO2304-C-2500.CFFEX\",\"HO2304-P-2500.CFFEX\",\"HO2304-C-2550.CFFEX\",\"HO2304-P-2550.CFFEX\",\"HO2304-C-2600.CFFEX\",\"HO2304-P-2600.CFFEX\",\"HO2304-C-2650.CFFEX\",\"HO2304-P-2650.CFFEX\",\"HO2304-C-2700.CFFEX\",\"HO2304-P-2700.CFFEX\",\"HO2304-C-2750.CFFEX\",\"HO2304-P-2750.CFFEX\",\"HO2304-C-2800.CFFEX\",\"HO2304-P-2800.CFFEX\",\"HO2304-C-2850.CFFEX\",\"HO2304-P-2850.CFFEX\",\"HO2304-C-2900.CFFEX\"
]);
Numeric COUNTS(1);//开仓手数
Numeric outfit(0);//允许50指数浮动范围
Numeric datafit(50);//数据源变化单位
Numeric dynamicfit(50);//指数差值
Numeric startfit(-150);//数据源起始设置
Vars
Global Array< Numeric> count(0);
Global Numeric countoneday(0);
Global array< Numeric> lastdayclose;//上日收盘价
Global Array<Numeric> lastlastdayclose;//前日收盘价
global bool switchs(true);
Global array< Numeric> entrycon;
global array< Numeric> exitcon;
Global Array <numeric> EntryPrices;
Global Numeric i;
Global Array< Numeric> sumturnover(0);
Global Array< Numeric> sumvolume(0);
Global Array< Numeric> avgp;
Defs
//此处添加公式函数
Numeric calcAvg(Numeric a,Numeric b)
{
return (a+b)/2;
}
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
{
FOR i = 0 to GetArraySize(mysymbol)-1
{
SubscribeBar(mysymbol[i],\"15s\",20230317);
count[i]=0;
}
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
if (time>0.1450)
{
countoneday=0;
}
Range[i=1:datacount]
{
if( (i+2)%2==1)
{
if (CurrentBar==0)
{
lastdayclose[i]=data[i].open;
}
if(time==0.1459)
{
lastlastdayclose[i]=lastdayclose[i];
}
if ((data0.open>(2500+startfit+((i+1)/2)*datafit)) && (time<0.11) && (time>0.0930)&&(data0.open<(2500+startfit+((i+1)/2)*datafit+dynamicfit)) )
{
if (count[i]<COUNTS&&switchs&&countoneday<2)
{
buy(1,open);
EntryPrices[i]=open;
Print(DateToString(date)+\" \"+TimeToString(Time)+\"P\"+text(2500+startfit+((i+1)/2)*datafit)+\"买开:\"+text(data[i].open));
count[i]=1;
entrycon[i+1] = 1;
switchs=False;
countoneday=countoneday+1;
}
}
if ((data0.open>(2500+startfit+dynamicfit+((i+1)/2)*datafit+outfit))or(time>=0.1455) or (data0.open<(2500+startfit+((i+1)/2)*datafit-outfit)) or (time>0.1455))
{
if(MarketPosition>0 and count[i]==1 )
{
sell(0,open);
Print(DateToString(date)+\" \"+TimeToString(Time)+\"P\"+text(2500+startfit+((i+1)/2)*datafit)+\"卖平:\"+text(data[i].open));
count[i]=0;
exitcon[i+1]=1;
}
}
}
if( (i+2)%2==0)
{
if (CurrentBar==0)
{
lastdayclose=open;
}
if(time==0.1459)
{
lastlastdayclose=lastdayclose;
}
if ((entrycon[i]==1) &&(count[i]<COUNTS))
{
buy(1,open);
Print(DateToString(date)+\" \"+TimeToString(Time)+\"C\"+text(2500+startfit+dynamicfit+i*datafit/2)+\"买开:\"+text(data[i].open));
count[i]=1;
EntryPrices[i]=data[i].open;
entrycon[i] = 0;
}
if(count[i]==1&&MarketPosition>0 && exitcon[i]==1)
{
sell(0,open);
Print(DateToString(date)+\" \"+TimeToString(Time)+\"C\"+text(2500+startfit+dynamicfit+i*datafit/2)+\"卖平:\"+text(data[i].open));
count[i]=0;
exitcon[i]=0;
switchs=true;
}
}
}
}
OnBarClose(ArrayRef<Integer> indexs)
{
Numeric i = 1;
range[i=1:datacount]
{ if(time>=0.0930 &&time<=0.1456)
{
sumturnover[i]=sumturnover[i]+turnover;
sumvolume[i]=sumvolume[i]+v;
avgp[i]=(sumturnover[i]/sumvolume[i]/100);
}
if(time>0.1456)
{
sumturnover[i]=0;
sumvolume[i]=0;
}
}
}