위젯항목 추가
This commit is contained in:
@@ -22,6 +22,11 @@ import NotificationListWidgetHost from './hosts/NotificationListWidgetHost';
|
||||
import StrategyListWidgetHost from './hosts/StrategyListWidgetHost';
|
||||
import BacktestListWidgetHost from './hosts/BacktestListWidgetHost';
|
||||
import PaperKpiWidgetHost from './hosts/PaperKpiWidgetHost';
|
||||
import SignalSummaryWidgetHost from './hosts/SignalSummaryWidgetHost';
|
||||
import SignalMatchWidgetHost from './hosts/SignalMatchWidgetHost';
|
||||
import StrategyConditionWidgetHost from './hosts/StrategyConditionWidgetHost';
|
||||
import BacktestSignalsWidgetHost from './hosts/BacktestSignalsWidgetHost';
|
||||
import IndicatorStatusWidgetHost from './hosts/IndicatorStatusWidgetHost';
|
||||
|
||||
export type WidgetGroupId =
|
||||
| 'chart'
|
||||
@@ -29,6 +34,7 @@ export type WidgetGroupId =
|
||||
| 'trade'
|
||||
| 'portfolio'
|
||||
| 'strategy'
|
||||
| 'analysis'
|
||||
| 'alert';
|
||||
|
||||
export interface WidgetDefinition {
|
||||
@@ -47,6 +53,7 @@ export const WIDGET_GROUP_LABELS: Record<WidgetGroupId, string> = {
|
||||
trade: '매매·호가',
|
||||
portfolio: '계좌·포트폴리오',
|
||||
strategy: '전략·분석',
|
||||
analysis: '매매 시그널',
|
||||
alert: '알림',
|
||||
};
|
||||
|
||||
@@ -227,6 +234,46 @@ export const WIDGET_REGISTRY: WidgetDefinition[] = [
|
||||
group: 'strategy',
|
||||
Host: BacktestListWidgetHost,
|
||||
},
|
||||
{
|
||||
type: 'analysis.signalSummary',
|
||||
label: '매매 시그널 요약',
|
||||
description: '선택 종목·전략 실시간 신호 카드',
|
||||
category: 'side',
|
||||
group: 'analysis',
|
||||
Host: SignalSummaryWidgetHost,
|
||||
},
|
||||
{
|
||||
type: 'analysis.signalMatch',
|
||||
label: '조건 일치율',
|
||||
description: '매수·매도 조건별 지표 충족률',
|
||||
category: 'side',
|
||||
group: 'analysis',
|
||||
Host: SignalMatchWidgetHost,
|
||||
},
|
||||
{
|
||||
type: 'analysis.strategyCondition',
|
||||
label: '전략 조건',
|
||||
description: '매수·매도 DSL 조건 트리',
|
||||
category: 'side',
|
||||
group: 'analysis',
|
||||
Host: StrategyConditionWidgetHost,
|
||||
},
|
||||
{
|
||||
type: 'analysis.backtestSignals',
|
||||
label: '백테스트 시그널',
|
||||
description: '최근 캔들 구간 매매 시그널 목록',
|
||||
category: 'side',
|
||||
group: 'analysis',
|
||||
Host: BacktestSignalsWidgetHost,
|
||||
},
|
||||
{
|
||||
type: 'analysis.indicatorDetail',
|
||||
label: '지표별 상태',
|
||||
description: '조건별 현재값·충족 여부 상세',
|
||||
category: 'side',
|
||||
group: 'analysis',
|
||||
Host: IndicatorStatusWidgetHost,
|
||||
},
|
||||
];
|
||||
|
||||
const byType = new Map(WIDGET_REGISTRY.map(w => [w.type, w]));
|
||||
@@ -244,7 +291,7 @@ export function widgetsByGroup(category: WidgetCategory): { group: WidgetGroupId
|
||||
const items = widgetsForCategory(category);
|
||||
const order: WidgetGroupId[] = category === 'center'
|
||||
? ['chart']
|
||||
: ['market', 'trade', 'portfolio', 'strategy', 'alert'];
|
||||
: ['market', 'trade', 'portfolio', 'strategy', 'analysis', 'alert'];
|
||||
return order
|
||||
.map(group => ({
|
||||
group,
|
||||
|
||||
Reference in New Issue
Block a user