以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (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上。
略做修改即可。主要是掌握这种处理方式。
|