文件
quantKonwledge/wiki/tradehk/类型系统参考.md
Manus Quant Agent baf10a9e91 feat: 新增 tradehk 专属 Wiki 文档体系(10个文档)
- 系统架构总览:技术栈、目录结构、数据流向
- 指标引擎详解:16个指标完整原理与参数(含源码行号)
- 信号评分引擎:多指标共振评分机制、动态阈值、案例分析
- 大周期偏向判定:assessBigTimeframeBias 完整说明
- EWO转换检测机制:evaluateEwoTurnForUser 逐步流程
- 飞书通知格式规范:三类通知完整格式模板
- 类型系统参考:所有 TypeScript 类型完整文档
- 数据库与存储:MySQL 表结构、缓存机制、维护指南
- 部署运维指南:Docker Compose、Nginx、飞书配置
- 开发历史与TODO:功能状态表、优先级路线图
- 优化建议汇总:9项优化建议含源码位置和预期效果
2026-03-05 23:14:31 -05:00

285 行
8.8 KiB
Markdown

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# tradehk 类型系统参考
> 返回:[tradehk 文档中心](./README.md)
> 源文件:`client/src/lib/types.ts`、`shared/types.ts`
## 概述
tradehk 使用 TypeScript 强类型系统,所有数据结构都有明确的类型定义。本文档列出所有核心类型,方便开发者理解数据流和接口规范。
---
## 基础类型
### TimeIntervalK线周期
```typescript
type TimeInterval =
| '1m' | '3m' | '5m' | '10m' | '15m' | '30m'
| '1h' | '2h' | '4h' | '6h' | '12h'
| '1d' | '3d' | '1w' | '1M';
```
**默认周期**`10m`10分钟
---
### CandleK线数据
```typescript
interface Candle {
time: number; // Unix 时间戳(秒)
open: number; // 开盘价
high: number; // 最高价
low: number; // 最低价
close: number; // 收盘价
volume: number; // 成交量
}
```
---
### TradingSignal交易信号
```typescript
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指标参数配置
```typescript
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通知配置
```typescript
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 转换规则
}
```
---
### EwoTurnAlertRuleEWO 转换规则)
```typescript
interface EwoTurnAlertRule {
id: string; // 规则 IDnanoid
enabled: boolean; // 是否启用
symbol: string; // 交易对(如 "BTCUSDT"
interval: TimeInterval; // K线周期
direction: EwoTurnDirection; // 转换方向
}
type EwoTurnDirection = 'red_to_green' | 'green_to_red';
```
---
### TrendBiasConfig大周期偏向配置
```typescript
interface TrendBiasConfig {
enabled: boolean; // 是否启用大周期过滤
interval: '4h' | '12h'; // 大周期 K 线周期
bias: TrendBias; // 当前大周期方向(自动计算)
lastUpdated: number; // 最后更新时间戳
autoRefreshMinutes: number; // 自动刷新间隔(分钟)
}
type TrendBias = 'BEARISH' | 'BULLISH' | 'NEUTRAL' | null;
```
---
### UserConfig用户配置
```typescript
interface UserConfig {
timezone: string; // 用户时区(如 "Asia/Shanghai"
symbolIntervals: Record<string, TimeInterval>; // 每个币对的 K 线周期
indicatorParams: IndicatorParams; // 指标参数
showIndicators: ShowIndicatorsConfig; // 图表显示开关
alerts: AlertConfig; // 通知配置
}
```
---
### ShowIndicatorsConfig图表显示配置
```typescript
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数据库信号记录
```typescript
// 对应 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 监控规则
```typescript
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";
```
### 默认信号周期
```typescript
const DEFAULT_SYMBOL_INTERVAL: TimeInterval = "10m";
```
### 缓存限制
```typescript
const CACHE_CANDLE_LIMIT = 300; // 每对最多缓存300根K线
```
## 相关文档
- [指标引擎详解](./指标引擎详解.md) — 各指标函数签名
- [信号评分引擎](./信号评分引擎.md) — TradingSignal 生成逻辑
- [飞书通知格式规范](./飞书通知格式规范.md) — AlertConfig 使用说明