多图层计算问题
2024-04-09 11:55

有两个问题在代码中,求大佬解决一下:

Vars

Series<Numeric> myjs; //序列变量

Global Numeric myjs2;

Global Integer dyid1; //增加的数据源id

Events

//初始化事件函数

OnInit()

{

//订阅辅助图层 这里应该不需要Range,如果周期为1分钟 就订阅2分钟周期

If(Frequency()==\"1m\")

{

dyid1 = SubscribeBar(Symbol, \"2m\", 20240101, 0, Enum_Data_RolloverBackWard);

Print(\"已订阅2m周期,dyid1=\" + Text(dyid1));

}

}

//当Bar更新变化时驱动,相当于收到Tick数据就更新

OnBar(ArrayRef <Integer> indexs)

{

}

//当下一个Bar开始前,最后一次当前bar驱动,参数indexs表示更新的图层编号数组

OnBarClose(ArrayRef <Integer> indexs)

{

Integer i = 0;

Range[i=0:DataCount-1]

{

//序列变量 这里可以修改 两个图层也能获取到

myjs = 1;

//判断相应图层执行

If(indexs[i]==0)

{

//问题1:当1分钟K线出现新bar的时候,但2分钟没有产生新bar,这里会执行2次(如果1分钟和2分钟同时产生新bar的时候没问题)

//原因:循环第1遍的时候 indexs[i]=0,i=0,循环第2遍的时候 indexs[i]=0,i=1

//请教如何解决这个问题?

//问题2:这里为什么不能修改序列变量myjs的值?所以我用了myjs2 = myjs2+1;但是执行2次后就不准确了,所以产生了问题1

myjs = myjs+1;

//用于打印K线时间

String dyintime = DateTimeToString(Date+Time);

Print(dyintime + \":图层(\" + Text(indexs[i]) + \")myjs = \" + Text(myjs) + \",变量i = \" + Text(i));

}

//在订阅图层dyid1执行

Else If(indexs[i]==dyid1 And dyid1!=0)

{

//用于打印K线时间

String dyintime = DateTimeToString(Date+Time);

Print(dyintime + \":订阅图层(\" + Text(indexs[i]) + \")myjs = \" + Text(myjs) + \",变量i = \" + Text(i));

}

}

Print(\">>>>>>>>>>>>>> 跳出了循环。 \");

}

评论区
kelong

谢谢,之前问的问题是由于我自己把逻辑没搞清楚

2024-04-10 13:56
kelong

再请教一下:

在订阅图层id1中往erwei数组中添加yiwei数组的三种方式哪个最好?

ArrayPushBack(Data1.erwei, Data1.yiwei);    //1

Data1.ArrayPushBack(Data1.erwei, Data1.yiwei);    //2

Data1.ArrayPushBack(erwei, yiwei);    //3

2024-04-10 11:43
kelong

\"\"

2024-04-09 19:02
顶部