[TS懶人包] [保險服務]

2009年11月3日 星期二

程式交易 - HTS 多週期指標寫法(以基本KD為例)

在 HTS 上如果需要完成多週期的策略,例如 30 分鐘抓 60 分鐘的資料等…通常會遇到不少問題…今天動手寫了個 KD 的指標出來…是在 30 分鐘內去把 60 分鐘的 KD 指標畫出來的程式…過程中遇到許多的困難…所以真的有興趣寫多週期的可能需要好好研究一下這個程式了。

首先是指標的程式碼,先把基本的 KD 指標給大家看一下…也就是原本的程式:

Parameters : HighLowTerm(9), OverSold(20), OverBought(80)
Variable : Factor(1/3)

Value1 = VALUE1[1] + (Factor * (FastK(High, Low, Close, HighLowTerm) - VALUE1[1]))
Value2 = 2/3*Value2[1]+Value1*1/3

DrawBase1( OverBought, "Over Bought", DarkGray )
DrawBase2( OverSold, "Over Sold", DarkGray )
Draw2( Round( Value2,2), "Slow %D", Blue)
Draw1( Round( Value1,2), "Slow %K", Red)


接下來…就是利用上面的 KD 指標來完成 30 分線內抓 60 分資料並畫出的程式碼:


Parameters : HighLowTerm(9), OverSold(20), OverBought(80)
Variable : Factor(1/3)

vars:high1(0), high2(0), high3(0), high4(0), high5(0), high6(0), high7(0), high8(0), high9(0)
vars:low1(0), low2(0), low3(0), low4(0), low5(0), low6(0), low7(0), low8(0), low9(0)

Condition1 = time = 94500 or time = 104500 or time = 114500 or time = 124500 or time = 134500

if Condition1 then
high9 = maxlist(high[16], high[17])
high8 = maxlist(high[14], high[15])
high7 = maxlist(high[12], high[13])
high6 = maxlist(high[10], high[11])
high5 = maxlist(high[8], high[9])
high4 = maxlist(high[6], high[7])
high3 = maxlist(high[4], high[5])
high2 = maxlist(high[2], high[3])
high1 = maxlist(high, high[1])

low9 = minlist(low[16], low[17])
low8 = minlist(low[14], low[15])
low7 = minlist(low[12], low[13])
low6 = minlist(low[10], low[11])
low5 = minlist(low[8], low[9])
low4 = minlist(low[6], low[7])
low3 = minlist(low[4], low[5])
low2 = minlist(low[2], low[3])
low1 = minlist(low, low[1])

Value1 = minlist(low9, low8, low7, low6, low5, low4, low3, low2, low1)
Value2 = maxlist(high9, high8, high7, high6, high5, high4, high3, high2, high1) - Value1
Value3 = Close

Value4 = Value4[2] + (Factor * (((Value3 - Value1) / Value2 * 100) - Value4[2]))
Value5 = 2/3 * Value5[2] + Value4 * 1/3
end if

DrawBase2( OverBought, "Over Bought", DarkGray )
DrawBase1( OverSold, "Over Sold", DarkGray )
Draw2( Round( Value5,2), "Slow %D-60", Blue)
Draw1( Round( Value4,2), "Slow %K-60", Red)



完成後的圖會長這樣:



我想整個轉換過程並算不上容易…首先必需去研究指標用到的函式有哪些…再去看每個函式的運算過程…接下來再依照運算過程會使用到的資料去想辦法存到一個正確的值。

HTS 的 highest, lowest 的問題非常嚴重…能不用就不要用…所以我都改用 maxlist 和 minlist…再來就是依照時間的週期去定下 condition。

還好 KD 還算簡單…如果是 MACD 的話,還是轉用 TradeStation 會簡單一點。

