2008年11月22日 星期六

HTS程式碼:點數停損之開盤跳空人性版


關於停損,實在是五花八門,各有所好,也各有其優缺點,過去我發佈過如下這篇:2007/04/01的絕對點數停損

那是採用This Bar的方式去作,因為有一大票人就是鄙視This Bar,你也可以改換成如下的方式:

Parameters:maxLOSS(30)
.
.
.
//****************絕對點數停損-START****************
if BarsSinceEntry(0) = 0 then
Value1111 = EntryPrice(0) - maxLOSS*iff(maxLOSS>=1,1,EntryPrice(0))
Value1112 = EntryPrice(0) + maxLOSS*iff(maxLOSS>=1,1,EntryPrice(0))
end if

if MarketPosition > 0 then
ExitLong Next Bar at Value1111 STOP
elseif MarketPosition < 0 then
ExitShort Next Bar at Value1112 STOP
end if
//****************絕對點數停損-End******************



最近,台股一大堆跳空,而且一跳還常常都是不小的GAP,對於執行點數停損來說,等於是一開盤就把自己的部位給秒殺了~不諱言,有點笨的阿政這兩三個月不知道被秒殺幾次了T_T。

但是不知道大家有沒有發現,近期似乎常常有開低卻走高或是開高就走低的狀況發生?開盤幾乎就是當天的最高點或是最低點的附近,這樣的實況對於忠實執行自我停損的人來說,至少心裡上就是TMD^10,這是實話。我願意停損,我也切實執行停損(都接上自動下單了還不切實嗎),但是對於這樣一跳空就要停損的狀況來說,我可不可以有一點點真實部位損失上的人性考量呢?

以作多來說:一跳空就來200點,反正就是要虧這兩百點了,如果當天是開盤就是低點,開低就走高,不論後續的狀況如何,在一開盤就送出了平倉的指令總是讓人不爽的。我可不可以如果一開盤的跳空就在我的停損價之下的話,先憋一下,如果真的又往下走,還是一樣停損~說真的啦,跳空兩百都已經要死兩百點去了,如果等一下~比如開盤往下又走了5點才了斷,虧200與虧206點...其實差不多吧。而如果當天真的就是開低走高呢?而這也是最近我收到的來信問題^^。這個狀況我想想可以公開給大家參考。PS.我沒有對這個問題收費,因為我有打算公開這個程式碼在心中了。

來~我們就這樣做。前半段與之前的點數停損寫法是相同的,但是因為要等到開盤價的出現,才能看當天是不是真的跳空,這就只好用上This Bar了。

Parameters:maxLOSS(30)
.
.
.
//****************絕對點數停損-START****************
if BarsSinceEntry(0) = 0 then
Value1111 = EntryPrice(0) - maxLOSS*iff(maxLOSS>=1,1,EntryPrice(0))//多單停損價
Value1112 = EntryPrice(0) + maxLOSS*iff(maxLOSS>=1,1,EntryPrice(0))//空單停損價
//這樣的寫法可以利用參數直接決定要用點數或是%去決定你的停損價位。
end if


//這一段用來判斷跳空直接跳在原始停損價以下的,如果發生了就調整停損價。-Start
if Date>Date[1] then//用DATE來判斷開盤,不論幾分線都適用。
if Open < Value1111 and MarketPosition > 0 then
Value1111 = Open - 5
Exitlong next bar at Market//別心存僥倖,價格會跑到原始停損價外就是錯誤的部位。
elseif Open > Value1112 and MarketPosition < 0 then
Value1112 = Open + 5
Exitshort next bar at Market//別心存僥倖,價格會跑到原始停損價外就是錯誤的部位。
end if
end if
//這一段用來判斷跳空直接跳在原始停損價以下的,如果發生了就調整停損價。-End


//實際執行停損的部份-Start
if MarketPosition > 0 and Low <= Value1111 and BarsSinceEntry(0) > 0 then
if Open <= Value1111 then
Exitlong this bar at Open or Higher
Exitlong this bar at Open or Lower
else
Exitlong this bar at Value1111 or Higher
Exitlong this bar at Value1111 or Lower
end if
Value1111 = 0

elseif MarketPosition < 0 and High >= Value1112 and BarsSinceEntry(0) > 0 then
if Open >= Value1112 then
Exitshort this bar at Open or Higher
Exitshort this bar at Open or Lower
else
Exitshort this bar at Value1112 or Higher
Exitshort this bar at Value1112 or Lower
end if
Value1112 = 999999

end if
//實際執行停損的部份-End



至於是不是開盤往下再走5點或是要開盤後再走0.5%或是怎樣的Buffer安排,這就有賴你自己的創意了。

熱門文章