以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  运行周期判断  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=164153)

--  作者:yoyoma_2008
--  发布时间:2018/6/25 19:50:53
--  运行周期判断
我想在大于10s以上的周期中执行如下代码,

这个怎么表达?有没有查询返回周期的函数,如果没有能不能加一下

目的就是希望在很小的周期下不用执行下面很复杂的代码了,只要在大周期运行即可

--  作者:yoyoma_2008
--  发布时间:2018/6/25 19:59:30
--  
公式里面有个使用周期,这个我觉得不能满足我的要求,我想要的是大于10s的所有周期,这个有没有解决办法
--  作者:wenarm
--  发布时间:2018/6/26 8:42:39
--  

没有这类函数,

你可以通过下下面方式处理

aa:VALUEWHEN(TODAYBAR=1,time);
bb:VALUEWHEN(TODAYBAR=2,time);
M1:TIMETOT0(BB)- TIMETOT0(aa);

 

[此贴子已经被作者于2018/6/26 8:44:54编辑过]

--  作者:FireScript
--  发布时间:2018/6/26 13:38:24
--  


aa和bb取的是第一个K和第二个K的时间。
然后做一个差值,如差值大于10s,说明大于10s。其他的以此类推。


[此贴子已经被作者于2018/6/26 14:00:49编辑过]

--  作者:yoyoma_2008
--  发布时间:2018/6/26 15:15:49
--  
怎么让这段代码在逐K计算仅刷最后一根的模式中,执行一次
variable:yyy=0;
if yyy=0 then 
begin
aa:=VALUEWHEN(TODAYBAR=1,time);
bb:=VALUEWHEN(TODAYBAR=2,time);
M1:=TIMETOT0(BB)- TIMETOT0(aa);
yyy:=1;
end

这样写可以只执行一次吗?

--  作者:yoyoma_2008
--  发布时间:2018/6/26 15:17:35
--  
你发的代码还有点问题,就是不能用于日线以上的周期,我希望日线以上的周期也要执行后续代码


使用你这个代码后,我发现日线以上周期都没有执行后续代码了

--  作者:yoyoma_2008
--  发布时间:2018/6/26 15:19:02
--  
但是编译不通过,说VALUEWHEN不能用在if控制中,这该怎么办
--  作者:admin
--  发布时间:2018/6/26 15:41:34
--  

分笔周期和日线周期以上的,都不行。你自己通过DATATYPE组合使用。

 

VALUEWHEN这个是必须放在if外头,

 


--  作者:FireScript
--  发布时间:2018/6/26 15:45:24
--  
一般不能放在if条件下的函数等,都需要放到if外部先计算好,然后在if语句下面引用计算好的结果。

--  作者:wenarm
--  发布时间:2018/6/26 15:50:37
--  
以下是引用yoyoma_2008在2018/6/26 15:15:49的发言:
怎么让这段代码在逐K计算仅刷最后一根的模式中,执行一次
variable:yyy=0;
if yyy=0 then 
begin
aa:=VALUEWHEN(TODAYBAR=1,time);
bb:=VALUEWHEN(TODAYBAR=2,time);
M1:=TIMETOT0(BB)- TIMETOT0(aa);
yyy:=1;
end

这样写可以只执行一次吗?

你不要想着脱离公式执行的刷新机制。你前面说的是想控制策略只在10秒周期以上运行,直接把我给你的代码这个放在策略最前面,不满足直接结束运行

aa:=VALUEWHEN(TODAYBAR=1,time);
bb:=VALUEWHEN(TODAYBAR=2,time);
M1:=TIMETOT0(BB)- TIMETOT0(aa);
if M1<10 then  exit;