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

2008年8月21日 星期四

Tradestation 程式碼轉 HTS

請先撥空看看這篇 更改 Feed 網址

我想還是不少人拿到 TS 的程式碼不知道該怎麼轉成 HTS 的…雖然之前有寫過由 HTS 轉到 TS 的教學 HTS 程式碼轉 TradeStation 程式碼HTS 程式碼轉 TradeStation 程式碼 - 函數篇。不過我想看的人應該不多吧..orz

好吧…首先,當拿到 TS 程式碼的時候…

var:count(0), buyline(99999), sellline(0);

if date[0] <> date[1] then begin
count = 0;
buyline = 99999;
sellline = 0;
end;

if time = 1100.00 then begin
buyline = highest(high, 27);
sellline = lowest(low, 27);
end;

if time > 1100.00 and time < 1230.00 and count = 0 then begin
if open < buyline and close > buyline and opend(0) > closed(1) then begin
buy ("b4") next bar at market;
count = count + 1;
end;
if open > sellline and close < sellline and opend(0) < closed(1) then begin
sell ("s4") next bar at market;
count = count + 1;
end;
end;

if marketposition > 0 and time < 1335.00 and close < closed(1) and count > 0 then begin
exitlong next bar at market;
end;
if marketposition < 0 and time < 1335.00 and close > closed(1) and count > 0 then begin
exitshort next bar at market;
end;

if marketposition > 0 and time = 1335.00 then begin
exitlong next bar at market;
end;
if marketposition < 0 and time = 1335.00 then begin
exitshort next bar at market;
end;

第一步:請先檢查程式裡有沒有用到 input,如果有的話第一個就是把 input 改成 parameter。
第二步:把所有的分號(;)去掉。
第三步:把所有的 begin 去掉。
第四步:再所有的if 結尾的 end 後面加上 if 成為 end if
第五步:如果有時間參數的話,把 1000.00 改為 100000,也就是把小數點去掉。
第六步:檢查程式內有沒有用到 opend()、closed()、highd()、lowd()等在分線讀日線資料的函式,如果有的話比較麻煩,後面再提。
第七步:代換函式…例如把 average 代換為 ma。

應該經過上面的步驟後…可以成功轉換 80% 的 TS 程式碼…其它比較複雜的,我大概也要看到程式碼才知道該怎麼轉換…最後,再提一下如何更改 opend() 等的函式到 HTS。

由於 HTS 並沒有提供 opend() 等函式,只有提供 openofd 這樣的 user function…所以如果 TS 程式碼內有用到這些東西…請先建立一個 var 和一個 array…我的習慣如下:

vars:openOfD0(0), closeOfD1(0)
Array:OoD0[84](-1), CoD1[84](-1)

接著…再去計算 openOfD0(0) 的值

openOfD0 = OpenOfD(0, OoD0)
closeOfD1 = CloseOfD(1, CoD1)

現在,HTS 裡面的 openOfD0 這個值就會等同於 TS 內的 opend(0),如果有用到 highd()、lowd()的,就依樣畫葫蘆吧…

真的最後了…如果還是改不出來…那…留言吧…XD…我有時間就幫忙囉。

