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

2008年8月4日 星期一

程式交易 - 當日高低點程式

今天又把之前的想法拿出來弄了一下,這個想法也滿簡單的,就是在一段時間之後,把當日的高低點抓出來,往上做多、往下做空。其實昨天完成的程式我已經很滿意了,也打算就用那程式開始跑交易,只是因為交易次數實在不夠,所以才想到再寫一個交易次數高一點,但卻又能小賺點錢的程式,今天的這隻…還不算滿意…

來看看不怎麼樣的績效吧…手續費來回還是設二千…



真的是個不怎麼樣的程式啊…所以程式碼就順便貼了…醜話說在前頭,可別直接拿去用然後賠錢找我算帳…
以下,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;


18 則留言:

  1. DK大
    感謝分享程式碼!可否幫忙轉成HTS可以用的呢? 先謝謝您!!

    回覆刪除
  2. 大大你好
    我想請問一下
    如果說我想畫出這各高低點的線

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

    plot1(buyline,"buyline");

    不知道為什麼都畫不出來

    謝謝

    回覆刪除
  3. 我試了一下可以...你 k 線週期用幾分?

    回覆刪除
  4. 大大你好
    我是用5分K線

    回覆刪除
  5. 那應該不會有問題…檢查一下程式…另外畫線的要用指標才行喔

    回覆刪除
  6. 請問大大我想寫一個一天只交易3次的程式
    可是我這樣寫出來之後
    發現一天只會交易一次
    不知道是哪裡出了問題
    謝謝
    if date <> date[1] then begin
    count = 0 ;
    end ;

    if time >= 0930 and time <= 1230 then begin
    if marketposition <= 0 and count < 4 then begin buy at a1 stop;
    count = count +1 ;
    end;
    if marketposition >= 0 and count < 4 then begin sell at a2 stop;
    count = count +1 ;
    end;
    end;

    回覆刪除
  7. 你的 if 其實是一直在進去的..所以不能這樣用喔..
    比較好的用法的話..就是等倉位改變後再去加 count

    vars:mc(0);

    mc = marketposition * currentcontracts;

    if mc[1] <> mc then
    count = count + 1;

    回覆刪除
  8. if open < buyline and close > buyline and opend(0) > closed(1) then begin
    buy ("b4") next bar at market;

    這邊寫成
    if opend(0) > closed(1) then begin
    buy ("b4") next bar at buyline stop;
    就沒有訊號了,是我那邊有寫錯嗎?謝謝

    回覆刪除
  9. HsinFeng:看來是沒問題…可能要看你其它地方是否有改到了。

    回覆刪除
  10. 想請問一下,這支程式回測的日期是從何時開始到何時? 謝謝喔

    回覆刪除
  11. time 11:00 ~ time 12:30 然後拉過高做多
    殺破底作空,程式是這個意思嗎?這樣一天可能已經拉一大段然後過高又拉一大段,尾盤平倉的話已經沒甚麼獲利空間了吧~

    回覆刪除
  12. Breton: 我忘記了呢…可以試著自己測一下吧

    回覆刪除
  13. Jerry: 當然有可能是這樣的結果。

    回覆刪除
  14. 好的,謝謝

    想請問另一個問題
    我想用一分鐘k來寫簡單的當沖突破策略
    九點半前抓當天高低點,九點半之後到下午一點間若突破就進場
    但發現如果我當天的分鐘k有遺漏的話
    當天就無法判斷出高低點以做突破

    網路上找不到類似的問題,所以不好意思麻煩你了
    不知是否我的程式寫錯了
    input:settime(930),wpt(20),percent(0.4),stoploss(20);
    vars:highline(0),lowline(99999),flag(0),p(200),count(0);

    if date<>date[1] then begin
    highline=0;
    lowline=99999;
    flag=0;
    count=0;
    end;

    if time>=845 and time<=settime then begin
    count=count+1;
    end;

    if time>settime and flag=0 then begin
    highline=highest(h,count);
    lowline=lowest(l,count);
    flag=1;
    end;

    if time>settime and time<=1300 and marketposition=0 and flag=1 and highline<>0 and lowline<>99999 then begin
    buy("b") next bar at highline+1 stop;
    sell("s") next bar at lowline-1 stop;
    flag=2;
    end;

    if marketposition<0 then begin
    exitlong("sl") next bar at entryprice(0)-stoploss stop;
    end
    else
    if marketposition>0 then begin
    exitshort("bl") next bar at entryprice(0)+stoploss stop;
    end;

    if time>=1330 and marketposition<>0 then begin
    exitlong("sv") next bar at market;
    exitshort("bv") next bar at market;
    end;

    setpercenttrailing((wpt*p),percent);

    回覆刪除
  15. 抓高低點不太一樣的是因為怕當天有漏掉的k棒,所以不用固定的數值抓k棒
    麻煩您了
    謝謝

    回覆刪除
  16. Breton: 似乎你想的太麻煩了點…

    if time = settime then begin
    highLine = highd(0);
    lowLine = lowd(0);
    end;

    搞定。接下來就是你的進出場了。

    回覆刪除
  17. 大大你好, 現在才學程式, 若然是用秒圖的話可以嗎, 即係091505-091510..即是5秒內的高低點進場, 可行嗎?

    回覆刪除

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

Related Posts Plugin for WordPress, Blogger...