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

2009年3月24日 星期二

程式交易 - 同一策略跑不同分鐘線時訊號輸出方式

今天遇到一個問題…那就是相同的策略,希望在兩種不同分鐘線內執行且輸出訊號的方法。當然有一種解決方式是把程式另外再 Copy 一份…然後等於是兩隻內容相同的程式…放在兩個不同時間週期內執行…這樣的方式只要在兩隻程式內把訊號輸出的檔名改變一下即可。


另一種方式呢…就是再另外增加一組訊號輸出的程式碼…程式碼如下:

if date = lastcalcdate and time = LastCalcTime and BarInterval = 5 then
FileDelete("C:\DarkKnightTrader\DT3.txt")
FileAppend("C:\DarkKnightTrader\DT3.txt", ("0,"+ NumToStr( Date, 0 ) +","+ NumToStr(Q_time,0)+","+ NumToStr(CurrentContracts,0)+",0,"+NumToStr(close,0)+",1"))
End if

if date = lastcalcdate and time = LastCalcTime and BarInterval = 10 then
FileDelete("C:\DarkKnightTrader\DT2.txt")
FileAppend("C:\DarkKnightTrader\DT2.txt", ("0,"+ NumToStr( Date, 0 ) +","+ NumToStr(Q_time,0)+","+ NumToStr(CurrentContracts,0)+",0,"+NumToStr(close,0)+",1"))
End if


可以看到本來是只用一組輸出即可…這邊用到了第二組的輸出…只要就是加上了 BarInterval 這個判斷式。

BarInterval 是用來判斷分鐘線為幾分鐘的函式。以 5 分鐘為例…BarInterval 就會等於 5 。

所以上面的例子就是把該策略同時放進 5 分鐘和 10 分鐘的 K 線裡執行… 5 分鐘的訊號輸出
至:C:\DarkKnightTrader\DT3.txt
而 10 分鐘的訊號輸出至:C:\DarkKnightTrader\DT2.txt

這兩個檔案…再由下單機去讀取這兩個檔案即可。

當然…第一種作法比較簡單一點…只要另外再新增一個策略檔案…然後把程式碼整個貼過去後…把輸出的訊號檔案改個名子就行了。

7 則留言:

  1. 感謝大大的分享
    那剩下的問題就是:5分線的策略(DT5)如何抓到10分線輸出的策略訊號(DT10)?

    回覆刪除
  2. james: 兩隻不同的程式要互相抓到訊號大概是不太可能…除非你把他們寫在一起…

    回覆刪除
  3. D.K大您好:
    請問一下如果要用5分K為進場條件,1分K為出場條件,這樣的方式程式該如何寫呢?是否有可以參考的可以提供給我呢?感謝您唷!

    回覆刪除
  4. 補充:
    DATA1=5分K,DATA2=1分K,買進訊號是看5分K,賣出訊號是看1分K

    回覆刪除
  5. chunnannn: 這樣不太行..也許你把 data1 改為 1 分.. data2 改為 5 分會比較容易達成。

    回覆刪除
  6. DK大:
    好的,我來試試看,非常感謝您的回覆唷!

    回覆刪除
  7. D.K大您好:
    在HTS測試時,兩組輸出訊號碼同時貼在5分線, 只有5分的文字檔報價會變動,10分的不會動;若貼到10分線, 只有10分的文字檔報價會變動,5分的不會變動。
    程式本身沒有做更動,請問是什麼問題呢?麻煩您回覆,謝謝您!

    回覆刪除

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

Related Posts Plugin for WordPress, Blogger...