Commit Graph
51 Commits
Author SHA1 Message Date
discountry f3a96886ac feat(lighter): add Robinhood Chain venue support 2026-08-14 14:05:37 +08:00
discountry 0ea71503e3 refactor(exchanges): extract ReconnectScheduler from four gateways
standx, ondoperps, lighter and backpack each hand-rolled the same three pieces
around their socket: a 'one pending attempt at a time' timer guard, an attempt
counter feeding a backoff formula, and resetting that counter on open. Four
field-name conventions, four formulas, four places to forget the reset.

ReconnectScheduler owns the timer, the guard and the counter; the backoff stays
a caller-supplied policy (fixed / linear / exponential), since the venues
genuinely want different curves. Verified value-by-value that all four produce
the identical delay sequence they did before.

Scope was chosen, not maximal. The other five gateways' reconnect paths, and all
nine connect/auth/subscribe/heartbeat flows, stay where they are: those are
60-200 lines of per-venue protocol, and folding nine different auth and ping
semantics into one base class would be the wrong abstraction. I also checked the
reconnect paths for the classic defects — aster's timer that looked unclearable
is cleared at the top of connect(), and all three backoff counters do reset on
open — so there was no bug to fix here, only duplication.

12 new tests. 287 pass; tsc and oxlint clean.
2026-07-29 21:40:09 +08:00
discountry 7acb3c3b82 fix(exchanges): restore type-check safety net and repair dead balance guards
tsconfig compiled docs/ (vendored ccxt samples) and @types/react was missing,
so 269 tsc errors buried the real ones. Scoping the project and adding the
missing type packages left 42 genuine errors in src/, which exposed two bugs:

- lighter: assertSpotBalance's buy branch and createOrder's spot-sell guard
  compared the {available, wallet} object against a number, so both guards
  were dead. Introduce SpotAssetBalance with a precomputed 'effective' field
  (Extract Class) and route all three call sites through it.
- offset-maker: the below-min-sell branch logged 'skip sell' but pushed the
  SELL order anyway, and pushed a possibly-null price. Both branches now
  match their working sibling.

Also: widen LighterOrder's is_ask/reduce_only to BooleanFlag (the wire format
flags.ts already parses), extract sellableBase (Extract Function, 3 copies),
delete two scripts importing a module that does not exist, add a typecheck
script. tsc --noEmit: 269 -> 0 errors; 218 tests still pass.
2026-07-29 20:27:40 +08:00
discountry d799cf79c2 refactor: extract shared order handler factory, deduplicate 8 order.ts files
Created src/exchanges/order-handlers.ts with createOrderHandlers() factory.
All 8 exchange order.ts files now use config-driven delegation instead of
duplicated ~80-line implementations. Shared applyCommonFields() logic
consolidated into the factory module.
2026-04-06 18:24:42 +08:00
discountry fda6bcad1d refactor: rename Aster-prefixed universal types to clean names
- AsterOrder → Order
- AsterAccountSnapshot → AccountSnapshot
- AsterAccountPosition → AccountPosition
- AsterAccountAsset → AccountAsset
- AsterDepthLevel → DepthLevel
- AsterDepth → Depth
- AsterTicker → Ticker
- AsterKline → Kline

