全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
多品种夜盘数据不全
2023-03-31 17:45

我在使用tb的教程中历史涨跌停模板时:见链接: https://www.tbquant.net/helper?navigate=tbquant&words=%E6%B6%A8%E8%B7%8C%E5%81%9C&cid=2041;

如果我订阅的品种较多,如20个品种,就发现最后几个品种夜盘数据不全,见下面复现代码:

Params

array<string> mysymbol([au888.SHFE,cu888.SHFE,ru888.SHFE,CF888.CZCE,       ss888.SHFE,zn888.SHFE,al888.SHFE,sn888.SHFE, 

 i9888.DCE,p9888.DCE,rb888.SHFE,m9888.DCE,    fu888.SHFE,TA888.CZCE,sp888.SHFE,    AP888.CZCE,  jd888.DCE,lh888.DCE,SA888.CZCE,      MA888.CZCE]);//20个*/

//array<string> mysymbol([au888.SHFE,cu888.SHFE,ru888.SHFE,CF888.CZCE,       ss888.SHFE,zn888.SHFE]);

Vars

    Dic<Array<Numeric>> mysettleprice(TB_SettlePrice);  //结算价

    Dic<Array<Numeric>> mypricelimit(TB_PriceLimit);    //停板比例

    Series<Numeric> myuplimit(0,1);   //涨停价

    Series<Numeric> mydnlimit(0,1);     //跌停价  

    Numeric myjump;            //每跳值/最小价格变动

global Numeric f(2);               //切换周期数-15m,1d;

Numeric i;

Events

OnInit()

{

f=2;

for i =0 to GetArraySize(mysymbol)-1

{

SubscribeBar(mysymbol[i],1d,20230201);

SubscribeBar(mysymbol[i],5m,20230201);

}

}

OnBar(ArrayRef<Integer> indexs)

{

data[f*i+1].Commentary(标识1);

for i = 0 to GetArraySize(mysymbol)-1//

{

data[f*i+1].Commentary(标识2);

//涨跌停板模块

data[f*i+1].myjump=data[f*i+1].MinMove*data[f*i+1].pricescale;

If(data[f*i+1].ExchangeCode==CZCE)

{

data[f*i+1].myuplimit=data[f*i+1].RoundUp(mysettleprice[0][0]*(1+0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

data[f*i+1].mydnlimit=data[f*i+1].RoundDown(mysettleprice[0][0]*(1-0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

}Else If(data[f*i+1].ExchangeCode==DCE)

{

data[f*i+1].myuplimit=data[f*i+1].RoundDown(mysettleprice[0][0]*(1+0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

data[f*i+1].mydnlimit=data[f*i+1].RoundUp(mysettleprice[0][0]*(1-0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;



}Else If(data[f*i+1].ExchangeCode==SHFE)

{

data[f*i+1].myuplimit=data[f*i+1].RoundDown(mysettleprice[0][0]*(1+0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

data[f*i+1].mydnlimit=data[f*i+1].RoundDown(mysettleprice[0][0]*(1-0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

}Else If(data[f*i+1].ExchangeCode==CFFEX)

{

data[f*i+1].myuplimit=data[f*i+1].RoundDown(mysettleprice[0][0]*(1+0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

data[f*i+1].mydnlimit=data[f*i+1].RoundUp(mysettleprice[0][0]*(1-0.01*data[f*i+1].mypricelimit[0][0])/myjump,0)*data[f*i+1].myjump;

}

If(data[f*i+1].myuplimit<=data[f*i+1].mydnlimit) Return;

}

}

见下面图,我通过Commentary(标识2)来识别,图1中看到9:10时,有标识2显示,图2显示时间是22:35,但标识2没有显示。接着如果我把历史涨跌停模板删除,“//涨跌停板模块”以下删除,发现图1图2都有显示标识2,可以看出涨跌停模板影响后面品种夜盘数据的获取。 请问怎样解决该问题,在使用涨跌停模板情况下?

data-href=data-href=

zhangnj

data-href=无法复现,请补充一下你的问题 和你想要解决的问题 详细说明

2023-04-07 09:26
justin321
@zhangnj

谢谢您的回复,我的代码是直接在tb终端复制过来,您可能没注意对齐等方面而造成无法运行,下图是我代码并编译成功的截图

\"data-href=\"如还有什么我没表达清楚的,请指出。

2023-04-07 10:18
justin321

0

2023-04-07 10:12
kyover

If(data[f*i+1].myuplimit<=data[f*i+1].mydnlimit) Return;

最后这句代码的问题,如果这个图层的涨停价格小于跌停价格,停止循环,有可能是出现异常数据的情况。

2023-04-07 14:25
justin321
@kyover

非常感谢,测试代码ok,正式策略测试中,应该没问题。只是不知道怎样才会出现涨停小于跌停?

2023-04-07 15:59
您未登录,请先 登录注册 后发表评论
顶部