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

2010年5月9日 星期日

抓出進場後的高低點

再抓高低點的時候我們會用到 highest 或是 lowest 這兩個函數,這指的是一個週期的高點或低點,比如說 10 根 k 線的高點就會是: highest(high, 10)
那假如說我們要抓的是一個不固定根數的高低點呢?

剛剛試了一下,想知道 highest 或是 lowest 後面所代進去的參數是不是可以用不固定值。這不固定的值也許用來進場、也許用來出場其實都是可以的。比如一個狀況是出場後才開始抓高低點進備突破進場之類的想法。

而一開始是寫到了進場後抓高低點後準備作出場的動作。本來為了達到從進場後才開始記錄高低點,會用到比較麻煩的方式是用了 BarNumber 這個函數。

這個函數給了每一個 k 棒一個數字,這個數字是累加的。也就是從一開始是第 1 根 k 棒…一直到最後一根都有一個數值。

用這個方式就會比較麻煩一點了,因為必需要在進場的時候記錄下進場的 k 棒 BarNumber,之後再利用這個 BarNumber 去作判斷。


vars: entryBar(0);

if average(close, 10) cross over average(close, 30) then begin
buy next bar at market;
entryBar = BarNumber;
end if

value1 = lowest(low, Barnumber - entryBar);


以這樣的方式抓到進場後的低點。

接著其實就想到了…用了 BarNumber…那為什麼不直接使用 BarsSinceEntry 呢。
所以就把程式改成這樣:


if average(close, 10) cross over average(close, 30) then buy next bar at market;
if average(close, 10) cross under average(close, 30) then sell next bar at market;

if BarsSinceEntry <> 0 and close < lowest(low, iff(BarsSinceEntry > 10, 10, BarsSinceEntry))[1] then exitlong next bar at market;
if BarsSinceEntry <> 0 and close > highest(high, iff(BarsSinceEntry > 10, 10, BarsSinceEntry))[1] then exitshort next bar at market;


另外也用了 iff 的判斷,如果超過某個數值,就一直使用定義的那個數值。

簡單的利用這樣的想法來寫一個進場,那就是出場後抓出不固定 k 棒的高低點作突破。而因為使用到了出場後的不固定 k 棒,所以這裡用到的是 BarsSinceExit 這個函數。


if CurrentBar = 1 then begin
buy next bar at market;
exitlong next bar at market;
end;

if marketposition = 0 then begin
buy next bar at highest(high, iff(BarsSinceExit > 20, 20, 5)) stop;
end;
if marketposition = 0 then begin
sell next bar at lowest(low, iff(BarsSinceExit > 20, 20, 5)) stop;
end;

if BarsSinceEntry <> 0 and close < lowest(low, iff(BarsSinceEntry > 10, 10, BarsSinceEntry))[1] then exitlong next bar at market;
if BarsSinceEntry <> 0 and close > highest(high, iff(BarsSinceEntry > 10, 10, BarsSinceEntry))[1] then exitshort next bar at market;


首先是一開始我作了一個假訊號,因為後面的進場是利用到了 BarsSinceExit 這個函數,所以如果沒有其它的訊號,那就會連一次進場都沒有啦。

其它的部份,就自己玩玩看吧。實際上的程式也沒幾行。

3 則留言:

  1. 看了這篇文章有幾個疑問想請教,
    一、BarsSinceEntry不是一個函數嗎?那怎麼不用傳值給它就可以直接拿來用?
    二、可不可以請DK大大以後有用到新的函數先解釋一下該函數的用途、用法,像這次有用到BarsSinceEntry,BarsSinceExit,有先解釋過這樣看程式會比較了解,3Q!

    回覆刪除
  2. 小峰:就字面上的意思…應該不太難懂。他是直接使用的,就是傳回目前距離進場幾根 k 線,另一個就是距離出場幾根 k 線。

    回覆刪除
  3. 很不錯的想法 可做日後參考與應用

    回覆刪除

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

Related Posts Plugin for WordPress, Blogger...