以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  代码修改的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166506)

--  作者:a虎甲虫
--  发布时间:2018/11/15 14:18:42
--  代码修改的问题

之前发过一个求助帖,“判断当前行情与最近一次K线下穿10均线之间的最低点是否在50根K线范围内的某根放量K线的影线范围内。”

然后我根据老师给的代码稍加改动写了一个判断逻辑,但有很大的问题,很长时间都没找到问题在哪。还请老师帮忙修改。

MA1:=MA(VOL,50);
volx:=MA1+2.3*STD(VOL,50);

yx:=not((c=h and o=l and c>=o) or (o=h and l=c and c<=o));//是否是有影线(满足放量但是没有影线的K过滤掉)
fl:=vol>volx;//是否放量
cd1:=fl and yx;//满足放量且有影线

lenk:=BARSLAST(cross(c,ma(c,10)));//最近一次上穿的周期跨度
lvk:=CONST(hhv(h,lenk+1));//最近一次上穿以来的最高点。特别需要注意这里使用了CONST函数,因此公式只能在序列模式下执行
cd2k:=RANGE(lvk,l,h) and if(c>=o,not(RANGE(lvk,c,o)),not(RANGE(lvk,o,c)));//最高点是否在影线范畴内
高点result:count(cd2k and cd1,50)>=1;//最终判断结果。即50周期内是否有满足条件的的放量K使得最近一次上穿到现在的高点在放量K影线范畴内。


图片点击可在新窗口打开查看此主题相关图片如下:$j~wqbjz9eqsn@dtugjg.png
图片点击可在新窗口打开查看

--  作者:FireScript
--  发布时间:2018/11/15 14:47:28
--  
 什么意思?具体说明下哪里有问题。是你上图标注的那个“没有变为1”的那个幅图上的输出值有问题?
--  作者:a虎甲虫
--  发布时间:2018/11/15 14:53:38
--  
这个高点本应该符合条件输出值为真的,但它没有


--  作者:FireScript
--  发布时间:2018/11/15 14:57:28
--  
 你幅图用的就是上面的代码吗?
--  作者:a虎甲虫
--  发布时间:2018/11/15 15:28:50
--  
是的
--  作者:FireScript
--  发布时间:2018/11/15 15:44:54
--  
你看下这里:crossma10:cross(ma(c,10),c);//c下穿10日均线   之前写成了上传了。。。

--  作者:a虎甲虫
--  发布时间:2018/11/15 16:02:21
--  
这个就是要这样的,现在的逻辑是k线上穿ma10到当前的高点是否在放量k线影线范围内。
--  作者:FireScript
--  发布时间:2018/11/15 16:22:46
--  
 哦 我搞忘记了。这个代码只能在最新K上做判断。之前帖子里也有提到的,CONST函数的缘故。基本上只能判断当天的,历史的不行。 我再看看能不能改吧。

--  作者:a虎甲虫
--  发布时间:2018/11/16 13:59:40
--  
就是说实际使用不影响,但不能历史回测是吗?
--  作者:FireScript
--  发布时间:2018/11/16 14:06:39
--  
 目前是这样,历史的不行。你先用着,我再考虑考虑能不能解决吧。