2014年6月9日 星期一

K棒的二進位評分法 [程式碼 ]

EasyTrader ArtNo 162
K 線型態對於從事金融商品主觀交易而言是一個很常用的方法,通常它會搭配其他指標來衡量市場運動方向,但是從量化角度來看, 若能使用計量的方法作為技術分析的依據,無疑是另一種可考慮的方式,這裡介紹一個K棒二進位評分方法,作為我們開發新策略元素的基礎



上圖為K棒的基本定義,我們將它區分為幾個部份作為評分的主項目,分別是K棒的顏色,實體,上影線與下影線,並用七個二位元空格來作K棒型態的記錄
K棒的顏色是最重要的特性,代表著多方/空方的方向,因此在這裡給它最高的權重.在二位元評價中紅K代表1 ,黑K代表 0
K棒的開盤價與收盤價在四個價格中算是最重要的兩個,並且這兩個價格範圍反應了多空力道強弱,因此權重的位置排在顏色之後.
K棒各元素依據它們的大小長度給與不同的權重

實體大小或上下影線的長短標準則是利用 N 根K棒的標準差來作範圍界定 , 超過上線者為大實體或長影線 ,小於下限者為小實體或短影線



PS: 這樣的評價定義也可以自行作修改

函數程式碼
{ # function _CandleCode }
inputs: BBLength( numericsimple ), { recommended value of input: 55 }
BBNumDevs( numericsimple ); { recommended value of input: .5 }
variables: BodyHi(0), BodyLo(0), Body(0), UpperShadow(0), LowerShadow(0), ThBot_Body(0), ThTop_Body(0), ThBot_US(0), ThTop_US(0), ThBot_LS(0),ThTop_LS(0), ColorCode(0), BodyCode(0), USCode(0), LSCode(0);

BodyHi = MaxList(Open, Close);
BodyLo = MinList(Open, Close);

Body = BodyHi - BodyLo;
UpperShadow = High - BodyHi;
LowerShadow = BodyLo - Low;

{ 計算期間內標準差,界定上下限 }
ThBot_Body = BollingerBand(Body, BBLength, -BBNumDevs);
ThTop_Body = BollingerBand(Body, BBLength, BBNumDevs);

ThBot_US = BollingerBand(UpperShadow, BBLength, -BBNumDevs);
ThTop_US = BollingerBand(UpperShadow, BBLength, BBNumDevs);

ThBot_LS = BollingerBand(LowerShadow, BBLength, -BBNumDevs);
ThTop_LS = BollingerBand(LowerShadow, BBLength, BBNumDevs);

{ 實體 + 顏色評分 }
if Close >= Open then begin
   ColorCode = 64; {紅K }
   if Body = 0 then {十字線 }
       BodyCode = 0
   else if Body < ThBot_Body then { 低於標準差下限為小實體 }
       BodyCode = 16
   else if Body < ThTop_Body then { 介於標準差上下限為中實體 }
       BodyCode = 32
   else BodyCode = 48; { 高於標準差上限為大實體 }
end else begin
   ColorCode = 0; {黑K }
   if Body = 0 then  BodyCode = 48
       else if Body < ThBot_Body then BodyCode = 32
          else if Body < ThTop_Body then BodyCode = 16
             else BodyCode = 0;
end;

{ 上影線評分 }
if UpperShadow = 0 then
   USCode = 0
else if UpperShadow < ThBot_US then { 低於標準差下限為短影線 }
   USCode = 4
else if UpperShadow < ThTop_US then { 介於標準差上下限為中影線 }
   USCode = 8
else
   USCode = 12; { 高於標準差上限為長影線 }

{ 下影線評分 }
if LowerShadow = 0 then LSCode = 3
   else if LowerShadow < ThBot_LS then LSCode = 2
      else if LowerShadow < ThTop_LS then LSCode = 1
         else LSCode = 0;

_CandleCode = ColorCode + BodyCode + USCode + LSCode;

有沒有想過計分的方式為何如此計算呢 ?
台指期 60分K 最近 3000 交易日 留倉測試 交易成本 1200



MagicQS080

沒有留言:

張貼留言