欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请帮忙看下这段代码有什么问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2438人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
monarch
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2014/11/14 11:04:39
请帮忙看下这段代码有什么问题  发帖心情 Post By:2015/4/2 14:53:42    Post IP:183.16.33.92[只看该作者]

这是随便写的一个测试全局变量的代码
属于交易系统,逐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);

 回到顶部
帅哥哟,离线,有人找我吗?
monarch
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2014/11/14 11:04:39
  发帖心情 Post By:2015/4/2 14:57:41    Post IP:183.16.33.92[只看该作者]

这个附件是日志,可以从时间time
图片点击可在新窗口打开查看此主题相关图片如下:ttlog.png
图片点击可在新窗口打开查看
上看出来这几条是在最新k线上,由于tick变化而变化的,dayloged这个变量就这样周而复始的从0变1,又从1变0.
从0变1是代码写的,可以理解。
但是从1变0是从哪里发生的?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/4/2 15:06:24    Post IP:58.246.57.26[只看该作者]

请问用在哪个周期上?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
monarch
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2014/11/14 11:04:39
  发帖心情 Post By:2015/4/2 15:08:23    Post IP:183.16.33.92[只看该作者]

我是在1分钟周期下测试的

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/4/2 15:21:25    Post IP:58.246.57.26[只看该作者]

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

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

所以你看到的结果是:

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

 

 



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
monarch
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2014/11/14 11:04:39
  发帖心情 Post By:2015/4/2 15:29:33    Post IP:183.16.33.92[只看该作者]

居然是这个流程,bar内信息看来还要想其他办法来保存

 回到顶部