mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-10 08:48:07 +00:00
feat: 添加 Paradex 适配器支持,更新环境变量配置和适配器构建逻辑
This commit is contained in:
+18
-1
@@ -1,7 +1,14 @@
|
||||
export function isUnknownOrderError(error: unknown): boolean {
|
||||
const message = extractMessage(error);
|
||||
if (!message) return false;
|
||||
return message.includes("Unknown order") || message.includes("code\":-2011");
|
||||
const upper = message.toUpperCase();
|
||||
return (
|
||||
upper.includes("UNKNOWN ORDER") ||
|
||||
upper.includes("CODE\":-2011") ||
|
||||
upper.includes("ORDER_ID_NOT_FOUND") ||
|
||||
upper.includes("ORDER_IS_CLOSED") ||
|
||||
upper.includes("COULD NOT FIND ORDER")
|
||||
);
|
||||
}
|
||||
|
||||
export function extractMessage(error: unknown): string {
|
||||
@@ -36,3 +43,13 @@ export function isRateLimitError(error: unknown): boolean {
|
||||
message.includes("request rate")
|
||||
);
|
||||
}
|
||||
|
||||
export function isInsufficientBalanceError(error: unknown): boolean {
|
||||
const message = extractMessage(error).toUpperCase();
|
||||
return (
|
||||
message.includes("INSUFFICIENT") ||
|
||||
message.includes("NOT_ENOUGH_BALANCE") ||
|
||||
message.includes("INSUFFICIENT_BALANCE") ||
|
||||
message.includes("NOT ENOUGH")
|
||||
);
|
||||
}
|
||||
|
||||
+11
-3
@@ -32,10 +32,18 @@ export function getPosition(snapshot: AsterAccountSnapshot | null, symbol: strin
|
||||
}
|
||||
|
||||
export function getSMA(values: AsterKline[], length: number): number | null {
|
||||
if (!values || values.length < length) return null;
|
||||
const closes = values.slice(-length).map((k) => Number(k.close));
|
||||
if (!Array.isArray(values) || values.length < length) return null;
|
||||
const window = values.slice(-length);
|
||||
const closes = window.map((kline) => Number(kline.close));
|
||||
if (closes.some((price) => !Number.isFinite(price))) {
|
||||
return null;
|
||||
}
|
||||
const sum = closes.reduce((acc, current) => acc + current, 0);
|
||||
return sum / closes.length;
|
||||
if (!Number.isFinite(sum)) {
|
||||
return null;
|
||||
}
|
||||
const average = sum / closes.length;
|
||||
return Number.isFinite(average) ? average : null;
|
||||
}
|
||||
|
||||
export function calcStopLossPrice(entryPrice: number, qty: number, side: "long" | "short", loss: number): number {
|
||||
|
||||
Reference in New Issue
Block a user