- 系统架构总览:技术栈、目录结构、数据流向 - 指标引擎详解:16个指标完整原理与参数(含源码行号) - 信号评分引擎:多指标共振评分机制、动态阈值、案例分析 - 大周期偏向判定:assessBigTimeframeBias 完整说明 - EWO转换检测机制:evaluateEwoTurnForUser 逐步流程 - 飞书通知格式规范:三类通知完整格式模板 - 类型系统参考:所有 TypeScript 类型完整文档 - 数据库与存储:MySQL 表结构、缓存机制、维护指南 - 部署运维指南:Docker Compose、Nginx、飞书配置 - 开发历史与TODO:功能状态表、优先级路线图 - 优化建议汇总:9项优化建议含源码位置和预期效果
8.8 KiB
8.8 KiB
tradehk 类型系统参考
返回:tradehk 文档中心 源文件:
client/src/lib/types.ts、shared/types.ts
概述
tradehk 使用 TypeScript 强类型系统,所有数据结构都有明确的类型定义。本文档列出所有核心类型,方便开发者理解数据流和接口规范。
基础类型
TimeInterval(K线周期)
type TimeInterval =
| '1m' | '3m' | '5m' | '10m' | '15m' | '30m'
| '1h' | '2h' | '4h' | '6h' | '12h'
| '1d' | '3d' | '1w' | '1M';
默认周期:10m(10分钟)
Candle(K线数据)
interface Candle {
time: number; // Unix 时间戳(秒)
open: number; // 开盘价
high: number; // 最高价
low: number; // 最低价
close: number; // 收盘价
volume: number; // 成交量
}
TradingSignal(交易信号)
interface TradingSignal {
id: string; // nanoid 唯一 ID
timestamp: number; // 信号时间戳(毫秒)
symbol: string; // 交易对(如 "BTCUSDT")
interval: TimeInterval; // K线周期
type: 'BUY' | 'SELL'; // 信号方向
strength: 'STRONG' | 'MODERATE' | 'WEAK'; // 信号强度
price: number; // 信号价格(收盘价)
indicators: { // 当前指标值快照
ma10?: number;
ma100?: number;
ewo?: number;
macd?: number;
macdSignal?: number;
macdHistogram?: number;
ao?: number;
};
reasons: string[]; // 触发原因列表(中文)
isActive: boolean; // 是否活跃
}
IndicatorParams(指标参数配置)
interface IndicatorParams {
// 移动平均线
maPeriod?: number; // MA 短期周期(默认10)
maLongPeriod?: number; // MA 长期周期(默认100)
emaPeriods?: number[]; // 叠加显示的 EMA 周期列表(默认[12,26])
// MACD
macdFast?: number; // MACD 快线周期(默认10)
macdSlow?: number; // MACD 慢线周期(默认20)
macdSignal?: number; // MACD 信号线周期(默认10)
// RSI
rsiPeriod?: number; // RSI 周期(默认14)
rsiOverbought?: number; // RSI 超买线(默认70)
rsiOversold?: number; // RSI 超卖线(默认30)
// KDJ
kdjPeriod?: number; // KDJ 周期(默认9)
kdjKSmooth?: number; // K 平滑(默认3)
kdjDSmooth?: number; // D 平滑(默认3)
// Stoch
stochPeriod?: number; // Stoch 周期(默认14)
stochSmooth?: number; // Stoch 平滑(默认3)
// StochRSI
stochRsiRsiPeriod?: number; // StochRSI 的 RSI 周期(默认14)
stochRsiStochPeriod?: number; // StochRSI 的 Stoch 周期(默认14)
stochRsiKSmooth?: number; // K 平滑(默认3)
stochRsiDSmooth?: number; // D 平滑(默认3)
// 布林带
bollingerPeriod?: number; // 布林带周期(默认20)
bollingerStdDev?: number; // 标准差倍数(默认2)
// SuperTrend
superTrendPeriod?: number; // SuperTrend ATR 周期(默认10)
superTrendMultiplier?: number; // SuperTrend 倍数(默认3)
// DMI/ADX
dmiPeriod?: number; // DMI 周期(默认14)
// ATR
atrPeriod?: number; // ATR 周期(默认14)
// MFI
mfiPeriod?: number; // MFI 周期(默认14)
// TTM Squeeze
ttmBbPeriod?: number; // 布林带周期(默认20)
ttmKcPeriod?: number; // 肯特纳通道周期(默认20)
// 信号开关
signalUseRsi?: boolean; // 是否使用 RSI 评分(默认true)
signalUseKdj?: boolean; // 是否使用 KDJ 评分(默认false)
signalUseStoch?: boolean; // 是否使用 Stoch 评分(默认false)
signalUseBollinger?: boolean; // 是否使用布林带评分(默认true)
signalUseSuperTrend?: boolean; // 是否使用 SuperTrend 评分(默认false)
signalUseDmi?: boolean; // 是否使用 DMI 评分(默认false)
}
AlertConfig(通知配置)
interface AlertConfig {
enabled: boolean; // 通知总开关
browserNotification: boolean; // 浏览器通知
soundAlert: boolean; // 声音提醒
alertOnBuySignal: boolean; // 买入信号通知
alertOnSellSignal: boolean; // 卖出信号通知
alertOnPriceBreakout: boolean; // 价格突破通知
alertOnVolumeContraction: boolean; // 缩量提醒
priceBreakoutPercent: number; // 价格突破阈值(%)
larkWebhookEnabled: boolean; // 飞书 Webhook 开关
larkSignalNotifyMode: 'ewo_only' | 'all_signals'; // 通知模式
signalLarkThrottleMinutes: number; // 信号推送频控(分钟)
ewoTurnRules: EwoTurnAlertRule[]; // EWO 转换规则
}
EwoTurnAlertRule(EWO 转换规则)
interface EwoTurnAlertRule {
id: string; // 规则 ID(nanoid)
enabled: boolean; // 是否启用
symbol: string; // 交易对(如 "BTCUSDT")
interval: TimeInterval; // K线周期
direction: EwoTurnDirection; // 转换方向
}
type EwoTurnDirection = 'red_to_green' | 'green_to_red';
TrendBiasConfig(大周期偏向配置)
interface TrendBiasConfig {
enabled: boolean; // 是否启用大周期过滤
interval: '4h' | '12h'; // 大周期 K 线周期
bias: TrendBias; // 当前大周期方向(自动计算)
lastUpdated: number; // 最后更新时间戳
autoRefreshMinutes: number; // 自动刷新间隔(分钟)
}
type TrendBias = 'BEARISH' | 'BULLISH' | 'NEUTRAL' | null;
UserConfig(用户配置)
interface UserConfig {
timezone: string; // 用户时区(如 "Asia/Shanghai")
symbolIntervals: Record<string, TimeInterval>; // 每个币对的 K 线周期
indicatorParams: IndicatorParams; // 指标参数
showIndicators: ShowIndicatorsConfig; // 图表显示开关
alerts: AlertConfig; // 通知配置
}
ShowIndicatorsConfig(图表显示配置)
interface ShowIndicatorsConfig {
showEwo: boolean; // 显示 EWO 子图
showMacd: boolean; // 显示 MACD 子图
showAo: boolean; // 显示 AO 子图
showRsi: boolean; // 显示 RSI 子图
showKdj: boolean; // 显示 KDJ 子图
showStoch: boolean; // 显示 Stoch 子图
showStochRsi: boolean; // 显示 StochRSI 子图
showBollinger: boolean; // 显示布林带(主图叠加)
showMfi: boolean; // 显示 MFI 子图
showObv: boolean; // 显示 OBV 子图
showDmi: boolean; // 显示 DMI 子图
showSuperTrend: boolean; // 显示 SuperTrend(主图叠加)
showAttr: boolean; // 显示 ATR 子图
showTtmSqueeze: boolean; // 显示 TTM Squeeze 子图
showEma: boolean; // 显示 EMA 叠加线
showMa: boolean; // 显示 MA 叠加线
}
数据库类型(shared/types.ts)
Signal(数据库信号记录)
// 对应 MySQL signals 表
interface Signal {
id: number; // 自增主键
userId: number; // 用户 ID
symbol: string; // 交易对
interval: string; // K线周期
direction: 'long' | 'short'; // 信号方向
strength: 'strong' | 'medium' | 'weak'; // 信号强度
score: number; // 信号评分(80/50/30)
price: number; // 信号价格
ewo?: number; // EWO 值
macd?: number; // MACD 值
macdSignal?: number; // MACD 信号线值
macdHist?: number; // MACD 柱状图值
ao?: number; // AO 值
reasons?: string; // JSON 字符串,原因列表
signalAt: number; // 信号时间戳(毫秒)
createdAt: Date; // 创建时间
}
类型常量
默认 EWO 监控规则
const DEFAULT_EWO_RULE_SYMBOLS = [
"BTCUSDT", "ETHUSDT", "BNBUSDT", "SOLUSDT", "DOGEUSDT"
];
const DEFAULT_EWO_RULE_INTERVAL: TimeInterval = "10m";
const DEFAULT_EWO_RULE_DIRECTION: EwoTurnDirection = "red_to_green";
默认信号周期
const DEFAULT_SYMBOL_INTERVAL: TimeInterval = "10m";
缓存限制
const CACHE_CANDLE_LIMIT = 300; // 每对最多缓存300根K线