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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]求金叉到现在的秒数,全局变量使用时错在哪里

   

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


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

主题:[求助]求金叉到现在的秒数,全局变量使用时错在哪里

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
[求助]求金叉到现在的秒数,全局变量使用时错在哪里  发帖心情 Post By:2012/9/1 22:10:15    Post IP:119.85.13.57[显示全部帖子]

各位爷,我想求金叉条件到现在的秒数,下面的代码不知错在哪里,求指导

 

a:=cross(diff,dea);
if a then begin

  EXTGBDATASET(t1,TIMETOT0(CURRENTTIME));
end


t2:=TIMETOT0(CURRENTTIME);
秒差:t2-t1;


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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/2 11:11:16    Post IP:119.85.13.57[显示全部帖子]

以下是引用RogarZ在2012-9-2 10:44:19的发言:
不知道你求秒数是什么原因,一般建议使用周期barslast来代替秒数
周期比秒数更好用
barslast(cross(diff,dea))

我是想返回满足条件后持续的秒数,使用barslast或sumbars时,因为它没有秒周期,所以返回的不是秒数而是当前周期的K线数,

要想返回秒,只能使用全局变量来记住满足条件时的精确时间,然后用现在的时间来减去满足条件时的时间,就是持续时间了,


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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/2 14:19:03    Post IP:119.85.13.57[显示全部帖子]

想求金叉条件到当前时间持续的秒数,下面的代码中全局变量不知错在哪里,求指导

 a:=cross(diff,dea);
if a then begin

  EXTGBDATASET(t1,TIMETOT0(CURRENTTIME));
end

t2:=TIMETOT0(CURRENTTIME);
持续秒数:t2-t1;


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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/2 22:30:48    Post IP:119.85.7.238[显示全部帖子]

多秒周期与这个完全不是一回事的,

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/3 11:49:54    Post IP:119.85.20.226[显示全部帖子]

想求金叉条件到当前时间持续的秒数,下面的代码中全局变量不知错在哪里,求指导
//
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
jc:=cross(diff,dea);
if jc and islastbar then begin
  EXTGBDATASET(t1,TIMETOT0(CURRENTTIME));
end
t2:=TIMETOT0(CURRENTTIME);
持续秒数:t2-t1;

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/8 21:51:09    Post IP:119.85.11.178[显示全部帖子]

以下是引用manbutianya在2012-9-5 22:18:24的发言:

a:=cross(diff,dea);

t1:=valuewhen(a,TIMETOT0(CURRENTTIME)); 
EXTGBDATASET(t1,b);
t2:=TIMETOT0(CURRENTTIME);
秒差:=t2-t1;

或:

a:=cross(diff,dea);

t1:=valuewhen(a,TIMETOT0(CURRENTTIME)); 
EXTGBDATASET(t1,b);
t2:=TIMETOT0(CURRENTTIME);
秒差:=t2-EXTGBDATA(t1);

提示这里的B未定义,不知是什么原因


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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/8 22:54:03    Post IP:119.85.11.178[显示全部帖子]

来个全面的求助版本,省得各位老师看花了眼。

想求某个信号满足条件到当前时间持续的秒数;基本实现思路是这样,即,在信号出现时,用一个全局变量记住满足这个条件时的时间,精确到秒,然后,用现在精确到秒的时间来与这个全局变量的时间相减,即得到信号持续的秒数,但以下代码得不到正确的结果,求指导,

如下:

 

t1:=('t1');
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
jc:=cross(diff,dea);
if jc and islastbar then begin
  EXTGBDATASET('t1',TIMETOT0(CURRENTTIME));
end
t2:=TIMETOT0(CURRENTTIME);
持续秒数:t2-t1;

 

另外也尝试过调用多秒周期数据的方法,但因多秒周期计算数据与其它K线周期所取用的数据序列值完全不一样,所以得不到正确的结果。

[此贴子已经被作者于2012-9-8 22:58:13编辑过]

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/13 12:02:04    Post IP:119.85.15.85[显示全部帖子]

以下是引用阿火在2012-9-9 9:37:12的发言:

globalvariable:t1=drawnull;

DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
jc:=diff>dea;

tt:=timetot0(currenttime);

if islastbar then begin

  if jc then t1:=tt;

  if not(jc) then t1:=drawnull;

  持续秒数:tt-t1;

end

[此贴子已经被作者于2012-9-9 9:42:45编辑过]

谢谢火哥指导,不过,公式在图表上没有信号,能否再指导下


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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/13 21:24:53    Post IP:119.85.15.85[显示全部帖子]

有朋友提到使用sleep函数,但不可行,原因有二,

1是sleep函数只能用于后台程序化,而我主要做的是图表程式化交易,
2是因为sleep若在1分钟K线周期上运行,则它的意义是当这根K线运行完后,再延时N秒执行后面的语句


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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2012/9/13 21:33:18    Post IP:119.85.15.85[显示全部帖子]

以下是引用manbutianya在2012-9-5 22:18:24的发言:

a:=cross(diff,dea);

t1:=valuewhen(a,TIMETOT0(CURRENTTIME)); 
EXTGBDATASET(t1,b);
t2:=TIMETOT0(CURRENTTIME);
秒差:=t2-t1;

或:

a:=cross(diff,dea);

t1:=valuewhen(a,TIMETOT0(CURRENTTIME)); 
EXTGBDATASET(t1,b);
t2:=TIMETOT0(CURRENTTIME);
秒差:=t2-EXTGBDATA(t1);

第一段代码,它返回的是60的倍数,不能精确到秒,不知道什么原因?


 回到顶部
总数 12 1 2 下一页