出場方式是交易策略中非常重要的一環,直接影響策略的風險與獲利,本文以一個簡單的進出場策略,逐步改變組合不同的出場方式,讓大家看到策略的風險與報酬的變化。
首先,請開啟[進出場條件組合範例.gsc]策略,該範例提供一些簡單的進出場條件供選取組合,本文重點在測試出場方式對策略的影響,所以會固定進場條件,請勾選續創新高,均線黃金交叉(20,60),底部上拉15點,之後的20組回測除了出場條件會變化外,進場條件一律不變。
接下來,會測試20組不同出場條件,測試區間是2019年,共243個交易日(不含夜盤),編號1的回測結果,並未設定任何出場條件,但前10組回測是當沖,如果沒有任何出場條件會在出場時間(13:24)出場,策略的交易商品是小台,每日進場上限3次,單邊交易手續費設定1口20元
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 當沖 | 243 | 241 | 120 | 49.8 | 24,100 | 5,064 | -7,471 | 19,38 |
編號1的回測結果,執行1年的累計總損益19,386(已經扣除總手續費24,100和交易稅5,064) 勝率49.8%,最大虧損-7,471代表在執行策略的期間內,最多曾虧損達-7,471(實際風險),後面會設定不同的出場條件後,回測後再和編號1結果比對
停損可以控制縮小風險,但風險越高報酬越大
編號2~3分別設定2000,5000,1萬的停損,可以看到可以把最大虧損控制在接近停損金額內(沒有很接近是因為分K計算,K棒完成後才會出場,另外當沖本身風險有限,從編號1看到2009年當沖的最大虧損為-7,471),停損設定越小雖然每次交易的最大虧損會縮小,但從整體來看風險越小,可以獲得的報酬也越小
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
2 | 當沖 | 停損2000 | 243 | 295 | 141 | 47.8 | 29,500 | 6,187 | -2,921 | 813 |
3 | 當沖 | 停損5000 | 243 | 245 | 123 | 50.2 | 24,500 | 5,146 | -5,321 | 14,904 |
4 | 當沖 | 停損1萬 | 243 | 241 | 120 | 49.8 | 24,100 | 5,064 | -7,471 | 19,386 |
停利越小勝率越高,但未必能獲利
編號5~8停利出場,由小到大,停利越小代表越早停利出場的機率越高,因此會提高勝率,同時也會增加交易的次數(編號5 停利最小 進場次數最多,勝率也最高 ) 但高勝率未必能夠帶來獲利,因為停利小你的每次賺錢的交易獲利也越少,在加上交易次數增多,必須付出的手續費也越多,編號5的策略雖然勝率最高,但一年交易下來扣掉手續費後整體是賠錢的
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
5 | 當沖 | 停利1000 | 243 | 372 | 205 | 55.1 | 37,200 | 7,821 | -8,971 | -3,221 |
6 | 當沖 | 停利2000 | 243 | 287 | 150 | 52.3 | 28,700 | 6,023 | -8,571 | 7,627 |
7 | 當沖 | 停利5000 | 243 | 245 | 121 | 49.4 | 24,500 | 5,144 | -7,471 | 19,456 |
8 | 當沖 | 停利1萬 | 243 | 242 | 120 | 49.6 | 24,200 | 5,084 | -7,471 | 19,216 |
移動出場和移動停利差很大
編號9是移動出場,當策略進場後如果當下的損益比進場後的最高獲利少2000就會出場,意義就是走勢從高點拉回40點(小台40點損益約2000)後出場,有些人會以為移動出場就是移動停利,其實是有差的,以編號9策略為例,進場後若高點未曾超過40點就拉回40點以上,移動出場還是會賠錢出場,不過也有好處,就是會控制風險讓賠錢落在0~2000間(因為分K計算 最大虧損-2,718 )。移動停利則是必須要獲利的狀態下才能執行,而且獲利出場的門檻會隨著最高獲利增加而逐步上調,編號10與編號9出場條件相比,多加了一個條[最大損益>2000],因此編號10的停利門檻會在0以上,而且隨著最大損益超過2000以後,獲利出場的門檻會越來越高。這邊比對編號9和編號10 的獲利差異,可以發現移動停利的獲利比移動出場效果好很多(20,631 vs 5,170) ,看到這邊或許會有一個疑慮,移動停利必須在獲利下才能成立出場,可是有可能策略進場後就一直賠錢,因為到目前為止,策略都是當沖,所以即使賠錢,策略也會在收盤前出場,接下來,會開始測試波段策略,後續的範例再考慮移動停利的停損控制
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
9 | 當沖 | 獲利回吐2000(移動出場) | 243 | 324 | 152 | 46.9 | 32,400 | 6,780 | -2,718 | 5,170 |
10 | 當沖 | 獲利回吐2000(移動停利) | 243 | 251 | 128 | 51. | 25,100 | 5,269 | -7,471 | 20,631 |
想做波段策略,先考慮結算日問題
編號1~10 都是當沖,風險和獲利都被控制在單一交易日內,測試區間2019年波動是相對穩定,想進一步了解出場方式對波段策略的影響可以使用GSnail的留倉模式來回測,在出場頁面有一個留倉選項,勾選後會出現[自動換倉]和[平換倉時間]等參數可以設定
在做波段策略時,因為期貨類商品如果在結算日仍持有商品會被強制結算所以在程式交易中必須針對結算日進行特別處理,GSnail 提供[自動換倉]選項,預設為未啟用,當結算日策略仍持有部位時會在平換倉時間將策略部位平倉,如果啟用[自動換倉],則會將近月商品平倉後,接著自動買進/賣出次月商品。編號11未啟用[自動換倉],在沒有任何出場條件下,因為每月結算日自動出場,所以2019年共有13次進場,編號12啟用自動換倉,所以只有一次進場。編號11和編號12的報酬都非常高,這是因為都沒出場,所以報酬大約就等於2019年整年的漲幅(從9760漲到11995),但這是不做風險控管換來的,在2019年波動不大,但編號11的最大虧損為-31,122,如果碰到大波動的年度,持有部位的虧損可能會是好幾倍。接下來,後面編號13~20的波段策略都未啟用自動換倉(因為使用自動換倉出場條件必須考慮結算換倉的影響,請參考如何建立波段策略(留倉模式))
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
---|---|---|---|---|---|---|---|---|---|---|
11 | 波段 | 243 | 13 | 10 | 76.9 | 1,300 | 276 | -31,122 | 134,774 | |
12 | 波段 | 243 | 1 | 1 | 100. | 1,300 | 276 | -14,269 | 145,674 |
停損無法擋住跳空風險
停損可以控制風險,但波段策略會跨交易日執行,k線圖偶爾會出現大幅度的跳空,可能會超過你設定的停損價格,編號13~15分別設定2000,5000,1萬的停損,可以看到最大虧損分別為-13,420; -15,120; -15,120 都超過設定的停損很多,不過相比編號11不做風險控制的-31,122,基本上停損在波段策略中仍可控制風險,但必須注意跳空風險是在波段策略中無法避免的
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
---|---|---|---|---|---|---|---|---|---|---|
13 | 波段 | 停損2000 | 243 | 54 | 13 | 24.1 | 5,400 | 1,114 | -13,420 | 138,286 |
14 | 波段 | 停損5000 | 243 | 29 | 12 | 41.4 | 2,900 | 598 | -15,120 | 127,352 |
15 | 波段 | 停損1萬 | 243 | 20 | 12 | 60. | 2,000 | 417 | -15,120 | 133,633 |
移動停利,抱住波段獲利
移動停利出場方式,在波段策略通常中能夠帶來不錯的獲利,比對編號10 和編號17 相同的出場方式,但當沖與波段的獲利相差接近7倍(20,631 vs 135,764)
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
16 | 波段 | 獲利回吐2000(移動出場) | 243 | 216 | 94 | 43.5 | 21,600 | 4,511 | -13,420 | 79,989 |
17 | 波段 | 獲利回吐2000(移動停利) | 243 | 58 | 51 | 87.9 | 5,800 | 1,236 | -34,671 | 135,764 |
停損+移動停利兼顧風險與獲利
編號16移動出場策略是兼顧風險與獲利的出場方式,獲利與編號17移動停利相比少很多,但編號17並未考慮風險控制,測試區間內最大虧損-34,671,GSnail可以隨意組合出場條件,編號18~20組合不同停損和移動停利,可以看到獲利比單純的移動出場策略好,而且兼顧風險控制
編號 | 留倉 | 出場條件 | 執行天數 | 進場次數 | 獲利次數 | 勝率 % | 總手續費 | 總交易稅 | 最大虧損 | 累計總損益 |
---|---|---|---|---|---|---|---|---|---|---|
18 | 波段 | 停損2000;獲利回吐2000(移動停利) | 243 | 180 | 95 | 52.8 | 18,000 | 3,745 | -13,420 | 93,405 |
19 | 波段 | 停損5000;獲利回吐2000(移動停利) | 243 | 126 | 89 | 70.6 | 12,600 | 2,626 | -15,120 | 126,224 |
20 | 波段 | 停損1萬;獲利回吐2000(移動停利) | 243 | 79 | 65 | 82.3 | 7,900 | 1,655 | -15,120 | 125,295 |
在設計策略時,風險、報酬、與勝率是三個相互影響的因素,本文透過一個簡單的範例示範如何簡單的組合不同的出場條件來調整策略的報酬與風險控管和勝率。
警告,本文僅針對2019年進行測試,不同測試期間會有不同的結果,僅供參考之用,並不構成要約、招攬或邀請、誘使、任何不論種類或形式之申述或訂立任何建議及推薦,讀者務請運用個人獨立思考能力,自行作出投資決定,如因相關建議招致損失,概與作者無涉