These types are the platform-agnostic contract used by all 8 exchanges,
not Aster-specific. Renamed across 63 files.
2026-04-06 18:11:57 +08:00
discountry eb70bab8c5 Add Oxlint configuration and integrate linting commands
- Introduced a new `.oxlintrc.json` file to configure Oxlint for code quality checks.
- Updated `package.json` to include linting scripts (`lint` and `lint:fix`) for easier code maintenance.
- Enhanced documentation in `README` files to guide users on running Oxlint checks and applying fixes.
2026-03-12 22:40:18 +08:00
DisneyandGitHub 4014a86223 Enhance CLI command mode for ritmex-bot (#23)
- Introduced a new command mode for `ritmex-bot`, allowing agent-friendly structured trading operations without entering the Ink interactive menu.
- Updated `package.json` to include versioning and set the project as public with a new CLI entry point.
- Enhanced documentation in both English and Chinese to provide comprehensive usage instructions for the new command mode.
- Added a new executable script for `ritmex-bot` to facilitate command execution.
- Improved error handling and command parsing for better user experience and clarity in command execution.
2026-02-27 12:42:20 +08:00
discountry 49b8f0bcf1 fix perp 2025-12-08 23:55:13 +08:00
discountry a23eb91f04 Remove lighter-go-main directory and associated files, including client, types, and documentation, to streamline the project structure. Update .gitignore to exclude temporary files. 2025-12-08 23:44:05 +08:00
discountry 974d3017e0 fix position 2025-12-08 19:57:57 +08:00
discountry 668c3a57d3 fix open orders 2025-12-08 01:28:33 +08:00
discountry 061a8dd8f1 fix: improve lighter ws reconnect 2025-12-07 23:18:29 +08:00
discountry 49df78c075 fix nonce 2025-12-07 22:48:23 +08:00
discountry 6a6b61c491 fix nonce 2025-12-07 22:36:37 +08:00
discountry 7612e25dd1 add stoploss 2025-12-07 22:33:56 +08:00
discountry 705e489c17 fix nonce 2025-12-07 22:28:48 +08:00
discountry 2cb6c4fef1 feat: add minBaseAmount and minQuoteAmount to ExchangePrecision and LighterGateway for improved trading logic 2025-12-07 21:52:35 +08:00
discountry 180f47b6e0 support lighter spot 2025-12-07 21:37:58 +08:00
discountry 59ccd1fea8 feat: implement client ping/pong mechanism in LighterGateway for improved WebSocket connection health 2025-11-13 02:53:23 +08:00
discountry a9fa7f2e19 feat: add bid, ask, and mark price to AsterTicker and normalize order status in LighterGateway 2025-11-13 02:34:10 +08:00
discountry 7529de334f feat: implement position pruning and tracking in LighterGateway to manage stale positions and improve data integrity 2025-11-13 02:29:36 +08:00
discountry 1bfe4d58c0 refactor: streamline position handling in LighterGateway by removing unnecessary HTTP empty position logic and improving logging for empty position scenarios 2025-11-13 02:13:52 +08:00
discountry 4ce2b07e21 refactor: adjust feed staleness timeout and check intervals in LighterGateway for optimized monitoring and connection management 2025-11-13 02:05:29 +08:00
discountry 6bb0994cae fix: ensure stale monitoring is stopped on WebSocket error and closure events in LighterGateway for improved connection management 2025-11-13 01:16:03 +08:00
discountry 486b911bed feat: implement feed staleness monitoring in LighterGateway to enhance connection reliability and update handling 2025-11-12 23:57:21 +08:00
discountry 9ca35584b5 feat: add 'canceled-reduce-only' status to TERMINAL_ORDER_STATUSES in LighterGateway for comprehensive order status management 2025-11-12 21:08:35 +08:00
discountry 28bc1d5210 feat: improve error handling in OffsetMakerEngine and enhance logging in LighterGateway for better debugging and robustness 2025-11-12 20:34:02 +08:00
discountry 870fe2b8d7 feat: enhance order error handling in OffsetMakerEngine and update LighterGateway order status types for improved robustness 2025-11-12 19:35:31 +08:00
discountry e7f6341961 feat: enhance order handling in LighterGateway and introduce order identity normalization for improved precision and consistency 2025-11-12 19:17:04 +08:00
discountry 1baee3a207 feat: add Guardian strategy to manage existing positions with stop loss and trailing stop functionality 2025-11-09 14:09:54 +08:00
discountry e94cf1bda2 feat: enhance toAccountSnapshot function with improved market ID and symbol matching logic, and add corresponding unit tests 2025-11-08 17:14:01 +08:00
discountry 274e2f3d75 fix: improve WebSocket close reason normalization in LighterGateway for better error handling 2025-11-08 12:10:47 +08:00
discountry a91e87534b refactor: streamline order handling logic in LighterGateway by consolidating market ID checks and improving snapshot order clearing 2025-11-08 12:09:27 +08:00
discountry 0f70c6b6aa feat: enhance WebSocket documentation and improve LighterGateway position handling for better account management 2025-11-06 18:47:29 +08:00
discountry 1832c4c13e feat: add scaleQuantityWithMinimum function to normalize order quantities and implement corresponding tests 2025-11-03 21:30:19 +08:00
discountry 5bba8169b5 feat: enhance precision synchronization in trading strategies and improve order quantity normalization logic 2025-10-27 18:42:44 +08:00
discountry ea5da20311 feat: 重构订单路由逻辑,添加订单意图类型以支持多交易所订单处理 2025-10-23 14:04:44 +08:00
discountry 2627fa9db8 feat: 优化订单去重和取消逻辑,确保在处理STOP订单时避免精度损失 2025-10-11 21:41:39 +08:00
discountry 0d2aa84b84 feat: 更新 Lighter 适配器的账户快照逻辑,支持市场符号和市场 ID 过滤功能 2025-10-06 19:17:24 +08:00
discountry f8a87f4557 feat: 优化 Lighter 适配器的订单簿处理逻辑,添加排序和限制深度功能 2025-10-03 16:06:31 +08:00
discountry 263cbd7c21 feat: 增强 Lighter 适配器的账户更新逻辑,支持市场账户的实时更新和合并处理 2025-10-03 15:52:18 +08:00
discountry 971a2a6adb feat: 优化 Lighter 适配器的订单过期逻辑,简化市场订单的即时过期处理 2025-10-03 15:35:45 +08:00
discountry 7635b7d467 feat: 更新 Lighter 适配器的订单过期逻辑,支持即时或取消订单类型的处理 2025-10-03 03:29:54 +08:00
discountry f565c399e3 feat: 更新 LighterSigner 配置,baseUrl 变为可选以支持离线签名和测试 2025-10-03 03:25:30 +08:00
discountry 9a419c36ac feat: 更新 Lighter 适配器的订单过期逻辑,使用绝对未来时间戳以符合链的预期 2025-10-03 03:08:41 +08:00
discountry 0e5026aaa1 feat: 优化 Lighter 适配器的账户消息处理逻辑,支持部分更新和市场订单类型的处理 2025-10-03 02:54:50 +08:00
discountry 6273f3b94a feat: 在 Lighter 适配器中添加订单簿序列跟踪,优化 WebSocket 消息处理逻辑 2025-10-03 02:40:09 +08:00
discountry e478fb4330 feat: 添加 Lighter 适配器的调试日志功能,优化错误处理和订单簿数据规范化 2025-10-03 02:27:58 +08:00
discountry b7cd6eed99 feat: 重构 Lighter 策略,更新签名桥接路径,移除不必要的文件,添加新的签名库支持 2025-10-03 01:51:55 +08:00
discountry 4c4abb3b09 feat: 添加 Lighter 签名桥接和公钥派生脚本,支持新的签名库和环境检测功能 2025-10-01 18:32:02 +08:00