1.5 KiB
1.5 KiB
| name | description | type |
|---|---|---|
| cost_basis_sync | sync_cost_basis.py architecture — order history cost calculation, wallet sync, Bitfinex API quirks | project |
sync_cost_basis.py(每30分鐘 cron :02, :32)
獨立腳本,從 Bitfinex 訂單歷史重算 entry_price,同時從錢包同步 amount 和 USDT 餘額。
職責分離:
sync_cost_basis.py:撈訂單 + 錢包,更新 entry_price / amount / 餘額main.py(每5分鐘 :01, :06...):只撈錢包同步餘額,不重算成本
Why: update_position() 本地計算的 amount 用 amount_usdt / price,跟交易所實際成交量有差異,累積後總值偏差可達 10%+。
Bitfinex 訂單 API 注意事項
-
SELL 訂單 status 不一定是 "EXECUTED":可能是
"INSUFFICIENT BALANCE (U1) was: PARTIALLY FILLED @ ..."。必須同時檢查"EXECUTED"和"PARTIALLY FILLED"。 -
排序不可靠:
/v2/auth/r/orders/{symbol}/hist的sort參數不保證正確排序。必須在 Python 端按mts_create(index 4)手動排序。 -
實際成交量 = amount_orig - amount_remaining:
amount_orig(index 7)是原始下單量,amount(index 6)是剩餘量。不能直接用amount_orig。 -
nonce: small 錯誤:API 請求間隔太短會觸發。幣種間至少
time.sleep(1)。 -
Bitfinex 不收手續費:計算出的 amount 應與錢包完全一致(0% deviation)。
cost_tracking.json
記錄每個幣種的訂單撈取起始時間(ms)。完全賣出設為 null,重新買入時更新為新的第一筆 BUY 時間。