모의투자 관리 기능 추가

This commit is contained in:
Macbook
2026-05-31 03:47:07 +09:00
parent 9d7dddfa57
commit 16d0e2c226
78 changed files with 4688 additions and 972 deletions
+21 -2
View File
@@ -674,6 +674,14 @@ export interface PaperPositionDto {
profitLossPct?: number;
}
export interface PaperAllocationDto {
symbol: string;
maxInvestKrw: number;
availableBuyKrw?: number;
strategyId?: number | null;
isActive?: boolean;
}
export interface PaperSummaryDto {
enabled: boolean;
initialCapital: number;
@@ -688,7 +696,11 @@ export interface PaperSummaryDto {
minOrderKrw: number;
autoTradeEnabled: boolean;
autoTradeBudgetPct: number;
orderableCash?: number;
reservedCash?: number;
initialCapitalSnapshot?: number;
positions: PaperPositionDto[];
allocations?: PaperAllocationDto[];
}
export interface PaperTradeDto {
@@ -704,13 +716,20 @@ export interface PaperTradeDto {
feeAmount: number;
netAmount: number;
cashAfter: number;
realizedPnlDelta?: number | null;
createdAt?: string | null;
}
export interface PaperPlaceOrderResult {
trade?: PaperTradeDto | null;
order?: { id: number; symbol: string; side: string; status: string } | null;
}
export interface PaperOrderRequest {
market: string;
side: 'BUY' | 'SELL';
orderKind?: 'limit' | 'market';
orderType?: 'MARKET' | 'LIMIT';
price: number;
quantity: number;
/** 수량 0일 때 매수 예산 비율 (가용현금 %) */
@@ -735,8 +754,8 @@ export async function loadPaperTrades(): Promise<PaperTradeDto[]> {
return (await request<PaperTradeDto[]>('/paper/trades')) ?? [];
}
export async function placePaperOrder(body: PaperOrderRequest): Promise<PaperTradeDto | null> {
return request<PaperTradeDto>('/paper/orders', {
export async function placePaperOrder(body: PaperOrderRequest): Promise<PaperPlaceOrderResult | null> {
return request<PaperPlaceOrderResult>('/paper/orders', {
method: 'POST',
body: JSON.stringify(body),
});