以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=163492)

--  作者:c100010231
--  发布时间:2018/5/17 10:38:24
--  请教一个计时的程序
我想得到在某个条件触发后一直到目前为止的时间,类似BARSLAST、SUMBARS这两个函数的功能,但是这两个函数还是有些不太好用。
我想这样:某个条件达成后就开始打开计时开关,这期间即使再有同样的条件达成则忽略不计,一直到我某个条件终止后就完成此波计时。
请各位版主大人帮个忙儿。图片点击可在新窗口打开查看
[此贴子已经被作者于2018/5/17 10:38:52编辑过]

--  作者:FireScript
--  发布时间:2018/5/17 11:18:47
--  
试了下效果还行。条件a,b  你重新定义下。为了方便肉眼观察,我把a,b全输出在K上了。

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

variable:markA:=0,markB:=0;
condA:c>o+10;
condB:c<o-10;

if CONDA then DRAWTEXT(1,c,\'A\');
if CONDB then DRAWTEXT(1,c,\'B\');
len:0;//记录a  b  条件跨度的值,b触发前为0
if condA  and markA=0 and not(condB) then markA:=1;
x:=BARSLAST(markA=0)-1;//这里需要减1,并且barslast不能在if下因此放在外面
if condB and markA=1 then
begin
markA:=0;//触发条件后重置markA值。
len:=x;
end

if condA and condB and markA=0 then len=0;//这是一种特殊情况,a b 同时触发在一个K上。

--  作者:c100010231
--  发布时间:2018/5/17 13:34:28
--  
感谢。
不过,似乎不对哦。我需要得到的是在A和B之间的某点(设为C点吧)即A到C的时间。当B发生后,就全部恢复平常态。可您的这一程序,只有B发生了才计算这个时间吧?


--  作者:FireScript
--  发布时间:2018/5/17 13:39:05
--  
 variable:markA:=0,markB:=0;
condA:c>o+10;
condB:c<o-10;

if CONDA then DRAWTEXT(1,c,\'A\');
if CONDB then DRAWTEXT(1,c,\'B\');
len:0;//记录a  b  条件跨度的值,b触发前为0
if condA  and markA=0 and not(condB) then markA:=1;
x:=BARSLAST(markA=0)-1;//这里需要减1,并且barslast不能在if下因此放在外面

if markA=1 then len:=x;

if condB and markA=1 then
begin
markA:=0;//触发条件后重置markA值。
//len:=x;
end

if condA and condB and markA=0 then len=0;//这是一种特殊情况,a b 同时触发在一个K上。


略做修改即可。主要是掌握这种处理方式。