Rss & SiteMap

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

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

标题:请帮忙看下这段代码有什么问题

1楼
monarch 发表于:2015/4/2 14:53:42
这是随便写的一个测试全局变量的代码
属于交易系统,逐k计算,仅刷新最后一根k线。我发现全局变量dayloged这个值的变化跟我预期的不同。
在最新的k线没有走完时,仅刷新最后一根k线,此时,dayloged这个变量在 第二个if完成后,值为1.但是下一个tick来的时候,这个值就变成了0,又重新进入了这个if。在k线走完前就一直重复变成0,又变成1的循环。 而我的本意是他应该等于1的,没有理由变成0(只有每天第一根k线才变0)

代码如下,请各位高手刚忙看看:


variable:dayloged:=-1;


DEBUGFILE2('D:\ttlog.txt','+++++dayloged:%.0f',dayloged,1);
if date<>ref(date,1) then 
begin 
dayloged:=0;
DEBUGFILE2('D:\ttlog.txt','newday:%.0f',4,1);
end 

if islastbar and dayloged=0 then 
begin 
dayloged:=1;
DEBUGFILE2('D:\ttlog.txt','+++++changeddata:%.0f',dayloged,1);
DEBUGFILE2('D:\ttlog.txt','+++++changedtime:%.0f',time,1);
end 

DEBUGFILE2('D:\ttlog.txt','-----dayloged:%.0f',dayloged,1);
DEBUGFILE2('D:\ttlog.txt','-----time:%.0f',time,1);
2楼
monarch 发表于:2015/4/2 14:57:41
这个附件是日志,可以从时间time
图片点击可在新窗口打开查看此主题相关图片如下:ttlog.png
图片点击可在新窗口打开查看
上看出来这几条是在最新k线上,由于tick变化而变化的,dayloged这个变量就这样周而复始的从0变1,又从1变0.
从0变1是代码写的,可以理解。
但是从1变0是从哪里发生的?
3楼
jinzhe 发表于:2015/4/2 15:06:24
请问用在哪个周期上?
4楼
monarch 发表于:2015/4/2 15:08:23
我是在1分钟周期下测试的
5楼
jinzhe 发表于:2015/4/2 15:21:25

因为DEBUGFILE2('D:\ttlog.txt','+++++dayloged:%.0f',dayloged,1); 这第一段的 调试代码,反映出了整段代码的计算顺序。

这根k线没有走完,这段代码会每来一个tick计算一次,每一次计算,你的变量就会回到上跟k线的值,也就是0,

所以你看到的结果是:

tick来了,变量变回上k线的值:0,然后计算之后变成1;再来tick,再变回0,然后再计算成1

 

 

6楼
monarch 发表于:2015/4/2 15:29:33
居然是这个流程,bar内信息看来还要想其他办法来保存
共6 条记录, 每页显示 10 条, 页签: [1]


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