1Branch0Tags
GL
glucryptoFix exact Hyperliquid symbols
typescript
import type { IndicatorType } from "../config"; import type { TradeSignal } from "./types"; export function resolveTradeSignal( indicator: IndicatorType, output: Record<string, unknown>, ): TradeSignal { const key = indicator === "ma-cross" ? "maCross" : indicator; const record = output[key as keyof typeof output]; if (!record || typeof record !== "object") return "unknown"; const signal = typeof (record as { signal?: unknown }).signal === "string" ? ((record as { signal: string }).signal ?? "") : ""; switch (indicator) { case "rsi": if (signal === "oversold") return "buy"; if (signal === "overbought") return "sell"; return signal ? "hold" : "unknown"; case "macd": if (signal === "bullish") return "buy"; if (signal === "bearish") return "sell"; return signal ? "hold" : "unknown"; case "bb": if (signal === "oversold") return "buy"; if (signal === "overbought") return "sell"; return signal ? "hold" : "unknown"; case "sma": case "ema": if (signal === "above" || signal === "crossed-up") return "buy"; if (signal === "below" || signal === "crossed-down") return "sell"; return signal ? "hold" : "unknown"; case "ma-cross": if (signal === "bullish" || signal === "bullish-cross") return "buy"; if (signal === "bearish" || signal === "bearish-cross") return "sell"; return signal ? "hold" : "unknown"; case "donchian": if (signal === "bullish") return "buy"; if (signal === "bearish") return "sell"; return signal ? "hold" : "unknown"; } }