首先是指標的程式碼,先把基本的 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 會簡單一點。
D.K.您好^^
回覆刪除最近在想策略,遇到下面兩個問題,不知您是否有解法呢?
1.請問ts裡面有可以抓到目前跳動指數的關鍵字或語法嘛?
2.ts裡,A商品程式進場後,B商品程式如何得知A程式已進場?能否即時得知呢?
大頭
大頭:1. 不知道你說的目前跳動指數是指什麼?目前的價位嗎?那就是用 close 了。
回覆刪除2. 沒辦法。寫在一隻程式裡大概是唯一解。
D.K.您好^^
回覆刪除第一個問題我的意思是目前價位沒錯,close是該根K棒結束的收盤價,K棒進行中的"即時"價位似乎目前無法抓到?
第二個問題,不知道跨商品交易程式一般都用什麼軟體來實作較好?
大頭
請問一下,我把這個kd的內容拿到hts去測試,但結果出現
回覆刪除line38 code2049:再此study無法使用此語法
想請問一下,這是那裡出問題?感恩.
阿堯
大頭: 其實我不太了解你所需要的功能是怎麼樣..不過 TS 裡面有 Q_Last 可以用..是最後的成交價..
回覆刪除誇商品的話..還是 TS 會比較好..
崇堯: 你應該是把程式丟到策略裡面了..這個是指標程式。
回覆刪除D.K.大, 您好,
回覆刪除想請問TS的KD多週期(假設5k和30k)的買賣策略怎麼寫呢?
謝謝!
小木瓜:參考 http://ssdkchang.blogspot.com/2009/04/blog-post.html 多週期策略。
回覆刪除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}
這樣寫是不是有問題?
小木瓜:請請錯誤訊息貼上,另外 TS 似乎沒有 %k 和 %D 的內建函式。
回覆刪除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)
小木瓜: of data2 的用法不是這樣喔…在你算 kval, dval 的時候就要先套進去了。另外在 TS 裡我也沒看到 stochasticcustom 這個保留字或是 function。也許你還是打錯了?
回覆刪除哇~ 感謝DK大回覆,我再來試試把data2代入function中.
回覆刪除另外stochasticcustomg是我不知在哪抓的,其實就是KD,只是我看它比較順眼拿來用而已 ... @@
請問DK大,
回覆刪除如果在TS直接取FastK當做%K,%K的3日平均當做%D,即
KVal = FastK(Length);
DVal = Average(KVal,3);
如同您寫的這個例子,那麼%D要怎麼轉寫成HTS呢?
小木瓜:要自行另外建立一個 function
回覆刪除Value1 = Lowest(Low of data2, Length);
Value2 = Highest(High of data2, Length) - Value1;
Value3 = Close of data2;
...
試試。
請問大大
回覆刪除如果要在TS上面幫K棒圖顏色
不知道要怎樣寫呢
例如說五日均大於10日均,K線都是紅色
反之則是綠色
皮皮金鋼: 這個我玩過…有時間我幫你玩玩看。
回覆刪除請問大大,
回覆刪除如果HTS我要改為10分鐘K線圖來抓60分KD指標的話,要怎樣更改呢?
謝謝大大