更新於 2024/11/12閱讀時間約 3 分鐘

留得青山在,不怕沒柴燒 - 停損機制

首先回憶魔鬼藏在細節裹,提到雖然以淨利為主要目標進行最佳化,可得到很傑出的年化報酬,但問題也在此,過渡追求淨利,容易忽略了風險,造成最大的獲利回撤很大、賺賠比過低、全時段持倉⋯⋯等問題,本篇就為上週的策略加入停損機制,以風險角度為策略進行改善。

在改善最大獲利回撤問題,有許多進階出場方式可使用,如:長紅(黑)棒被吞噬、爆量長影線、盤太久未達預計獲利⋯⋯等方式,本文先以最簡單的「絕對點數停損」及「移動停利」二個方式來討論。

Inputs: BarCount(5), BiasLen(20), BiasThreadhold(1), ActiveTrailingProfile(10), TrailingPercent(20), StopLoss(20);
Variables: BiasValue(0);

停損及移動停利參數

在輸入的參數,設計了三個參數:

  • ActiveTrailingProfile:
    當獲利超過這個設定的點數後,才啟動移動停利,這裹使用點數而不直接使用金額,是為了讓策略可以應用在不同商品時,都以點數為基準。
  • TrailingPercent:
    獲利折返設定的百分比後就出場,如此值設定為10,獲利100點時,則回吐10點獲利後,即會出場。
  • StopLoss:
    當目前虧損達到設定的點數後,即停損出場,這裹使用點數而不直接使用金額,是為了讓策略可以應用在不同商品時,都以點數為基準。
If MarketPosition <> Then
Begin
SetStopPosition;
SetPercentTrailing(ActiveTrailingProfit * PointValue, TrailingPercent);
SetStopLoss(StopLoss * PointValue);
End;

絕對停損及移動停利

在進場的程式碼尾端加入上述的程式碼,就可以達到「絕對停損」及「移動停利」的目的,在程式中,第一行判斷MarketPosition是否不為零(代表現在有部位),加入這行時,則出場訊號的觸發點,會在下一根K棒啟動,讀者可試著把這行判斷的語法註解掉,看結果會有何不同。

  • SetStopLoss:
    設定停損金額,此函式傳入值是金額,而我們輸入欄位是點數,因此會使用點數乘上每點的金額(StopLoss * PointValue)。
  • SetPercentTrailing:
    設定多少獲利金額後,啟動移動點數出場的機制,第一個參數為啟動的獲利金額,在此跟停損函式相同,要乘上每點的金額(ActiveTrailingProfit * PointValue);第二個參數為折返百分比,當由最大獲利折返至此百分比時,程式就會發出平倉單。

本篇介紹簡單的出場函式,讓策略不再是翻單形式的策略,不會全時段都有部位,畢竟部位在市場上多待一分鐘,就多一分鐘的風險,下篇再來探討加入這些機制後的績效表現。


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.