1.    您現在的位置: 战神GPK777 >> 股票知識 >> 炒股專題 >> 股票公式 >> 正文
      南方財富搜索

      飛狐股票公式如何使買入信號、賣出信號一一對應

      2009-4-26 16:40:05   來源:不詳   佚名

          
         在設計公式時,我們經常遇到這樣的問題,如何使買賣信號一一對應?
        比如下面的代碼:
      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);
      圖示如下: 

      (文章來源:南方財富 http://www.tjtzcz.com)

      (責任編輯:張元緣)
          战神GPK777聲明:股市資訊來源於合作媒體及機構,屬作者個人觀點,僅供投資者參考,並不構成投資建議。投資者據此操作,風險自擔。
      商務進行時
      每日必讀
      學院24小時排行
      證券導讀
      熱圖推薦