initial commit
This commit is contained in:
131
types.ts
Normal file
131
types.ts
Normal file
@@ -0,0 +1,131 @@
|
||||
|
||||
export enum MarketType {
|
||||
DOMESTIC = 'Domestic',
|
||||
OVERSEAS = 'Overseas'
|
||||
}
|
||||
|
||||
export enum OrderType {
|
||||
BUY = 'BUY',
|
||||
SELL = 'SELL'
|
||||
}
|
||||
|
||||
export type AiProviderType = 'gemini' | 'openai-compatible';
|
||||
|
||||
export interface AiConfig {
|
||||
id: string;
|
||||
name: string;
|
||||
providerType: AiProviderType;
|
||||
modelName: string;
|
||||
baseUrl?: string;
|
||||
}
|
||||
|
||||
export interface ApiSettings {
|
||||
appKey: string;
|
||||
appSecret: string;
|
||||
accountNumber: string;
|
||||
useTelegram: boolean;
|
||||
telegramToken: string;
|
||||
telegramChatId: string;
|
||||
useNaverNews: boolean;
|
||||
naverClientId: string;
|
||||
naverClientSecret: string;
|
||||
aiConfigs: AiConfig[];
|
||||
preferredNewsAiId?: string;
|
||||
preferredStockAiId?: string;
|
||||
preferredNewsJudgementAiId?: string;
|
||||
preferredAutoBuyAiId?: string;
|
||||
preferredAutoSellAiId?: string;
|
||||
}
|
||||
|
||||
export interface StockTick {
|
||||
code: string;
|
||||
price: number;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export interface StockItem {
|
||||
code: string;
|
||||
name: string;
|
||||
price: number;
|
||||
change: number;
|
||||
changePercent: number;
|
||||
market: MarketType;
|
||||
volume: number;
|
||||
tradingValue?: number; // 거래대금
|
||||
buyRatio?: number; // 매수 비율 (0-100)
|
||||
sellRatio?: number; // 매도 비율 (0-100)
|
||||
per?: number;
|
||||
pbr?: number;
|
||||
roe?: number;
|
||||
marketCap?: number;
|
||||
dividendYield?: number;
|
||||
aiScoreBuy: number;
|
||||
aiScoreSell: number;
|
||||
themes?: string[];
|
||||
// --- New Fields ---
|
||||
memo?: string; // 사용자 메모
|
||||
aiAnalysis?: string; // AI 분석 리포트 텍스트
|
||||
isHidden?: boolean; // 종목 숨김 여부
|
||||
}
|
||||
|
||||
export interface TradeOrder {
|
||||
id: string;
|
||||
stockCode: string;
|
||||
stockName: string;
|
||||
type: OrderType;
|
||||
price: number;
|
||||
quantity: number;
|
||||
status: 'PENDING' | 'COMPLETED' | 'CANCELLED';
|
||||
timestamp: Date;
|
||||
}
|
||||
|
||||
export interface ReservedOrder {
|
||||
id: string;
|
||||
stockCode: string;
|
||||
stockName: string;
|
||||
type: OrderType;
|
||||
quantity: number;
|
||||
monitoringType: 'PRICE_TRIGGER' | 'TRAILING_STOP';
|
||||
triggerPrice: number;
|
||||
trailingType: 'PERCENT' | 'AMOUNT';
|
||||
trailingValue: number;
|
||||
useStopLoss?: boolean;
|
||||
stopLossType?: 'PERCENT' | 'AMOUNT';
|
||||
stopLossValue?: number;
|
||||
sellAll?: boolean;
|
||||
highestPrice?: number;
|
||||
lowestPrice?: number;
|
||||
market: MarketType;
|
||||
status: 'WAITING' | 'MONITORING' | 'TRIGGERED' | 'CANCELLED';
|
||||
createdAt: Date;
|
||||
expiryDate: Date;
|
||||
}
|
||||
|
||||
export interface AutoTradeConfig {
|
||||
id: string;
|
||||
stockCode?: string;
|
||||
stockName: string;
|
||||
groupId?: string;
|
||||
type: 'ACCUMULATION' | 'TRAILING_STOP';
|
||||
quantity: number;
|
||||
frequency: 'DAILY' | 'WEEKLY' | 'MONTHLY';
|
||||
specificDay?: number;
|
||||
executionTime: string;
|
||||
trailingPercent?: number;
|
||||
active: boolean;
|
||||
market: MarketType;
|
||||
}
|
||||
|
||||
export interface WatchlistGroup {
|
||||
id: string;
|
||||
name: string;
|
||||
codes: string[];
|
||||
market: MarketType;
|
||||
}
|
||||
|
||||
export interface NewsItem {
|
||||
title: string;
|
||||
description: string;
|
||||
link: string;
|
||||
pubDate: string;
|
||||
}
|
||||
Reference in New Issue
Block a user