jcc_hyper_tool 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -21
- package/dist/advisor/actionRunner.d.ts +35 -0
- package/dist/advisor/actionRunner.d.ts.map +1 -0
- package/dist/advisor/actionRunner.js +194 -0
- package/dist/advisor/actionRunner.js.map +1 -0
- package/dist/advisor/actionSchema.d.ts +1551 -0
- package/dist/advisor/actionSchema.d.ts.map +1 -0
- package/dist/advisor/actionSchema.js +202 -0
- package/dist/advisor/actionSchema.js.map +1 -0
- package/dist/advisor/adviseDisplay.d.ts +26 -0
- package/dist/advisor/adviseDisplay.d.ts.map +1 -0
- package/dist/advisor/adviseDisplay.js +174 -0
- package/dist/advisor/adviseDisplay.js.map +1 -0
- package/dist/advisor/adviseEngine.d.ts +53 -0
- package/dist/advisor/adviseEngine.d.ts.map +1 -0
- package/dist/advisor/adviseEngine.js +172 -0
- package/dist/advisor/adviseEngine.js.map +1 -0
- package/dist/advisor/ambushPolicy.d.ts +47 -0
- package/dist/advisor/ambushPolicy.d.ts.map +1 -0
- package/dist/advisor/ambushPolicy.js +161 -0
- package/dist/advisor/ambushPolicy.js.map +1 -0
- package/dist/advisor/contextBuilder.d.ts +51 -0
- package/dist/advisor/contextBuilder.d.ts.map +1 -0
- package/dist/advisor/contextBuilder.js +153 -0
- package/dist/advisor/contextBuilder.js.map +1 -0
- package/dist/advisor/deepseekClient.d.ts +26 -0
- package/dist/advisor/deepseekClient.d.ts.map +1 -0
- package/dist/advisor/deepseekClient.js +96 -0
- package/dist/advisor/deepseekClient.js.map +1 -0
- package/dist/advisor/executionPolicy.d.ts +92 -0
- package/dist/advisor/executionPolicy.d.ts.map +1 -0
- package/dist/advisor/executionPolicy.js +273 -0
- package/dist/advisor/executionPolicy.js.map +1 -0
- package/dist/advisor/guards.d.ts +31 -0
- package/dist/advisor/guards.d.ts.map +1 -0
- package/dist/advisor/guards.js +198 -0
- package/dist/advisor/guards.js.map +1 -0
- package/dist/advisor/indicatorCompute.d.ts +45 -0
- package/dist/advisor/indicatorCompute.d.ts.map +1 -0
- package/dist/advisor/indicatorCompute.js +259 -0
- package/dist/advisor/indicatorCompute.js.map +1 -0
- package/dist/advisor/positionPlan.d.ts +33 -0
- package/dist/advisor/positionPlan.d.ts.map +1 -0
- package/dist/advisor/positionPlan.js +118 -0
- package/dist/advisor/positionPlan.js.map +1 -0
- package/dist/advisor/promptTemplate.d.ts +11 -0
- package/dist/advisor/promptTemplate.d.ts.map +1 -0
- package/dist/advisor/promptTemplate.js +230 -0
- package/dist/advisor/promptTemplate.js.map +1 -0
- package/dist/advisor/sessionLog.d.ts +41 -0
- package/dist/advisor/sessionLog.d.ts.map +1 -0
- package/dist/advisor/sessionLog.js +7 -0
- package/dist/advisor/sessionLog.js.map +1 -0
- package/dist/advisor/touchProbability.d.ts +54 -0
- package/dist/advisor/touchProbability.d.ts.map +1 -0
- package/dist/advisor/touchProbability.js +215 -0
- package/dist/advisor/touchProbability.js.map +1 -0
- package/dist/advisor/tpslPolicy.d.ts +22 -0
- package/dist/advisor/tpslPolicy.d.ts.map +1 -0
- package/dist/advisor/tpslPolicy.js +120 -0
- package/dist/advisor/tpslPolicy.js.map +1 -0
- package/dist/cli/advisorCli.d.ts +3 -0
- package/dist/cli/advisorCli.d.ts.map +1 -0
- package/dist/cli/advisorCli.js +706 -0
- package/dist/cli/advisorCli.js.map +1 -0
- package/dist/cli/index.js +6 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/riskCli.d.ts +3 -0
- package/dist/cli/riskCli.d.ts.map +1 -0
- package/dist/cli/riskCli.js +120 -0
- package/dist/cli/riskCli.js.map +1 -0
- package/dist/cli/strategyCli.d.ts.map +1 -1
- package/dist/cli/strategyCli.js +4 -2
- package/dist/cli/strategyCli.js.map +1 -1
- package/dist/cli/tradingCli.d.ts.map +1 -1
- package/dist/cli/tradingCli.js +34 -2
- package/dist/cli/tradingCli.js.map +1 -1
- package/dist/core/cliBin.d.ts +8 -0
- package/dist/core/cliBin.d.ts.map +1 -0
- package/dist/core/cliBin.js +15 -0
- package/dist/core/cliBin.js.map +1 -0
- package/dist/core/errorFormat.d.ts +7 -0
- package/dist/core/errorFormat.d.ts.map +1 -0
- package/dist/core/errorFormat.js +59 -0
- package/dist/core/errorFormat.js.map +1 -0
- package/dist/core/errors.d.ts +2 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +3 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/hyperliquid/asset.d.ts +2 -0
- package/dist/core/hyperliquid/asset.d.ts.map +1 -1
- package/dist/core/hyperliquid/asset.js +25 -0
- package/dist/core/hyperliquid/asset.js.map +1 -1
- package/dist/core/hyperliquid/client.d.ts +3 -0
- package/dist/core/hyperliquid/client.d.ts.map +1 -1
- package/dist/core/hyperliquid/client.js +31 -21
- package/dist/core/hyperliquid/client.js.map +1 -1
- package/dist/core/hyperliquid/exchange.d.ts +3 -0
- package/dist/core/hyperliquid/exchange.d.ts.map +1 -1
- package/dist/core/hyperliquid/exchange.js +31 -21
- package/dist/core/hyperliquid/exchange.js.map +1 -1
- package/dist/core/hyperliquid/exchangeParse.d.ts +3 -0
- package/dist/core/hyperliquid/exchangeParse.d.ts.map +1 -1
- package/dist/core/hyperliquid/exchangeParse.js +62 -0
- package/dist/core/hyperliquid/exchangeParse.js.map +1 -1
- package/dist/core/hyperliquid/httpRequest.d.ts +36 -0
- package/dist/core/hyperliquid/httpRequest.d.ts.map +1 -0
- package/dist/core/hyperliquid/httpRequest.js +171 -0
- package/dist/core/hyperliquid/httpRequest.js.map +1 -0
- package/dist/core/hyperliquid/orders.d.ts +5 -0
- package/dist/core/hyperliquid/orders.d.ts.map +1 -1
- package/dist/core/hyperliquid/orders.js +15 -5
- package/dist/core/hyperliquid/orders.js.map +1 -1
- package/dist/core/hyperliquid/rounding.d.ts +23 -0
- package/dist/core/hyperliquid/rounding.d.ts.map +1 -0
- package/dist/core/hyperliquid/rounding.js +53 -0
- package/dist/core/hyperliquid/rounding.js.map +1 -0
- package/dist/core/risk/isolatedTopUp.d.ts +112 -0
- package/dist/core/risk/isolatedTopUp.d.ts.map +1 -0
- package/dist/core/risk/isolatedTopUp.js +209 -0
- package/dist/core/risk/isolatedTopUp.js.map +1 -0
- package/dist/core/risk/isolatedTopUpHistory.d.ts +7 -0
- package/dist/core/risk/isolatedTopUpHistory.d.ts.map +1 -0
- package/dist/core/risk/isolatedTopUpHistory.js +26 -0
- package/dist/core/risk/isolatedTopUpHistory.js.map +1 -0
- package/dist/core/risk/isolatedTopUpParse.d.ts +16 -0
- package/dist/core/risk/isolatedTopUpParse.d.ts.map +1 -0
- package/dist/core/risk/isolatedTopUpParse.js +78 -0
- package/dist/core/risk/isolatedTopUpParse.js.map +1 -0
- package/dist/core/risk/runIsolatedTopUpReconcile.d.ts +28 -0
- package/dist/core/risk/runIsolatedTopUpReconcile.d.ts.map +1 -0
- package/dist/core/risk/runIsolatedTopUpReconcile.js +184 -0
- package/dist/core/risk/runIsolatedTopUpReconcile.js.map +1 -0
- package/dist/core/state/gcTradeState.js +1 -1
- package/dist/core/state/gcTradeState.js.map +1 -1
- package/dist/core/state/gridReconcile.d.ts +2 -0
- package/dist/core/state/gridReconcile.d.ts.map +1 -1
- package/dist/core/state/gridReconcile.js +42 -2
- package/dist/core/state/gridReconcile.js.map +1 -1
- package/dist/core/state/intentFactory.d.ts +1 -0
- package/dist/core/state/intentFactory.d.ts.map +1 -1
- package/dist/core/state/intentFactory.js +1 -0
- package/dist/core/state/intentFactory.js.map +1 -1
- package/dist/core/state/profileStore.d.ts +6 -0
- package/dist/core/state/profileStore.d.ts.map +1 -0
- package/dist/core/state/profileStore.js +26 -0
- package/dist/core/state/profileStore.js.map +1 -0
- package/dist/core/state/runReconcile.d.ts.map +1 -1
- package/dist/core/state/runReconcile.js +92 -30
- package/dist/core/state/runReconcile.js.map +1 -1
- package/dist/core/state/schema.d.ts +565 -124
- package/dist/core/state/schema.d.ts.map +1 -1
- package/dist/core/state/schema.js +62 -0
- package/dist/core/state/schema.js.map +1 -1
- package/dist/core/state/snapshot.d.ts +13 -0
- package/dist/core/state/snapshot.d.ts.map +1 -1
- package/dist/core/state/snapshot.js +36 -0
- package/dist/core/state/snapshot.js.map +1 -1
- package/dist/core/state/statePaths.d.ts +1 -0
- package/dist/core/state/statePaths.d.ts.map +1 -1
- package/dist/core/state/statePaths.js +4 -0
- package/dist/core/state/statePaths.js.map +1 -1
- package/dist/core/state/store.d.ts +21 -3
- package/dist/core/state/store.d.ts.map +1 -1
- package/dist/core/state/store.js +123 -14
- package/dist/core/state/store.js.map +1 -1
- package/dist/core/state/types.d.ts +13 -0
- package/dist/core/state/types.d.ts.map +1 -1
- package/dist/daemon/index.js +50 -5
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/validateChild.d.ts +13 -0
- package/dist/daemon/validateChild.d.ts.map +1 -0
- package/dist/daemon/validateChild.js +77 -0
- package/dist/daemon/validateChild.js.map +1 -0
- package/dist/strategies/grid.d.ts +1 -0
- package/dist/strategies/grid.d.ts.map +1 -1
- package/dist/strategies/grid.js +1 -0
- package/dist/strategies/grid.js.map +1 -1
- package/package.json +3 -1
|
@@ -11,6 +11,8 @@ declare const BracketIntentSchema: z.ZodObject<{
|
|
|
11
11
|
entryLimitPx: z.ZodNumber;
|
|
12
12
|
entrySz: z.ZodNumber;
|
|
13
13
|
tif: z.ZodEnum<["Gtc", "Ioc", "Alo"]>;
|
|
14
|
+
/** Trading strategy: ambush (limit entry, wider SL/TP) or scalp (market entry, tight SL/TP). */
|
|
15
|
+
strategy: z.ZodOptional<z.ZodEnum<["scalp", "ambush"]>>;
|
|
14
16
|
entryReduceOnly: z.ZodOptional<z.ZodBoolean>;
|
|
15
17
|
tpTriggerPx: z.ZodNumber;
|
|
16
18
|
slTriggerPx: z.ZodNumber;
|
|
@@ -48,9 +50,10 @@ declare const BracketIntentSchema: z.ZodObject<{
|
|
|
48
50
|
slTriggerPx: number;
|
|
49
51
|
tpslIsMarket: boolean;
|
|
50
52
|
protectionReduceOnly: boolean;
|
|
51
|
-
phase: "
|
|
52
|
-
network?: string | undefined;
|
|
53
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
53
54
|
dex?: string | undefined;
|
|
55
|
+
network?: string | undefined;
|
|
56
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
54
57
|
entryReduceOnly?: boolean | undefined;
|
|
55
58
|
tpslLimitPx?: number | undefined;
|
|
56
59
|
entryOid?: number | undefined;
|
|
@@ -76,9 +79,10 @@ declare const BracketIntentSchema: z.ZodObject<{
|
|
|
76
79
|
tpTriggerPx: number;
|
|
77
80
|
slTriggerPx: number;
|
|
78
81
|
tpslIsMarket: boolean;
|
|
79
|
-
phase: "
|
|
80
|
-
network?: string | undefined;
|
|
82
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
81
83
|
dex?: string | undefined;
|
|
84
|
+
network?: string | undefined;
|
|
85
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
82
86
|
entryReduceOnly?: boolean | undefined;
|
|
83
87
|
tpslLimitPx?: number | undefined;
|
|
84
88
|
protectionReduceOnly?: boolean | undefined;
|
|
@@ -117,6 +121,8 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
117
121
|
replenishGapPx: z.ZodOptional<z.ZodNumber>;
|
|
118
122
|
/** Idempotency for grid replenishment (plan:/done: prefixes, see mergeGridReplenishDedupe). */
|
|
119
123
|
replenishDedupeKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
124
|
+
/** User set this to true to regenerate legs from current lower/upper/grids/bias on next reconcile. */
|
|
125
|
+
regenerateGrid: z.ZodOptional<z.ZodBoolean>;
|
|
120
126
|
legs: z.ZodArray<z.ZodObject<{
|
|
121
127
|
index: z.ZodNumber;
|
|
122
128
|
px: z.ZodNumber;
|
|
@@ -138,10 +144,10 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
138
144
|
fillPx: number;
|
|
139
145
|
}>>;
|
|
140
146
|
}, "strip", z.ZodTypeAny, {
|
|
147
|
+
isBuy: boolean;
|
|
141
148
|
index: number;
|
|
142
149
|
px: number;
|
|
143
|
-
|
|
144
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
150
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
145
151
|
oid?: number | undefined;
|
|
146
152
|
lastSz?: number | undefined;
|
|
147
153
|
lastOrigSz?: number | undefined;
|
|
@@ -150,10 +156,10 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
150
156
|
fillPx: number;
|
|
151
157
|
} | undefined;
|
|
152
158
|
}, {
|
|
159
|
+
isBuy: boolean;
|
|
153
160
|
index: number;
|
|
154
161
|
px: number;
|
|
155
|
-
|
|
156
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
162
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
157
163
|
oid?: number | undefined;
|
|
158
164
|
lastSz?: number | undefined;
|
|
159
165
|
lastOrigSz?: number | undefined;
|
|
@@ -164,7 +170,6 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
164
170
|
}>, "many">;
|
|
165
171
|
}, "strip", z.ZodTypeAny, {
|
|
166
172
|
coin: string;
|
|
167
|
-
reduceOnly: boolean;
|
|
168
173
|
kind: "grid";
|
|
169
174
|
id: string;
|
|
170
175
|
createdAtMs: number;
|
|
@@ -175,11 +180,12 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
175
180
|
grids: number;
|
|
176
181
|
orderSz: number;
|
|
177
182
|
bias: "symmetric" | "long" | "short";
|
|
183
|
+
reduceOnly: boolean;
|
|
178
184
|
legs: {
|
|
185
|
+
isBuy: boolean;
|
|
179
186
|
index: number;
|
|
180
187
|
px: number;
|
|
181
|
-
|
|
182
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
188
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
183
189
|
oid?: number | undefined;
|
|
184
190
|
lastSz?: number | undefined;
|
|
185
191
|
lastOrigSz?: number | undefined;
|
|
@@ -188,14 +194,14 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
188
194
|
fillPx: number;
|
|
189
195
|
} | undefined;
|
|
190
196
|
}[];
|
|
191
|
-
network?: string | undefined;
|
|
192
197
|
dex?: string | undefined;
|
|
198
|
+
network?: string | undefined;
|
|
193
199
|
maxOrders?: number | undefined;
|
|
194
200
|
replenishGapPx?: number | undefined;
|
|
195
201
|
replenishDedupeKeys?: string[] | undefined;
|
|
202
|
+
regenerateGrid?: boolean | undefined;
|
|
196
203
|
}, {
|
|
197
204
|
coin: string;
|
|
198
|
-
reduceOnly: boolean;
|
|
199
205
|
kind: "grid";
|
|
200
206
|
id: string;
|
|
201
207
|
createdAtMs: number;
|
|
@@ -206,11 +212,12 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
206
212
|
grids: number;
|
|
207
213
|
orderSz: number;
|
|
208
214
|
bias: "symmetric" | "long" | "short";
|
|
215
|
+
reduceOnly: boolean;
|
|
209
216
|
legs: {
|
|
217
|
+
isBuy: boolean;
|
|
210
218
|
index: number;
|
|
211
219
|
px: number;
|
|
212
|
-
|
|
213
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
220
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
214
221
|
oid?: number | undefined;
|
|
215
222
|
lastSz?: number | undefined;
|
|
216
223
|
lastOrigSz?: number | undefined;
|
|
@@ -219,11 +226,12 @@ declare const GridIntentSchema: z.ZodObject<{
|
|
|
219
226
|
fillPx: number;
|
|
220
227
|
} | undefined;
|
|
221
228
|
}[];
|
|
222
|
-
network?: string | undefined;
|
|
223
229
|
dex?: string | undefined;
|
|
230
|
+
network?: string | undefined;
|
|
224
231
|
maxOrders?: number | undefined;
|
|
225
232
|
replenishGapPx?: number | undefined;
|
|
226
233
|
replenishDedupeKeys?: string[] | undefined;
|
|
234
|
+
regenerateGrid?: boolean | undefined;
|
|
227
235
|
}>;
|
|
228
236
|
declare const SingleLimitIntentSchema: z.ZodObject<{
|
|
229
237
|
kind: z.ZodLiteral<"single_limit">;
|
|
@@ -239,31 +247,31 @@ declare const SingleLimitIntentSchema: z.ZodObject<{
|
|
|
239
247
|
reduceOnly: z.ZodBoolean;
|
|
240
248
|
oid: z.ZodOptional<z.ZodNumber>;
|
|
241
249
|
}, "strip", z.ZodTypeAny, {
|
|
242
|
-
coin: string;
|
|
243
250
|
sz: number;
|
|
244
|
-
|
|
245
|
-
limitPx: number;
|
|
251
|
+
coin: string;
|
|
246
252
|
kind: "single_limit";
|
|
247
253
|
id: string;
|
|
248
254
|
createdAtMs: number;
|
|
249
255
|
updatedAtMs: number;
|
|
250
256
|
entrySide: "buy" | "sell";
|
|
251
257
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
252
|
-
|
|
258
|
+
reduceOnly: boolean;
|
|
259
|
+
limitPx: number;
|
|
253
260
|
oid?: number | undefined;
|
|
261
|
+
dex?: string | undefined;
|
|
254
262
|
}, {
|
|
255
|
-
coin: string;
|
|
256
263
|
sz: number;
|
|
257
|
-
|
|
258
|
-
limitPx: number;
|
|
264
|
+
coin: string;
|
|
259
265
|
kind: "single_limit";
|
|
260
266
|
id: string;
|
|
261
267
|
createdAtMs: number;
|
|
262
268
|
updatedAtMs: number;
|
|
263
269
|
entrySide: "buy" | "sell";
|
|
264
270
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
265
|
-
|
|
271
|
+
reduceOnly: boolean;
|
|
272
|
+
limitPx: number;
|
|
266
273
|
oid?: number | undefined;
|
|
274
|
+
dex?: string | undefined;
|
|
267
275
|
}>;
|
|
268
276
|
declare const StandaloneTpslIntentSchema: z.ZodObject<{
|
|
269
277
|
kind: z.ZodLiteral<"standalone_tpsl">;
|
|
@@ -281,34 +289,34 @@ declare const StandaloneTpslIntentSchema: z.ZodObject<{
|
|
|
281
289
|
reduceOnly: z.ZodBoolean;
|
|
282
290
|
oid: z.ZodOptional<z.ZodNumber>;
|
|
283
291
|
}, "strip", z.ZodTypeAny, {
|
|
284
|
-
coin: string;
|
|
285
292
|
side: "buy" | "sell";
|
|
286
293
|
sz: number;
|
|
287
|
-
|
|
288
|
-
triggerPx: number;
|
|
294
|
+
coin: string;
|
|
289
295
|
kind: "standalone_tpsl";
|
|
290
296
|
id: string;
|
|
291
297
|
createdAtMs: number;
|
|
292
298
|
updatedAtMs: number;
|
|
299
|
+
reduceOnly: boolean;
|
|
300
|
+
triggerPx: number;
|
|
293
301
|
tpsl: "tp" | "sl";
|
|
294
302
|
isMarket: boolean;
|
|
295
|
-
dex?: string | undefined;
|
|
296
303
|
oid?: number | undefined;
|
|
304
|
+
dex?: string | undefined;
|
|
297
305
|
limitPx?: number | undefined;
|
|
298
306
|
}, {
|
|
299
|
-
coin: string;
|
|
300
307
|
side: "buy" | "sell";
|
|
301
308
|
sz: number;
|
|
302
|
-
|
|
303
|
-
triggerPx: number;
|
|
309
|
+
coin: string;
|
|
304
310
|
kind: "standalone_tpsl";
|
|
305
311
|
id: string;
|
|
306
312
|
createdAtMs: number;
|
|
307
313
|
updatedAtMs: number;
|
|
314
|
+
reduceOnly: boolean;
|
|
315
|
+
triggerPx: number;
|
|
308
316
|
tpsl: "tp" | "sl";
|
|
309
317
|
isMarket: boolean;
|
|
310
|
-
dex?: string | undefined;
|
|
311
318
|
oid?: number | undefined;
|
|
319
|
+
dex?: string | undefined;
|
|
312
320
|
limitPx?: number | undefined;
|
|
313
321
|
}>;
|
|
314
322
|
export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
@@ -323,6 +331,8 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
323
331
|
entryLimitPx: z.ZodNumber;
|
|
324
332
|
entrySz: z.ZodNumber;
|
|
325
333
|
tif: z.ZodEnum<["Gtc", "Ioc", "Alo"]>;
|
|
334
|
+
/** Trading strategy: ambush (limit entry, wider SL/TP) or scalp (market entry, tight SL/TP). */
|
|
335
|
+
strategy: z.ZodOptional<z.ZodEnum<["scalp", "ambush"]>>;
|
|
326
336
|
entryReduceOnly: z.ZodOptional<z.ZodBoolean>;
|
|
327
337
|
tpTriggerPx: z.ZodNumber;
|
|
328
338
|
slTriggerPx: z.ZodNumber;
|
|
@@ -360,9 +370,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
360
370
|
slTriggerPx: number;
|
|
361
371
|
tpslIsMarket: boolean;
|
|
362
372
|
protectionReduceOnly: boolean;
|
|
363
|
-
phase: "
|
|
364
|
-
network?: string | undefined;
|
|
373
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
365
374
|
dex?: string | undefined;
|
|
375
|
+
network?: string | undefined;
|
|
376
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
366
377
|
entryReduceOnly?: boolean | undefined;
|
|
367
378
|
tpslLimitPx?: number | undefined;
|
|
368
379
|
entryOid?: number | undefined;
|
|
@@ -388,9 +399,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
388
399
|
tpTriggerPx: number;
|
|
389
400
|
slTriggerPx: number;
|
|
390
401
|
tpslIsMarket: boolean;
|
|
391
|
-
phase: "
|
|
392
|
-
network?: string | undefined;
|
|
402
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
393
403
|
dex?: string | undefined;
|
|
404
|
+
network?: string | undefined;
|
|
405
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
394
406
|
entryReduceOnly?: boolean | undefined;
|
|
395
407
|
tpslLimitPx?: number | undefined;
|
|
396
408
|
protectionReduceOnly?: boolean | undefined;
|
|
@@ -428,6 +440,8 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
428
440
|
replenishGapPx: z.ZodOptional<z.ZodNumber>;
|
|
429
441
|
/** Idempotency for grid replenishment (plan:/done: prefixes, see mergeGridReplenishDedupe). */
|
|
430
442
|
replenishDedupeKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
443
|
+
/** User set this to true to regenerate legs from current lower/upper/grids/bias on next reconcile. */
|
|
444
|
+
regenerateGrid: z.ZodOptional<z.ZodBoolean>;
|
|
431
445
|
legs: z.ZodArray<z.ZodObject<{
|
|
432
446
|
index: z.ZodNumber;
|
|
433
447
|
px: z.ZodNumber;
|
|
@@ -449,10 +463,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
449
463
|
fillPx: number;
|
|
450
464
|
}>>;
|
|
451
465
|
}, "strip", z.ZodTypeAny, {
|
|
466
|
+
isBuy: boolean;
|
|
452
467
|
index: number;
|
|
453
468
|
px: number;
|
|
454
|
-
|
|
455
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
469
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
456
470
|
oid?: number | undefined;
|
|
457
471
|
lastSz?: number | undefined;
|
|
458
472
|
lastOrigSz?: number | undefined;
|
|
@@ -461,10 +475,10 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
461
475
|
fillPx: number;
|
|
462
476
|
} | undefined;
|
|
463
477
|
}, {
|
|
478
|
+
isBuy: boolean;
|
|
464
479
|
index: number;
|
|
465
480
|
px: number;
|
|
466
|
-
|
|
467
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
481
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
468
482
|
oid?: number | undefined;
|
|
469
483
|
lastSz?: number | undefined;
|
|
470
484
|
lastOrigSz?: number | undefined;
|
|
@@ -475,7 +489,6 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
475
489
|
}>, "many">;
|
|
476
490
|
}, "strip", z.ZodTypeAny, {
|
|
477
491
|
coin: string;
|
|
478
|
-
reduceOnly: boolean;
|
|
479
492
|
kind: "grid";
|
|
480
493
|
id: string;
|
|
481
494
|
createdAtMs: number;
|
|
@@ -486,11 +499,12 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
486
499
|
grids: number;
|
|
487
500
|
orderSz: number;
|
|
488
501
|
bias: "symmetric" | "long" | "short";
|
|
502
|
+
reduceOnly: boolean;
|
|
489
503
|
legs: {
|
|
504
|
+
isBuy: boolean;
|
|
490
505
|
index: number;
|
|
491
506
|
px: number;
|
|
492
|
-
|
|
493
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
507
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
494
508
|
oid?: number | undefined;
|
|
495
509
|
lastSz?: number | undefined;
|
|
496
510
|
lastOrigSz?: number | undefined;
|
|
@@ -499,14 +513,14 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
499
513
|
fillPx: number;
|
|
500
514
|
} | undefined;
|
|
501
515
|
}[];
|
|
502
|
-
network?: string | undefined;
|
|
503
516
|
dex?: string | undefined;
|
|
517
|
+
network?: string | undefined;
|
|
504
518
|
maxOrders?: number | undefined;
|
|
505
519
|
replenishGapPx?: number | undefined;
|
|
506
520
|
replenishDedupeKeys?: string[] | undefined;
|
|
521
|
+
regenerateGrid?: boolean | undefined;
|
|
507
522
|
}, {
|
|
508
523
|
coin: string;
|
|
509
|
-
reduceOnly: boolean;
|
|
510
524
|
kind: "grid";
|
|
511
525
|
id: string;
|
|
512
526
|
createdAtMs: number;
|
|
@@ -517,11 +531,12 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
517
531
|
grids: number;
|
|
518
532
|
orderSz: number;
|
|
519
533
|
bias: "symmetric" | "long" | "short";
|
|
534
|
+
reduceOnly: boolean;
|
|
520
535
|
legs: {
|
|
536
|
+
isBuy: boolean;
|
|
521
537
|
index: number;
|
|
522
538
|
px: number;
|
|
523
|
-
|
|
524
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
539
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
525
540
|
oid?: number | undefined;
|
|
526
541
|
lastSz?: number | undefined;
|
|
527
542
|
lastOrigSz?: number | undefined;
|
|
@@ -530,11 +545,12 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
530
545
|
fillPx: number;
|
|
531
546
|
} | undefined;
|
|
532
547
|
}[];
|
|
533
|
-
network?: string | undefined;
|
|
534
548
|
dex?: string | undefined;
|
|
549
|
+
network?: string | undefined;
|
|
535
550
|
maxOrders?: number | undefined;
|
|
536
551
|
replenishGapPx?: number | undefined;
|
|
537
552
|
replenishDedupeKeys?: string[] | undefined;
|
|
553
|
+
regenerateGrid?: boolean | undefined;
|
|
538
554
|
}>, z.ZodObject<{
|
|
539
555
|
kind: z.ZodLiteral<"single_limit">;
|
|
540
556
|
id: z.ZodString;
|
|
@@ -549,31 +565,31 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
549
565
|
reduceOnly: z.ZodBoolean;
|
|
550
566
|
oid: z.ZodOptional<z.ZodNumber>;
|
|
551
567
|
}, "strip", z.ZodTypeAny, {
|
|
552
|
-
coin: string;
|
|
553
568
|
sz: number;
|
|
554
|
-
|
|
555
|
-
limitPx: number;
|
|
569
|
+
coin: string;
|
|
556
570
|
kind: "single_limit";
|
|
557
571
|
id: string;
|
|
558
572
|
createdAtMs: number;
|
|
559
573
|
updatedAtMs: number;
|
|
560
574
|
entrySide: "buy" | "sell";
|
|
561
575
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
562
|
-
|
|
576
|
+
reduceOnly: boolean;
|
|
577
|
+
limitPx: number;
|
|
563
578
|
oid?: number | undefined;
|
|
579
|
+
dex?: string | undefined;
|
|
564
580
|
}, {
|
|
565
|
-
coin: string;
|
|
566
581
|
sz: number;
|
|
567
|
-
|
|
568
|
-
limitPx: number;
|
|
582
|
+
coin: string;
|
|
569
583
|
kind: "single_limit";
|
|
570
584
|
id: string;
|
|
571
585
|
createdAtMs: number;
|
|
572
586
|
updatedAtMs: number;
|
|
573
587
|
entrySide: "buy" | "sell";
|
|
574
588
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
575
|
-
|
|
589
|
+
reduceOnly: boolean;
|
|
590
|
+
limitPx: number;
|
|
576
591
|
oid?: number | undefined;
|
|
592
|
+
dex?: string | undefined;
|
|
577
593
|
}>, z.ZodObject<{
|
|
578
594
|
kind: z.ZodLiteral<"standalone_tpsl">;
|
|
579
595
|
id: z.ZodString;
|
|
@@ -590,34 +606,34 @@ export declare const IntentRecordSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
|
|
|
590
606
|
reduceOnly: z.ZodBoolean;
|
|
591
607
|
oid: z.ZodOptional<z.ZodNumber>;
|
|
592
608
|
}, "strip", z.ZodTypeAny, {
|
|
593
|
-
coin: string;
|
|
594
609
|
side: "buy" | "sell";
|
|
595
610
|
sz: number;
|
|
596
|
-
|
|
597
|
-
triggerPx: number;
|
|
611
|
+
coin: string;
|
|
598
612
|
kind: "standalone_tpsl";
|
|
599
613
|
id: string;
|
|
600
614
|
createdAtMs: number;
|
|
601
615
|
updatedAtMs: number;
|
|
616
|
+
reduceOnly: boolean;
|
|
617
|
+
triggerPx: number;
|
|
602
618
|
tpsl: "tp" | "sl";
|
|
603
619
|
isMarket: boolean;
|
|
604
|
-
dex?: string | undefined;
|
|
605
620
|
oid?: number | undefined;
|
|
621
|
+
dex?: string | undefined;
|
|
606
622
|
limitPx?: number | undefined;
|
|
607
623
|
}, {
|
|
608
|
-
coin: string;
|
|
609
624
|
side: "buy" | "sell";
|
|
610
625
|
sz: number;
|
|
611
|
-
|
|
612
|
-
triggerPx: number;
|
|
626
|
+
coin: string;
|
|
613
627
|
kind: "standalone_tpsl";
|
|
614
628
|
id: string;
|
|
615
629
|
createdAtMs: number;
|
|
616
630
|
updatedAtMs: number;
|
|
631
|
+
reduceOnly: boolean;
|
|
632
|
+
triggerPx: number;
|
|
617
633
|
tpsl: "tp" | "sl";
|
|
618
634
|
isMarket: boolean;
|
|
619
|
-
dex?: string | undefined;
|
|
620
635
|
oid?: number | undefined;
|
|
636
|
+
dex?: string | undefined;
|
|
621
637
|
limitPx?: number | undefined;
|
|
622
638
|
}>]>;
|
|
623
639
|
export type IntentRecord = z.infer<typeof IntentRecordSchema>;
|
|
@@ -625,6 +641,171 @@ export type BracketIntentRecord = z.infer<typeof BracketIntentSchema>;
|
|
|
625
641
|
export type GridIntentRecord = z.infer<typeof GridIntentSchema>;
|
|
626
642
|
export type SingleLimitIntentRecord = z.infer<typeof SingleLimitIntentSchema>;
|
|
627
643
|
export type StandaloneTpslIntentRecord = z.infer<typeof StandaloneTpslIntentSchema>;
|
|
644
|
+
/** Optional per-user trading preferences (advisor prompts, guards). Not touched by reconcile / cancel-open. */
|
|
645
|
+
export declare const UserProfileSchema: z.ZodObject<{
|
|
646
|
+
risk: z.ZodDefault<z.ZodEnum<["conservative", "balanced", "aggressive"]>>;
|
|
647
|
+
defaultMaxSz: z.ZodOptional<z.ZodNumber>;
|
|
648
|
+
maxSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
649
|
+
/** Advisor / bracket minimum sz floor (profile guard; HL $10 notional still applies). */
|
|
650
|
+
defaultMinSz: z.ZodOptional<z.ZodNumber>;
|
|
651
|
+
minSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
652
|
+
requireTpsl: z.ZodDefault<z.ZodBoolean>;
|
|
653
|
+
priceDeviationPctMax: z.ZodDefault<z.ZodNumber>;
|
|
654
|
+
tradingStyleNotes: z.ZodOptional<z.ZodString>;
|
|
655
|
+
updatedAtMs: z.ZodOptional<z.ZodNumber>;
|
|
656
|
+
/** Optional isolated-margin auto top-up during `state reconcile` (default disabled). */
|
|
657
|
+
isolatedTopUp: z.ZodOptional<z.ZodObject<{
|
|
658
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
659
|
+
safeDistancePct: z.ZodDefault<z.ZodNumber>;
|
|
660
|
+
safetyFactor: z.ZodDefault<z.ZodNumber>;
|
|
661
|
+
reserveUsd: z.ZodDefault<z.ZodNumber>;
|
|
662
|
+
minTopUpUsd: z.ZodDefault<z.ZodNumber>;
|
|
663
|
+
minPartialUsd: z.ZodDefault<z.ZodNumber>;
|
|
664
|
+
maxSingleTopUpUsd: z.ZodDefault<z.ZodNumber>;
|
|
665
|
+
maxDailyTopUpUsd: z.ZodDefault<z.ZodNumber>;
|
|
666
|
+
cooldownSec: z.ZodDefault<z.ZodNumber>;
|
|
667
|
+
}, "strip", z.ZodTypeAny, {
|
|
668
|
+
enabled: boolean;
|
|
669
|
+
safeDistancePct: number;
|
|
670
|
+
safetyFactor: number;
|
|
671
|
+
reserveUsd: number;
|
|
672
|
+
minTopUpUsd: number;
|
|
673
|
+
minPartialUsd: number;
|
|
674
|
+
maxSingleTopUpUsd: number;
|
|
675
|
+
maxDailyTopUpUsd: number;
|
|
676
|
+
cooldownSec: number;
|
|
677
|
+
}, {
|
|
678
|
+
enabled?: boolean | undefined;
|
|
679
|
+
safeDistancePct?: number | undefined;
|
|
680
|
+
safetyFactor?: number | undefined;
|
|
681
|
+
reserveUsd?: number | undefined;
|
|
682
|
+
minTopUpUsd?: number | undefined;
|
|
683
|
+
minPartialUsd?: number | undefined;
|
|
684
|
+
maxSingleTopUpUsd?: number | undefined;
|
|
685
|
+
maxDailyTopUpUsd?: number | undefined;
|
|
686
|
+
cooldownSec?: number | undefined;
|
|
687
|
+
}>>;
|
|
688
|
+
/** Min model confidence (0–1) required before `advise` execute / `--auto`. 0 = disabled. */
|
|
689
|
+
minConfidenceToExecute: z.ZodOptional<z.ZodNumber>;
|
|
690
|
+
/** Random limit-price offset fraction (e.g. 0.002 = up to ±0.2%). 0 = disabled. */
|
|
691
|
+
limitPriceJitterPct: z.ZodOptional<z.ZodNumber>;
|
|
692
|
+
/** Min seconds between same coin+action executions (open_with_bracket also keyed by side). 0 = disabled. */
|
|
693
|
+
executeCooldownSec: z.ZodOptional<z.ZodNumber>;
|
|
694
|
+
/**
|
|
695
|
+
* Bracket entry shift toward model SL (0=off, 1=entry at SL, TP/SL translated equally).
|
|
696
|
+
* Limit-only: unfilled = no position.
|
|
697
|
+
*/
|
|
698
|
+
bracketSlEntryShift: z.ZodOptional<z.ZodNumber>;
|
|
699
|
+
/** Relative limit deviation above which advise replaces a pending TTL ambush (default: priceDeviationPctMax). */
|
|
700
|
+
ambushReplaceDeviationPct: z.ZodOptional<z.ZodNumber>;
|
|
701
|
+
/** Min seconds after open before advise may close without TP/SL hit (0 = disabled). Applies to all bracket-linked positions. */
|
|
702
|
+
antiRushCloseMinSec: z.ZodOptional<z.ZodNumber>;
|
|
703
|
+
/** After entry fill, wait this long for reconcile to place TP/SL before allow close (default 360s ≈ one advise round). */
|
|
704
|
+
protectionGraceSec: z.ZodOptional<z.ZodNumber>;
|
|
705
|
+
/** Block close when |unrealized PnL| below this fraction of entry (e.g. 0.01 = 1%) unless tp_unreachable. */
|
|
706
|
+
minClosePnlPct: z.ZodOptional<z.ZodNumber>;
|
|
707
|
+
/** Min TP distance / SL distance from bracket entry (default by risk: conservative 2.5, balanced 2, aggressive 1.5). */
|
|
708
|
+
minRewardRiskRatio: z.ZodOptional<z.ZodNumber>;
|
|
709
|
+
/** Max SL distance from entry as fraction of entry px (default by risk: conservative 1.2%, balanced 2%, aggressive 3%). */
|
|
710
|
+
maxSlPctFromEntry: z.ZodOptional<z.ZodNumber>;
|
|
711
|
+
/** Block bracket when computed SL touch prob exceeds this (ATR barrier model). */
|
|
712
|
+
maxSlTouchProb: z.ZodOptional<z.ZodNumber>;
|
|
713
|
+
/** Block when SL touch prob × slSweepLiquidityMultiplier exceeds this (stop-hunt adjusted). */
|
|
714
|
+
maxSlSweepProb: z.ZodOptional<z.ZodNumber>;
|
|
715
|
+
/** Move SL away from structure by this × ATR₁h before execute (buy: down, sell: up). 0 = off. */
|
|
716
|
+
slAntiSweepAtrFactor: z.ZodOptional<z.ZodNumber>;
|
|
717
|
+
/** Multiplier on SL touch prob to approximate stop-hunt / AI sweep risk (default 2). */
|
|
718
|
+
slSweepLiquidityMultiplier: z.ZodOptional<z.ZodNumber>;
|
|
719
|
+
/** Default ambush TTL minutes when model omits expires_in_min (15–30 typical). */
|
|
720
|
+
defaultAmbushExpiresMin: z.ZodOptional<z.ZodNumber>;
|
|
721
|
+
/** Block cancel_all while unexpired TTL ambush entry is still pending (default true). */
|
|
722
|
+
forbidCancelAllWithActiveAmbush: z.ZodDefault<z.ZodBoolean>;
|
|
723
|
+
}, "strip", z.ZodTypeAny, {
|
|
724
|
+
risk: "conservative" | "balanced" | "aggressive";
|
|
725
|
+
requireTpsl: boolean;
|
|
726
|
+
priceDeviationPctMax: number;
|
|
727
|
+
forbidCancelAllWithActiveAmbush: boolean;
|
|
728
|
+
updatedAtMs?: number | undefined;
|
|
729
|
+
defaultMaxSz?: number | undefined;
|
|
730
|
+
maxSzByCoin?: Record<string, number> | undefined;
|
|
731
|
+
defaultMinSz?: number | undefined;
|
|
732
|
+
minSzByCoin?: Record<string, number> | undefined;
|
|
733
|
+
tradingStyleNotes?: string | undefined;
|
|
734
|
+
isolatedTopUp?: {
|
|
735
|
+
enabled: boolean;
|
|
736
|
+
safeDistancePct: number;
|
|
737
|
+
safetyFactor: number;
|
|
738
|
+
reserveUsd: number;
|
|
739
|
+
minTopUpUsd: number;
|
|
740
|
+
minPartialUsd: number;
|
|
741
|
+
maxSingleTopUpUsd: number;
|
|
742
|
+
maxDailyTopUpUsd: number;
|
|
743
|
+
cooldownSec: number;
|
|
744
|
+
} | undefined;
|
|
745
|
+
minConfidenceToExecute?: number | undefined;
|
|
746
|
+
limitPriceJitterPct?: number | undefined;
|
|
747
|
+
executeCooldownSec?: number | undefined;
|
|
748
|
+
bracketSlEntryShift?: number | undefined;
|
|
749
|
+
ambushReplaceDeviationPct?: number | undefined;
|
|
750
|
+
antiRushCloseMinSec?: number | undefined;
|
|
751
|
+
protectionGraceSec?: number | undefined;
|
|
752
|
+
minClosePnlPct?: number | undefined;
|
|
753
|
+
minRewardRiskRatio?: number | undefined;
|
|
754
|
+
maxSlPctFromEntry?: number | undefined;
|
|
755
|
+
maxSlTouchProb?: number | undefined;
|
|
756
|
+
maxSlSweepProb?: number | undefined;
|
|
757
|
+
slAntiSweepAtrFactor?: number | undefined;
|
|
758
|
+
slSweepLiquidityMultiplier?: number | undefined;
|
|
759
|
+
defaultAmbushExpiresMin?: number | undefined;
|
|
760
|
+
}, {
|
|
761
|
+
updatedAtMs?: number | undefined;
|
|
762
|
+
risk?: "conservative" | "balanced" | "aggressive" | undefined;
|
|
763
|
+
defaultMaxSz?: number | undefined;
|
|
764
|
+
maxSzByCoin?: Record<string, number> | undefined;
|
|
765
|
+
defaultMinSz?: number | undefined;
|
|
766
|
+
minSzByCoin?: Record<string, number> | undefined;
|
|
767
|
+
requireTpsl?: boolean | undefined;
|
|
768
|
+
priceDeviationPctMax?: number | undefined;
|
|
769
|
+
tradingStyleNotes?: string | undefined;
|
|
770
|
+
isolatedTopUp?: {
|
|
771
|
+
enabled?: boolean | undefined;
|
|
772
|
+
safeDistancePct?: number | undefined;
|
|
773
|
+
safetyFactor?: number | undefined;
|
|
774
|
+
reserveUsd?: number | undefined;
|
|
775
|
+
minTopUpUsd?: number | undefined;
|
|
776
|
+
minPartialUsd?: number | undefined;
|
|
777
|
+
maxSingleTopUpUsd?: number | undefined;
|
|
778
|
+
maxDailyTopUpUsd?: number | undefined;
|
|
779
|
+
cooldownSec?: number | undefined;
|
|
780
|
+
} | undefined;
|
|
781
|
+
minConfidenceToExecute?: number | undefined;
|
|
782
|
+
limitPriceJitterPct?: number | undefined;
|
|
783
|
+
executeCooldownSec?: number | undefined;
|
|
784
|
+
bracketSlEntryShift?: number | undefined;
|
|
785
|
+
ambushReplaceDeviationPct?: number | undefined;
|
|
786
|
+
antiRushCloseMinSec?: number | undefined;
|
|
787
|
+
protectionGraceSec?: number | undefined;
|
|
788
|
+
minClosePnlPct?: number | undefined;
|
|
789
|
+
minRewardRiskRatio?: number | undefined;
|
|
790
|
+
maxSlPctFromEntry?: number | undefined;
|
|
791
|
+
maxSlTouchProb?: number | undefined;
|
|
792
|
+
maxSlSweepProb?: number | undefined;
|
|
793
|
+
slAntiSweepAtrFactor?: number | undefined;
|
|
794
|
+
slSweepLiquidityMultiplier?: number | undefined;
|
|
795
|
+
defaultAmbushExpiresMin?: number | undefined;
|
|
796
|
+
forbidCancelAllWithActiveAmbush?: boolean | undefined;
|
|
797
|
+
}>;
|
|
798
|
+
export type UserProfile = z.infer<typeof UserProfileSchema>;
|
|
799
|
+
export declare const AdviseExecuteRecordSchema: z.ZodObject<{
|
|
800
|
+
action: z.ZodString;
|
|
801
|
+
atMs: z.ZodNumber;
|
|
802
|
+
}, "strip", z.ZodTypeAny, {
|
|
803
|
+
action: string;
|
|
804
|
+
atMs: number;
|
|
805
|
+
}, {
|
|
806
|
+
action: string;
|
|
807
|
+
atMs: number;
|
|
808
|
+
}>;
|
|
628
809
|
export declare const TradeStateFileSchema: z.ZodObject<{
|
|
629
810
|
version: z.ZodLiteral<1>;
|
|
630
811
|
updatedAtMs: z.ZodNumber;
|
|
@@ -640,6 +821,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
640
821
|
entryLimitPx: z.ZodNumber;
|
|
641
822
|
entrySz: z.ZodNumber;
|
|
642
823
|
tif: z.ZodEnum<["Gtc", "Ioc", "Alo"]>;
|
|
824
|
+
/** Trading strategy: ambush (limit entry, wider SL/TP) or scalp (market entry, tight SL/TP). */
|
|
825
|
+
strategy: z.ZodOptional<z.ZodEnum<["scalp", "ambush"]>>;
|
|
643
826
|
entryReduceOnly: z.ZodOptional<z.ZodBoolean>;
|
|
644
827
|
tpTriggerPx: z.ZodNumber;
|
|
645
828
|
slTriggerPx: z.ZodNumber;
|
|
@@ -677,9 +860,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
677
860
|
slTriggerPx: number;
|
|
678
861
|
tpslIsMarket: boolean;
|
|
679
862
|
protectionReduceOnly: boolean;
|
|
680
|
-
phase: "
|
|
681
|
-
network?: string | undefined;
|
|
863
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
682
864
|
dex?: string | undefined;
|
|
865
|
+
network?: string | undefined;
|
|
866
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
683
867
|
entryReduceOnly?: boolean | undefined;
|
|
684
868
|
tpslLimitPx?: number | undefined;
|
|
685
869
|
entryOid?: number | undefined;
|
|
@@ -705,9 +889,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
705
889
|
tpTriggerPx: number;
|
|
706
890
|
slTriggerPx: number;
|
|
707
891
|
tpslIsMarket: boolean;
|
|
708
|
-
phase: "
|
|
709
|
-
network?: string | undefined;
|
|
892
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
710
893
|
dex?: string | undefined;
|
|
894
|
+
network?: string | undefined;
|
|
895
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
711
896
|
entryReduceOnly?: boolean | undefined;
|
|
712
897
|
tpslLimitPx?: number | undefined;
|
|
713
898
|
protectionReduceOnly?: boolean | undefined;
|
|
@@ -745,6 +930,8 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
745
930
|
replenishGapPx: z.ZodOptional<z.ZodNumber>;
|
|
746
931
|
/** Idempotency for grid replenishment (plan:/done: prefixes, see mergeGridReplenishDedupe). */
|
|
747
932
|
replenishDedupeKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
933
|
+
/** User set this to true to regenerate legs from current lower/upper/grids/bias on next reconcile. */
|
|
934
|
+
regenerateGrid: z.ZodOptional<z.ZodBoolean>;
|
|
748
935
|
legs: z.ZodArray<z.ZodObject<{
|
|
749
936
|
index: z.ZodNumber;
|
|
750
937
|
px: z.ZodNumber;
|
|
@@ -766,10 +953,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
766
953
|
fillPx: number;
|
|
767
954
|
}>>;
|
|
768
955
|
}, "strip", z.ZodTypeAny, {
|
|
956
|
+
isBuy: boolean;
|
|
769
957
|
index: number;
|
|
770
958
|
px: number;
|
|
771
|
-
|
|
772
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
959
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
773
960
|
oid?: number | undefined;
|
|
774
961
|
lastSz?: number | undefined;
|
|
775
962
|
lastOrigSz?: number | undefined;
|
|
@@ -778,10 +965,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
778
965
|
fillPx: number;
|
|
779
966
|
} | undefined;
|
|
780
967
|
}, {
|
|
968
|
+
isBuy: boolean;
|
|
781
969
|
index: number;
|
|
782
970
|
px: number;
|
|
783
|
-
|
|
784
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
971
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
785
972
|
oid?: number | undefined;
|
|
786
973
|
lastSz?: number | undefined;
|
|
787
974
|
lastOrigSz?: number | undefined;
|
|
@@ -792,7 +979,6 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
792
979
|
}>, "many">;
|
|
793
980
|
}, "strip", z.ZodTypeAny, {
|
|
794
981
|
coin: string;
|
|
795
|
-
reduceOnly: boolean;
|
|
796
982
|
kind: "grid";
|
|
797
983
|
id: string;
|
|
798
984
|
createdAtMs: number;
|
|
@@ -803,11 +989,12 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
803
989
|
grids: number;
|
|
804
990
|
orderSz: number;
|
|
805
991
|
bias: "symmetric" | "long" | "short";
|
|
992
|
+
reduceOnly: boolean;
|
|
806
993
|
legs: {
|
|
994
|
+
isBuy: boolean;
|
|
807
995
|
index: number;
|
|
808
996
|
px: number;
|
|
809
|
-
|
|
810
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
997
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
811
998
|
oid?: number | undefined;
|
|
812
999
|
lastSz?: number | undefined;
|
|
813
1000
|
lastOrigSz?: number | undefined;
|
|
@@ -816,14 +1003,14 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
816
1003
|
fillPx: number;
|
|
817
1004
|
} | undefined;
|
|
818
1005
|
}[];
|
|
819
|
-
network?: string | undefined;
|
|
820
1006
|
dex?: string | undefined;
|
|
1007
|
+
network?: string | undefined;
|
|
821
1008
|
maxOrders?: number | undefined;
|
|
822
1009
|
replenishGapPx?: number | undefined;
|
|
823
1010
|
replenishDedupeKeys?: string[] | undefined;
|
|
1011
|
+
regenerateGrid?: boolean | undefined;
|
|
824
1012
|
}, {
|
|
825
1013
|
coin: string;
|
|
826
|
-
reduceOnly: boolean;
|
|
827
1014
|
kind: "grid";
|
|
828
1015
|
id: string;
|
|
829
1016
|
createdAtMs: number;
|
|
@@ -834,11 +1021,12 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
834
1021
|
grids: number;
|
|
835
1022
|
orderSz: number;
|
|
836
1023
|
bias: "symmetric" | "long" | "short";
|
|
1024
|
+
reduceOnly: boolean;
|
|
837
1025
|
legs: {
|
|
1026
|
+
isBuy: boolean;
|
|
838
1027
|
index: number;
|
|
839
1028
|
px: number;
|
|
840
|
-
|
|
841
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
1029
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
842
1030
|
oid?: number | undefined;
|
|
843
1031
|
lastSz?: number | undefined;
|
|
844
1032
|
lastOrigSz?: number | undefined;
|
|
@@ -847,11 +1035,12 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
847
1035
|
fillPx: number;
|
|
848
1036
|
} | undefined;
|
|
849
1037
|
}[];
|
|
850
|
-
network?: string | undefined;
|
|
851
1038
|
dex?: string | undefined;
|
|
1039
|
+
network?: string | undefined;
|
|
852
1040
|
maxOrders?: number | undefined;
|
|
853
1041
|
replenishGapPx?: number | undefined;
|
|
854
1042
|
replenishDedupeKeys?: string[] | undefined;
|
|
1043
|
+
regenerateGrid?: boolean | undefined;
|
|
855
1044
|
}>, z.ZodObject<{
|
|
856
1045
|
kind: z.ZodLiteral<"single_limit">;
|
|
857
1046
|
id: z.ZodString;
|
|
@@ -866,31 +1055,31 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
866
1055
|
reduceOnly: z.ZodBoolean;
|
|
867
1056
|
oid: z.ZodOptional<z.ZodNumber>;
|
|
868
1057
|
}, "strip", z.ZodTypeAny, {
|
|
869
|
-
coin: string;
|
|
870
1058
|
sz: number;
|
|
871
|
-
|
|
872
|
-
limitPx: number;
|
|
1059
|
+
coin: string;
|
|
873
1060
|
kind: "single_limit";
|
|
874
1061
|
id: string;
|
|
875
1062
|
createdAtMs: number;
|
|
876
1063
|
updatedAtMs: number;
|
|
877
1064
|
entrySide: "buy" | "sell";
|
|
878
1065
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
879
|
-
|
|
1066
|
+
reduceOnly: boolean;
|
|
1067
|
+
limitPx: number;
|
|
880
1068
|
oid?: number | undefined;
|
|
1069
|
+
dex?: string | undefined;
|
|
881
1070
|
}, {
|
|
882
|
-
coin: string;
|
|
883
1071
|
sz: number;
|
|
884
|
-
|
|
885
|
-
limitPx: number;
|
|
1072
|
+
coin: string;
|
|
886
1073
|
kind: "single_limit";
|
|
887
1074
|
id: string;
|
|
888
1075
|
createdAtMs: number;
|
|
889
1076
|
updatedAtMs: number;
|
|
890
1077
|
entrySide: "buy" | "sell";
|
|
891
1078
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
892
|
-
|
|
1079
|
+
reduceOnly: boolean;
|
|
1080
|
+
limitPx: number;
|
|
893
1081
|
oid?: number | undefined;
|
|
1082
|
+
dex?: string | undefined;
|
|
894
1083
|
}>, z.ZodObject<{
|
|
895
1084
|
kind: z.ZodLiteral<"standalone_tpsl">;
|
|
896
1085
|
id: z.ZodString;
|
|
@@ -907,34 +1096,34 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
907
1096
|
reduceOnly: z.ZodBoolean;
|
|
908
1097
|
oid: z.ZodOptional<z.ZodNumber>;
|
|
909
1098
|
}, "strip", z.ZodTypeAny, {
|
|
910
|
-
coin: string;
|
|
911
1099
|
side: "buy" | "sell";
|
|
912
1100
|
sz: number;
|
|
913
|
-
|
|
914
|
-
triggerPx: number;
|
|
1101
|
+
coin: string;
|
|
915
1102
|
kind: "standalone_tpsl";
|
|
916
1103
|
id: string;
|
|
917
1104
|
createdAtMs: number;
|
|
918
1105
|
updatedAtMs: number;
|
|
1106
|
+
reduceOnly: boolean;
|
|
1107
|
+
triggerPx: number;
|
|
919
1108
|
tpsl: "tp" | "sl";
|
|
920
1109
|
isMarket: boolean;
|
|
921
|
-
dex?: string | undefined;
|
|
922
1110
|
oid?: number | undefined;
|
|
1111
|
+
dex?: string | undefined;
|
|
923
1112
|
limitPx?: number | undefined;
|
|
924
1113
|
}, {
|
|
925
|
-
coin: string;
|
|
926
1114
|
side: "buy" | "sell";
|
|
927
1115
|
sz: number;
|
|
928
|
-
|
|
929
|
-
triggerPx: number;
|
|
1116
|
+
coin: string;
|
|
930
1117
|
kind: "standalone_tpsl";
|
|
931
1118
|
id: string;
|
|
932
1119
|
createdAtMs: number;
|
|
933
1120
|
updatedAtMs: number;
|
|
1121
|
+
reduceOnly: boolean;
|
|
1122
|
+
triggerPx: number;
|
|
934
1123
|
tpsl: "tp" | "sl";
|
|
935
1124
|
isMarket: boolean;
|
|
936
|
-
dex?: string | undefined;
|
|
937
1125
|
oid?: number | undefined;
|
|
1126
|
+
dex?: string | undefined;
|
|
938
1127
|
limitPx?: number | undefined;
|
|
939
1128
|
}>]>>;
|
|
940
1129
|
events: z.ZodArray<z.ZodObject<{
|
|
@@ -956,6 +1145,170 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
956
1145
|
message?: string | undefined;
|
|
957
1146
|
data?: Record<string, unknown> | undefined;
|
|
958
1147
|
}>, "many">;
|
|
1148
|
+
userProfile: z.ZodOptional<z.ZodObject<{
|
|
1149
|
+
risk: z.ZodDefault<z.ZodEnum<["conservative", "balanced", "aggressive"]>>;
|
|
1150
|
+
defaultMaxSz: z.ZodOptional<z.ZodNumber>;
|
|
1151
|
+
maxSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
1152
|
+
/** Advisor / bracket minimum sz floor (profile guard; HL $10 notional still applies). */
|
|
1153
|
+
defaultMinSz: z.ZodOptional<z.ZodNumber>;
|
|
1154
|
+
minSzByCoin: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
1155
|
+
requireTpsl: z.ZodDefault<z.ZodBoolean>;
|
|
1156
|
+
priceDeviationPctMax: z.ZodDefault<z.ZodNumber>;
|
|
1157
|
+
tradingStyleNotes: z.ZodOptional<z.ZodString>;
|
|
1158
|
+
updatedAtMs: z.ZodOptional<z.ZodNumber>;
|
|
1159
|
+
/** Optional isolated-margin auto top-up during `state reconcile` (default disabled). */
|
|
1160
|
+
isolatedTopUp: z.ZodOptional<z.ZodObject<{
|
|
1161
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1162
|
+
safeDistancePct: z.ZodDefault<z.ZodNumber>;
|
|
1163
|
+
safetyFactor: z.ZodDefault<z.ZodNumber>;
|
|
1164
|
+
reserveUsd: z.ZodDefault<z.ZodNumber>;
|
|
1165
|
+
minTopUpUsd: z.ZodDefault<z.ZodNumber>;
|
|
1166
|
+
minPartialUsd: z.ZodDefault<z.ZodNumber>;
|
|
1167
|
+
maxSingleTopUpUsd: z.ZodDefault<z.ZodNumber>;
|
|
1168
|
+
maxDailyTopUpUsd: z.ZodDefault<z.ZodNumber>;
|
|
1169
|
+
cooldownSec: z.ZodDefault<z.ZodNumber>;
|
|
1170
|
+
}, "strip", z.ZodTypeAny, {
|
|
1171
|
+
enabled: boolean;
|
|
1172
|
+
safeDistancePct: number;
|
|
1173
|
+
safetyFactor: number;
|
|
1174
|
+
reserveUsd: number;
|
|
1175
|
+
minTopUpUsd: number;
|
|
1176
|
+
minPartialUsd: number;
|
|
1177
|
+
maxSingleTopUpUsd: number;
|
|
1178
|
+
maxDailyTopUpUsd: number;
|
|
1179
|
+
cooldownSec: number;
|
|
1180
|
+
}, {
|
|
1181
|
+
enabled?: boolean | undefined;
|
|
1182
|
+
safeDistancePct?: number | undefined;
|
|
1183
|
+
safetyFactor?: number | undefined;
|
|
1184
|
+
reserveUsd?: number | undefined;
|
|
1185
|
+
minTopUpUsd?: number | undefined;
|
|
1186
|
+
minPartialUsd?: number | undefined;
|
|
1187
|
+
maxSingleTopUpUsd?: number | undefined;
|
|
1188
|
+
maxDailyTopUpUsd?: number | undefined;
|
|
1189
|
+
cooldownSec?: number | undefined;
|
|
1190
|
+
}>>;
|
|
1191
|
+
/** Min model confidence (0–1) required before `advise` execute / `--auto`. 0 = disabled. */
|
|
1192
|
+
minConfidenceToExecute: z.ZodOptional<z.ZodNumber>;
|
|
1193
|
+
/** Random limit-price offset fraction (e.g. 0.002 = up to ±0.2%). 0 = disabled. */
|
|
1194
|
+
limitPriceJitterPct: z.ZodOptional<z.ZodNumber>;
|
|
1195
|
+
/** Min seconds between same coin+action executions (open_with_bracket also keyed by side). 0 = disabled. */
|
|
1196
|
+
executeCooldownSec: z.ZodOptional<z.ZodNumber>;
|
|
1197
|
+
/**
|
|
1198
|
+
* Bracket entry shift toward model SL (0=off, 1=entry at SL, TP/SL translated equally).
|
|
1199
|
+
* Limit-only: unfilled = no position.
|
|
1200
|
+
*/
|
|
1201
|
+
bracketSlEntryShift: z.ZodOptional<z.ZodNumber>;
|
|
1202
|
+
/** Relative limit deviation above which advise replaces a pending TTL ambush (default: priceDeviationPctMax). */
|
|
1203
|
+
ambushReplaceDeviationPct: z.ZodOptional<z.ZodNumber>;
|
|
1204
|
+
/** Min seconds after open before advise may close without TP/SL hit (0 = disabled). Applies to all bracket-linked positions. */
|
|
1205
|
+
antiRushCloseMinSec: z.ZodOptional<z.ZodNumber>;
|
|
1206
|
+
/** After entry fill, wait this long for reconcile to place TP/SL before allow close (default 360s ≈ one advise round). */
|
|
1207
|
+
protectionGraceSec: z.ZodOptional<z.ZodNumber>;
|
|
1208
|
+
/** Block close when |unrealized PnL| below this fraction of entry (e.g. 0.01 = 1%) unless tp_unreachable. */
|
|
1209
|
+
minClosePnlPct: z.ZodOptional<z.ZodNumber>;
|
|
1210
|
+
/** Min TP distance / SL distance from bracket entry (default by risk: conservative 2.5, balanced 2, aggressive 1.5). */
|
|
1211
|
+
minRewardRiskRatio: z.ZodOptional<z.ZodNumber>;
|
|
1212
|
+
/** Max SL distance from entry as fraction of entry px (default by risk: conservative 1.2%, balanced 2%, aggressive 3%). */
|
|
1213
|
+
maxSlPctFromEntry: z.ZodOptional<z.ZodNumber>;
|
|
1214
|
+
/** Block bracket when computed SL touch prob exceeds this (ATR barrier model). */
|
|
1215
|
+
maxSlTouchProb: z.ZodOptional<z.ZodNumber>;
|
|
1216
|
+
/** Block when SL touch prob × slSweepLiquidityMultiplier exceeds this (stop-hunt adjusted). */
|
|
1217
|
+
maxSlSweepProb: z.ZodOptional<z.ZodNumber>;
|
|
1218
|
+
/** Move SL away from structure by this × ATR₁h before execute (buy: down, sell: up). 0 = off. */
|
|
1219
|
+
slAntiSweepAtrFactor: z.ZodOptional<z.ZodNumber>;
|
|
1220
|
+
/** Multiplier on SL touch prob to approximate stop-hunt / AI sweep risk (default 2). */
|
|
1221
|
+
slSweepLiquidityMultiplier: z.ZodOptional<z.ZodNumber>;
|
|
1222
|
+
/** Default ambush TTL minutes when model omits expires_in_min (15–30 typical). */
|
|
1223
|
+
defaultAmbushExpiresMin: z.ZodOptional<z.ZodNumber>;
|
|
1224
|
+
/** Block cancel_all while unexpired TTL ambush entry is still pending (default true). */
|
|
1225
|
+
forbidCancelAllWithActiveAmbush: z.ZodDefault<z.ZodBoolean>;
|
|
1226
|
+
}, "strip", z.ZodTypeAny, {
|
|
1227
|
+
risk: "conservative" | "balanced" | "aggressive";
|
|
1228
|
+
requireTpsl: boolean;
|
|
1229
|
+
priceDeviationPctMax: number;
|
|
1230
|
+
forbidCancelAllWithActiveAmbush: boolean;
|
|
1231
|
+
updatedAtMs?: number | undefined;
|
|
1232
|
+
defaultMaxSz?: number | undefined;
|
|
1233
|
+
maxSzByCoin?: Record<string, number> | undefined;
|
|
1234
|
+
defaultMinSz?: number | undefined;
|
|
1235
|
+
minSzByCoin?: Record<string, number> | undefined;
|
|
1236
|
+
tradingStyleNotes?: string | undefined;
|
|
1237
|
+
isolatedTopUp?: {
|
|
1238
|
+
enabled: boolean;
|
|
1239
|
+
safeDistancePct: number;
|
|
1240
|
+
safetyFactor: number;
|
|
1241
|
+
reserveUsd: number;
|
|
1242
|
+
minTopUpUsd: number;
|
|
1243
|
+
minPartialUsd: number;
|
|
1244
|
+
maxSingleTopUpUsd: number;
|
|
1245
|
+
maxDailyTopUpUsd: number;
|
|
1246
|
+
cooldownSec: number;
|
|
1247
|
+
} | undefined;
|
|
1248
|
+
minConfidenceToExecute?: number | undefined;
|
|
1249
|
+
limitPriceJitterPct?: number | undefined;
|
|
1250
|
+
executeCooldownSec?: number | undefined;
|
|
1251
|
+
bracketSlEntryShift?: number | undefined;
|
|
1252
|
+
ambushReplaceDeviationPct?: number | undefined;
|
|
1253
|
+
antiRushCloseMinSec?: number | undefined;
|
|
1254
|
+
protectionGraceSec?: number | undefined;
|
|
1255
|
+
minClosePnlPct?: number | undefined;
|
|
1256
|
+
minRewardRiskRatio?: number | undefined;
|
|
1257
|
+
maxSlPctFromEntry?: number | undefined;
|
|
1258
|
+
maxSlTouchProb?: number | undefined;
|
|
1259
|
+
maxSlSweepProb?: number | undefined;
|
|
1260
|
+
slAntiSweepAtrFactor?: number | undefined;
|
|
1261
|
+
slSweepLiquidityMultiplier?: number | undefined;
|
|
1262
|
+
defaultAmbushExpiresMin?: number | undefined;
|
|
1263
|
+
}, {
|
|
1264
|
+
updatedAtMs?: number | undefined;
|
|
1265
|
+
risk?: "conservative" | "balanced" | "aggressive" | undefined;
|
|
1266
|
+
defaultMaxSz?: number | undefined;
|
|
1267
|
+
maxSzByCoin?: Record<string, number> | undefined;
|
|
1268
|
+
defaultMinSz?: number | undefined;
|
|
1269
|
+
minSzByCoin?: Record<string, number> | undefined;
|
|
1270
|
+
requireTpsl?: boolean | undefined;
|
|
1271
|
+
priceDeviationPctMax?: number | undefined;
|
|
1272
|
+
tradingStyleNotes?: string | undefined;
|
|
1273
|
+
isolatedTopUp?: {
|
|
1274
|
+
enabled?: boolean | undefined;
|
|
1275
|
+
safeDistancePct?: number | undefined;
|
|
1276
|
+
safetyFactor?: number | undefined;
|
|
1277
|
+
reserveUsd?: number | undefined;
|
|
1278
|
+
minTopUpUsd?: number | undefined;
|
|
1279
|
+
minPartialUsd?: number | undefined;
|
|
1280
|
+
maxSingleTopUpUsd?: number | undefined;
|
|
1281
|
+
maxDailyTopUpUsd?: number | undefined;
|
|
1282
|
+
cooldownSec?: number | undefined;
|
|
1283
|
+
} | undefined;
|
|
1284
|
+
minConfidenceToExecute?: number | undefined;
|
|
1285
|
+
limitPriceJitterPct?: number | undefined;
|
|
1286
|
+
executeCooldownSec?: number | undefined;
|
|
1287
|
+
bracketSlEntryShift?: number | undefined;
|
|
1288
|
+
ambushReplaceDeviationPct?: number | undefined;
|
|
1289
|
+
antiRushCloseMinSec?: number | undefined;
|
|
1290
|
+
protectionGraceSec?: number | undefined;
|
|
1291
|
+
minClosePnlPct?: number | undefined;
|
|
1292
|
+
minRewardRiskRatio?: number | undefined;
|
|
1293
|
+
maxSlPctFromEntry?: number | undefined;
|
|
1294
|
+
maxSlTouchProb?: number | undefined;
|
|
1295
|
+
maxSlSweepProb?: number | undefined;
|
|
1296
|
+
slAntiSweepAtrFactor?: number | undefined;
|
|
1297
|
+
slSweepLiquidityMultiplier?: number | undefined;
|
|
1298
|
+
defaultAmbushExpiresMin?: number | undefined;
|
|
1299
|
+
forbidCancelAllWithActiveAmbush?: boolean | undefined;
|
|
1300
|
+
}>>;
|
|
1301
|
+
/** Last successful advise execute per `${coin}:${action}` (cooldown guard). */
|
|
1302
|
+
adviseExecuteHistory: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1303
|
+
action: z.ZodString;
|
|
1304
|
+
atMs: z.ZodNumber;
|
|
1305
|
+
}, "strip", z.ZodTypeAny, {
|
|
1306
|
+
action: string;
|
|
1307
|
+
atMs: number;
|
|
1308
|
+
}, {
|
|
1309
|
+
action: string;
|
|
1310
|
+
atMs: number;
|
|
1311
|
+
}>>>;
|
|
959
1312
|
}, "strip", z.ZodTypeAny, {
|
|
960
1313
|
updatedAtMs: number;
|
|
961
1314
|
version: 1;
|
|
@@ -973,9 +1326,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
973
1326
|
slTriggerPx: number;
|
|
974
1327
|
tpslIsMarket: boolean;
|
|
975
1328
|
protectionReduceOnly: boolean;
|
|
976
|
-
phase: "
|
|
977
|
-
network?: string | undefined;
|
|
1329
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
978
1330
|
dex?: string | undefined;
|
|
1331
|
+
network?: string | undefined;
|
|
1332
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
979
1333
|
entryReduceOnly?: boolean | undefined;
|
|
980
1334
|
tpslLimitPx?: number | undefined;
|
|
981
1335
|
entryOid?: number | undefined;
|
|
@@ -990,7 +1344,6 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
990
1344
|
dedupeKeys?: string[] | undefined;
|
|
991
1345
|
} | {
|
|
992
1346
|
coin: string;
|
|
993
|
-
reduceOnly: boolean;
|
|
994
1347
|
kind: "grid";
|
|
995
1348
|
id: string;
|
|
996
1349
|
createdAtMs: number;
|
|
@@ -1001,11 +1354,12 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1001
1354
|
grids: number;
|
|
1002
1355
|
orderSz: number;
|
|
1003
1356
|
bias: "symmetric" | "long" | "short";
|
|
1357
|
+
reduceOnly: boolean;
|
|
1004
1358
|
legs: {
|
|
1359
|
+
isBuy: boolean;
|
|
1005
1360
|
index: number;
|
|
1006
1361
|
px: number;
|
|
1007
|
-
|
|
1008
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
1362
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
1009
1363
|
oid?: number | undefined;
|
|
1010
1364
|
lastSz?: number | undefined;
|
|
1011
1365
|
lastOrigSz?: number | undefined;
|
|
@@ -1014,38 +1368,39 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1014
1368
|
fillPx: number;
|
|
1015
1369
|
} | undefined;
|
|
1016
1370
|
}[];
|
|
1017
|
-
network?: string | undefined;
|
|
1018
1371
|
dex?: string | undefined;
|
|
1372
|
+
network?: string | undefined;
|
|
1019
1373
|
maxOrders?: number | undefined;
|
|
1020
1374
|
replenishGapPx?: number | undefined;
|
|
1021
1375
|
replenishDedupeKeys?: string[] | undefined;
|
|
1376
|
+
regenerateGrid?: boolean | undefined;
|
|
1022
1377
|
} | {
|
|
1023
|
-
coin: string;
|
|
1024
1378
|
sz: number;
|
|
1025
|
-
|
|
1026
|
-
limitPx: number;
|
|
1379
|
+
coin: string;
|
|
1027
1380
|
kind: "single_limit";
|
|
1028
1381
|
id: string;
|
|
1029
1382
|
createdAtMs: number;
|
|
1030
1383
|
updatedAtMs: number;
|
|
1031
1384
|
entrySide: "buy" | "sell";
|
|
1032
1385
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
1033
|
-
|
|
1386
|
+
reduceOnly: boolean;
|
|
1387
|
+
limitPx: number;
|
|
1034
1388
|
oid?: number | undefined;
|
|
1389
|
+
dex?: string | undefined;
|
|
1035
1390
|
} | {
|
|
1036
|
-
coin: string;
|
|
1037
1391
|
side: "buy" | "sell";
|
|
1038
1392
|
sz: number;
|
|
1039
|
-
|
|
1040
|
-
triggerPx: number;
|
|
1393
|
+
coin: string;
|
|
1041
1394
|
kind: "standalone_tpsl";
|
|
1042
1395
|
id: string;
|
|
1043
1396
|
createdAtMs: number;
|
|
1044
1397
|
updatedAtMs: number;
|
|
1398
|
+
reduceOnly: boolean;
|
|
1399
|
+
triggerPx: number;
|
|
1045
1400
|
tpsl: "tp" | "sl";
|
|
1046
1401
|
isMarket: boolean;
|
|
1047
|
-
dex?: string | undefined;
|
|
1048
1402
|
oid?: number | undefined;
|
|
1403
|
+
dex?: string | undefined;
|
|
1049
1404
|
limitPx?: number | undefined;
|
|
1050
1405
|
}>;
|
|
1051
1406
|
events: {
|
|
@@ -1055,6 +1410,48 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1055
1410
|
message?: string | undefined;
|
|
1056
1411
|
data?: Record<string, unknown> | undefined;
|
|
1057
1412
|
}[];
|
|
1413
|
+
userProfile?: {
|
|
1414
|
+
risk: "conservative" | "balanced" | "aggressive";
|
|
1415
|
+
requireTpsl: boolean;
|
|
1416
|
+
priceDeviationPctMax: number;
|
|
1417
|
+
forbidCancelAllWithActiveAmbush: boolean;
|
|
1418
|
+
updatedAtMs?: number | undefined;
|
|
1419
|
+
defaultMaxSz?: number | undefined;
|
|
1420
|
+
maxSzByCoin?: Record<string, number> | undefined;
|
|
1421
|
+
defaultMinSz?: number | undefined;
|
|
1422
|
+
minSzByCoin?: Record<string, number> | undefined;
|
|
1423
|
+
tradingStyleNotes?: string | undefined;
|
|
1424
|
+
isolatedTopUp?: {
|
|
1425
|
+
enabled: boolean;
|
|
1426
|
+
safeDistancePct: number;
|
|
1427
|
+
safetyFactor: number;
|
|
1428
|
+
reserveUsd: number;
|
|
1429
|
+
minTopUpUsd: number;
|
|
1430
|
+
minPartialUsd: number;
|
|
1431
|
+
maxSingleTopUpUsd: number;
|
|
1432
|
+
maxDailyTopUpUsd: number;
|
|
1433
|
+
cooldownSec: number;
|
|
1434
|
+
} | undefined;
|
|
1435
|
+
minConfidenceToExecute?: number | undefined;
|
|
1436
|
+
limitPriceJitterPct?: number | undefined;
|
|
1437
|
+
executeCooldownSec?: number | undefined;
|
|
1438
|
+
bracketSlEntryShift?: number | undefined;
|
|
1439
|
+
ambushReplaceDeviationPct?: number | undefined;
|
|
1440
|
+
antiRushCloseMinSec?: number | undefined;
|
|
1441
|
+
protectionGraceSec?: number | undefined;
|
|
1442
|
+
minClosePnlPct?: number | undefined;
|
|
1443
|
+
minRewardRiskRatio?: number | undefined;
|
|
1444
|
+
maxSlPctFromEntry?: number | undefined;
|
|
1445
|
+
maxSlTouchProb?: number | undefined;
|
|
1446
|
+
maxSlSweepProb?: number | undefined;
|
|
1447
|
+
slAntiSweepAtrFactor?: number | undefined;
|
|
1448
|
+
slSweepLiquidityMultiplier?: number | undefined;
|
|
1449
|
+
defaultAmbushExpiresMin?: number | undefined;
|
|
1450
|
+
} | undefined;
|
|
1451
|
+
adviseExecuteHistory?: Record<string, {
|
|
1452
|
+
action: string;
|
|
1453
|
+
atMs: number;
|
|
1454
|
+
}> | undefined;
|
|
1058
1455
|
}, {
|
|
1059
1456
|
updatedAtMs: number;
|
|
1060
1457
|
version: 1;
|
|
@@ -1071,9 +1468,10 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1071
1468
|
tpTriggerPx: number;
|
|
1072
1469
|
slTriggerPx: number;
|
|
1073
1470
|
tpslIsMarket: boolean;
|
|
1074
|
-
phase: "
|
|
1075
|
-
network?: string | undefined;
|
|
1471
|
+
phase: "planned" | "entry_pending" | "entry_partial" | "entry_filled" | "protection_active" | "tp_filled" | "sl_filled" | "closed" | "cancelled" | "expired" | "error";
|
|
1076
1472
|
dex?: string | undefined;
|
|
1473
|
+
network?: string | undefined;
|
|
1474
|
+
strategy?: "scalp" | "ambush" | undefined;
|
|
1077
1475
|
entryReduceOnly?: boolean | undefined;
|
|
1078
1476
|
tpslLimitPx?: number | undefined;
|
|
1079
1477
|
protectionReduceOnly?: boolean | undefined;
|
|
@@ -1089,7 +1487,6 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1089
1487
|
dedupeKeys?: string[] | undefined;
|
|
1090
1488
|
} | {
|
|
1091
1489
|
coin: string;
|
|
1092
|
-
reduceOnly: boolean;
|
|
1093
1490
|
kind: "grid";
|
|
1094
1491
|
id: string;
|
|
1095
1492
|
createdAtMs: number;
|
|
@@ -1100,11 +1497,12 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1100
1497
|
grids: number;
|
|
1101
1498
|
orderSz: number;
|
|
1102
1499
|
bias: "symmetric" | "long" | "short";
|
|
1500
|
+
reduceOnly: boolean;
|
|
1103
1501
|
legs: {
|
|
1502
|
+
isBuy: boolean;
|
|
1104
1503
|
index: number;
|
|
1105
1504
|
px: number;
|
|
1106
|
-
|
|
1107
|
-
legPhase: "pending" | "open" | "partial" | "filled" | "cancelled";
|
|
1505
|
+
legPhase: "partial" | "cancelled" | "pending" | "open" | "filled";
|
|
1108
1506
|
oid?: number | undefined;
|
|
1109
1507
|
lastSz?: number | undefined;
|
|
1110
1508
|
lastOrigSz?: number | undefined;
|
|
@@ -1113,38 +1511,39 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1113
1511
|
fillPx: number;
|
|
1114
1512
|
} | undefined;
|
|
1115
1513
|
}[];
|
|
1116
|
-
network?: string | undefined;
|
|
1117
1514
|
dex?: string | undefined;
|
|
1515
|
+
network?: string | undefined;
|
|
1118
1516
|
maxOrders?: number | undefined;
|
|
1119
1517
|
replenishGapPx?: number | undefined;
|
|
1120
1518
|
replenishDedupeKeys?: string[] | undefined;
|
|
1519
|
+
regenerateGrid?: boolean | undefined;
|
|
1121
1520
|
} | {
|
|
1122
|
-
coin: string;
|
|
1123
1521
|
sz: number;
|
|
1124
|
-
|
|
1125
|
-
limitPx: number;
|
|
1522
|
+
coin: string;
|
|
1126
1523
|
kind: "single_limit";
|
|
1127
1524
|
id: string;
|
|
1128
1525
|
createdAtMs: number;
|
|
1129
1526
|
updatedAtMs: number;
|
|
1130
1527
|
entrySide: "buy" | "sell";
|
|
1131
1528
|
tif: "Gtc" | "Ioc" | "Alo";
|
|
1132
|
-
|
|
1529
|
+
reduceOnly: boolean;
|
|
1530
|
+
limitPx: number;
|
|
1133
1531
|
oid?: number | undefined;
|
|
1532
|
+
dex?: string | undefined;
|
|
1134
1533
|
} | {
|
|
1135
|
-
coin: string;
|
|
1136
1534
|
side: "buy" | "sell";
|
|
1137
1535
|
sz: number;
|
|
1138
|
-
|
|
1139
|
-
triggerPx: number;
|
|
1536
|
+
coin: string;
|
|
1140
1537
|
kind: "standalone_tpsl";
|
|
1141
1538
|
id: string;
|
|
1142
1539
|
createdAtMs: number;
|
|
1143
1540
|
updatedAtMs: number;
|
|
1541
|
+
reduceOnly: boolean;
|
|
1542
|
+
triggerPx: number;
|
|
1144
1543
|
tpsl: "tp" | "sl";
|
|
1145
1544
|
isMarket: boolean;
|
|
1146
|
-
dex?: string | undefined;
|
|
1147
1545
|
oid?: number | undefined;
|
|
1546
|
+
dex?: string | undefined;
|
|
1148
1547
|
limitPx?: number | undefined;
|
|
1149
1548
|
}>;
|
|
1150
1549
|
events: {
|
|
@@ -1154,6 +1553,48 @@ export declare const TradeStateFileSchema: z.ZodObject<{
|
|
|
1154
1553
|
message?: string | undefined;
|
|
1155
1554
|
data?: Record<string, unknown> | undefined;
|
|
1156
1555
|
}[];
|
|
1556
|
+
userProfile?: {
|
|
1557
|
+
updatedAtMs?: number | undefined;
|
|
1558
|
+
risk?: "conservative" | "balanced" | "aggressive" | undefined;
|
|
1559
|
+
defaultMaxSz?: number | undefined;
|
|
1560
|
+
maxSzByCoin?: Record<string, number> | undefined;
|
|
1561
|
+
defaultMinSz?: number | undefined;
|
|
1562
|
+
minSzByCoin?: Record<string, number> | undefined;
|
|
1563
|
+
requireTpsl?: boolean | undefined;
|
|
1564
|
+
priceDeviationPctMax?: number | undefined;
|
|
1565
|
+
tradingStyleNotes?: string | undefined;
|
|
1566
|
+
isolatedTopUp?: {
|
|
1567
|
+
enabled?: boolean | undefined;
|
|
1568
|
+
safeDistancePct?: number | undefined;
|
|
1569
|
+
safetyFactor?: number | undefined;
|
|
1570
|
+
reserveUsd?: number | undefined;
|
|
1571
|
+
minTopUpUsd?: number | undefined;
|
|
1572
|
+
minPartialUsd?: number | undefined;
|
|
1573
|
+
maxSingleTopUpUsd?: number | undefined;
|
|
1574
|
+
maxDailyTopUpUsd?: number | undefined;
|
|
1575
|
+
cooldownSec?: number | undefined;
|
|
1576
|
+
} | undefined;
|
|
1577
|
+
minConfidenceToExecute?: number | undefined;
|
|
1578
|
+
limitPriceJitterPct?: number | undefined;
|
|
1579
|
+
executeCooldownSec?: number | undefined;
|
|
1580
|
+
bracketSlEntryShift?: number | undefined;
|
|
1581
|
+
ambushReplaceDeviationPct?: number | undefined;
|
|
1582
|
+
antiRushCloseMinSec?: number | undefined;
|
|
1583
|
+
protectionGraceSec?: number | undefined;
|
|
1584
|
+
minClosePnlPct?: number | undefined;
|
|
1585
|
+
minRewardRiskRatio?: number | undefined;
|
|
1586
|
+
maxSlPctFromEntry?: number | undefined;
|
|
1587
|
+
maxSlTouchProb?: number | undefined;
|
|
1588
|
+
maxSlSweepProb?: number | undefined;
|
|
1589
|
+
slAntiSweepAtrFactor?: number | undefined;
|
|
1590
|
+
slSweepLiquidityMultiplier?: number | undefined;
|
|
1591
|
+
defaultAmbushExpiresMin?: number | undefined;
|
|
1592
|
+
forbidCancelAllWithActiveAmbush?: boolean | undefined;
|
|
1593
|
+
} | undefined;
|
|
1594
|
+
adviseExecuteHistory?: Record<string, {
|
|
1595
|
+
action: string;
|
|
1596
|
+
atMs: number;
|
|
1597
|
+
}> | undefined;
|
|
1157
1598
|
}>;
|
|
1158
1599
|
export type TradeStateFile = z.infer<typeof TradeStateFileSchema>;
|
|
1159
1600
|
export declare function createEmptyTradeState(nowMs: number): TradeStateFile;
|