基本上…換湯不換藥…其實只有把 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;
這邊我通常會作的動作是把一些變數作設定,歸零、重設某個數值等。至於要怎麼樣運用…就看大家的想法囉。
沒有留言:
張貼留言
請留下您的大名…匿名者恕不回應…