H.Q.C. 赫斯提亞量化資本 · 免費知識分享
本頁為教學說明,不構成投資建議;文中任何條件、參數與數字皆為說明寫法用的示意,非操作建議;商品規格以期交所公告為準。
很多人認為設計量化策略需要很強的程式能力。但其實,最難的部分不是寫程式,而是在動筆之前,把一個「感覺有效」的交易想法,轉化成一套「清晰到電腦能看懂」的規則。本章節就從這個起點開始。
幾乎所有量化策略的開發,都需要經歷以下三個層次的轉化,從模糊走向精確:
任何一個完整的量化策略,都由以下四個功能模塊組成。設計前先把每個模塊的內容確認清楚:
進場條件在什麼情況下算成立?規則裡要不要把方向也一起寫定,還是留給後續測試決定?條件成立後,要用哪一個時間點記錄進場(當根 K 棒收盤?下一根開盤?)?
示意寫法:快線由下往上穿越慢線,且穿越當根 K 棒的成交量高於過去 N 日均量,條件成立後以下一根 K 棒的開盤價記為進場時點(僅示範條件怎麼寫,非操作建議)。
注意:「穿越」、「成交量放大」、「趨勢明顯」這些詞,必須全部替換成可以計算的具體條件,才算完成。
停損是風險管理中最不宜省略的模塊。停損距離需要在進場之前就寫定,並以固定規則呈現,避免在持倉期間依當下情緒調整。
| 停損類型 | 說明 | 優點 | 缺點 |
|---|---|---|---|
| 固定點數停損 | 進場前先寫定一段固定點數距離,觸及即出場 | 簡單,每筆最大損失固定可計算 | 不隨市場波動調整,高波動期容易被正常波動觸及 |
| ATR 倍數停損 | 以市場平均波動幅度(ATR)的倍數設定停損 | 自動適應市場當下的波動特性 | 每筆損失金額不固定,需要額外的資金管理計算 |
| 支撐/阻力停損 | 以明顯的技術支撐或阻力位置為基準,往不利方向留一段距離 | 有技術邏輯依據 | 「明顯支撐」仍有主觀性,需要精確量化 |
什麼時候出場鎖利?以事先寫定的距離作為目標、移動停利(隨有利方向的極值動態調整),或原進場條件反向成立時出場?不同的出場方式,對策略的勝率和盈虧比有根本性的影響。
單筆部位規模如何決定?是否隨帳戶規模動態調整?單次最大允許虧損佔帳戶資金的比例要如何事先寫定?資金管理決定策略在連續虧損下能否存續,是回測與風險評估中不宜略過的一環。
這是策略設計中最需要練習的技能。以下是常見的模糊描述,以及它們的量化替換方式:
| 模糊描述 | 量化替換的示意寫法 |
|---|---|
| 「趨勢向上」 | 快線在慢線之上,且快線的今日值高於前 N 根 K 棒的值(均線斜率向上) |
| 「成交量放大」 | 今日成交量 > 過去 N 日平均成交量的某一自訂倍數 |
| 「短線超賣」 | RSI 讀值落在自訂的低讀值門檻以下(門檻設得越寬,條件成立次數越多,需自行測試) |
| 「收長紅K」 | 收盤價 > 開盤價,且(收盤 - 開盤)大於指數點數的某一自訂百分比 |
| 「突破壓力」 | 今日收盤價高於過去 N 根 K 棒的最高價 |
| 「市場恐慌」 | 當日波動(當日高 - 低)大於過去 N 日平均波動的某一自訂倍數 |
本表所有寫法皆為示意,期數、倍數與門檻需自行研究決定,不構成參數建議。
核心原則:如果你的策略中還有任何需要「感覺判斷」的部分,它就還不是一個可以量化的策略。完整量化的標準是:換個人來看同一個條件,得到的答案必須完全一樣。
有人認為進場條件越多越嚴格越好,但條件越多,觸發機會越少,整個回測期的交易筆數可能只有 10 幾筆。樣本數不足,任何結論都沒有統計意義,等於在用「剛好」而非「規律」下結論。
不自覺地把策略調整到剛好在「最近這波大行情」表現很好,但回頭看其他時段卻沒什麼效果。這種策略在未來遇到不同的行情環境,幾乎必然失效。
手續費、期交稅、還有進出場的滑價(下委託和實際成交價之間的差距),對於交易頻率高的策略影響巨大。一個帳面上平均每筆獲利很小的策略,把這些成本扣掉之後,結果可能由正轉負。
MultiCharts 的策略語言 PowerLanguage,語法設計上接近人類語言。正因為語法貼近人類語言,理解它的結構不需要先會寫程式,以下不提供可執行的策略程式,只拆解一段策略程式通常由哪四個區塊構成,實際撰寫不在本站範圍:
一段策略程式通常由四個區塊組成:
本段僅說明程式的組成結構,不提供可執行的程式語句。
理解這四個區塊各自負責什麼,比記住任何一段程式重要。程式層的價值在於同一組條件能被重複檢驗:條件一旦寫定,電腦會用同樣的標準看待每一根 K 棒,不會因為當下情緒而放寬。至於條件在歷史資料上的表現如何,取決於研究者自己設定的樣本區間、成本假設與驗證方式,回測數字本身不等於未來結果。
| 函數 | 用途 | 寫法說明 |
|---|---|---|
Average(Price, Length) | 計算簡單移動平均線(SMA) | Average(Close, Length) → 收盤價的移動平均 |
Cross(A, B) | 判斷 A 是否從下往上穿越 B | Cross(FastMA, SlowMA) → 判斷快線是否在該根 K 棒由下而上穿越慢線 |
RSI(Price, Length) | 計算相對強弱指數(RSI) | RSI(Close, Length) → 指定期數的 RSI 讀值 |
AvgTrueRange(Length) | 計算平均真實波動區間(ATR) | AvgTrueRange(Length) → 指定期數的平均真實波動區間 |
Highest(Price, Length) | 取最近 N 根 K 棒的最高價 | Highest(High, Length) → 指定根數內的最高價 |
Lowest(Price, Length) | 取最近 N 根 K 棒的最低價 | Lowest(Low, Length) → 指定根數內的最低價 |
MarketPosition | 回傳目前部位狀態(1 代表多方部位、-1 代表空方部位、0 代表無部位) | 用於判斷目前是否已有部位 |
Close[N] | 存取 N 根K棒前的收盤價 | Close[N] → 前 N 根 K 棒的收盤價 |
從一個交易想法到一套寫得清楚、能被檢驗的規則,中間還有不少觀念要釐清:多個條件如何組合、出場方式怎麼分類、回測結果有哪些常見的失真來源。H.Q.C. 赫斯提亞量化教育學院在 Pressplay Academy 的課程,以量化觀念、歷史案例、公開資料判讀、回測方法與風險管理為主軸。
本課程為教育內容,不含程式實作,不提供現成策略、買賣訊號、特定商品建議或自動交易工具。
前往 Pressplay 查看完整課程© H.Q.C. 赫斯提亞量化資本 · 官網免費知識分享區 · 內容僅供教育參考 · 版本 v2.0(2026-09-10)