全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
使用全局变量计算均价非常准确,而用局部变量算出来误差就很大,是怎么回事呢?
long1116 分享到
2023-04-12 20:51


Vars


Numeric sumturnover(0);


Numeric todayv(0);

Numeric avgp;





Events

//此处实现事件函数




//下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组

OnBarClose(ArrayRef<Integer> indexs)

{

range[0:0]

{  

if(time>=0.0930)

{

sumturnover=sumturnover+turnover;

todayv=todayv+v;

avgp=(sumturnover/todayv/300);

}

Print(DateToString(date)+\" \"+TimeToString(Time)+\"当前均价为\"+text(avgp));  




if(time==0.1459)

{

sumturnover=0;

todayv=0;

}

}

range[1:1]

{  

if(time>=0.0930)

{

sumturnover=sumturnover+turnover;

todayv=todayv+v;

avgp=(sumturnover/todayv/300);

}

Print(DateToString(date)+\" \"+TimeToString(Time)+\"当前均价为\"+text(avgp));  

Print(DateToString(date)+\" \"+TimeToString(Time)+\"C4100的当前均价为\"+text(data0.avgp));




if(time==0.1459)

{

sumturnover=0;

todayv=0;

}


}

}

上面的用局部变量算出来误差就很大

下面用全局变量计算出来的就非常精确了

Vars

//此处添加变量


Global Numeric sumturnover1(0);

Global Numeric sumturnover2(0);

Global Numeric todayv1(0);

Global Numeric todayv2(0);

Global Numeric avgp1;

Global Numeric avgp2;




Events

//此处实现事件函数

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

OnInit()

{

SubscribeBar(\"IH2304.CFFEX\",\"1m\",20230412);

SubscribeBar(\"IF2304.CFFEX\",\"1m\",20230412);


}


//下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组

OnBarClose(ArrayRef<Integer> indexs)

{

range[0:0]

{  if(time>=0.0930)

{

sumturnover1=sumturnover1+turnover;

todayv1=todayv1+v;

avgp1=(sumturnover1/todayv1/300);

}

Print(DateToString(date)+\" \"+TimeToString(Time)+\"当前均价为\"+text(avgp1));  

}

if(time==0.1459)

{

sumturnover1=0;

todayv1=0;

}

Range[1:1]

{

{  if(time>=0.0930)

{

sumturnover2=sumturnover2+turnover;

todayv2=todayv2+v;

avgp2=(sumturnover2/todayv2/300);

}

 Print(DateToString(date)+\" \"+TimeToString(Time)+\"当前均价分别为\"+text(avgp2));  

 }

 if(time==0.1459)

{

sumturnover2=0;

todayv2=0;

}


}

}

请问老师这是怎么回事呢?我希望能用局部变量,当我有很多个数据源是,这样就不用每个数据源都单独定义全局变量,单独写代码了

您未登录,请先 登录注册 后发表评论
顶部