请问怎么让变量在当根k线有效,知道直接定义变量可以,但是这只是在走完k线模式才有效,在1秒固定轮训却失效,在1秒固定轮训中,每刷新一次数据该变量立即会被重新初始化,以下是
该变量的日志:
2012-12-31 10:02:58.425 CTR的值为:1
2012-12-31 10:02:59.425 上一根K线的持仓状态是:1
2012-12-31 10:02:59.425 CTR的值为:1
2012-12-31 10:03:00.441 条件2成立,此时CTR的值为:1
2012-12-31 10:03:00.441 此时条件2成立,条件2的值为:1
2012-12-31 10:03:00.441 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:00.441 上一根K线的持仓状态是:1
2012-12-31 10:03:00.441 CTR的值为:0
2012-12-31 10:03:01.425 条件2成立,此时CTR的值为:1
2012-12-31 10:03:01.425 此时条件2成立,条件2的值为:1
2012-12-31 10:03:01.425 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:01.425 上一根K线的持仓状态是:1
2012-12-31 10:03:01.425 CTR的值为:0
2012-12-31 10:03:02.425 条件2成立,此时CTR的值为:1
2012-12-31 10:03:02.425 此时条件2成立,条件2的值为:1
2012-12-31 10:03:02.425 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:02.425 上一根K线的持仓状态是:1
2012-12-31 10:03:02.425 CTR的值为:0
2012-12-31 10:03:03.425 条件2成立,此时CTR的值为:1
2012-12-31 10:03:03.425 此时条件2成立,条件2的值为:1
2012-12-31 10:03:03.425 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:03.425 上一根K线的持仓状态是:1
2012-12-31 10:03:03.425 CTR的值为:0
2012-12-31 10:03:04.425 条件2成立,此时CTR的值为:1
2012-12-31 10:03:04.425 此时条件2成立,条件2的值为:1
2012-12-31 10:03:04.425 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:04.425 上一根K线的持仓状态是:1
2012-12-31 10:03:04.425 CTR的值为:0
2012-12-31 10:03:05.425 条件2成立,此时CTR的值为:1
2012-12-31 10:03:05.425 此时条件2成立,条件2的值为:1
2012-12-31 10:03:05.425 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:05.425 上一根K线的持仓状态是:1
2012-12-31 10:03:05.425 CTR的值为:0
输出该语句的代码是:
if cond2 and TJ>=0 and CTR=1 then begin
if tholding2>0 then tsell(1,0,mkt),orderqueue;
if tholding2=0 then tbuyshort(1,1,mkt),orderqueue;
debugout('条件2成立,此时CTR的值为:%.0f',CTR);
debugfile('E:\DEBUG\test.txt','条件2成立,此时CTR的值为:%.0f',CTR);
ZT:=-1;
CTR:=0;
debugout('此时条件2成立,条件2的值为:%.0f',cond2);
debugfile('E:\DEBUG\test.txt','此时条件2成立,条件2的值为:%.0f',cond2);
debugout('此时CTR的值被改变,改变后的值为:%.0f',CTR);
debugfile('E:\DEBUG\test.txt','此时CTR的值被改变,改变后的值为:%.0f',CTR);
end
ps:cond2是用ref作为判断语句的,不会出现信号闪烁问题。
正常来说变量CTR在第1秒会被输出,之后在当根k线不再输出,但是在1秒固定轮训模式直接定义的变量在当根k线有效却基本失效,
请问老师有什么办法呢?谢谢。
输出日志中从10:03这根k线有问题(3分钟周期),之后也是类似问题,正常的话应该是第一秒才输出:
2012-12-31 10:03:01.425 条件2成立,此时CTR的值为:1
2012-12-31 10:03:01.425 此时条件2成立,条件2的值为:1
2012-12-31 10:03:01.425 此时CTR的值被改变,改变后的值为:0
2012-12-31 10:03:01.425 上一根K线的持仓状态是:1
2012-12-31 10:03:01.425 CTR的值为:0
之后输出CTR的值为0,但实际不是这样。
所以怀疑“直接定义的变量在当根k线有效”在固定轮训模式中是失效的。
请老师检查下。
也就是说CTR在第1秒被改变值后不会再执行刚才的语句,只有等到下根k线CTR被重新初始化后才会再继续判断。
但实际却不是这样,CTR在第1秒被改变值后,接下来的当根k线时间仍继续执行刚才贴出来的代码语句,也就是说CTR的定义与所说的不符合。
PS:代码中的CTR的定义是 CTR:=1;
不是很明白你的描述,不过从前面的描述来看,你似乎是需要一个变量不会随着初始化而每次都被重新刷新,你可以试试金字塔的超全局变量
不是,我是需要一个变量每刷新一根K线都会被重新加载,也就是说在当根k线过程中,如果该变量被改变,当根k线该变量则不重新加载,而等到下根k线才重新加载,金字塔定义的直接变量本来是可以实现的,但在1秒固定轮训模式却不行。