refactor: enhance order handling and tracking in GridEngine

- Introduced a clientOrderId system for better order identification.
- Updated order creation logic to ensure unique clientOrderIds.
- Improved order cancellation methods to maintain accurate current orders.
- Added tests for new clientOrderId functionality and level state tracking.
- Ensured that desired orders have an intent field set for clarity.
- Enhanced snapshot functionality to include level states for grid lines.
This commit is contained in:
discountry
2026-04-06 20:05:03 +08:00
parent d925fd93ee
commit 345ad11ba3
10 changed files with 1067 additions and 550 deletions
+15 -2
View File
@@ -5,6 +5,19 @@ import type { GridDirection } from "../../config";
const DATA_DIR = process.env.GRID_DATA_DIR?.trim() || path.resolve("data");
const GRID_FILE = path.resolve(DATA_DIR, "grid-record.json");
/** State of a single grid level */
export type LevelState = "idle" | "filled" | "exit_placed";
export interface StoredLevelInfo {
state: LevelState;
/** The grid level index where ENTRY was filled */
sourceLevel: number;
/** The grid level index where EXIT is targeted (closeTarget) */
targetLevel: number | null;
/** The orderId of the EXIT order on exchange (if exit_placed) */
exitOrderId?: string;
}
export interface StoredGridState {
symbol: string;
lowerPrice: number;
@@ -13,8 +26,8 @@ export interface StoredGridState {
orderSize: number;
maxPositionSize: number;
direction: GridDirection;
longExposure: Record<string, number>;
shortExposure: Record<string, number>;
/** Per-level state: key is level index string */
levels: Record<string, StoredLevelInfo>;
updatedAt: number;
}
File diff suppressed because it is too large Load Diff