停損止盈#
在交易策略中,風險管理是最重要的一環。除了用 Sell / BuyToCover 手動設定出場條件,PowerLanguage 提供了 5 個內建的風險管理函數,讓策略自動在特定虧損或獲利金額時出場:
| 函數 | 說明 |
|---|---|
SetStopLoss | 固定停損:持倉虧損達到指定金額時出場 |
SetProfitTarget | 固定止盈:持倉獲利達到指定金額時出場 |
SetBreakEven | 保本停損:獲利達到門檻後,將停損移至進場價格 |
SetDollarTrailing | 追蹤停損(固定金額):獲利從高點回落超過指定金額時出場 |
SetPercentTrailing | 追蹤停損(百分比):獲利從高點回落超過最高獲利的指定百分比時出場 |
這 5 個函數的共同特性:
- 自動適用多空 :不需要分別寫多頭和空頭的邏輯,函數會自動根據持倉方向計算停損和止盈價格
- 整個倉位 :預設套用到整個倉位(所有合約加總),不是每口合約。若要改為每口合約,需先呼叫
SetStopContract - Intrabar 觸發 :這 5 個函數在K棒收盤時評估,也會在K棒內持續監控,可在進場的同一根K棒內觸發出場
點數換算金額#
Amount 參數的單位是貨幣金額(新台幣、美元等)。如果要用點數設定停損,需要乘以 BigPointValue:
金額 = 點數 × BigPointValue常見台灣期貨的 BigPointValue:
| 商品 | BigPointValue |
|---|---|
| 台指期大台 (FITX) | 200 TWD / 點 |
| 台指期小台 (MTX) | 50 TWD / 點 |
| E-mini S&P 500 (ES) | 50 USD / 點 |
範例: 小台指 1 口停損 50 點 = SetStopLoss(50 * BigPointValue) = SetStopLoss(2500)
在程式碼中直接使用 BigPointValue,而不是寫死數字,可以讓策略在不同商品上通用。
SetStopLoss#
SetStopLoss 設定固定停損:持倉虧損達到 Amount 時,送出停損單出場。
語法#
| |
| 語法元素 | 說明 |
|---|---|
Amount | 整個倉位的最大允許虧損金額。多頭停損價 = EntryPrice - Amount / BigPointValue;空頭停損價 = EntryPrice + Amount / BigPointValue |
範例#
小台指 1 口進場後,設定 50 點(2500 元)的固定停損:
| |
SetStopLoss放在腳本最外層即可,不需要包在If條件內。每根K棒執行時,函數會自動套用到當前持倉。
SetProfitTarget#
SetProfitTarget 設定固定止盈:持倉獲利達到 Amount 時,送出限價單出場。
語法#
| |
| 語法元素 | 說明 |
|---|---|
Amount | 整個倉位的止盈金額。多頭止盈價 = EntryPrice + Amount / BigPointValue;空頭止盈價 = EntryPrice - Amount / BigPointValue |
範例#
小台指 1 口進場後,設定 100 點(5000 元)的止盈:
| |
SetBreakEven#
SetBreakEven 設定保本停損:持倉獲利達到 Profit 後,自動將停損移動至進場價格(損益兩平點),消除虧損風險。
語法#
| |
| 語法元素 | 說明 |
|---|---|
Profit | 觸發保本停損的獲利門檻(整個倉位)。獲利達到 Profit 後,停損價自動移動至 EntryPrice |
範例#
小台指 1 口進場後,當獲利達到 30 點(1500 元)時,停損移至進場價格:
| |
SetBreakEven通常和SetStopLoss搭配使用:初期用SetStopLoss控制最大虧損,一旦達到保本門檻,停損自動上移至進場價,確保不虧損出場。
SetBreakEven不會將手續費和滑價計入損益計算,保本停損觸發後的出場並不代表實際損益為零。
SetDollarTrailing#
SetDollarTrailing 設定追蹤停損:以貨幣金額追蹤倉位的最高獲利,當獲利從高點回落超過 Amount 時出場,用於趨勢交易中鎖定浮動獲利。
語法#
| |
| 語法元素 | 說明 |
|---|---|
Amount | 從持倉最高獲利允許的最大回落金額(整個倉位)。當前獲利低於(最高獲利 - Amount)時出場 |
追蹤停損的行為:
| 持倉方向 | 追蹤基準 | 出場條件 |
|---|---|---|
| 多頭 | 持倉期間的最高獲利 | 當前獲利 < 最高獲利 - Amount |
| 空頭 | 持倉期間的最高獲利 | 當前獲利 < 最高獲利 - Amount |
如果追蹤幅度要隨獲利等比例放大,可改用
SetPercentTrailing。
範例#
小台指 1 口進場後,設定 80 點(4000 元)的追蹤停損:
| |
追蹤停損的獲利變化範例(進場價 20,000,Amount = 4,000 TWD,BigPointValue = 50):
| K棒 | 收盤價 | 未實現獲利 (TWD) | 最高獲利 (TWD) | 出場門檻 (TWD) | 說明 |
|---|---|---|---|---|---|
| 進場 | 20,000 | 0 | 0 | -4,000 | 初始狀態 |
| +1 | 20,050 | 2,500 | 2,500 | -1,500 | 獲利新高,門檻更新 |
| +2 | 20,120 | 6,000 | 6,000 | 2,000 | 獲利新高,門檻更新 |
| +3 | 20,080 | 4,000 | 6,000 | 2,000 | 獲利未創新高,門檻不動 |
| +4 | 20,035 | 1,750 | 6,000 | 2,000 | 獲利 1,750 < 門檻 2,000,出場 |
未實現獲利計算:(收盤價 - 進場價) × BigPointValue,例如 +2 棒 = (20,120 - 20,000) × 50 = 6,000 TWD。
SetPercentTrailing#
SetPercentTrailing 設定百分比追蹤停損:獲利首次達到 Profit 門檻後,追蹤最高獲利;當獲利從高點回落超過最高獲利的 Percentage% 時出場。
與 SetDollarTrailing 的差別在於追蹤幅度是相對的 — 獲利越高,允許的回撤金額也越大。
語法#
| |
| 語法元素 | 說明 |
|---|---|
Profit | 激活追蹤停損的最低獲利門檻(整個倉位的貨幣金額)。獲利達到 Profit 前,追蹤停損不會生效 |
Percentage | 從最高獲利允許的最大回落百分比(0–100)。出場條件:當前獲利 < 最高獲利 × (1 - Percentage / 100) |
範例#
小台指 1 口進場後,當獲利達到 2,000 TWD 後,設定最高獲利回落 50% 時出場:
| |
承上相同情境(進場價 20,000,BigPointValue = 50),SetPercentTrailing(2000, 50) 的行為:
| K棒 | 收盤價 | 未實現獲利 (TWD) | 最高獲利 (TWD) | 出場門檻(50%) | 說明 |
|---|---|---|---|---|---|
| 進場 | 20,000 | 0 | — | — | 未激活(0 < 2,000) |
| +1 | 20,050 | 2,500 | 2,500 | 1,250 | 首次達到門檻,激活!2,500 × 50% |
| +2 | 20,120 | 6,000 | 6,000 | 3,000 | 獲利新高,門檻更新:6,000 × 50% |
| +3 | 20,080 | 4,000 | 6,000 | 3,000 | 未創新高,門檻不動 |
| +4 | 20,035 | 1,750 | 6,000 | 3,000 | 獲利 1,750 < 門檻 3,000,出場 |
注意:在獲利達到
Profit門檻之前,SetPercentTrailing不會提供任何下檔保護。通常需要搭配SetStopLoss在初期控制虧損。
SetDollarTrailing vs. SetPercentTrailing#
SetDollarTrailing | SetPercentTrailing | |
|---|---|---|
| 參數 | Amount(貨幣金額) | Profit(激活門檻)+ Percentage(百分比) |
| 追蹤幅度 | 固定金額,不隨獲利變化 | 隨最高獲利等比例放大,獲利越高允許回撤越大 |
| 進場即生效 | 是,無需達到任何門檻 | 否,需先達到 Profit 門檻 |
每口合約模式:SetStopContract#
Amount 預設是整個倉位的金額。若策略同時持有多口合約,且希望每口合約各自獨立停損,可在風險管理函數前呼叫 SetStopContract:
| |
呼叫 SetStopPosition 可切換回整個倉位模式(預設值)。
範例: 2 口小台指,每口合約各自設定 50 點(2500 元)停損:
| |
若不呼叫 SetStopContract,SetStopLoss(2500) 是整個 2 口倉位的停損 2500 TWD(約每口 1250 TWD)。
組合使用範例#
以下範例結合 3 個風險管理函數,實作一個有完整風險控制的均線策略:
| |
出場邏輯說明:
- 固定停損 (SetStopLoss) :進場後立即生效,虧損達 50 點則出場
- 保本停損 (SetBreakEven) :獲利達 30 點後,停損移至進場價,固定停損失效
- 追蹤停損 (SetDollarTrailing) :持續追蹤最高獲利;當獲利從高點回落 80 點,追蹤停損觸發
- 均線出場 :收盤跌破均線則出場,無論停損是否達到
哪個出場條件先觸發,就先出場。
注意事項#
Intrabar 觸發#
這 5 個函數在K棒內持續監控(intrabar evaluation),不只是在K棒收盤時評估,因此可能在進場的同一根K棒內觸發出場。
同時觸發多個停損#
如果同一根K棒內,SetStopLoss 和 SetDollarTrailing 都達到出場條件,以先觸發的為準。
與手動出場指令並存#
Sell / BuyToCover 指令和這 5 個函數可以同時存在,互不衝突,哪個先觸發就先出場。
無法針對特定進場設定#
這 5 個函數套用到策略內所有開放的進場部位,無法針對特定進場名稱(EntryLabel)設定不同的停損參數。
停損只往有利方向移動#
SetDollarTrailing 的出場門檻只會隨最高獲利上升,不會因為獲利回落而下移。
僅限訊號腳本#
這 5 個函數只能在訊號(Signal)腳本中使用,無法在指標(Indicator)腳本中使用。
Reference#
https://www.multicharts.com/trading-software/index.php?title=SetStopLoss
https://www.multicharts.com/trading-software/index.php?title=SetProfitTarget
https://www.multicharts.com/trading-software/index.php?title=SetBreakEven
https://www.multicharts.com/trading-software/index.php?title=SetDollarTrailing
https://www.multicharts.com/trading-software/index.php?title=SetPercentTrailing
https://www.multicharts.com/trading-software/index.php?title=SetStopPosition