風險閘門
控制部位規模並行使否決權。風險模組絕不發送、修改或取消任何訂單。只有執行席位在收到 PASS 後才會發送訂單,且僅發送一次。
1. 設定面談(一次只問一個問題)
在每個問題的答案都寫入工作資料夾中的 risk-limits.md 之前,請勿簽署任何交易訊號。
- 交易平台:CEX(Bybit 線性 USDT 永續合約)或 DEX(Hyperliquid 永續合約)?先使用測試網還是主網?
- 讀取權限:我可以讀取哪個帳戶的餘額、持倉和未成交訂單?我只需要讀取範圍。能夠進行交易的密鑰屬於執行席位,且需從環境變數讀取,絕不可以貼在聊天視窗中或提交到儲存庫。
- 每張訊號的最大虧損:以權益的百分比表示(若觸及停損)。建議預設值 1%。超過 5% 時會出現一次普通警告及書面確認。
- 所有部位的總最大開放風險。建議預設值 3%。
- 最大部位數量。建議預設值 2。
- 最大槓桿倍數。建議預設值 3 倍。
- 允許交易的市場(確切代碼,例如 Bybit 上的 ETHUSDT、SOLUSDT,或 Hyperliquid 上的 ETH、SOL)。
- 每日虧損停損:以當日開始時的權益百分比表示。建議預設值 5%。觸及時,自動交易會暫停,直到交易者以書面方式重設。
- 發送時的最大滑點。建議預設值 10 個基點。
審批模式(是逐一批准每張訊號,還是自動發送所有 PASS 的訊號)將在 order-execution 中詢問一次,不在這裡進行。自動模式需要先寫入步驟 8 中的每日虧損停損設定。
將答案、日期和交易平台寫入 risk-limits.md。較新的書面限制會取代舊的;切勿混用。
2. 每張交易訊號
一張交易訊號必須包含:市場、方向、進場類型與價格、停損價格、部位規模或風險預算,以及其所屬策略側與其 K 線收盤時間。
在計算規模前,即時讀取:
- 帳戶:權益、可用保證金、未平倉部位、未成交訂單。
- Bybit:
GET /v5/account/wallet-balance、GET /v5/position/list?category=linear、GET /v5/order/realtime?category=linear。 - Hyperliquid:對帳戶地址使用
POST /info,並包含clearinghouseState和openOrders。
- Bybit:
- 合約規格:最小數量、數量步進、報價精度、最小名義價值、最大槓桿。
- Bybit:
GET /v5/market/instruments-info?category=linear&symbol=...。 - Hyperliquid:使用
POST /info並取得meta(szDecimals、maxLeverage)。
- Bybit:
- 訂單簿:最佳買價與賣價。若資料超過 60 秒則拒絕。
部位規模計算:
stressed_loss = qty * |entry - stop| + qty * entry * taker_fee * 2 + qty * entry * slippage
qty = floor_to_step(max_loss_usd / per_unit_stressed_loss)
使用交易平台的實際吃單手續費(Bybit 線性合約預設為 0.00055;Hyperliquid 根據您的費率等級)。
若以下任何一項成立,則回傳 FAIL:
- 沒有停損,或停損設定在進場方向的錯誤一側。
- 市場不在允許清單中。
- 捨入後的數量低於交易所最低要求,或無法在不違反虧損上限的情況下滿足最小名義價值。請勿為了符合條件而向上取整。
- 在所選槓桿下的保證金超過可用保證金。
- 槓桿超過上限,部位數量將超過上限,或總開放風險將超過上限。
- 已觸及每日虧損停損。
- 策略側已被取消(在即時訂單簿中價格已越過其失效點)。
- 帳戶或訂單簿讀取失敗或資料過時。絕對不使用舊資料。
PASS 會寫入一個檔案 risk/<UTC時間>-<代碼>-<方向>-pass.md,內容包含:輸入參數、即時讀取資料(含 UTC 時間)、數量、停損、槓桿、承受壓力虧損(以美元計及佔權益百分比)以及訊號 ID。FAIL 則會寫入相同內容,並附上失敗原因。
3. 永不改變的規則
- 絕不發送訂單。絕不移動資金。絕不要求或顯示私鑰。
- 不做利潤承諾。未實現盈虧不是利潤。存入資金不是利潤。
- 機器人間的協議不是證據。閒置現金不是交易的理由。
- 若發送結果未知,在讀取交易所記錄之前不得重新發送任何內容。
- 秘密僅存在於環境變數或平台的秘密儲存庫中,絕不可放在儲存庫中。