飞狐公式:买入信号、卖出信号一一对应

2010-1-12 作者:管理员 来源:ISSA证券信息网


  

在设计公式时,我们经常遇到这样的问题,如何使买卖信号一一对应?
  比如下面的代码:
input:n(26,5,300),p(2,0.1,10);
close;
mid : ma(close,n);
upper: mid + p*std(close,n);
lower: mid - p*std(close,n);

tjb:=cross(close,lower);
tjs:=cross(upper,close);
drawicon(tjb,close,4);
drawicon(tjs,close,5);

图示如下,可以看出,买入信号连续发出多次后,才出现卖出信号,卖出信号连续发出多次后,才发出买入信号。

如何过滤连续的买入、卖出信号,使买入后只要没有发出卖出信号,就不再发出买入信号;同样,卖出后只要没有出现买入信号,就不再发出卖出信号。即买入、卖出信号一一对应。
  容易想到的是使用过滤函数filter(),但这个函数是难以实现的,因为未来有多少个连续的买入(或卖出)信号是未知的。
  另一种方法是,从前一次卖出(或买入)信号开始累加买入(或卖出)信号,如果累加次数等于1,则发出真正的买入(或卖出)信号。

  但这里还有一个问题,如果首次信号是卖出信号的话,也应该过滤,因为没有买入哪来卖出?应让首次信号是买入信号才合理。方法是,在第1根K线的位置,虚拟一个卖出信号。
  以下是实现上述想法的常规函数代码:

input:n(26,5,300),p(2,0.1,10);
close;
mid : ma(close,n);
upper: mid + p*std(close,n);
lower: mid - p*std(close,n);

//以下为常规函数处理代码//
tjb:=cross(close,lower);//初始买入信号,可换成其它任意买入条件
tjs:=cross(upper,close);//初始卖出信号,可换成其它任意卖出条件

{以下代码,使买、卖信号一一对应}
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb; //买入信号
tjsell:=count(tjs,barslast(tjb))=1 and tjs; //卖出信号

drawicon(tjbuy,low,4);
drawicon(tjsell,high,5);
图示如下:



精华推荐


热图推荐
【广发证券】上调宁波银行评级为“买入”
“主力持仓线”和“大盘控盘度”
【招商证券】法因数控上调至“审慎推荐-B”评级
【天相投顾】维持申能股份“增持”评级
新闻速递
【光大证券】远光软件评级上调为“买入”
【华泰证券】超声电子上调至“买入”投资评级
【方正证券】陆家嘴给予“增持”评级
【安信证券】维持双良股份和“买入-A”评级

友情链接:杭州律师事务所 杭州律师 鸿雁免费空间 pba yangsang 木材粉碎机 木材破碎机 木屑粉碎机 雷蒙磨 风湿骨病吃什么药 肾虚吃什么药 网站托管 手机定位软件 手机定位软件 最新电影 太岁肉灵芝是什么东西 中国太岁肉灵芝交易网 走私车 香港电影 汽车坐垫
关于我们 | About Us | 服务条款 | 广告服务 | 商务洽谈 | 公司招聘 | 客服中心 | 版权所有 | 网站地图 |
备案号: 鲁ICP备05055704号
Copyright © 2007 - 2009 ISSA证券信息网. All Rights Reserved