以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 变量编写请教 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=43942) |
-- 作者:gcc_Cheng -- 发布时间:2012/12/31 15:56:35 -- 变量编写请教 请问怎么让变量在当根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线有效却基本失效, 请问老师有什么办法呢?谢谢。
|
-- 作者:jinzhe -- 发布时间:2012/12/31 16:01:36 -- 请说明是哪一段有问题 |
-- 作者:gcc_Cheng -- 发布时间:2012/12/31 16:08:43 -- 输出日志中从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线有效”在固定轮训模式中是失效的。 请老师检查下。
|
-- 作者:gcc_Cheng -- 发布时间:2012/12/31 16:16:53 -- 也就是说CTR在第1秒被改变值后不会再执行刚才的语句,只有等到下根k线CTR被重新初始化后才会再继续判断。 但实际却不是这样,CTR在第1秒被改变值后,接下来的当根k线时间仍继续执行刚才贴出来的代码语句,也就是说CTR的定义与所说的不符合。 PS:代码中的CTR的定义是 CTR:=1;
|
-- 作者:jinzhe -- 发布时间:2012/12/31 16:18:08 -- CTR是全局变量吗? |
-- 作者:gcc_Cheng -- 发布时间:2012/12/31 16:22:52 -- 不是,就直接定义的变量。 CTR:=1; 在代码的开头定义。
|
-- 作者:gcc_Cheng -- 发布时间:2012/12/31 16:38:10 -- 有回答吗? |
-- 作者:大侠鸟 -- 发布时间:2012/12/31 17:56:53 -- 不是很明白你的描述,不过从前面的描述来看,你似乎是需要一个变量不会随着初始化而每次都被重新刷新,你可以试试金字塔的超全局变量 |
-- 作者:gcc_Cheng -- 发布时间:2013/1/2 21:36:05 -- 不是,我是需要一个变量每刷新一根K线都会被重新加载,也就是说在当根k线过程中,如果该变量被改变,当根k线该变量则不重新加载,而等到下根k线才重新加载,金字塔定义的直接变量本来是可以实现的,但在1秒固定轮训模式却不行。 |