11 則留言:

  1. 哇...有這寶我竟然沒挖到,好好來研讀. 有不懂在麻煩DK大囉.

    回覆刪除
  2. vars:openOfD0(0), closeOfD1(0)
    Array:OoD0[84](-1), CoD1[84](-1)

    請教一下dk大[84](-1)為甚麼是84!!若是5分鐘線1天不是只有60根k棒嗎??還請解惑!!感恩!!

    回覆刪除
  3. 真是好問題啊...我一直認為這是固定用法..所以其實我自己也沒去研究這個 84 是怎麼來的..真是不好意思..= =

    回覆刪除
  4. http://blog.xuite.net/parkson/trader/195142
    http://blog.xuite.net/parkson/trader/3468946
    Parkson 大的函數 我還改不出來 可以幫忙嗎? 謝謝
    James

    回覆刪除
  5. james: 什麼地方改不出來?

    回覆刪除
  6. 請問DK大大:
    我想從TS中的function改成HTS,TS原碼如下
    {*******************************************************************
    Description: Linear Regression Value (fast calculation)
    Provided By: Omega Research, Inc. (c) Copyright 1999
    ********************************************************************}

    Inputs: Price(NumericSeries), Len(NumericSimple), TargetB(NumericSimple);
    Variables: X(0), Num1(0), Num2(0), SumBars(0), SumSqrBars(0), SumY(0), Sum1(0), Sum2(0), Slope(0), Intercept(0);

    If Len = 0 Then
    LinearRegValueFC = 0;

    Sum1 = 0;

    If CurrentBar = 1 Then Begin
    SumBars = SumBars[1];
    SumBars = Len * (Len - 1) * .5;
    SumSqrBars = (Len - 1) * Len * (2 * Len - 1) / 6;
    End;

    For X = 0 To Len - 1 Begin
    Sum1 = Sum1 + X * Price[X];
    End;

    SumY = Summation(Price, Len);
    Sum2 = SumBars * SumY;
    Num1 = Len * Sum1 - Sum2;
    Num2 = SumBars * SumBars - Len * SumSqrBars;

    If Num2 <> 0 Then
    Slope = Num1 / Num2
    Else
    Slope = 0;

    Intercept = (SumY - Slope * SumBars) / Len;

    LinearRegValueFC = Intercept + Slope * (Len - 1 + CurrentBar - CurrentBar - TargetB);

    我改成HTS如下
    param: Price(Numeric), Len(Numeric), TargetB(Numeric)
    var: X(0), Num1(0), Num2(0), SumBars(0), SumSqrBars(0), SumY(0), Sum1(0), Sum2(0), Slope(0), Intercept(0),LinearRegValueFC(0)
    If Len = 0 Then
    LinearRegValueFC = 0
    Sum1 = 0
    end if
    If CurrentBar = 1 Then
    SumBars = SumBars[1]
    SumBars = Len * (Len - 1) * 0.5
    SumSqrBars = (Len - 1) * Len * (2 * Len - 1) / 6
    End if
    For X = 0 To Len - 1
    Sum1 = Sum1 + X * Price[X]
    End for
    SumY = Sum(Price, Len)
    Sum2 = SumBars * SumY
    Num1 = Len * Sum1 - Sum2
    Num2 = SumBars * SumBars - Len * SumSqrBars
    If Num2 <> 0 Then
    Slope = Num1 / Num2
    Else Slope = 0
    Intercept = (SumY - Slope * SumBars) / Len
    LinearRegValueFC = Intercept + Slope * (Len - 1 + CurrentBar - CurrentBar - TargetB)
    end if
    但是經F7檢查後顯示為
    LinearRegValueFc(函數)[Line:25,Code:2037]:無法找到可把數值代入函數的命令
    hugar 敬上

    回覆刪除
  7. DK大您好:已改好了如下
    param: Price(Numeric), Len(Numeric), TargetB(Numeric)
    var: X(0), Num1(0), Num2(0), SumBars(0), SumSqrBars(0), SumY(0), Sum1(0), Sum2(0), Slope(0), Intercept(0)
    If Len = 0 Then
    LinearRegValueFC = 0
    Sum1 = 0
    end if
    If CurrentBar = 1 Then
    SumBars = SumBars[1]
    SumBars = Len * (Len - 1) * 0.5
    SumSqrBars = (Len - 1) * Len * (2 * Len - 1) / 6
    End if
    For X = 0 To Len - 1
    Sum1 = Sum1 + X * Price[X]
    End for
    SumY = Sum(Price, Len)
    Sum2 = SumBars * SumY
    Num1 = Len * Sum1 - Sum2
    Num2 = SumBars * SumBars - Len * SumSqrBars
    If Num2 <> 0 Then
    Slope = Num1 / Num2
    Else Slope = 0
    Intercept = (SumY - Slope * SumBars) / Len
    LinearRegValueFC = Intercept + Slope * (Len - 1 + CurrentBar - CurrentBar - TargetB)
    end if

    回覆刪除
  8. 改好就好,不好意思,最近比較忙一點。

    回覆刪除
  9. 大神您好,請問SumBars函數要怎麼在HTS上面表現出來呢?請求指導,謝謝大大分享

    回覆刪除
  10. 您好!請問您是否有HTS的碎形指標源碼呢?或是是否可以請您幫我改TS轉HTS呢?
    我的信箱fans2998@gmail.com 麻煩您看到留言,撥空聯絡我喔!
    謝謝

    回覆刪除

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

Related Posts Plugin for WordPress, Blogger...