18 則留言:

  1. D.K.您好^^

    最近在想策略,遇到下面兩個問題,不知您是否有解法呢?
    1.請問ts裡面有可以抓到目前跳動指數的關鍵字或語法嘛?
    2.ts裡,A商品程式進場後,B商品程式如何得知A程式已進場?能否即時得知呢?

    大頭

    回覆刪除
  2. 大頭:1. 不知道你說的目前跳動指數是指什麼?目前的價位嗎?那就是用 close 了。
    2. 沒辦法。寫在一隻程式裡大概是唯一解。

    回覆刪除
  3. D.K.您好^^
    第一個問題我的意思是目前價位沒錯,close是該根K棒結束的收盤價,K棒進行中的"即時"價位似乎目前無法抓到?
    第二個問題,不知道跨商品交易程式一般都用什麼軟體來實作較好?

    大頭

    回覆刪除
  4. 請問一下,我把這個kd的內容拿到hts去測試,但結果出現
    line38 code2049:再此study無法使用此語法

    想請問一下,這是那裡出問題?感恩.
    阿堯

    回覆刪除
  5. 大頭: 其實我不太了解你所需要的功能是怎麼樣..不過 TS 裡面有 Q_Last 可以用..是最後的成交價..
    誇商品的話..還是 TS 會比較好..

    回覆刪除
  6. 崇堯: 你應該是把程式丟到策略裡面了..這個是指標程式。

    回覆刪除
  7. D.K.大, 您好,

    想請問TS的KD多週期(假設5k和30k)的買賣策略怎麼寫呢?

    謝謝!

    回覆刪除
  8. 小木瓜:參考 http://ssdkchang.blogspot.com/2009/04/blog-post.html 多週期策略。

    回覆刪除
  9. D.K.大, 您好

    我現在寫的code就是仿造您那篇文章,只是verify時顯示 data2和data3有問題,code大概是以下

    condition1 = (%k of data2 > %d of data2); {data2 = 5k}
    condition2 = (%k of data3 > %d of data3); {data3 = 30k}

    這樣寫是不是有問題?

    回覆刪除
  10. 小木瓜:請請錯誤訊息貼上,另外 TS 似乎沒有 %k 和 %D 的內建函式。

    回覆刪除
  11. D.K.大, 您好

    不好意思,我沒寫清楚,整段應該是以下這樣:

    input : kperiods(9),dperiods(3),kslow(3);
    variables : kval(0),dval(0);

    kval = stochasticcustom(kperiods,kslow);
    dval = average(kval,dperiods);

    condition1 = (kval of data2 > dval of data2); {data2 = 5k}
    condition2 = (kval of data2 < dval of data2);
    condition3 = (kval of data3 > dval of data3); {data3 = 30k}
    condition4 = (kval of data3 < dval of data3);


    if condition1 and condition3 then begin
    buy next bar at market;
    end;
    if condition2 and condition4 then begin
    sell next bar at market;
    end;

    verify後停在condition1的第1個data2上,錯誤訊息為
    Description: ')'expected here.
    Technique: _testtest(Signal)
    Line: 8
    Type: Error(#156)

    回覆刪除
  12. 小木瓜: of data2 的用法不是這樣喔…在你算 kval, dval 的時候就要先套進去了。另外在 TS 裡我也沒看到 stochasticcustom 這個保留字或是 function。也許你還是打錯了?

    回覆刪除
  13. 哇~ 感謝DK大回覆,我再來試試把data2代入function中.
    另外stochasticcustomg是我不知在哪抓的,其實就是KD,只是我看它比較順眼拿來用而已 ... @@

    回覆刪除
  14. 請問DK大,

    如果在TS直接取FastK當做%K,%K的3日平均當做%D,即
    KVal = FastK(Length);
    DVal = Average(KVal,3);

    如同您寫的這個例子,那麼%D要怎麼轉寫成HTS呢?

    回覆刪除
  15. 小木瓜:要自行另外建立一個 function

    Value1 = Lowest(Low of data2, Length);
    Value2 = Highest(High of data2, Length) - Value1;
    Value3 = Close of data2;
    ...

    試試。

    回覆刪除
  16. 請問大大
    如果要在TS上面幫K棒圖顏色
    不知道要怎樣寫呢
    例如說五日均大於10日均,K線都是紅色
    反之則是綠色

    回覆刪除
  17. 皮皮金鋼: 這個我玩過…有時間我幫你玩玩看。

    回覆刪除
  18. 請問大大,

    如果HTS我要改為10分鐘K線圖來抓60分KD指標的話,要怎樣更改呢?
    謝謝大大

    回覆刪除

請留下您的大名…匿名者恕不回應…

Related Posts Plugin for WordPress, Blogger...