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

2010年3月1日 星期一

變數的運用(二)

上一篇提到了如何運用變數來儲存進出場價位,也順便給了個練習題是使用 MACD 交叉來記錄交叉時的高低點,利用這個高低點來作進出場。這邊先把這個練習的程式給大家。

基本上…換湯不換藥…其實只有把 Value1 和 Value2 換成 MACD 的計算而已,而 MACD 計算又在前幾篇提到過…根本應該是簡單到不行才對。

vars: longLine(0), shortLine(0);

Value1 = MACD(close, 12, 26);
Value2 = XAverage(MACD(close, 12, 26), 9);

if Value1 cross over Value2 then begin
longLine = high;
shortLine = 0;
end;

if Value1 cross under Value2 then begin
shortLine = low;
longLine = 0;
end;

if longLine <> 0 then
buy next bar at longLine stop;
if shortLine <> 0 then
sell next bar at shortLine stop;


夠簡單了吧…而且寫到這裡我們也偷偷的寫出了一隻能夠獲利的程式了。以六十分線來回測會得到這樣的結果:






接下來我想提一下倉位的記錄。目前的倉位可以用 marketposition 這個保留字來獲得…它可以取得目前當根的倉位。

不過當我們需要上一根 k 線的倉位的時候怎麼辦呢? Marketposition 可不能用 Marketposition[1] 啊…所以,簡單一點我們就另外宣告一個變數來儲存倉位吧。


vars: mc(0);

mc = marketposition * currentcontracts;


首先,marketposition 在 TS 內代表的是多單、空單或是空手,也就是以 1、-1 和 0 三個數字來記錄,而 currentcontracts 呢,則代表目前的口數,如果是多單十口,那 currentcontracts 就會等於 10,不過 currentcontracts 卻沒有帶正負號的…也就是說如果今天是空單 10 口,那 currentcontracts 還是會等於 10,所以這邊我們就把這兩個數值相乘。

記錄倉位有什麼用處…比如說我們今天需要在倉位有轉變的時候作一些動作,那就可以用這樣:

if mc <> mc[1] then begin
xxx
end;


這邊我通常會作的動作是把一些變數作設定,歸零、重設某個數值等。至於要怎麼樣運用…就看大家的想法囉。

沒有留言:

張貼留言

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

Related Posts Plugin for WordPress, Blogger...