您现在的位置: 南方财富网 >> 股票知识 >> 股票公式 >> 正文
南财搜索

飞狐股票公式:如何使买入信号、卖出信号一一对应

2013/9/3 16:13:31   来源:本站原创   佚名
    

飞狐股票公式:如何使买入信号、卖出信号一一对应

  在设计公式时,我们经常遇到这样的问题,如何使买卖信号一一对应?

  比如下面的代码:

  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);

  图示如下:

(南方财富网SOUTHMONEY.COM)
    南方财富网声明:股市资讯来源于合作媒体及机构,属作者个人观点,仅供投资者参考,并不构成投资建议。投资者据此操作,风险自担。
延伸阅读
商务进行时
每日必读
学院24小时排行
证券导读
热图推荐

关于南方财富网 -版权声明诚聘英才广告服务网站地图友情链接
特此声明:广告商的言论与行为均与南方财富网无关
www.southmoney.com
南方财富网 © 版权所有 闽ICP备09035581号