커스텀 수정
This commit is contained in:
@@ -14,7 +14,13 @@ import {
|
||||
} from '../utils/backendApi';
|
||||
import type { Theme } from '../types';
|
||||
import { buildEquityFromSignals } from '../utils/backtestEquity';
|
||||
import { normalizeEpochSec, normalizeEpochSecOptional } from '../utils/backtestUiUtils';
|
||||
import {
|
||||
formatChartTypeKo,
|
||||
formatTimeframeKo,
|
||||
normalizeEpochSec,
|
||||
normalizeEpochSecOptional,
|
||||
toUpbitMarket,
|
||||
} from '../utils/backtestUiUtils';
|
||||
import BacktestExecutionList, { type ExecutionListTab } from './backtest/BacktestExecutionList';
|
||||
import BacktestAnalysisChart from './backtest/BacktestAnalysisChart';
|
||||
import BacktestKpiPanel from './backtest/BacktestKpiPanel';
|
||||
@@ -29,10 +35,6 @@ import {
|
||||
import '../styles/strategyEditorTheme.css';
|
||||
import { getKoreanName } from '../utils/marketNameCache';
|
||||
|
||||
function toUpbitMarket(symbol: string): string {
|
||||
return symbol.startsWith('KRW-') ? symbol : `KRW-${symbol}`;
|
||||
}
|
||||
|
||||
const LEFT_KEY = 'btd-left-width';
|
||||
const RIGHT_KEY = 'btd-right-width';
|
||||
const LEFT_DEFAULT = 380;
|
||||
@@ -199,7 +201,10 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) {
|
||||
return {
|
||||
ko: getKoreanName(market),
|
||||
strategy: selectedBacktest.strategyName || '전략 없음',
|
||||
meta: selectedBacktest.timeframe,
|
||||
metaParts: [
|
||||
formatTimeframeKo(selectedBacktest.timeframe),
|
||||
formatChartTypeKo('candlestick'),
|
||||
],
|
||||
};
|
||||
}
|
||||
if (tab === 'live' && selectedLive) {
|
||||
@@ -207,11 +212,15 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) {
|
||||
return {
|
||||
ko: getKoreanName(market),
|
||||
strategy: selectedLive.strategyLabel,
|
||||
meta: selectedLive.sourceLabel,
|
||||
metaParts: [
|
||||
formatTimeframeKo(chartProps?.timeframe ?? '1h'),
|
||||
formatChartTypeKo('candlestick'),
|
||||
selectedLive.sourceLabel,
|
||||
],
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}, [tab, selectedBacktest, selectedLive]);
|
||||
}, [tab, selectedBacktest, selectedLive, chartProps]);
|
||||
|
||||
const footerTrades = equityData.trades;
|
||||
|
||||
@@ -276,7 +285,12 @@ export function BacktestHistoryPage({ theme = 'dark' }: Props) {
|
||||
<h2 className="btd-main-ko">{centerHead.ko}</h2>
|
||||
<p className="btd-main-strategy">
|
||||
{centerHead.strategy}
|
||||
{centerHead.meta ? <span className="btd-main-meta"> · {centerHead.meta}</span> : null}
|
||||
{centerHead.metaParts.length > 0 && (
|
||||
<span className="btd-main-meta">
|
||||
{' · '}
|
||||
{centerHead.metaParts.filter(Boolean).join(' · ')}
|
||||
</span>
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -8,7 +8,13 @@ import type { ChartManager } from '../../utils/ChartManager';
|
||||
import { useHistoryLoader, LOAD_MORE_TRIGGER } from '../../hooks/useHistoryLoader';
|
||||
import { isUpbitMarket } from '../../utils/upbitApi';
|
||||
import { DEFAULT_DISPLAY_TIMEZONE } from '../../utils/timezone';
|
||||
import { normalizeChartTimeframe, timeframeBarSeconds } from '../../utils/backtestUiUtils';
|
||||
import {
|
||||
formatChartTypeKo,
|
||||
formatTimeframeKo,
|
||||
normalizeChartTimeframe,
|
||||
timeframeBarSeconds,
|
||||
} from '../../utils/backtestUiUtils';
|
||||
import { getKoreanName } from '../../utils/marketNameCache';
|
||||
import { useIndicatorSettings } from '../../hooks/useIndicatorSettings';
|
||||
import { useAppSettings } from '../../hooks/useAppSettings';
|
||||
import { enrichIndicatorConfig, getIndicatorDef } from '../../utils/indicatorRegistry';
|
||||
@@ -294,7 +300,9 @@ const BacktestAnalysisChart: React.FC<Props> = ({
|
||||
if (mgr) applyPaneRatio(mgr);
|
||||
}, [paneAreaRatio, applyPaneRatio]);
|
||||
|
||||
const symLabel = market.replace(/^KRW-/, '');
|
||||
const koName = getKoreanName(market);
|
||||
const tfKo = formatTimeframeKo(chartTimeframe);
|
||||
const chartTypeKo = formatChartTypeKo(chartType);
|
||||
const stratTf = chartTimeframe;
|
||||
|
||||
const priceLabels = appDefaults.chartSeriesPriceLabels !== false;
|
||||
@@ -303,9 +311,9 @@ const BacktestAnalysisChart: React.FC<Props> = ({
|
||||
<div className="btd-analysis-chart">
|
||||
<div className="btd-analysis-toolbar">
|
||||
<div className="btd-analysis-toolbar-left">
|
||||
<span className="btd-analysis-select btd-analysis-select--static">{symLabel}</span>
|
||||
<span className="btd-analysis-select btd-analysis-select--static">{chartTimeframe}</span>
|
||||
<span className="btd-analysis-select btd-analysis-select--static">Candle</span>
|
||||
<span className="btd-analysis-select btd-analysis-select--static">{koName}</span>
|
||||
<span className="btd-analysis-select btd-analysis-select--static">{tfKo}</span>
|
||||
<span className="btd-analysis-select btd-analysis-select--static">{chartTypeKo}</span>
|
||||
</div>
|
||||
<div className="btd-analysis-toolbar-right">
|
||||
<span className="btd-analysis-tool" title="자석 모드">⊕</span>
|
||||
|
||||
@@ -4,13 +4,16 @@ import type { LiveExecutionItem } from '../../utils/liveExecutionGroups';
|
||||
import BacktestSparkline from './BacktestSparkline';
|
||||
import { buildEquityFromSignals } from '../../utils/backtestEquity';
|
||||
import { paperTradesToSignals } from '../../utils/liveExecutionGroups';
|
||||
import { fmtListTimestamp, fmtShortTimestamp, pct, pctAbs } from '../../utils/backtestUiUtils';
|
||||
import {
|
||||
fmtListTimestamp,
|
||||
fmtShortTimestamp,
|
||||
formatTimeframeKo,
|
||||
pct,
|
||||
pctAbs,
|
||||
toUpbitMarket,
|
||||
} from '../../utils/backtestUiUtils';
|
||||
import { getKoreanName } from '../../utils/marketNameCache';
|
||||
|
||||
function toUpbitMarket(symbol: string): string {
|
||||
return symbol.startsWith('KRW-') ? symbol : `KRW-${symbol}`;
|
||||
}
|
||||
|
||||
export type ExecutionListTab = 'backtest' | 'live';
|
||||
export type BacktestListSort = 'strategy' | 'symbol' | 'return';
|
||||
|
||||
@@ -95,7 +98,7 @@ export default function BacktestExecutionList({
|
||||
<div className="btd-history-card-row">
|
||||
<div className="btd-history-card-main">
|
||||
<span className="btd-history-ko">{ko}</span>
|
||||
<span className="btd-history-strategy">{strategy} · {r.timeframe}</span>
|
||||
<span className="btd-history-strategy">{strategy} · {formatTimeframeKo(r.timeframe)}</span>
|
||||
<span className="btd-history-date">{fmtListTimestamp(r.createdAt)}</span>
|
||||
</div>
|
||||
<div className="btd-history-card-side">
|
||||
|
||||
Reference in New Issue
Block a user