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