Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:变量编写请教

1楼
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线有效却基本失效,
请问老师有什么办法呢?谢谢。
2楼
jinzhe 发表于:2012/12/31 16:01:36
请说明是哪一段有问题
3楼
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线有效”在固定轮训模式中是失效的。
请老师检查下。
4楼
gcc_Cheng 发表于:2012/12/31 16:16:53
也就是说CTR在第1秒被改变值后不会再执行刚才的语句,只有等到下根k线CTR被重新初始化后才会再继续判断。
但实际却不是这样,CTR在第1秒被改变值后,接下来的当根k线时间仍继续执行刚才贴出来的代码语句,也就是说CTR的定义与所说的不符合。

PS:代码中的CTR的定义是 CTR:=1;
5楼
jinzhe 发表于:2012/12/31 16:18:08
CTR是全局变量吗?
6楼
gcc_Cheng 发表于:2012/12/31 16:22:52
不是,就直接定义的变量。
CTR:=1;

在代码的开头定义。
7楼
gcc_Cheng 发表于:2012/12/31 16:38:10
有回答吗?
8楼
大侠鸟 发表于:2012/12/31 17:56:53

不是很明白你的描述,不过从前面的描述来看,你似乎是需要一个变量不会随着初始化而每次都被重新刷新,你可以试试金字塔的超全局变量

9楼
gcc_Cheng 发表于:2013/1/2 21:36:05
不是,我是需要一个变量每刷新一根K线都会被重新加载,也就是说在当根k线过程中,如果该变量被改变,当根k线该变量则不重新加载,而等到下根k线才重新加载,金字塔定义的直接变量本来是可以实现的,但在1秒固定轮训模式却不行。

共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03906 s, 3 queries.