以文本方式查看主题

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

--  作者:437382180311
--  发布时间:2020/9/25 11:44:14
--  请教老师,如下思路如何实现
CD1: a  b,b200周期内第一次小于a,之后b小于a忽略不计。

CD2: 满足CD1后, c  d       d第三次上穿c.

见图片:

--  作者:437382180311
--  发布时间:2020/9/25 11:45:08
--  
图片点击可在新窗口打开查看
--  作者:FireScript
--  发布时间:2020/9/25 13:18:55
--  
 1.cd1不就相当于200周期内 只要存在至少一次b小于a?
2.cd2。 这个判断必须限定在一定周期内。否则无意义。因为你只要K线数据量到一定程度,那么d上传c 会发生很多次。
[此贴子已经被作者于2020/9/25 13:19:08编辑过]

--  作者:437382180311
--  发布时间:2020/9/25 13:27:46
--  
CD1:=any(b<a,200);

CD2:=if( CD1,count( cross(d,c),barslast(a>b) )>=3  );

请老师修正,谢谢。

--  作者:437382180311
--  发布时间:2020/9/25 13:31:19
--  
CD1:=any(b<a,200);

CD2:=if( CD1,count( cross(d,c),barslast(a>b) )>=3 ,drawnull );

请老师修正,谢谢。

--  作者:FireScript
--  发布时间:2020/9/25 13:52:39
--  
CD2:=if( CD1,count( cross(d,c),barslast(a>b) )>=3 ,0);

这个部分得话,应该还是有点问题。不如用这个BARSSINCE2() 或者同样写死成200周期。否则b下穿a如果发生多次的情况下。这个返回值取的就是最近的一次了。

--  作者:437382180311
--  发布时间:2020/9/25 14:40:24
--  
还是不行。请老师再指点一下。怎样才能写死成200周期
--  作者:FireScript
--  发布时间:2020/9/25 14:41:14
--  
 CD2:=if( CD1,count( cross(d,c),200 )>=3 ,drawnull );
我的意思是这里直接写成200

--  作者:437382180311
--  发布时间:2020/9/25 14:48:39
--  
 CD2:=if( CD1,count( cross(d,c),200 )>=3 ,drawnull );
我的意思是这里直接写成200

如果直接写成200,会把    不满足CD1的    cross (d,c)的次数也给计算进去。
[此贴子已经被作者于2020/9/25 14:49:57编辑过]

--  作者:FireScript
--  发布时间:2020/9/25 15:02:03
--  
 LEN:BARSSINCE2(a>b,200)+1;//返回值是从0开始的,所以+1
CD2:=if( CD1,count( cross(d,c),LEN)>=3 ,0);

这样就是从200周期内第一次a>b位置开始统计了。就不存在说不满足a>b之前也统计进去的情况。