三條界限,取最嚴的
這個界限取三個獨立推導出來的價格中最保守的那個。你的滑價容忍度買單取最佳賣價 × (1 + s),賣單取最佳買價 × (1 − s)預設 10%,可在 0.01% 到 10% 之間設定。這是你能控制的那一條。
該市場的價格帶任何訂單都不得在帶外掛出或成交保護的是市場,不是你 — 而且某個區塊取不到指數價格時直接拒絕,不會退而求其次。
你的數量能觸及的最差價格由你的訂單實際會消耗的深度推導盤口報價不會告訴你的那條界限。
三者中最嚴的
提交訂單上的限價買單取三者中最低,賣單取最高
你的滑價容忍度
容忍度預設 10%,可在 0.01% 到 10% 之間設定。這是你能控制的那條界限,表達的是一個簡單的指令:別讓我成交在離盤口比這更遠的地方。該市場的價格帶
每個市場都圍繞自己的參考價格強制執行一個價格帶,任何訂單都不得在帶外掛出或成交。這對市價單同樣適用:你的容忍度無法把成交推到超出市場對所有人的限制之外。 這條界限保護的是市場,不是你。沒有它,一筆打進真空裡的大額市價單可能打出一個成交價,而這個價格又會流進其他系統。 價格帶會同時對照標記價格和指數價格判定;某個區塊若取不到指數價格,已經配置了價格帶的市場會直接拒絕,而不是退而求其次——已經配置好的保護,不允許無聲失效。 價格帶的寬度按市場設定,存放在price_limit_ppm,並由 price_limit_x_ppm 和 price_limit_y_ppm 做兩段式細分。要看數值,去讀合約規格,不要讀這一頁。
實際算一遍
你對著這樣一份訂單簿,提交一筆 4,000 USDC 的 ETH 市價買單:
引擎一檔一檔往下走,把預算花完為止:
- 第 1 檔吃掉 1,000,剩下 3,000
- 第 2 檔吃掉 1,503,剩下 1,497
- 第 3 檔有 2,008 可吃,但只剩 1,497,因此部分成交:1,497 ÷ 50,200 = 0.0298207 ETH
你的數量能觸及的最差價格
提交之前,系統會按你這筆訂單要吃掉的深度走一遍訂單簿,把觸及到的最深那一檔的價格當作一條界限。 這是三條裡最微妙的一條,處理的是另外兩條覆蓋不到的情形。你的容忍度是從盤口起算的,但盤口說明不了訂單簿在那附近有沒有足夠深度把你填滿。按實際數量走一遍訂單簿,就把離盤口有多遠換算成了這筆訂單實際會落到哪裡。這對你意味著什麼
你的訂單可能無法完全成交。 訂單簿在界限之內的流動性一旦用光,剩餘部分會撤銷,不會以更差的價格成交。市價單部分成交是保護在起作用,不是失敗。 容忍度越緊,未成交的訂單越多。 在波動市場上設 0.01%,會頻繁得到部分成交甚至完全不成交。預設的 10% 是寬鬆的,因為沒成交往往比幾個基點的滑價更糟;但它確實寬鬆,而在稀薄的市場裡,10% 是一筆實實在在的錢。 數量比容忍度更重要。 第三條界限是從你的數量推出來的,所以不管容忍度設得多慷慨,大額訂單還是受訂單簿的實際深度約束。把大額訂單拆開,才是降低衝擊的可靠辦法,參見 TWAP 和階梯訂單。這次轉換發生在提交時,使用的是那一刻的訂單簿。在提交與執行之間,訂單簿可能移動。這個界限保護你不去掃穿本就不存在的深度;它並不凍結市場。
提交前先看一眼
這個界限可以由公開資料算出來,因此用戶端可以在你確認之前顯示預期成交價和最壞情況。訂單只要相對可見的訂單簿算大,就值得先看一次:盤口價和最差可觸及價之間的差額,正是市價單藏起來的那個數。後續閱讀
訂單類型
限價單、訂單有效期,以及各自如何處理未成交的剩餘部分。
訂單簿
讀懂深度,以及為什麼盤口價不是成交價。
TWAP
把大額訂單沿時間拆開,降低衝擊。
市場
各市場的價格帶與最小價格變動單位。