一般程式交易者一開始常常花時間在思考進場邏輯比較多,而例如均線交叉、通道突破等,都是直接利用下一個訊號進場,當成前一訊號的出場,例如黃金交叉買進,死亡交叉時將買進訊號直接反手做空,又或是漲破通道買進,跌破通道直接反手做空。這樣的交易特色是,沒有空手的時期,也就是認為隨時要有方向,導致在震盪盤的時候,交易次數比有先出場的策略來的多,因此本篇先介紹一些J認為若要寫出有空手時期的策略,最基本需要有的出場寫法。
本篇一樣採用通道突破的邏輯擔任進場主邏輯,讀者可先複習 通道突破策略 ,本篇將進場稍微增加了每日交易次數與時間的濾網,交易次數控制的程式碼如下:
利用DTTL(多單用)與DTTS(空單用)來建立一個開關,每天第一根K棒後即計算為1,當部位變化為多單或空單,則將其歸0,藉此控制減少區間過小時來回進出的狀況,因此進場的程式碼改寫如下。
在交易次數與時間控制下,當價格突破HH或跌破LL就進場。
再透過進場濾網的限制後,此通道突破已不若原本隨時都會有部位的設計(因可能進場條件被濾掉),所以原本通道反手作多或反手作空的進場線,須另外撰寫成為出場邏輯,避免進場濾網檔掉原本通道的出場,故可如下圖般重新撰寫。
我們簡單看一下這樣的留倉績效,如下圖。(本篇主要凸顯增加停損機只與原本策略的差異,因此參數與K棒周期並不特別提供,讀者可以自行嘗試適合自己的周期。)
績效有個印象後,我們開始試著增加最基本的固定停損邏輯,如下圖。
透過SETSTOPLOSS內建功能的使用,可以設定多空兩者分別輸多少金額停損,將多空特性不同的想法結合進去,但讀者須特別注意,若使用MP來判斷多空,則會漏掉一進場時,瞬間價格可能在當根就已經超過停損的狀況,因此特別增加一個不分多空的SETSTOPLOSS,善用只要有部位就能在K棒內產生委託的出場功能。
增加後的績效如下圖。
多單明顯的改善,空單在獲利上卻減少了,雖整體的獲利上升,回檔卻變大,結果並不令人滿意,顯示只有固定停損是不夠的,接著我們來撰寫也很常用的獲利拉回出場法。
在撰寫獲利拉回出場時,為了避免MC計算上產生K棒內價格走勢假設的錯誤(例如在未開啟精密回測時,K棒只用開高低收4個點運算,而若當根走勢很大,在回測計算獲利拉回時,將利用該K棒最高或最低點計算,然而真實情況可能在還沒出現最高或最低點時已經達成獲利拉回出場的現象,導致高估獲利能力的狀況。)
因此J將不建議讀者使用setpercenttrailing與setdollartrailing等內建功能,下圖將示範如何利用自行撰寫的程式碼達到同樣的目的。
透過MPH與MPL的設計,可以計算進場後最高的價位,與最低的價位,再透過變數GAINL與GAINS的調整,設定要達到多少點以上才滿足"獲利"的條件,並再由TRLX與TRSX來設定拉回的百分比,於確立出現上一根K棒最高最低點後,掛出STOP單,等待"拉回"時觸碰價格即出場。
增加此出場法後,績效如下圖。
可以發現獲利持續增加,回檔也大幅減少,近年績效也持續創高,顯示出場的設計將明顯的影響策略表現,而本篇除了主邏輯通道得出場,另增加了固定停損與獲利拉回的出場,但實際上還有許多不同類型的出場設計,在有了本篇基礎後J將於日後介紹更多面向的出場邏輯,以提供讀者思考如何打造一個更完整的交易策略。
请问版主, 能介绍一下日内策略的初始停损如何确定, 比如沪深300, 这大半年每日波动挺大, 比前两年的波动有了质的变化 ,停损太小会很容易出场, 所以现在面临不同的阶段 ,如何确定初始停损的问题
回覆刪除HI sadrick
回覆刪除如果你想要讓停損金額可以隨著近期的市場波動而放大縮小,那可以利用行情本身的波動率來作。例如
歷史波動率、歷史波動率策略設計 這兩篇有提到相關內容可以參考。