訂單流指標:Delta、足跡圖,以及回測需要什麼
訂單流指標把成交量依 K 棒與價位拆成主動買進與主動賣出。要正確測試它們,需要記錄每筆成交方向的逐筆資料,因為 OHLC K 棒會把這項資訊丟掉。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
NinjaTrader 與 ATAS 等平台中的訂單流指標,會把成交量拆成主動買進與主動賣出。Delta 是兩者的差額,足跡圖則顯示 K 棒內每個價位的這種拆分。要測試 Delta 或足跡圖,需要記錄每筆成交方向的逐筆資料,因為 OHLC K 棒並不保留這項資訊。
訂單流交易中的 Delta 衡量什麼?
Delta 衡量的是哪一方比較急,而不是哪一方比較對。每筆成交都有買方與賣方。其中一方通常是用限價單在等待,另一方則用市價單跨過買賣價差。訂單流交易就是在這些主動單成交時去解讀它們,而不是只看最後形成的價格。訂單流資料比價格難取得,許多交易人因此先從只用價格的 RSI 開始。
訂單流是組成每根 K 棒的逐筆成交與委託流,包括每筆成交的價格、數量與方向。「在賣價成交」代表主動買方吃掉了掛著的賣單。「在買價成交」代表主動賣方打到了掛著的買單。
Delta 是在一根 K 棒或其他期間內,在賣價成交的量減去在買價成交的量。Delta 成交量指標會為每根 K 棒畫出這個數字。累積 Delta 是各 K 棒 Delta 的連續加總,通常在每個交易時段開始時歸零。例如,在賣價買進的口數多於在買價賣出的口數的 K 棒,其 Delta 為正;下方的假設性足跡圖就以這樣一根 K 棒為例。
平台以兩種方式之一把每筆成交標示為買或賣。有些交易所行情會標記每筆成交的主動方,平台就使用該標記。否則,平台會把成交價與當時的最佳買賣價比較。這兩種方法對同一筆成交可能給出不同標示,所以兩個平台對同一根 K 棒顯示的 Delta 可能略有差異。
足跡圖顯示什麼?
足跡圖顯示 K 棒的內部:每個價位成交了多少,以及在哪一方成交。把一般 K 線想成只列出總額的收據,足跡圖就是逐項列明的明細收據。
足跡圖是一種 K 棒圖,K 棒內的每個價位都顯示自己的成交量,通常拆成在買價的量與在賣價的量。許多足跡圖指標也會顯示每個價位的 Delta,並標出失衡。失衡是指某個價位上一方的主動成交量遠大於另一方。許多平台以斜向方式計算:把某個價位的賣價成交量,與低一個跳動點的買價成交量相比,並對照使用者設定的比率。
假設性範例
一根 5 分鐘 K 棒,標的以 0.25 點為單位變動。足跡圖記錄每個價位的成交量:
| 價格 | 在買價賣出 | 在賣價買進 | Delta |
|---|---|---|---|
| 101.00 | 12 | 5 | −7 |
| 100.75 | 30 | 45 | +15 |
| 100.50 | 60 | 90 | +30 |
| 100.25 | 80 | 70 | −10 |
| 100.00 | 25 | 10 | −15 |
| K 棒合計 | 207 | 220 | +13 |
一般的 K 棒檔案只儲存開盤 100.25、最高 101.00、最低 100.00、收盤 100.50 與成交量 427。另一根 K 棒可以有同樣的五個數字,但有 290 在買價賣出、137 在賣價買進。那根 K 棒的 Delta 是 −153。K 棒紀錄裡沒有任何資訊能區分這兩根 K 棒。
成交量分布顯示什麼?
成交量分布顯示交易發生在哪裡,而不是誰發起的。它是在選定期間(例如一個交易時段或一週)內,各價位成交量的橫向直方圖。成交量分布指標頁面說明了它如何建構。測試時有兩個名詞很重要:控制點是成交量最大的價位;價值區是涵蓋一定比例成交量的價格區間,通常約為 70%。
成交量分布介於 K 棒資料與真正的訂單流之間。你可以用細緻的 K 棒近似它,做法是把每根 K 棒的成交量分攤到它的價格區間上。這種近似對許多規則測試已經夠接近。要得到精確的分布,或拆成買價與賣價成交量的分布,則需要逐筆資料。
NinjaTrader 與 ATAS 提供哪些訂單流工具?
兩個平台都用逐筆資料建構相同的三種核心顯示,並各自加入成交與委託簿的檢視。差異主要在名稱,而不在概念。
| 顯示 | NinjaTrader 8 名稱 | ATAS 名稱 |
|---|---|---|
| 足跡圖 | Order Flow Volumetric Bars | Cluster chart |
| Delta 隨時間變化 | Order Flow Cumulative Delta | Cumulative delta indicator |
| 各價位成交量 | Order Flow Volume Profile | Volume profile indicators |
| 掛單 | Order Flow Market Depth Map | Order book (DOM) views |
NinjaTrader 另提供訂單流 VWAP 與標出大單的成交偵測器。ATAS 則增加逐筆成交的明細與大單篩選。委託簿檢視顯示尚未成交的掛單限價單。這與 Delta 和足跡圖是不同類型的資料,後者描述的是已經發生的成交。
要在 NinjaTrader 的歷史圖表上使用訂單流,平台需要資料供應商提供的歷史逐筆資料。它的 Tick Replay 設定會逐筆重建每根歷史 K 棒,因此依賴買價/賣價拆分的指標可以在過去的 K 棒上計算,並用於策略測試。
訂單流回測需要什麼資料?
訂單流回測所需的資料,至少要和訊號一樣細緻。實務上,這代表帶有每筆成交方向的逐筆資料。逐筆資料是每筆成交的紀錄,包含時間、價格與數量。有些逐筆資料還帶有當時的最佳買賣價,或主動方標記。沒有這兩者之一,就無法把成交標示為買或賣。
| 你手上的資料 | 可以還原什麼 | 無法還原什麼 |
|---|---|---|
| OHLCV K 棒(開盤、最高、最低、收盤、成交量) | 以價格為基礎的指標、K 棒成交量、近似的成交量分布 | Delta、足跡圖、失衡 |
| 逐筆資料:只有價格與數量 | 各價位的精確成交量 | 真正的 Delta(只能依每筆成交是向上或向下跳動來估計) |
| 帶有買價/賣價或主動方標記的逐筆資料 | Delta、累積 Delta、足跡圖、失衡 | 從未成交的掛單 |
| 記錄下來的委託簿深度 | 深度圖與以掛單為基礎的訊號 | — |
逐筆資料本身也有品質檢查要做。有些行情會把一筆大的主動單報成數筆獨立成交,因為它對上了數筆掛單。其他行情則把這些成交合併成一筆。因此成交筆數與「大單」篩選會隨資料來源而改變。與 K 棒相比,時間戳記、交易時段邊界與轉倉更為重要。回測資料品質:缺口、錯誤報價、時區與轉倉這篇指南列出了該檢查的項目。
為什麼以 K 棒為基礎的回測無法重現訂單流訊號?
以 K 棒為基礎的回測無法重現訂單流訊號,因為資訊在 K 棒形成時就被刪掉了。把成交變成 K 棒,就像把湯熬成高湯塊。重量和味道都留著,但你無法把原本的蔬菜再取出來。
一根 OHLCV K 棒只保留五個數字。它丟掉了每筆成交的方向、各價位的成交量,以及 K 棒內成交發生的先後順序。上面的範例顯示兩根 OHLCV 相同、Delta 卻相反的 K 棒。任何寫著「Delta 高於 X 時進場」或「連續出現三個堆疊的賣價失衡後進場」的規則,需要的正是 K 棒所移除的資訊。
估計也無法填補這個落差。常見的捷徑是:成交價高於前一筆就標為買進,低於前一筆就標為賣出。這個捷徑需要逐筆資料,而且仍然會誤判許多成交。若套用在 K 棒而非逐筆資料上,猜測只會更粗糙。以估計的 Delta 測試出來的策略,測的是那個估計,而不是你在實單中看的指標。
如何正確回測訂單流訊號?
要正確回測訂單流訊號,就要用逐筆資料,完全依照你在實單中看到的方式重建它,並且依市場實際會成交的方式模擬成交。請依序進行以下步驟:
- 把訊號寫成帶數字的規則。「強力買進」無法測試。「K 棒 Delta 高於 +200,且收盤位於 K 棒的上四分之一」則可以測試。
- 取得帶有買價/賣價或主動方資訊的逐筆資料,涵蓋整個測試期間,可能的話與你實單要用的是同一個來源。
- 使用與實單圖表相同的設定:相同的 K 棒類型、每列足跡圖相同的跳動點分組、累積 Delta 相同的交易時段歸零方式,以及相同的失衡比率。
- 只根據當時已經存在的資訊行動。足跡圖 K 棒要到收盤才會定案。從已完成的 K 棒讀出的訊號,可以在收盤後的下一筆成交進場,而不是在該 K 棒自己的收盤價進場。回測中的前視偏誤這篇文章說明了如何檢查這一點。
- 誠實地模擬成交。訂單流交易者常在某個價位使用限價單。只有當價格穿越該價位時才算限價單成交,而不是價格只碰到就算。你的委託在該價位上排在其他委託之後。
- 每筆交易都計入手續費與滑價。訂單流策略往往交易頻繁,且每筆只追求小幅波動,因此成本會佔去結果的一大部分。
- 在看後面的資料之前先固定好門檻,再用規則沒見過的期間測試。
第 7 步很重要,因為訂單流規則有許多旋鈕:Delta 門檻、失衡比率、要求堆疊幾個價位、多大才算「大單」。你每調一個旋鈕,就多一次擬合雜訊的機會。如果你嘗試許多設定並只留下最好的一個,勝出的結果很可能被高估(Harvey & Liu, 2015;White, 2000)。規則中以 K 棒為基礎的那一部分,可以交給 AlphaPrime(Valynox) 的策略檢驗,用你自訂的門檻做推進分析,看調過的旋鈕在沒看過的區間是否還成立。
訂單流指標能預測方向嗎?
不能。訂單流指標描述的是已經發生的成交,並不會告訴你價格接下來往哪裡走。正的 Delta 表示主動買方成交得比主動賣方多,並不表示買方會贏。大型被動賣方可以用限價單吸收所有的買進,價格仍然可能下跌。
這就是為什麼同一個型態會有相反的解讀。當 Delta 上升而價格持平,之後價格下跌,交易者稱之為「吸收」;之後價格上漲,則稱之為「吸籌」。只有在足夠歷史上測試過的規則,才能告訴你哪種解讀成立的次數較多,以及扣除成本後多出多少。
當長期歷史沒有真正的訂單流資料時,許多交易者會把工作分成兩部分。首先,他們在長期歷史上研究以 K 棒為基礎的規則,使用價格、K 棒成交量,以及像由 K 棒建構的成交量分布這類近似。接著,他們把足跡圖解讀當作主觀的背景參考,或在較短的逐筆歷史上另外測試訂單流過濾條件。AlphaPrime (Valynox) 支援第一部分。它的策略生成會把研究想法轉成可測試的規則,附有參數範圍與進場、出場條件,並以你自己的歷史 K 棒資料評估。完成的策略可以匯出為原始碼,提供給 NinjaTrader(NinjaScript)以及支援的平台匯出清單上的其他平台。在那裡,可以加入訂單流過濾條件並用逐筆資料測試。
如果你使用 AlphaPrime,這代表:把它用在你的 K 棒資料能表達的規則上,AlphaPrime 的回測會連同手續費、滑價、下一根 K 棒執行與交易時段,評估每個候選策略。任何 Delta 或足跡圖條件,請在你實際交易它的平台上,用逐筆資料測試。
常見問題
Delta 與累積 Delta 有什麼差別?
Delta 是一根 K 棒內在賣價買進的量減去在買價賣出的量。累積 Delta 則把這些 K 棒的值隨時間加總,通常在每個交易時段開盤時從零開始。Delta 顯示單一 K 棒內的多空平衡,累積 Delta 顯示整個交易時段的連續平衡。
可以在 NinjaTrader 中回測足跡圖指標嗎?
可以,前提是資料供應商提供歷史逐筆資料。NinjaTrader 的 Tick Replay 設定會逐筆重建歷史 K 棒,因此以足跡圖為基礎的數值可以在過去的資料上計算。沒有逐筆資料,平台就沒有買價/賣價拆分可用來重建足跡圖。
成交量分布是訂單流指標嗎?
成交量分布常與訂單流工具歸為一類,但它顯示的是每個價位成交了多少,而不是哪一方主動。它可以用細緻的 K 棒資料近似,Delta 與足跡圖則不行。拆成買價與賣價成交量的成交量分布需要逐筆資料。
Delta 為很大的正值,代表價格會上漲嗎?
不會。正的 Delta 只代表在該期間內,主動買方成交的口數多於主動賣方。掛限價單的被動賣方可以吸收這些買進,價格仍然可能下跌。任何方向上的意義都必須用歷史資料、在扣除成本後測試。
訂單流交易的回測需要什麼資料?
你需要記錄每筆成交價格與數量的逐筆資料,再加上當時的最佳買賣價,或交易所行情提供的主動方標記。以掛單為基礎的訊號還需要記錄下來的委託簿深度。OHLCV K 棒不足以支撐 Delta、足跡圖或失衡規則。
參考文獻
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
- White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.

