206 lines
4.3 KiB
TypeScript
206 lines
4.3 KiB
TypeScript
/**
|
||
* KLineChart 图表常量配置
|
||
*
|
||
* 包含图表默认配置、技术指标列表、事件标记配置等
|
||
*/
|
||
|
||
import type { ChartConfig, ChartType } from '../types';
|
||
|
||
/**
|
||
* 图表默认高度(px)
|
||
*/
|
||
export const CHART_HEIGHTS = {
|
||
/** 主图高度 */
|
||
main: 400,
|
||
/** 副图高度(技术指标) */
|
||
sub: 150,
|
||
/** 移动端主图高度 */
|
||
mainMobile: 300,
|
||
/** 移动端副图高度 */
|
||
subMobile: 100,
|
||
} as const;
|
||
|
||
/**
|
||
* 技术指标配置
|
||
*/
|
||
export const INDICATORS = {
|
||
/** 主图指标(叠加在 K 线图上) */
|
||
main: [
|
||
{
|
||
name: 'MA',
|
||
label: '均线',
|
||
params: [5, 10, 20, 30],
|
||
colors: ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A'],
|
||
},
|
||
{
|
||
name: 'EMA',
|
||
label: '指数移动平均',
|
||
params: [5, 10, 20, 30],
|
||
colors: ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A'],
|
||
},
|
||
{
|
||
name: 'BOLL',
|
||
label: '布林带',
|
||
params: [20, 2],
|
||
colors: ['#FF6B6B', '#4ECDC4', '#45B7D1'],
|
||
},
|
||
],
|
||
|
||
/** 副图指标(单独窗口显示) */
|
||
sub: [
|
||
{
|
||
name: 'VOL',
|
||
label: '成交量',
|
||
params: [5, 10, 20],
|
||
colors: ['#ef5350', '#26a69a'],
|
||
},
|
||
{
|
||
name: 'MACD',
|
||
label: 'MACD',
|
||
params: [12, 26, 9],
|
||
colors: ['#FF6B6B', '#4ECDC4', '#45B7D1'],
|
||
},
|
||
{
|
||
name: 'KDJ',
|
||
label: 'KDJ',
|
||
params: [9, 3, 3],
|
||
colors: ['#FF6B6B', '#4ECDC4', '#45B7D1'],
|
||
},
|
||
{
|
||
name: 'RSI',
|
||
label: 'RSI',
|
||
params: [6, 12, 24],
|
||
colors: ['#FF6B6B', '#4ECDC4', '#45B7D1'],
|
||
},
|
||
],
|
||
} as const;
|
||
|
||
/**
|
||
* 默认主图指标(初始显示)
|
||
*/
|
||
export const DEFAULT_MAIN_INDICATOR = 'MA';
|
||
|
||
/**
|
||
* 默认副图指标(初始显示)
|
||
*/
|
||
export const DEFAULT_SUB_INDICATORS = ['VOL', 'MACD'];
|
||
|
||
/**
|
||
* 图表类型配置
|
||
*/
|
||
export const CHART_TYPE_CONFIG: Record<ChartType, { label: string; dateFormat: string }> = {
|
||
timeline: {
|
||
label: '分时图',
|
||
dateFormat: 'HH:mm', // 时间格式:09:30
|
||
},
|
||
daily: {
|
||
label: '日K线',
|
||
dateFormat: 'YYYY-MM-DD', // 日期格式:2024-01-01
|
||
},
|
||
} as const;
|
||
|
||
/**
|
||
* 事件标记配置
|
||
*/
|
||
export const EVENT_MARKER_CONFIG = {
|
||
/** 默认颜色 */
|
||
defaultColor: '#ff9800',
|
||
/** 默认位置 */
|
||
defaultPosition: 'top' as const,
|
||
/** 默认图标 */
|
||
defaultIcon: '📌',
|
||
/** 标记大小 */
|
||
size: {
|
||
point: 8, // 标记点半径
|
||
icon: 20, // 图标大小
|
||
},
|
||
/** 文本配置 */
|
||
text: {
|
||
fontSize: 12,
|
||
fontFamily: 'Helvetica, Arial, sans-serif',
|
||
color: '#ffffff',
|
||
padding: 4,
|
||
borderRadius: 4,
|
||
},
|
||
} as const;
|
||
|
||
/**
|
||
* 数据加载配置
|
||
*/
|
||
export const DATA_LOADER_CONFIG = {
|
||
/** 最大数据点数(避免性能问题) */
|
||
maxDataPoints: 1000,
|
||
/** 初始加载数据点数 */
|
||
initialLoadCount: 100,
|
||
/** 加载更多时的数据点数 */
|
||
loadMoreCount: 50,
|
||
} as const;
|
||
|
||
/**
|
||
* 缩放配置
|
||
*/
|
||
export const ZOOM_CONFIG = {
|
||
/** 最小缩放比例(显示更多 K 线) */
|
||
minZoom: 0.5,
|
||
/** 最大缩放比例(显示更少 K 线) */
|
||
maxZoom: 2.0,
|
||
/** 默认缩放比例 */
|
||
defaultZoom: 1.0,
|
||
/** 缩放步长 */
|
||
zoomStep: 0.1,
|
||
} as const;
|
||
|
||
/**
|
||
* 默认图表配置
|
||
*/
|
||
export const DEFAULT_CHART_CONFIG: ChartConfig = {
|
||
type: 'daily',
|
||
showIndicators: true,
|
||
defaultIndicators: DEFAULT_SUB_INDICATORS,
|
||
height: CHART_HEIGHTS.main,
|
||
showGrid: true,
|
||
showCrosshair: true,
|
||
} as const;
|
||
|
||
/**
|
||
* 图表初始化选项(传递给 KLineChart.init)
|
||
*/
|
||
export const CHART_INIT_OPTIONS = {
|
||
/** 时区(中国标准时间) */
|
||
timezone: 'Asia/Shanghai',
|
||
/** 语言 */
|
||
locale: 'zh-CN',
|
||
/** 自定义配置 */
|
||
customApi: {
|
||
formatDate: (timestamp: number, format: string) => {
|
||
// 可在此处自定义日期格式化逻辑
|
||
return new Date(timestamp).toLocaleString('zh-CN');
|
||
},
|
||
},
|
||
} as const;
|
||
|
||
/**
|
||
* 分时图特殊配置
|
||
*/
|
||
export const TIMELINE_CONFIG = {
|
||
/** 交易时段(A 股) */
|
||
tradingSessions: [
|
||
{ start: '09:30', end: '11:30' }, // 上午
|
||
{ start: '13:00', end: '15:00' }, // 下午
|
||
],
|
||
/** 是否显示均价线 */
|
||
showAverageLine: true,
|
||
/** 均价线颜色 */
|
||
averageLineColor: '#FFB74D',
|
||
} as const;
|
||
|
||
/**
|
||
* 日K线特殊配置
|
||
*/
|
||
export const DAILY_KLINE_CONFIG = {
|
||
/** 最大显示天数 */
|
||
maxDays: 250, // 约一年交易日
|
||
/** 默认显示天数 */
|
||
defaultDays: 60,
|
||
} as const;
|