auto: 일일 백업 2026-07-15 02:00

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-07-15 02:00:02 +09:00
parent ed73ed8b18
commit 66d372b50e
107 changed files with 1592 additions and 1191 deletions
+518 -134
View File
@@ -5388,8 +5388,10 @@ table.market-table .down { color: #4a8cf0; font-weight: 600; }
table.market-table .flat { color: #c9ccd3; }
table.market-table .neutral { color: #8b8f9a; }
table.market-adr th { width: 64px; }
table.market-adr td.adr-val { width: 88px; }
table.market-adr td.adr-val { width: 104px; }
table.market-adr td.adr-val b { font-size: 14px; }
.adr-line { line-height: 1.45; white-space: nowrap; }
.adr-when { font-size: 10px; color: #8b8f9a; margin-right: 3px; }
table.market-adr td.adr-breakdown { font-size: 11px; color: #8b8f9a; }
.adr-tag {
display: inline-block; padding: 1px 6px; border-radius: 999px;
@@ -5437,35 +5439,23 @@ table.market-adr td.adr-breakdown { font-size: 11px; color: #8b8f9a; }
.adr-trend-svg .adr-hover { transition: opacity 0.1s; }
.adr-trend-svg .adr-hover-line { stroke: #d6d8dd; stroke-width: 1; stroke-dasharray: 2 3; opacity: 0.7; }
.adr-trend-svg .adr-hover-dot { stroke-width: 1.2; }
.adr-trend-tip {
position: absolute;
background: #11141c;
border: 1px solid #2a2e36;
border-radius: 6px;
padding: 5px 8px;
font-size: 11px;
color: #d6d8dd;
pointer-events: none;
opacity: 0;
transition: opacity 0.1s;
z-index: 5;
white-space: nowrap;
min-width: 110px;
}
.adr-trend-tip .tip-d { font-weight: 600; color: #f0f0f0; font-variant-numeric: tabular-nums; margin-bottom: 2px; }
.adr-trend-tip .tip-line {
display: flex; justify-content: space-between; gap: 10px; align-items: baseline;
/* 선택 지점 정보 차트 아래 정적 정보줄( 플로팅 툴팁 대체). */
.adr-trend-info {
display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 14px;
margin-top: 7px; font-size: 12px; color: #d6d8dd;
font-variant-numeric: tabular-nums;
}
.adr-trend-tip .tip-line[hidden] { display: none; }
.adr-trend-tip .tip-mk { font-size: 10px; color: #8b8f9a; }
.adr-trend-tip .tip-kospi .tip-mk { color: #fbbf24; }
.adr-trend-tip .tip-kosdaq .tip-mk { color: #34d399; }
.adr-trend-tip .tip-v { font-weight: 700; font-variant-numeric: tabular-nums; }
.adr-trend-tip .tip-v.up { color: #ff8a96; }
.adr-trend-tip .tip-v.down { color: #8db4f4; }
.adr-trend-tip .tip-v.flat { color: #d6d8dd; }
.adr-trend-tip .tip-v.live::after { content: " *"; color: #fbbf24; font-weight: 600; }
.adr-trend-info .tip-d { font-weight: 600; color: #f0f0f0; }
.adr-trend-info .tip-line { display: inline-flex; align-items: baseline; gap: 5px; }
.adr-trend-info .tip-line[hidden] { display: none; }
.adr-trend-info .tip-mk { font-size: 11px; color: #8b8f9a; }
.adr-trend-info .tip-kospi .tip-mk { color: #fbbf24; }
.adr-trend-info .tip-kosdaq .tip-mk { color: #34d399; }
.adr-trend-info .tip-v { font-weight: 700; }
.adr-trend-info .tip-v.up { color: #ff8a96; }
.adr-trend-info .tip-v.down { color: #8db4f4; }
.adr-trend-info .tip-v.flat { color: #d6d8dd; }
.adr-trend-info .tip-v.live::after { content: " *"; color: #fbbf24; font-weight: 600; }
.adr-trend-empty {
display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
padding: 8px 0;
@@ -5488,6 +5478,36 @@ table.market-adr td.adr-breakdown { font-size: 11px; color: #8b8f9a; }
border-color: rgba(251,191,36,0.4);
}
.adr-range-btn:focus-visible { outline: 1px solid #4a4f5a; outline-offset: 1px; }
/* 오늘 ADR 블록 카드 기본(접힘) 상태에 항상 노출. 시장별 (·판정·종목수). */
.adr-today-block {
display: flex; flex-direction: column; gap: 4px;
margin: 6px 0 2px; font-variant-numeric: tabular-nums;
}
.adr-today-block .adr-today-when { font-size: 11px; color: #8b8f9a; font-weight: 500; }
.adr-today-item {
display: flex; align-items: baseline; flex-wrap: wrap; gap: 3px 8px;
font-size: 13px; color: #d6d8dd;
}
.adr-today-mk { font-size: 11px; color: #8b8f9a; min-width: 38px; }
.adr-today-item b { font-weight: 700; }
.adr-today-item b.up { color: #ff8a96; }
.adr-today-item b.down { color: #8db4f4; }
.adr-today-item b.neutral { color: #d6d8dd; }
.adr-today-breakdown { font-size: 11px; color: #8b8f9a; margin-left: auto; }
/* 추세 그래프 토글 버튼 .adr-range-btn 재사용. */
.adr-graph-toggle {
appearance: none; -webkit-appearance: none;
background: #11141c; color: #c9ccd3;
border: 1px solid #2a2e36; border-radius: 8px;
padding: 6px 12px; margin: 6px 0 2px; font-size: 11px; font-weight: 500; font-family: inherit;
cursor: pointer;
}
.adr-graph-toggle:hover, .adr-graph-toggle:active { background: #1a1d26; color: #f0f0f0; }
.adr-graph-toggle[aria-expanded="true"] {
background: rgba(251,191,36,0.12); color: #fbbf24; border-color: rgba(251,191,36,0.4);
}
.adr-graph-toggle:focus-visible { outline: 1px solid #4a4f5a; outline-offset: 1px; }
.adr-graph-wrap[hidden] { display: none; }
.adr-live-badge {
display: inline-block; margin-left: 6px;
font-size: 9px; font-weight: 600; letter-spacing: 0.04em;
@@ -5552,13 +5572,29 @@ table.market-adr td.adr-breakdown { font-size: 11px; color: #8b8f9a; }
display: flex; flex-direction: column; gap: 4px; min-width: 168px;
}
.opts-popup[hidden] { display: none; }
/* 팝업 메뉴 항목으로 쓰일 때의 계좌 나누기 버튼 가로 채우고 좌측 정렬 + 아이콘. */
/* 팝업 메뉴 항목 공통 스타일 가로 채우고 좌측 정렬 + 아이콘. 자립형(다른 버튼 클래스 없이도 동일). */
.opts-item {
width: 100%; min-width: 0; height: auto; padding: 9px 11px;
justify-content: flex-start; gap: 9px; font-size: 13px; font-weight: 600;
display: flex; align-items: center; justify-content: flex-start;
width: 100%; min-width: 0; height: auto; padding: 9px 11px; gap: 9px;
background: #1c2230; border: 1px solid #2a3142; color: #e6e6e6;
border-radius: 8px; font-size: 13px; font-weight: 600; line-height: 1;
font-family: inherit; cursor: pointer; user-select: none; text-align: left;
transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.1s;
}
.opts-item .opts-ico { font-size: 16px; line-height: 1; }
.opts-item:hover { background: #232a3b; }
.opts-item:active { transform: scale(0.95); }
.holdings-toggle-wrap { margin-top: 4px; }
/* 등락률 계산기 모달 결과 영역 */
.calc-result { margin-top: 14px; padding: 12px 14px; background: #14171f; border: 1px solid #232838; border-radius: 10px; }
.calc-line { display: flex; align-items: baseline; justify-content: space-between; padding: 4px 0; }
.calc-lbl { font-size: 13px; color: #8b8f9a; }
.calc-val { font-size: 22px; font-weight: 700; color: #8b8f9a; font-variant-numeric: tabular-nums; }
.calc-hint { margin-top: 6px; font-size: 12px; color: #7a8493; }
.calc-hint:empty { display: none; }
.calc-sym-row { display: block; margin-top: 12px; font-size: 13px; color: #8b8f9a; }
.calc-sym-row .order-symbol-select { margin-top: 5px; max-width: none; }
.calc-sym-status { margin-top: 6px; font-size: 12px; color: #8b8f9a; min-height: 1em; }
.calc-sym-status:empty { display: none; }
/* 차트 컨트롤 자산정보 상단의 공통 기간·단위 select 묶음. */
.chart-controls { display: flex; flex-direction: column; gap: 6px; margin: 10px 14px 4px; }
@@ -5823,102 +5859,150 @@ def _format_signed_billion(v: int | None) -> tuple[str, str]:
def _adr_class(adr: float | None) -> tuple[str, str]:
"""ADR 색상·해석 라벨. 통상 ≤75 침체(매수권), ≥125 과열(매도권).
20 이동평균 기준 단일일 raw ratio는 변동성이 커서 임계치 해석이 무의미."""
"""ADR 색상·해석 라벨. ≤80 침체(매수권), ≥120 과열(매도권). 그래프 기준선(80/100/120)과 동일."""
if adr is None:
return 'flat', ''
if adr <= 75:
if adr <= 80:
return 'down', '침체'
if adr >= 125:
if adr >= 120:
return 'up', '과열'
return 'flat', ''
def _build_adr_series_with_live(history_rows: list[dict], live_pt: dict | None) -> list[dict]:
"""history(오래된 순) + 오늘 라이브 1점을 합쳐 [{date,adr,is_live}, ...] 반환.
라이브는 history 마지막 date 다를 때만 append (21:00 누적 후엔 자동 중복)."""
"""history(오래된 순) + 오늘 라이브 1점을 합쳐 [{date,adr,rise,fall,is_live}, ...] 반환.
rise/fall(상승·하락 종목수) 정통 합계식 ADR 산출용. 라이브는 history 마지막 date 다를 때만 append."""
base: list[dict] = [
{'date': r['date'], 'adr': float(r['adr']), 'is_live': False}
{'date': r['date'], 'adr': float(r['adr']),
'rise': r.get('rise'), 'fall': r.get('fall'), 'is_live': False}
for r in history_rows
if r.get('adr') is not None and r.get('date')
]
if live_pt and live_pt.get('adr') is not None and live_pt.get('date'):
last_date = base[-1]['date'] if base else None
if live_pt['date'] != last_date:
base.append({'date': live_pt['date'], 'adr': float(live_pt['adr']), 'is_live': True})
base.append({'date': live_pt['date'], 'adr': float(live_pt['adr']),
'rise': live_pt.get('rise'), 'fall': live_pt.get('fall'), 'is_live': True})
return base
def _compute_adr_ma_latest(symbol: str, today_raw_adr: float | None, today_date: str | None,
def _adr_window_value(win: list[dict]) -> float:
"""정통 ADR = 윈도우 내 Σ상승종목 ÷ Σ하락종목 × 100. 비율의 평균(구방식)은 급등일에 왜곡되므로 합계식 사용.
윈도우 구간에 종목수(rise/fall) 있고 Σ하락>0 때만 합계식, 아니면 일별 비율 평균으로 폴백( 데이터 graceful)."""
rises = [w['rise'] for w in win if w.get('rise') is not None]
falls = [w['fall'] for w in win if w.get('fall') is not None]
if len(rises) == len(win) and len(falls) == len(win) and sum(falls) > 0:
return sum(rises) / sum(falls) * 100
return sum(w['adr'] for w in win) / len(win)
def _compute_adr_ma_latest(symbol: str, today_row: dict | None = None,
window: int = ADR_MA_WINDOW) -> tuple[float | None, int, bool]:
"""심볼별 최근 N일 이평. (avg or None, available_count, used_live).
available_count < window 이면 avg=None (= "누적 중 count/window")."""
"""심볼별 최근 N일 정통 ADR. (value or None, available_count, used_live).
today_row = 오늘 라이브 (adr·rise·fall·bizdate). available_count < window 이면 '누적 중 count/window'."""
history = _load_market_history(-1).get(symbol, [])
live_pt = ({'date': today_date, 'adr': today_raw_adr}
if today_raw_adr is not None and today_date else None)
live_pt = None
if today_row and today_row.get('adr') is not None:
bd = today_row.get('bizdate')
iso = f'{bd[:4]}-{bd[4:6]}-{bd[6:]}' if (bd and len(bd) == 8) else today_row.get('date')
if iso:
live_pt = {'date': iso, 'adr': today_row['adr'],
'rise': today_row.get('rise'), 'fall': today_row.get('fall')}
base = _build_adr_series_with_live(history, live_pt)
if not base:
return (None, 0, False)
used = base[-window:]
used_live = any(r.get('is_live') for r in used)
# 확장 윈도우: window 미만이어도 가용한 만큼의 평균을 돌려준다(차트와 동일 정책). count로 누적 여부 표기.
avg = sum(r['adr'] for r in used) / len(used)
return (avg, len(used), used_live)
# 확장 윈도우: window 미만이어도 가용한 만큼으로 계산(차트와 동일 정책). count로 누적 여부 표기.
return (_adr_window_value(used), len(used), used_live)
def _compute_adr_ma_series(rows: list[dict], window: int = ADR_MA_WINDOW) -> list[tuple[str, float, bool]]:
"""rows(오래된 순, {date,adr,is_live}) → 각 시점 trailing window 평균 시리즈.
[(date, ma, is_live), ...].
확장 윈도우: window 미만 누적 구간은 '가용한 만큼'(최대 window일) 평균으로 점을 만든다
1일차부터 그려지고 누적이 window에 도달하면 정상 trailing-window 평균과 동일(steady-state 동작 불변)."""
"""rows(오래된 순, {date,adr,rise,fall,is_live}) → 각 시점 trailing window 정통 ADR 시리즈.
[(date, adr, is_live), ...]. 값은 Σ상승÷Σ하락×100 (급등일 왜곡 없는 표준식).
누적 < window(20) 초반 구간은 정식 지표가 아니라 아예 점을 만들지 않는다 그래프 미표시."""
series: list[tuple[str, float, bool]] = []
for i in range(len(rows)):
win = rows[max(0, i + 1 - window) : i + 1]
avg = sum(r['adr'] for r in win) / len(win)
if i + 1 < window: # 20일 미만 누적 — 정식 20일 ADR 불가, 그래프에서 제외
continue
win = rows[i + 1 - window : i + 1]
val = _adr_window_value(win)
is_live = any(r.get('is_live') for r in win)
series.append((rows[i]['date'], avg, is_live))
series.append((rows[i]['date'], val, is_live))
return series
def _render_adr_summary_block(rows: list[dict] | None) -> str:
"""ADR 20일 이평 표 + 임계치 hint. ADR 추세 카드 상단 mini section.
rows가 비면 안내 텍스트로 graceful degrade 차트 카드 자체는 계속 그려진다."""
def _render_adr_basic_block(rows: list[dict] | None) -> str:
"""ADR 기본정보 — 20일 정통 ADR + 침체/과열 배지. ADR 추세 카드 기본(접힘) 상태에 항상 노출.
배지·색은 20 기준(80 침체·120 과열). 20 누적 미만이면 배지 없이 (n/20) 표기."""
if not rows:
return (
'<div class="market-section">'
'<div class="adr-today-block">'
+ '<div class="market-section-hint">시장 지표 미수신</div>'
+ '</div>'
)
body_rows: list[str] = []
items: list[str] = []
for r in rows:
raw_adr = r.get('adr')
bd = r.get('bizdate')
today_iso = f'{bd[:4]}-{bd[4:6]}-{bd[6:]}' if (bd and len(bd) == 8) else None
ma, count, _used_live = _compute_adr_ma_latest(r['symbol'], raw_adr, today_iso)
full = count >= ADR_MA_WINDOW
adr_cls, adr_tag = _adr_class(ma)
ma, count, _ = _compute_adr_ma_latest(r['symbol'], r)
note = ''
if ma is None:
adr_str = ''
sub_html = '<div class="adr-sub muted small">미수신</div>'
elif full:
adr_str = f'{ma:.1f}'
sub_html = ''
ma_str, ma_cls, tag_html = '', 'neutral', ''
elif count >= ADR_MA_WINDOW:
ma_str = f'{ma:.1f}'
cls, tag = _adr_class(ma)
ma_cls = cls if cls in ('up', 'down') else 'neutral'
tag_html = f' <span class="adr-tag {cls}">{tag}</span>' if tag else ''
else:
# 누적 < 20일 — 숫자는 보여주되 과열/침체 판정은 보류(짧은 윈도우는 임계치 해석 부정확).
adr_str = f'{ma:.1f}'
sub_html = f'<div class="adr-sub muted small">누적 {count}/{ADR_MA_WINDOW}일 평균</div>'
adr_cls, adr_tag = '', ''
tag_html = f' <span class="adr-tag {adr_cls}">{adr_tag}</span>' if adr_tag else ''
body_rows.append(
f'<tr>'
f'<th>{html.escape(r["label"])}</th>'
f'<td class="adr-val"><b class="{adr_cls}">{adr_str}</b>{tag_html}{sub_html}</td>'
f'<td class="adr-breakdown"><span class="up">{r["rise"]:,}↑</span> / <span class="down">{r["fall"]:,}↓</span> / <span class="neutral">{r["steady"]:,}→</span></td>'
f'</tr>'
ma_str, ma_cls, tag_html = f'{ma:.1f}', 'neutral', ''
note = f' <span class="muted small">({count}/{ADR_MA_WINDOW})</span>'
items.append(
f'<span class="adr-today-item">'
f'<span class="adr-today-mk">{html.escape(r["label"])}</span> '
f'<span class="adr-when">20일</span><b class="{ma_cls}">{ma_str}</b>{tag_html}{note}'
f'</span>'
)
return (
'<div class="market-section">'
+ f'<table class="market-table market-adr"><tbody>{"".join(body_rows)}</tbody></table>'
'<div class="adr-today-block">'
+ '<span class="adr-today-when">ADR</span>'
+ ''.join(items)
+ '</div>'
)
def _render_adr_today_detail(rows: list[dict] | None) -> str:
"""오늘 raw ADR + 침체/과열 배지 + 종목수(상승/하락/보합). 추세 그래프(펼침) 안에 표시.
색은 방향만(100 초과=빨강/미만=파랑). 배지는 오늘 raw ADR 기준(80 침체·120 과열)."""
if not rows:
return ''
items: list[str] = []
for r in rows:
raw_adr = r.get('adr')
if raw_adr is None:
raw_str, raw_cls, tag_html = '', 'neutral', ''
else:
raw_str = f'{raw_adr:.1f}'
raw_cls = 'up' if raw_adr > 100 else ('down' if raw_adr < 100 else 'neutral')
tag_cls, tag = _adr_class(raw_adr)
tag_html = f' <span class="adr-tag {tag_cls}">{tag}</span>' if tag else ''
rise, fall, steady = r.get('rise'), r.get('fall'), r.get('steady')
bd_html = ''
if rise is not None and fall is not None and steady is not None:
bd_html = (
'<span class="adr-today-breakdown">'
f'<span class="up">{rise:,}↑</span> / <span class="down">{fall:,}↓</span> / <span class="neutral">{steady:,}→</span>'
'</span>'
)
items.append(
f'<span class="adr-today-item">'
f'<span class="adr-today-mk">{html.escape(r["label"])}</span> '
f'<span class="adr-when">오늘</span><b class="{raw_cls}">{raw_str}</b>{tag_html}'
f'{bd_html}'
f'</span>'
)
return (
'<div class="adr-today-block">'
+ '<span class="adr-today-when">오늘</span>'
+ ''.join(items)
+ '</div>'
)
@@ -6177,7 +6261,8 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
continue
iso = f'{bd[:4]}-{bd[4:6]}-{bd[6:]}' if (bd and len(bd) == 8) else None
if iso:
live_by_market[sym] = {'adr': adr, 'date': iso}
# rise/fall 도 실어야 오늘 포함 윈도우가 정통 합계식으로 계산됨(없으면 그 구간만 비율평균 폴백).
live_by_market[sym] = {'adr': adr, 'date': iso, 'rise': r.get('rise'), 'fall': r.get('fall')}
# 시장별 trailing 20일 이평 시리즈 — (date, ma, is_live).
# raw 시리즈(history+오늘 라이브)에서 시점별 trailing 평균 산출 후, days 파라미터로 마지막 N개 trim.
@@ -6193,7 +6278,14 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
ma_series = ma_series[-days:]
market_pts[sym] = ma_series
summary_block = _render_adr_summary_block(live_rows)
# 기본(접힘)엔 20일 ADR(+배지). 오늘 raw·종목수는 추세 그래프(펼침) 안으로 이관.
basic_block = _render_adr_basic_block(live_rows)
today_detail = _render_adr_today_detail(live_rows)
# 그래프 펼침 토글 버튼 — 클릭 시 .adr-graph-wrap hidden 토글(순수 클라이언트, localStorage 보존).
graph_toggle = (
'<button type="button" class="adr-graph-toggle" data-adr-graph-toggle aria-expanded="false">'
'<span class="adr-graph-toggle-ic">📈</span> 추세 그래프</button>'
)
# 두 시장 합쳐 점이 하나도 없으면 누적 부족 안내.
all_dates = sorted({d for pts in market_pts.values() for d, _, _ in pts if d})
@@ -6205,17 +6297,30 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
'<div class="market-card adr-trend-card">'
f'<div class="market-card-title">ADR 추세 <span class="market-card-sub">'
+ html.escape(sel_label) + '</span></div>'
+ summary_block
+ basic_block
+ graph_toggle
+ '<div class="adr-graph-wrap" data-adr-graph hidden>'
+ today_detail
+ f'<div class="market-section-hint">{html.escape(hint)}</div>'
+ _render_adr_trend_controls(days)
+ '</div>'
+ '</div>'
)
date_to_i = {d: i for i, d in enumerate(all_dates)}
n_dates = len(all_dates)
# y축 스케일 — 0~200 고정이면 데이터(통상 40~90)가 아래에 눌려 밋밋함. 데이터 범위에 맞추되
# 기준선 80/100/120 이 항상 보이도록 그 밴드를 범위에 포함시킨다.
_all_vals = [v for sym in ('KOSPI', 'KOSDAQ') for _, v, _ in market_pts[sym]]
if _all_vals:
_dmin, _dmax = min(_all_vals), max(_all_vals)
else:
_dmin, _dmax = 80.0, 120.0
_lo, _hi = min(_dmin, 80.0), max(_dmax, 120.0)
_pad = max(6.0, (_hi - _lo) * 0.1)
Y_MIN, Y_MAX = max(0.0, _lo - _pad), _hi + _pad
# 차트 면적 — 두 라인 + 가이드 + 마커 라벨 여유. height는 sparkline 단일 70 대비 95 로 확장.
Y_MIN, Y_MAX = 0.0, 200.0
W, H = 360.0, 95.0
PAD_L, PAD_R, PAD_T, PAD_B = 4.0, 38.0, 10.0, 14.0
PLOT_W = W - PAD_L - PAD_R
@@ -6230,16 +6335,21 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
v = max(Y_MIN, min(Y_MAX, v))
return PAD_T + PLOT_H * (1 - (v - Y_MIN) / (Y_MAX - Y_MIN))
# 가이드선 — 75/100/125. 두 라인 위에 깔리지만 흐려서 노이즈 적음.
y75, y100, y125 = y_for(75), y_for(100), y_for(125)
guides = (
f'<line x1="{PAD_L:.1f}" x2="{W-PAD_R:.1f}" y1="{y100:.1f}" y2="{y100:.1f}" stroke="#8b8f9a" stroke-width="0.6" stroke-dasharray="2 4" opacity="0.2"/>'
f'<line x1="{PAD_L:.1f}" x2="{W-PAD_R:.1f}" y1="{y75:.1f}" y2="{y75:.1f}" stroke="#4a8cf0" stroke-width="0.6" stroke-dasharray="3 3" opacity="0.22"/>'
f'<line x1="{PAD_L:.1f}" x2="{W-PAD_R:.1f}" y1="{y125:.1f}" y2="{y125:.1f}" stroke="#ff4d5e" stroke-width="0.6" stroke-dasharray="3 3" opacity="0.22"/>'
f'<text x="{W-PAD_R+3:.1f}" y="{y100:.1f}" dominant-baseline="middle" fill="#8b8f9a" font-size="9" opacity="0.35">100</text>'
f'<text x="{W-PAD_R+3:.1f}" y="{y75:.1f}" dominant-baseline="middle" fill="#4a8cf0" font-size="9" opacity="0.4">75</text>'
f'<text x="{W-PAD_R+3:.1f}" y="{y125:.1f}" dominant-baseline="middle" fill="#ff4d5e" font-size="9" opacity="0.4">125</text>'
)
# 가이드선 — 기준 80/100/120. y축이 이 밴드를 포함하므로 셋 다 표시.
_guide_specs = [
(100, '#8b8f9a', '2 4', 0.25, 0.4),
(80, '#4a8cf0', '3 3', 0.25, 0.45),
(120, '#ff4d5e', '3 3', 0.25, 0.45),
]
guides = ''
for gv, gcolor, gdash, gline_op, gtext_op in _guide_specs:
if not (Y_MIN <= gv <= Y_MAX):
continue
gy = y_for(gv)
guides += (
f'<line x1="{PAD_L:.1f}" x2="{W-PAD_R:.1f}" y1="{gy:.1f}" y2="{gy:.1f}" stroke="{gcolor}" stroke-width="0.6" stroke-dasharray="{gdash}" opacity="{gline_op}"/>'
f'<text x="{W-PAD_R+3:.1f}" y="{gy:.1f}" dominant-baseline="middle" fill="{gcolor}" font-size="9" opacity="{gtext_op}">{gv}</text>'
)
# 시장별 이평선 path + 마지막 마커. 이평은 매끄러운 단일 시리즈라 saved/live 분리 점선 불필요.
# 마지막 점이 오늘 라이브 raw를 포함한 평균이면 (is_live) open circle + 별표 마커.
@@ -6289,12 +6399,13 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
pts_meta.append(entry)
pts_json = html.escape(json.dumps(pts_meta, separators=(',', ':')), quote=True)
# 툴팁 — 날짜 + 두 시장 값 (각각 색상). 시장 값 비어있으면 JS가 해당 줄 hide.
tip_html = (
'<div class="adr-trend-tip" aria-hidden="true">'
'<div class="tip-d">—</div>'
'<div class="tip-line tip-kospi"><span class="tip-mk">코스피</span><span class="tip-v">—</span></div>'
'<div class="tip-line tip-kosdaq"><span class="tip-mk">코스</span><span class="tip-v">—</span></div>'
# 선택 지점 정보 — 차트 아래 정적 정보줄(구 플로팅 툴팁 대체). 기본은 최신 지점, 차트를 짚으면 갱신.
# 시장 값 비어있으면 JS가 해당 줄 hide.
info_html = (
'<div class="adr-trend-info" aria-live="polite">'
'<span class="tip-d">—</span>'
'<span class="tip-line tip-kospi"><span class="tip-mk">코스</span><span class="tip-v">—</span></span>'
'<span class="tip-line tip-kosdaq"><span class="tip-mk">코스닥</span><span class="tip-v">—</span></span>'
'</div>'
)
@@ -6332,7 +6443,7 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
f'{x_axis_label}'
f'{hover_g}'
f'</svg>'
f'{tip_html}'
f'{info_html}'
f'</div>'
)
@@ -6342,12 +6453,16 @@ def _render_adr_trend_card(days: int = ADR_TREND_DAYS) -> str:
'<div class="market-card adr-trend-card">'
f'<div class="market-card-title">ADR 추세 <span class="market-card-sub">'
+ html.escape(sel_label) + accum_note + '</span></div>'
+ summary_block
+ f'<div class="market-section-hint">회색점선=100(균형) · 파란점선=75(침체) · 빨간점선=125(과열) · *=오늘(라이브 포함)</div>'
+ basic_block
+ graph_toggle
+ '<div class="adr-graph-wrap" data-adr-graph hidden>'
+ today_detail
+ f'<div class="market-section-hint">파란선=80 · 회색선=100(균형) · 빨간선=120 · *=오늘(라이브 포함)</div>'
+ _render_adr_trend_controls(days)
+ legend_html
+ chart_row
+ '</div>'
+ '</div>'
)
@@ -6632,6 +6747,81 @@ def _render_note_modal() -> str:
)
def _render_calc_modal() -> str:
"""등락률 계산기 모달. ☰ 옵션 팝업의 '계산기' 항목이 연다.
기준가·현재가를 입력하면 등락률(%) 차이 금액을 클라이언트에서 즉시 계산.
서버 왕복·키움 호출 없음."""
return (
'<div id="calc-modal" class="modal hidden" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="calc-modal-title">'
'<div class="modal-overlay" data-modal-close="1"></div>'
'<div class="modal-box" role="document">'
'<div class="modal-head">'
'<div class="modal-title" id="calc-modal-title">등락률 계산기</div>'
'<button type="button" class="modal-close" data-modal-close="1" aria-label="닫기">×</button>'
'</div>'
'<div class="add-form">'
'<div class="add-form-grid">'
'<label>기준가 <input type="number" inputmode="decimal" step="any" data-calc-base placeholder="예: 10000" autocomplete="off"></label>'
'<label>현재가 <input type="number" inputmode="decimal" step="any" data-calc-cur placeholder="예: 11250" autocomplete="off"></label>'
'</div>'
'<label class="calc-sym-row">종목에서 현재가 가져오기 '
'<select class="order-symbol-select" data-calc-symbol aria-label="관심·보유·감시 종목에서 현재가 불러오기">'
'<option value="">종목 선택 (관심·보유·감시)…</option>'
'</select></label>'
'<div class="calc-sym-status" data-calc-sym-status></div>'
'<div class="calc-result" data-calc-result>'
'<div class="calc-line"><span class="calc-lbl">등락률</span><span class="calc-val" data-calc-pct>—</span></div>'
'<div class="calc-line"><span class="calc-lbl">차이</span><span class="calc-val" data-calc-diff>—</span></div>'
'<div class="calc-hint" data-calc-hint>기준가·현재가를 입력하세요.</div>'
'</div>'
'</div>'
'<div class="modal-actions">'
'<button type="button" class="btn-cancel" data-modal-close="1">닫기</button>'
'</div>'
'</div>'
'</div>'
)
def _render_avg_calc_modal() -> str:
"""평단 계산기(물타기) 모달. ☰ 옵션 팝업의 '평단 계산기' 항목이 연다.
보유수량·현재평단가·추가매수 주수·추가매수가 평단·총수량·총매입금 즉시 계산(클라이언트).
'내 계좌 종목' 고르면 보유수량·현재평단가 자동 입력(/api/holdings, code별 계좌 가중평균)."""
return (
'<div id="avgcalc-modal" class="modal hidden" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="avgcalc-modal-title">'
'<div class="modal-overlay" data-modal-close="1"></div>'
'<div class="modal-box" role="document">'
'<div class="modal-head">'
'<div class="modal-title" id="avgcalc-modal-title">평단 계산기</div>'
'<button type="button" class="modal-close" data-modal-close="1" aria-label="닫기">×</button>'
'</div>'
'<div class="add-form">'
'<label class="calc-sym-row">내 계좌 종목에서 불러오기 '
'<select class="order-symbol-select" data-avg-symbol aria-label="보유 종목에서 평단·수량 불러오기">'
'<option value="">보유 종목 선택…</option>'
'</select></label>'
'<div class="calc-sym-status" data-avg-sym-status></div>'
'<div class="add-form-grid">'
'<label>보유수량 <input type="number" inputmode="numeric" step="any" data-avg-hqty placeholder="예: 100" autocomplete="off"></label>'
'<label>현재평단가 <input type="number" inputmode="decimal" step="any" data-avg-havg placeholder="예: 70000" autocomplete="off"></label>'
'<label>추가매수 주수 <input type="number" inputmode="numeric" step="any" data-avg-aqty placeholder="예: 50" autocomplete="off"></label>'
'<label>추가매수가 <input type="number" inputmode="decimal" step="any" data-avg-aprice placeholder="예: 60000" autocomplete="off"></label>'
'</div>'
'<div class="calc-result" data-avg-result>'
'<div class="calc-line"><span class="calc-lbl">새 평단가</span><span class="calc-val" data-avg-newavg>—</span></div>'
'<div class="calc-line"><span class="calc-lbl">총 수량</span><span class="calc-val" data-avg-totqty>—</span></div>'
'<div class="calc-line"><span class="calc-lbl">총 매입금</span><span class="calc-val" data-avg-totcost>—</span></div>'
'<div class="calc-hint" data-avg-hint>보유수량·현재평단가·추가매수 주수·추가매수가를 입력하세요.</div>'
'</div>'
'</div>'
'<div class="modal-actions">'
'<button type="button" class="btn-cancel" data-modal-close="1">닫기</button>'
'</div>'
'</div>'
'</div>'
)
def _render_group_assign_modal() -> str:
"""관심종목의 그룹 소속 편집 모달. 어느 관심종목 행이든 '그룹' 버튼이 동일하게 연다.
체크박스는 JS가 data-group-all 렌더·data-group-current 체크. 그룹 인라인 추가 가능."""
@@ -7772,6 +7962,27 @@ def render_html() -> str:
# 시장정보 sub-tab은 자산정보 탭의 일부 → owner=null full fetch (fresh=true).
'if(window.__behive_load)window.__behive_load(null,true);'
'});'
# ADR 추세 그래프 펼침/접힘 토글 — 순수 클라이언트(그래프 SVG는 이미 DOM). localStorage 보존.
'function applyAdrGraph(open){'
'document.querySelectorAll(".adr-graph-wrap").forEach(function(w){'
'if(open)w.removeAttribute("hidden");else w.setAttribute("hidden","");'
'});'
'document.querySelectorAll(".adr-graph-toggle").forEach(function(b){'
'b.setAttribute("aria-expanded",open?"true":"false");'
'});'
'}'
'function restoreAdrGraph(){'
'var open=false;try{open=localStorage.getItem("behive.adrGraphOpen")==="1";}catch(_){}'
'if(open)applyAdrGraph(true);'
'}'
'document.addEventListener("click",function(e){'
'var bt=e.target.closest&&e.target.closest(".adr-graph-toggle");'
'if(!bt)return;'
'e.preventDefault();'
'var open=bt.getAttribute("aria-expanded")!=="true";'
'try{localStorage.setItem("behive.adrGraphOpen",open?"1":"0");}catch(_){}'
'applyAdrGraph(open);'
'});'
# select 드롭다운(기간·단위) 변경 핸들러 — 자산정보 탭 상단의 공통 컨트롤.
# chip 흐름과 동일한 localStorage 키 사용 → 백엔드 변경 없음.
'document.addEventListener("change",function(e){'
@@ -7812,7 +8023,7 @@ def render_html() -> str:
'var ow=window.__behive_active_owner?window.__behive_active_owner():null;'
'if(window.__behive_load)window.__behive_load(ow,true);'
'});'
'function scan(){document.querySelectorAll(".net-chart[data-pts]").forEach(init);restoreSubs();restoreAccountViews();restoreIgrp();}'
'function scan(){document.querySelectorAll(".net-chart[data-pts]").forEach(init);restoreSubs();restoreAccountViews();restoreIgrp();restoreAdrGraph();}'
'if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",scan);'
'else scan();'
# swap 후 새 차트가 들어오면 재바인딩 + sub-tab 복원
@@ -7826,13 +8037,13 @@ def render_html() -> str:
# 자동 갱신(panels innerHTML swap) 후 init 시 동일 날짜로 indicator 복원.
adr_hover_script = (
'<script>(function(){'
'function cls(v){return v>=125?"up":(v<=75?"down":"flat");}'
'function cls(v){return v>=120?"up":(v<=80?"down":"flat");}'
# selectedDate — 마지막 선택 날짜 ISO('YYYY-MM-DD'). 단일 차트라 시장 키 불필요.
'var selectedDate=null;'
'function init(row){'
'if(row.__adr_bound)return;row.__adr_bound=true;'
'var svg=row.querySelector("svg.adr-trend-svg");'
'var tip=row.querySelector(".adr-trend-tip");'
'var tip=row.querySelector(".adr-trend-info");'
'var hg=svg&&svg.querySelector("g.adr-hover");'
'if(!svg||!tip||!hg)return;'
'var line=hg.querySelector("line");'
@@ -7876,28 +8087,7 @@ def render_html() -> str:
'dEl.textContent=dlbl+(dow?" ("+dow+")":"");'
'setTipLine(lineK,vK,pk);'
'setTipLine(lineD,vD,pd);'
'tip.style.opacity="1";'
'if(save!==false&&p.d)selectedDate=p.d;'
# 위치 — svg 내 x 비율로 변환 후 row(absolute parent) 기준 left 보정.
'requestAnimationFrame(function(){'
'var r=svg.getBoundingClientRect();if(!r.width)return;'
'var rr=row.getBoundingClientRect();'
'var pxX=p.x/VW*r.width+(r.left-rr.left);'
'var tw=tip.offsetWidth;'
'var lx=pxX-tw/2;'
'var maxL=rr.width-tw-4;'
'if(lx<4)lx=4;if(lx>maxL)lx=maxL;'
'tip.style.left=lx+"px";'
# top: 두 점 평균 y 가 차트 상단이면 svg 아래, 하단이면 svg 위.
'var svgTop=r.top-rr.top;'
'var th=tip.offsetHeight;'
'var ys=[];if(pk)ys.push(pk.y);if(pd)ys.push(pd.y);'
'var avgY=ys.length?(ys.reduce(function(a,b){return a+b;},0)/ys.length):VH/2;'
'var pyRatio=avgY/VH;'
'var ty=(pyRatio<0.5)?(svgTop+r.height-th-2):(svgTop-th-2);'
'if(ty<-2)ty=svgTop+r.height-th-2;'
'tip.style.top=ty+"px";'
'});'
'}'
'function moveByPx(cx){'
'var r=svg.getBoundingClientRect();if(!r.width)return;'
@@ -7908,12 +8098,14 @@ def render_html() -> str:
'}'
'svg.addEventListener("pointermove",function(e){moveByPx(e.clientX);});'
'svg.addEventListener("pointerdown",function(e){moveByPx(e.clientX);});'
# 영속 복원 — 마지막 선택 날짜가 있고 새 데이터에도 있으면 indicator 재배치.
# 영속 복원 — 마지막 선택 날짜가 있으면 재배치, 없으면 최신 지점을 기본 표시.
'var restored=false;'
'if(selectedDate){'
'for(var k=0;k<pts.length;k++){'
'if(pts[k].d===selectedDate){applyPoint(pts[k],false);break;}'
'if(pts[k].d===selectedDate){applyPoint(pts[k],false);restored=true;break;}'
'}'
'}'
'if(!restored)applyPoint(pts[pts.length-1],false);'
'}'
'function scan(){document.querySelectorAll(".adr-trend-row[data-adr-pts]").forEach(init);}'
'if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",scan);'
@@ -8400,6 +8592,161 @@ def render_html() -> str:
'})();</script>'
)
# 등락률 계산기 모달 로직 — 기준가·현재가 입력 즉시 % / 차이 금액 계산 (순수 클라이언트).
calc_script = (
'<script>(function(){'
'var UP="#ff4d5e",DOWN="#4a8cf0",NEU="#8b8f9a";'
'function num(el){if(!el)return NaN;var v=parseFloat(el.value);return isFinite(v)?v:NaN;}'
'function recalc(){'
'var base=num(document.querySelector("[data-calc-base]"));'
'var cur=num(document.querySelector("[data-calc-cur]"));'
'var pctEl=document.querySelector("[data-calc-pct]");'
'var diffEl=document.querySelector("[data-calc-diff]");'
'var hintEl=document.querySelector("[data-calc-hint]");'
'if(!pctEl||!diffEl)return;'
'if(isNaN(base)||isNaN(cur)||base===0){'
'pctEl.textContent="";pctEl.style.color=NEU;'
'diffEl.textContent="";diffEl.style.color=NEU;'
'if(hintEl)hintEl.textContent=(!isNaN(base)&&base===0)?"기준가는 0이 될 수 없어요.":"기준가·현재가를 입력하세요.";'
'return;'
'}'
'var pct=(cur-base)/base*100;'
'var diff=cur-base;'
'var col=diff>0?UP:(diff<0?DOWN:NEU);'
'var psign=pct>0?"+":(pct<0?"":"");'
'var dsign=diff>0?"+":(diff<0?"":"");'
'pctEl.textContent=psign+Math.abs(pct).toFixed(2)+"%";pctEl.style.color=col;'
'diffEl.textContent=dsign+Math.abs(diff).toLocaleString()+"";diffEl.style.color=col;'
'if(hintEl)hintEl.textContent="";'
'}'
'document.addEventListener("input",function(e){'
'if(e.target&&e.target.closest&&e.target.closest("[data-calc-base],[data-calc-cur]"))recalc();'
'});'
# ── 관심·보유·감시 종목에서 현재가 자동 입력 ──
'var symLoaded=false;'
'function loadSymbols(){'
'if(symLoaded)return;'
'var sel=document.querySelector("[data-calc-symbol]");if(!sel)return;'
'symLoaded=true;'
'fetch("/api/symbols/all",{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){'
'var items=(d&&d.items)||[];'
'var groups={"보유":[],"관심":[],"감시":[]};'
'items.forEach(function(it){(groups[it.source]||groups["관심"]).push(it);});'
'var html=\'<option value="">종목 선택 (관심·보유·감시)…</option>\';'
'["보유","관심","감시"].forEach(function(g){'
'var rows=groups[g];if(!rows||!rows.length)return;'
'html+=\'<optgroup label="\'+g+\'">\';'
'rows.forEach(function(it){'
'var nm=(it.name||it.code).replace(/</g,"&lt;");'
'html+=\'<option value="\'+it.code+\'" data-name="\'+nm.replace(/"/g,"&quot;")+\'">\'+nm+\'</option>\';'
'});'
'html+="</optgroup>";'
'});'
'sel.innerHTML=html;'
'}).catch(function(){symLoaded=false;});'
'}'
'document.addEventListener("change",function(e){'
'var sel=e.target.closest&&e.target.closest("[data-calc-symbol]");if(!sel)return;'
'var opt=sel.selectedOptions&&sel.selectedOptions[0];'
'var code=sel.value;'
'var nm=(opt&&opt.getAttribute("data-name"))||"";'
'var st=document.querySelector("[data-calc-sym-status]");'
'var curEl=document.querySelector("[data-calc-cur]");'
'if(!code){if(st)st.textContent="";return;}'
'if(st){st.textContent=nm+" 현재가 불러오는 중…";st.style.color="#7a8493";}'
'fetch("/api/quote_book?code="+encodeURIComponent(code),{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){'
'var p=d&&d.price;'
'if(!p||isNaN(p)){if(st){st.textContent=nm+" 현재가를 가져오지 못했어요.";st.style.color="#ff4d5e";}return;}'
'if(curEl){curEl.value=p;}'
'if(st){st.textContent=(nm||(d.name||""))+" 현재가 "+Number(p).toLocaleString()+"원 적용";st.style.color="#8b8f9a";}'
'recalc();'
'}).catch(function(){if(st){st.textContent=nm+" 현재가 조회 실패";st.style.color="#ff4d5e";}});'
'});'
# 계산기 런처는 ☰ 팝업 안이라 팝업이 안 닫힘 → 모달 열 때 팝업 닫고 종목목록 로드.
'document.addEventListener("click",function(e){'
'var b=e.target.closest&&e.target.closest("[data-modal-open=\\"calc-modal\\"]");'
'if(!b)return;'
'var pop=document.getElementById("opts-popup");'
'var tg=document.getElementById("opts-toggle");'
'if(pop)pop.setAttribute("hidden","");'
'if(tg)tg.setAttribute("aria-expanded","false");'
'loadSymbols();'
'});'
'})();</script>'
)
# 평단 계산기(물타기) 로직 — 보유수량·현재평단가·추가매수 주수·추가매수가 즉시 계산 (순수 클라이언트).
avg_calc_script = (
'<script>(function(){'
'function num(el){if(!el)return NaN;var v=parseFloat(el.value);return isFinite(v)?v:NaN;}'
'function won(n){return Math.round(n).toLocaleString()+"";}'
'function recalc(){'
'var hq=num(document.querySelector("[data-avg-hqty]"));'
'var ha=num(document.querySelector("[data-avg-havg]"));'
'var aq=num(document.querySelector("[data-avg-aqty]"));'
'var ap=num(document.querySelector("[data-avg-aprice]"));'
'var naEl=document.querySelector("[data-avg-newavg]");'
'var tqEl=document.querySelector("[data-avg-totqty]");'
'var tcEl=document.querySelector("[data-avg-totcost]");'
'var hintEl=document.querySelector("[data-avg-hint]");'
'if(!naEl||!tqEl||!tcEl)return;'
'if(isNaN(hq)||isNaN(ha)||isNaN(aq)||isNaN(ap)||(hq+aq)<=0){'
'naEl.textContent="";naEl.style.color="#8b8f9a";'
'tqEl.textContent="";tcEl.textContent="";'
'if(hintEl)hintEl.textContent="보유수량·현재평단가·추가매수 주수·추가매수가를 입력하세요.";'
'return;'
'}'
'var totQty=hq+aq;var totCost=hq*ha+aq*ap;var newAvg=totCost/totQty;'
'naEl.textContent=won(newAvg);'
'tqEl.textContent=Math.round(totQty).toLocaleString()+"";'
'tcEl.textContent=won(totCost);'
'var col=newAvg<ha?"#4a8cf0":(newAvg>ha?"#ff4d5e":"#8b8f9a");naEl.style.color=col;'
'if(hintEl){var d=newAvg-ha;var sign=d<0?"":(d>0?"+":"");'
'hintEl.textContent=(d===0)?"평단 동일":("평단 "+sign+Math.abs(Math.round(d)).toLocaleString()+""+(d<0?"하락":"상승"));}'
'}'
'document.addEventListener("input",function(e){'
'if(e.target&&e.target.closest&&e.target.closest("[data-avg-hqty],[data-avg-havg],[data-avg-aqty],[data-avg-aprice]"))recalc();'
'});'
# ── 내 계좌 보유종목에서 보유수량·현재평단가 자동 입력 (code별 전 계좌 가중평균) ──
'var hLoaded=false;'
'function loadHoldings(){'
'if(hLoaded)return;'
'var sel=document.querySelector("[data-avg-symbol]");if(!sel)return;'
'hLoaded=true;'
'fetch("/api/holdings",{credentials:"same-origin"}).then(function(r){return r.json();}).then(function(d){'
'var items=(d&&d.items)||[];'
'var html=\'<option value="">보유 종목 선택…</option>\';'
'items.forEach(function(it,i){'
'var nm=(it.name||it.code).replace(/</g,"&lt;");'
'var lbl=nm+" ("+(it.owner||"")+" "+Number(it.qty).toLocaleString()+"주)";'
'html+=\'<option value="\'+i+\'" data-qty="\'+it.qty+\'" data-avg="\'+it.avg+\'" data-name="\'+(nm+" "+(it.owner||"")).replace(/"/g,"&quot;")+\'">\'+lbl+"</option>";'
'});'
'sel.innerHTML=html;'
'}).catch(function(){hLoaded=false;});'
'}'
'document.addEventListener("change",function(e){'
'var sel=e.target.closest&&e.target.closest("[data-avg-symbol]");if(!sel)return;'
'var opt=sel.selectedOptions&&sel.selectedOptions[0];'
'var st=document.querySelector("[data-avg-sym-status]");'
'if(!sel.value||!opt){if(st)st.textContent="";return;}'
'var q=opt.getAttribute("data-qty"),a=opt.getAttribute("data-avg");'
'var nm=opt.getAttribute("data-name")||"";'
'var hq=document.querySelector("[data-avg-hqty]");var ha=document.querySelector("[data-avg-havg]");'
'if(hq)hq.value=q;if(ha)ha.value=a;'
'if(st){st.textContent=nm+" 보유 "+Number(q).toLocaleString()+"주 · 평단 "+Number(a).toLocaleString()+"원 적용";st.style.color="#8b8f9a";}'
'recalc();'
'});'
# 런처 — ☰ 팝업 안이라 팝업 닫고 보유목록 로드.
'document.addEventListener("click",function(e){'
'var b=e.target.closest&&e.target.closest("[data-modal-open=\\"avgcalc-modal\\"]");'
'if(!b)return;'
'var pop=document.getElementById("opts-popup");var tg=document.getElementById("opts-toggle");'
'if(pop)pop.setAttribute("hidden","");if(tg)tg.setAttribute("aria-expanded","false");'
'loadHoldings();'
'});'
'})();</script>'
)
idx_info_modal_html = (
'<div id="idx-info-modal" class="modal hidden" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="idx-info-modal-title">'
'<div class="modal-overlay" data-modal-close="1"></div>'
@@ -8427,6 +8774,8 @@ def render_html() -> str:
interest_edit_modal_html = _render_interests_edit_modal()
tag_modal_html = _render_tag_modal()
note_modal_html = _render_note_modal()
calc_modal_html = _render_calc_modal()
avg_calc_modal_html = _render_avg_calc_modal()
group_assign_modal_html = _render_group_assign_modal()
group_manage_modal_html = _render_group_manage_modal()
trade_modal_html = _render_trade_modal()
@@ -10629,7 +10978,9 @@ window.openPinModal = openPinModal;
<div class="opts-wrap">
<button type="button" id="opts-toggle" class="opts-btn" aria-haspopup="true" aria-expanded="false" aria-label="옵션" title="옵션"></button>
<div class="opts-popup" id="opts-popup" hidden role="menu" aria-label="옵션">
<button type="button" class="account-view-toggle-btn opts-item" data-account-view-state="consolidated" role="menuitem" aria-label="계좌 보기 방식 (합산 / 각계좌별도) 토글" title="합산 / 각계좌별도 토글"><span class="opts-ico"></span><span>계좌 나누기</span></button>
<button type="button" class="account-view-toggle-btn opts-item" data-account-view-state="consolidated" role="menuitem" aria-label="계좌 보기 방식 (합산 / 각계좌별도) 토글" title="합산 / 각계좌별도 토글"><span>계좌 나누기</span></button>
<button type="button" class="opts-item" data-modal-open="calc-modal" role="menuitem" aria-label="등락률 계산기" title="기준가·현재가 등락률 계산기"><span>등락률 계산기</span></button>
<button type="button" class="opts-item" data-modal-open="avgcalc-modal" role="menuitem" aria-label="평단 계산기" title="물타기 평단 계산기 (보유+추가매수)"><span>평단 계산기</span></button>
</div>
</div>
</div>
@@ -10646,6 +10997,8 @@ window.openPinModal = openPinModal;
{interest_edit_modal_html}
{tag_modal_html}
{note_modal_html}
{calc_modal_html}
{avg_calc_modal_html}
{group_assign_modal_html}
{group_manage_modal_html}
{candidate_modal_html}
@@ -10664,6 +11017,8 @@ window.openPinModal = openPinModal;
{chart_svg_script}
{auto_reload_script}
{nodbltap_script}
{calc_script}
{avg_calc_script}
{details_mutex_script}
{modal_script}
{order_modal_script}
@@ -10994,6 +11349,35 @@ class Handler(BaseHTTPRequestHandler):
traceback.print_exc()
self._send_json(500, {'error': f'symbols failed: {e}'})
return
if parsed.path == '/api/holdings':
# 평단 계산기용 — 소유자(본인/가희)별로 보유종목 합산(일반+ISA 합침, 가중평균 평단).
# 같은 종목을 본인·가희 둘 다 보유하면 각각 별도 항목.
try:
import kiwoom_client as kc
agg: dict = {}
pos_by_acc = kc.get_positions_all()
for label, positions in (pos_by_acc or {}).items():
owner = '가희' if label.startswith('가희_') else '본인'
for p in positions:
code = p.get('code')
qty = int(p.get('qty') or 0)
avg = float(p.get('avg_price') or 0)
if not code or qty <= 0:
continue
a = agg.setdefault((owner, code), {'code': code, 'name': p.get('name', ''),
'owner': owner, 'qty': 0, 'cost': 0.0})
a['qty'] += qty
a['cost'] += qty * avg
items = []
for a in agg.values():
items.append({'code': a['code'], 'name': a['name'], 'owner': a['owner'],
'qty': a['qty'], 'avg': int(round(a['cost'] / a['qty'])) if a['qty'] else 0})
items.sort(key=lambda x: x['qty'] * x['avg'], reverse=True)
self._send_json(200, {'items': items, 'count': len(items)})
except Exception as e:
traceback.print_exc()
self._send_json(500, {'error': f'holdings failed: {e}'})
return
if parsed.path == '/api/orders/open':
# 4계좌 통합 미체결 주문 — open-orders-modal이 표시
try:
@@ -72,3 +72,5 @@
{"date": "2026-07-10", "market": "KOSPI", "market_label": "코스피", "rise": 802, "upper": 6, "fall": 92, "lower": 0, "steady": 19, "adr": 878.26, "personal": -7805, "foreign": -3228, "institutional": 11314, "captured_at": "2026-07-10T21:00:02.641644+09:00"}
{"date": "2026-07-13", "market": "KOSDAQ", "market_label": "코스닥", "rise": 221, "upper": 4, "fall": 1460, "lower": 2, "steady": 57, "adr": 15.39, "personal": 1833, "foreign": -3878, "institutional": 1843, "captured_at": "2026-07-13T21:00:01.940921+09:00"}
{"date": "2026-07-13", "market": "KOSPI", "market_label": "코스피", "rise": 179, "upper": 3, "fall": 716, "lower": 0, "steady": 18, "adr": 25.42, "personal": 38869, "foreign": -16705, "institutional": -22338, "captured_at": "2026-07-13T21:00:01.940921+09:00"}
{"date": "2026-07-14", "market": "KOSDAQ", "market_label": "코스닥", "rise": 445, "upper": 6, "fall": 1212, "lower": 0, "steady": 83, "adr": 37.21, "personal": 698, "foreign": -2471, "institutional": 1587, "captured_at": "2026-07-14T21:00:05.513305+09:00"}
{"date": "2026-07-14", "market": "KOSPI", "market_label": "코스피", "rise": 219, "upper": 5, "fall": 662, "lower": 0, "steady": 31, "adr": 33.84, "personal": -41411, "foreign": 9565, "institutional": 32117, "captured_at": "2026-07-14T21:00:05.513305+09:00"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
{
"cash": 22377830.261500005,
"cash": 16874794.930000003,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 6137589.86125,
"last_add_price": 351000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5844426.989812501,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5751718.060687501,
"last_add_price": 112800
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5572914.42378125,
"last_add_price": 130800
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:26:06.360780+09:00",
"stop": 119709,
"target": 171192,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5614905.905031251,
"last_add_price": 134300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 3707722.6157922116,
"last_add_price": 13660
@@ -144,17 +144,38 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3766258.2469785768,
"last_add_price": 139100
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 931,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:04.963052+09:00",
"stop": 5447,
"target": 7298,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 5505297.51634375,
"last_add_price": 5910
}
},
"realized_pnl": -9353480.971000008,
"closed_trades": 10,
"wins": 0,
"peak_equity": 100102462.48,
"max_drawdown": 0.1157666626014852,
"max_drawdown": 0.12792869658484746,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -165,5 +186,5 @@
"093370": "2026-07-07"
},
"created_at": "2026-06-11T09:00:01.943184+09:00",
"updated_at": "2026-07-13T15:28:06.459888+09:00"
"updated_at": "2026-07-14T15:28:02.021764+09:00"
}
@@ -34,3 +34,4 @@
{"ts": "2026-07-13T09:06:06.491483+09:00", "side": "BUY", "code": "055550", "name": "신한지주", "price": 112800, "qty": 50, "cost": 5640846, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 99202, "target": 142394, "signals": [{"label": "손절선", "ok": true, "detail": "99,202 (현재 112,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 142,394"}, {"label": "추세(10일선)", "ok": true, "detail": "100,240"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -358 · 기 +991"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 112,792"}]}
{"ts": "2026-07-13T09:08:05.274334+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 134300, "qty": 41, "cost": 5507126, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 117686, "target": 170541, "signals": [{"label": "손절선", "ok": true, "detail": "117,686 (현재 134,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 170,541"}, {"label": "추세(10일선)", "ok": true, "detail": "120,980"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -277 · 기 +460"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 134,118"}]}
{"ts": "2026-07-13T09:26:03.332430+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 27, "cost": 3756263, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 216800, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,800"}, {"label": "추세(10일선)", "ok": true, "detail": "126,460"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,162"}]}
{"ts": "2026-07-14T09:40:04.963062+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 931, "cost": 5503035, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 7298, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "5,900 vs 5,543"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,646 / 5,543"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6014089.237468751,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4156565.5467727734,
"last_add_price": 136900
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1955660.3422725608,
"last_add_price": 13660
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1977013.5669807782,
"last_add_price": 139100
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3936003.3225085386,
"last_add_price": 341500
@@ -118,12 +118,12 @@
"entry_at": "2026-07-13T09:48:02.326778+09:00",
"stop": 122472,
"target": 155042,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 1,
"tranche_value": 4931395.975756928,
"last_add_price": 135500
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 4808356.897919891,
"last_add_price": 113100
@@ -154,7 +154,7 @@
"closed_trades": 9,
"wins": 0,
"peak_equity": 100172467.23000002,
"max_drawdown": 0.06682607153051351,
"max_drawdown": 0.07338326252483979,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -164,5 +164,5 @@
"093370": "2026-07-07"
},
"created_at": "2026-06-11T09:00:01.944232+09:00",
"updated_at": "2026-07-13T15:28:06.519093+09:00"
"updated_at": "2026-07-14T15:28:02.078942+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-02T10:18:03.827419+09:00",
"stop": 111006,
"target": 143933,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5368206.728356878,
"last_add_price": 126200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5987059.123531253,
"last_add_price": 20750
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T09:12:07.261674+09:00",
"stop": 129022,
"target": 221445,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,314 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1970959.2552617346,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4089582.9464364387,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1954011.4210300767,
"last_add_price": 13660
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1974063.9617849514,
"last_add_price": 139100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3962363.617644489,
"last_add_price": 341500
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 4853799.551419356,
"last_add_price": 113100
@@ -187,5 +187,5 @@
"034730": "2026-07-07"
},
"created_at": "2026-06-11T09:00:01.944251+09:00",
"updated_at": "2026-07-13T15:28:06.521053+09:00"
"updated_at": "2026-07-14T15:28:02.080848+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 45735826.91350007,
"cash": 50384244.78850007,
"initial": 100000000,
"positions": {
"095610": {
@@ -11,14 +11,14 @@
"qty": 27,
"entry_price": 150948.14814814815,
"entry_at": "2026-07-09T09:02:04.457275+09:00",
"stop": 122148,
"stop": 196014,
"target": 208548,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,479 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2085160.1450619856,
"last_add_price": 158000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5556196.385562504,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5212031.062678178,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5551111.205250004,
"last_add_price": 191000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2308331.80170399,
"last_add_price": 13850
@@ -123,35 +123,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1902971.2205544217,
"last_add_price": 139100
},
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 15,
"entry_price": 341500,
"entry_at": "2026-07-13T09:12:04.294392+09:00",
"stop": 310647,
"target": 403206,
"peak": 348500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"tranches": 1,
"tranche_value": 5126955.876487339,
"last_add_price": 341500
}
},
"realized_pnl": -9940255.496000014,
"closed_trades": 22,
"realized_pnl": -10415105.996000014,
"closed_trades": 23,
"wins": 2,
"peak_equity": 101695667.93550003,
"max_drawdown": 0.12967778293038185,
@@ -164,10 +143,10 @@
"240810": "2026-07-08",
"009150": "2026-07-06",
"034730": "2026-07-08",
"214450": "2026-07-03",
"214450": "2026-07-14",
"003490": "2026-07-07",
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.944270+09:00",
"updated_at": "2026-07-13T15:28:06.522987+09:00"
"updated_at": "2026-07-14T15:28:02.082807+09:00"
}
@@ -66,3 +66,4 @@
{"ts": "2026-07-13T09:26:03.405300+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 13, "cost": 1808571, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 186600, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 186,600"}, {"label": "추세(20일선)", "ok": true, "detail": "120,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,162"}]}
{"ts": "2026-07-13T09:36:02.268298+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 29, "cost": 5539831, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 171311, "target": 215077, "signals": [{"label": "손절선", "ok": true, "detail": "171,311 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 215,077"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.349246+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 65, "proceeds": 12189684, "entry_price": 168726, "pnl": 1220839, "pnl_pct": 11.36, "hold_from": "2026-07-10T09:00:10.855598+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T10:20:06.141551+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 310500, "qty": 15, "proceeds": 4648418, "entry_price": 341500, "pnl": -474851, "pnl_pct": -9.08, "hold_from": "2026-07-13T09:12:04.294392+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "310,647 (현재 310,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 403,206"}, {"label": "추세(20일선)", "ok": true, "detail": "294,650"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -50 · 기 +82"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 351,713"}]}
@@ -1,5 +1,5 @@
{
"cash": 42477721.512000024,
"cash": 47126139.387000024,
"initial": 100000000,
"positions": {
"086790": {
@@ -13,12 +13,12 @@
"entry_at": "2026-07-02T10:18:03.834926+09:00",
"stop": 114299,
"target": 143934,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5613307.207924683,
"last_add_price": 126200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5684575.164468752,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5344399.843888248,
"last_add_price": 136900
@@ -76,12 +76,12 @@
"entry_at": "2026-07-10T09:00:10.959008+09:00",
"stop": 134124,
"target": 220524,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 157,800 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2493753.205971876,
"last_add_price": 168200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 2071321.2347207314,
"last_add_price": 13660
@@ -123,32 +123,11 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1927098.4703053648,
"last_add_price": 139100
},
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 15,
"entry_price": 341500,
"entry_at": "2026-07-13T09:12:04.296871+09:00",
"stop": 310647,
"target": 403206,
"peak": 348500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"tranches": 1,
"tranche_value": 5173913.517729315,
"last_add_price": 341500
},
"055550": {
"code": "055550",
"name": "신한지주",
@@ -165,14 +144,14 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5872693.545437502,
"last_add_price": 113100
}
},
"realized_pnl": -8789039.598500011,
"closed_trades": 16,
"realized_pnl": -9263890.098500013,
"closed_trades": 17,
"wins": 1,
"peak_equity": 101690998.13850003,
"max_drawdown": 0.10974977197391311,
@@ -184,8 +163,8 @@
"093370": "2026-07-07",
"240810": "2026-07-08",
"034730": "2026-07-03",
"214450": "2026-07-03"
"214450": "2026-07-14"
},
"created_at": "2026-06-11T09:00:01.944290+09:00",
"updated_at": "2026-07-13T15:28:06.524907+09:00"
"updated_at": "2026-07-14T15:28:02.084609+09:00"
}
@@ -51,3 +51,4 @@
{"ts": "2026-07-13T09:12:04.296873+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 341500, "qty": 15, "cost": 5123268, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 310647, "target": 403206, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "341,000 vs 305,450"}, {"label": "정배열(5>10)", "ok": true, "detail": "314,400 / 305,450"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "314,400 / 305,433"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+32.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -63 · 기 +144 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.90% (환산) vs 평균 0.93% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 334,500"}, {"label": "거래량 급증", "ok": true, "detail": "197,687 (환산) vs 평균 96,436"}, {"label": "회전율 급증", "ok": true, "detail": "1.90% (환산) vs 평균 0.93%"}, {"label": "RSI", "ok": true, "detail": "64"}]}
{"ts": "2026-07-13T09:26:03.407256+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 13, "cost": 1808571, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 186600, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 186,600"}, {"label": "추세(10일선)", "ok": true, "detail": "126,460"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,162"}]}
{"ts": "2026-07-13T10:04:06.408909+09:00", "side": "BUY", "code": "055550", "name": "신한지주", "price": 113100, "qty": 51, "cost": 5768965, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 104723, "target": 129854, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "113,050 vs 100,265"}, {"label": "정배열(5>10)", "ok": true, "detail": "101,790 / 100,265"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "101,790 / 96,676"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+31.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -368 · 기 +1,005 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+17%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.71% (환산) vs 평균 0.35% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 109,800"}, {"label": "거래량 급증", "ok": true, "detail": "3,366,381 (환산) vs 평균 1,653,581"}, {"label": "회전율 급증", "ok": true, "detail": "0.71% (환산) vs 평균 0.35%"}, {"label": "RSI", "ok": true, "detail": "66"}]}
{"ts": "2026-07-14T10:20:06.143905+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 310500, "qty": 15, "proceeds": 4648418, "entry_price": 341500, "pnl": -474851, "pnl_pct": -9.08, "hold_from": "2026-07-13T09:12:04.296871+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "310,647 (현재 310,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 403,206"}, {"label": "추세(10일선)", "ok": true, "detail": "302,400"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -50 · 기 +82"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 351,713"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 4122817.0756532787,
"last_add_price": 179100
@@ -34,12 +34,12 @@
"entry_at": "2026-07-01T09:46:03.059028+09:00",
"stop": 111000,
"target": 147649,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6390950.2104375,
"last_add_price": 122200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5749784.598625,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5286025.184468749,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5328971.6722812485,
"last_add_price": 110900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5329185.517281249,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4424571.850121842,
"last_add_price": 13850
@@ -169,5 +169,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.582771+09:00",
"updated_at": "2026-07-13T15:28:06.526727+09:00"
"updated_at": "2026-07-14T15:28:02.086457+09:00"
}
@@ -11,14 +11,14 @@
"qty": 106,
"entry_price": 120162.2641509434,
"entry_at": "2026-07-01T09:46:03.072371+09:00",
"stop": 127525,
"stop": 127743,
"target": 133906,
"peak": 137500,
"peak": 137600,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6390950.2104375,
"last_add_price": 122200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5861663.623624999,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5764374.726687499,
"last_add_price": 112800
@@ -76,12 +76,12 @@
"entry_at": "2026-07-07T09:48:07.724011+09:00",
"stop": 124588,
"target": 217011,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 157,807 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3523647.487005053,
"last_add_price": 177000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5518075.13775,
"last_add_price": 136900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5563059.735249999,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4617067.02016263,
"last_add_price": 13850
@@ -170,5 +170,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.582787+09:00",
"updated_at": "2026-07-13T15:28:06.528546+09:00"
"updated_at": "2026-07-14T15:28:02.088284+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 4122817.0756532787,
"last_add_price": 179100
@@ -34,12 +34,12 @@
"entry_at": "2026-07-01T09:46:03.082062+09:00",
"stop": 111000,
"target": 138487,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6390950.2104375,
"last_add_price": 122200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5749784.598625,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5389478.369468749,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5432423.616968749,
"last_add_price": 110900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5432637.461968749,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4510288.884295525,
"last_add_price": 13850
@@ -169,5 +169,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.582803+09:00",
"updated_at": "2026-07-13T15:28:06.530375+09:00"
"updated_at": "2026-07-14T15:28:02.090052+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-01T09:46:03.088452+09:00",
"stop": 111000,
"target": 138485,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6298105.1395625025,
"last_add_price": 122200
@@ -32,14 +32,14 @@
"qty": 26,
"entry_price": 150676.92307692306,
"entry_at": "2026-07-09T09:02:04.468924+09:00",
"stop": 121877,
"stop": 196014,
"target": 208277,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,479 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2050940.873801216,
"last_add_price": 158000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5439014.113406252,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5210031.291334455,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5492239.4858437525,
"last_add_price": 110900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5492592.291156253,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2277771.920155072,
"last_add_price": 13850
@@ -171,5 +171,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.582834+09:00",
"updated_at": "2026-07-13T15:28:06.532119+09:00"
"updated_at": "2026-07-14T15:28:02.091831+09:00"
}
@@ -11,14 +11,14 @@
"qty": 103,
"entry_price": 120180.58252427184,
"entry_at": "2026-07-01T09:46:03.094624+09:00",
"stop": 127525,
"stop": 127743,
"target": 133951,
"peak": 137500,
"peak": 137600,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,779 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6239163.4909375,
"last_add_price": 122200
@@ -32,14 +32,14 @@
"qty": 29,
"entry_price": 160724.1379310345,
"entry_at": "2026-07-07T10:06:07.254675+09:00",
"stop": 132997,
"stop": 196014,
"target": 202314,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2396369.0841200342,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5647370.507968749,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5409440.346221704,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5722243.1968749985,
"last_add_price": 110900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5723049.547812499,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2374033.23428836,
"last_add_price": 13850
@@ -169,5 +169,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.582849+09:00",
"updated_at": "2026-07-13T15:28:06.533845+09:00"
"updated_at": "2026-07-14T15:28:02.093472+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-01T09:46:03.099480+09:00",
"stop": 111000,
"target": 147722,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,779 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6239163.4909375,
"last_add_price": 122200
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:07.256791+09:00",
"stop": 132997,
"target": 243905,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2396369.0841200342,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5552940.091781249,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5319361.910927292,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5627802.666156249,
"last_add_price": 110900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5628563.181781249,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2334726.8968007183,
"last_add_price": 13850
@@ -169,5 +169,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.582864+09:00",
"updated_at": "2026-07-13T15:28:06.535573+09:00"
"updated_at": "2026-07-14T15:28:02.095115+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5992149.068375001,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4841960.177995926,
"last_add_price": 112800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4136719.8054039073,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4424909.829153726,
"last_add_price": 188900
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:26:06.450599+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4581298.170382758,
"last_add_price": 134300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1911444.163842379,
"last_add_price": 13660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1933448.411487534,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3813943.0504600187,
"last_add_price": 338500
@@ -175,7 +175,7 @@
"closed_trades": 11,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.08644594276499971,
"max_drawdown": 0.09472944276499971,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -187,5 +187,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.582879+09:00",
"updated_at": "2026-07-13T15:28:06.537434+09:00"
"updated_at": "2026-07-14T15:28:02.096934+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5992149.068375001,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4841960.177995926,
"last_add_price": 112800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4136719.8054039073,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4424909.829153726,
"last_add_price": 188900
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:26:06.452585+09:00",
"stop": 119729,
"target": 158342,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4581298.170382758,
"last_add_price": 134300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1911444.163842379,
"last_add_price": 13660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1933448.411487534,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3813943.0504600187,
"last_add_price": 338500
@@ -175,7 +175,7 @@
"closed_trades": 11,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.08644594276499971,
"max_drawdown": 0.09472944276499971,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -187,5 +187,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.582910+09:00",
"updated_at": "2026-07-13T15:28:06.539042+09:00"
"updated_at": "2026-07-14T15:28:02.098569+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5992149.068375001,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4841960.177995926,
"last_add_price": 112800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4167016.287066403,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4457312.045784097,
"last_add_price": 188900
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:26:06.454294+09:00",
"stop": 119704,
"target": 151882,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4614837.858935807,
"last_add_price": 134300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1925437.974607682,
"last_add_price": 13660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1947572.2900013078,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3841906.161963773,
"last_add_price": 338500
@@ -175,7 +175,7 @@
"closed_trades": 11,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.07968437840499998,
"max_drawdown": 0.08796497840499998,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -187,5 +187,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.582926+09:00",
"updated_at": "2026-07-13T15:28:06.540622+09:00"
"updated_at": "2026-07-14T15:28:02.100221+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-01T09:46:03.114406+09:00",
"stop": 111000,
"target": 147722,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,779 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6250717.7646875,
"last_add_price": 122200
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:07.263962+09:00",
"stop": 132997,
"target": 243905,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2409186.3415744826,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5614969.834781251,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5273495.601167365,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5691393.846687501,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2362436.5967844333,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1941238.6485938414,
"last_add_price": 139100
@@ -167,5 +167,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583136+09:00",
"updated_at": "2026-07-13T15:28:06.542238+09:00"
"updated_at": "2026-07-14T15:28:02.101887+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2088366.7995946202,
"last_add_price": 179100
@@ -34,12 +34,12 @@
"entry_at": "2026-07-02T10:18:03.868150+09:00",
"stop": 111006,
"target": 163689,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5323473.79266045,
"last_add_price": 126200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5968410.775250003,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4027945.7278098115,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4392104.9291198645,
"last_add_price": 190400
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1915987.3066294398,
"last_add_price": 13660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1936694.4171909117,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3889733.683715179,
"last_add_price": 341500
@@ -189,5 +189,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583184+09:00",
"updated_at": "2026-07-13T15:28:06.543803+09:00"
"updated_at": "2026-07-14T15:28:02.103511+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2088366.7995946202,
"last_add_price": 179100
@@ -34,12 +34,12 @@
"entry_at": "2026-07-01T09:46:03.120666+09:00",
"stop": 111000,
"target": 138485,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6310113.192625003,
"last_add_price": 122200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6011157.743062504,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4067747.817915917,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4443616.405546745,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2412139.968152501,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1987575.3756416566,
"last_add_price": 139100
@@ -168,5 +168,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583198+09:00",
"updated_at": "2026-07-13T15:28:06.545404+09:00"
"updated_at": "2026-07-14T15:28:02.105165+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-01T09:46:03.123573+09:00",
"stop": 111000,
"target": 138542,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,779 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6234035.149062502,
"last_add_price": 122200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6034746.885062503,
"last_add_price": 20750
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T10:06:07.269469+09:00",
"stop": 123940,
"target": 234847,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1823343.1265236405,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4039283.450888891,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4419868.287407222,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2399082.3031788166,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1967591.0085317888,
"last_add_price": 139100
@@ -167,5 +167,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583212+09:00",
"updated_at": "2026-07-13T15:28:06.547001+09:00"
"updated_at": "2026-07-14T15:28:02.106808+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2088366.7995946202,
"last_add_price": 179100
@@ -34,12 +34,12 @@
"entry_at": "2026-07-02T10:18:03.875113+09:00",
"stop": 111006,
"target": 150518,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5323473.79266045,
"last_add_price": 126200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5968410.775250003,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4027945.7278098115,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4392104.9291198645,
"last_add_price": 190400
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1915987.3066294398,
"last_add_price": 13660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1936694.4171909117,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3889733.683715179,
"last_add_price": 341500
@@ -189,5 +189,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583227+09:00",
"updated_at": "2026-07-13T15:28:06.548565+09:00"
"updated_at": "2026-07-14T15:28:02.108439+09:00"
}
@@ -11,14 +11,14 @@
"qty": 103,
"entry_price": 120180.58252427184,
"entry_at": "2026-07-01T09:46:03.128911+09:00",
"stop": 127525,
"stop": 127743,
"target": 133951,
"peak": 137500,
"peak": 137600,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,779 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6250717.7646875,
"last_add_price": 122200
@@ -32,14 +32,14 @@
"qty": 29,
"entry_price": 160724.1379310345,
"entry_at": "2026-07-07T10:06:07.272816+09:00",
"stop": 132997,
"stop": 196014,
"target": 202314,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2409186.3415744826,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5709269.028593751,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5361936.603499421,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5785659.43628125,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2401551.7748557995,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1973467.2774454139,
"last_add_price": 139100
@@ -167,5 +167,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583241+09:00",
"updated_at": "2026-07-13T15:28:06.550159+09:00"
"updated_at": "2026-07-14T15:28:02.110103+09:00"
}
@@ -11,14 +11,14 @@
"qty": 104,
"entry_price": 120161.53846153847,
"entry_at": "2026-07-01T09:46:03.131562+09:00",
"stop": 127525,
"stop": 127743,
"target": 133904,
"peak": 137500,
"peak": 137600,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6310113.192625003,
"last_add_price": 122200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6056963.955562503,
"last_add_price": 20750
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T09:12:07.295106+09:00",
"stop": 129022,
"target": 221445,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,314 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1989175.0914851297,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4100167.692846849,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4478303.438189044,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2430713.1031006183,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1993160.4408968717,
"last_add_price": 139100
@@ -169,5 +169,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583273+09:00",
"updated_at": "2026-07-13T15:28:06.551760+09:00"
"updated_at": "2026-07-14T15:28:02.111756+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6008673.453343753,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4104199.1508728755,
"last_add_price": 136900
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4431116.549925872,
"last_add_price": 190400
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1921288.6529735315,
"last_add_price": 13660
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1943356.297579488,
"last_add_price": 139100
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3869967.7922643563,
"last_add_price": 341500
@@ -139,12 +139,12 @@
"entry_at": "2026-07-13T09:48:02.363790+09:00",
"stop": 122472,
"target": 161556,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 1,
"tranche_value": 4856628.092474961,
"last_add_price": 135500
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 4736084.883830718,
"last_add_price": 113100
@@ -175,7 +175,7 @@
"closed_trades": 10,
"wins": 0,
"peak_equity": 100024962.38500004,
"max_drawdown": 0.08277834509580034,
"max_drawdown": 0.09116345197313895,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -186,5 +186,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583289+09:00",
"updated_at": "2026-07-13T15:28:06.553321+09:00"
"updated_at": "2026-07-14T15:28:02.113376+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6008673.453343753,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4134023.492494496,
"last_add_price": 136900
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4463394.118213575,
"last_add_price": 190400
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1935311.2718509554,
"last_add_price": 13660
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1957563.5830104812,
"last_add_price": 139100
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3898349.7986140535,
"last_add_price": 341500
@@ -139,12 +139,12 @@
"entry_at": "2026-07-13T09:48:02.365501+09:00",
"stop": 122472,
"target": 155042,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 1,
"tranche_value": 4892197.723204158,
"last_add_price": 135500
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 4770954.427524915,
"last_add_price": 113100
@@ -175,7 +175,7 @@
"closed_trades": 10,
"wins": 0,
"peak_equity": 100024962.38500004,
"max_drawdown": 0.07624527944480061,
"max_drawdown": 0.08476345310549646,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -186,5 +186,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583304+09:00",
"updated_at": "2026-07-13T15:28:06.554894+09:00"
"updated_at": "2026-07-14T15:28:02.115023+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-02T10:18:03.885656+09:00",
"stop": 111006,
"target": 143933,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5357366.7482318785,
"last_add_price": 126200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5965600.638500003,
"last_add_price": 20750
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T09:12:07.300222+09:00",
"stop": 129022,
"target": 221445,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,314 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1962348.0501166757,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4055251.939081083,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4421137.666620123,
"last_add_price": 190400
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1928080.030979289,
"last_add_price": 13660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1948930.4488017063,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3913399.394880189,
"last_add_price": 341500
@@ -190,5 +190,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-15T14:55:00.583318+09:00",
"updated_at": "2026-07-13T15:28:06.556505+09:00"
"updated_at": "2026-07-14T15:28:02.116670+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-01T09:46:03.140737+09:00",
"stop": 111000,
"target": 138485,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,286 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6310920.382093752,
"last_add_price": 122200
@@ -32,14 +32,14 @@
"qty": 27,
"entry_price": 150948.14814814815,
"entry_at": "2026-07-09T09:02:04.498173+09:00",
"stop": 122148,
"stop": 196014,
"target": 208548,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,479 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2072870.0770436951,
"last_add_price": 158000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5497447.694968752,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5164908.463247621,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5551604.2833750015,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2303951.9214964984,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1900904.0747925004,
"last_add_price": 139100
@@ -169,5 +169,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583333+09:00",
"updated_at": "2026-07-13T15:28:06.558112+09:00"
"updated_at": "2026-07-14T15:28:02.118334+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 36326538.26150004,
"cash": 40665061.61150004,
"initial": 100000000,
"positions": {
"086790": {
@@ -13,12 +13,12 @@
"entry_at": "2026-07-02T10:18:03.889699+09:00",
"stop": 114299,
"target": 143934,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5572324.860088777,
"last_add_price": 126200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5575683.788750002,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5242158.578984787,
"last_add_price": 136900
@@ -76,12 +76,12 @@
"entry_at": "2026-07-10T09:00:14.876468+09:00",
"stop": 134124,
"target": 220524,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 157,800 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2446015.1240317714,
"last_add_price": 168200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5625955.548031252,
"last_add_price": 190400
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 2032415.6969225246,
"last_add_price": 13660
@@ -144,35 +144,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1892242.1783291898,
"last_add_price": 139100
},
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 14,
"entry_price": 341500,
"entry_at": "2026-07-13T09:12:04.336322+09:00",
"stop": 310647,
"target": 403206,
"peak": 348500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"tranches": 1,
"tranche_value": 5082512.68307049,
"last_add_price": 341500
}
},
"realized_pnl": -10531301.61000001,
"closed_trades": 20,
"realized_pnl": -10974495.410000011,
"closed_trades": 21,
"wins": 1,
"peak_equity": 101258161.16350003,
"max_drawdown": 0.12309824464295209,
@@ -187,8 +166,8 @@
"093370": "2026-07-07",
"240810": "2026-07-08",
"034730": "2026-07-03",
"214450": "2026-07-03"
"214450": "2026-07-14"
},
"created_at": "2026-06-15T14:55:00.583347+09:00",
"updated_at": "2026-07-13T15:28:06.559676+09:00"
"updated_at": "2026-07-14T15:28:02.119977+09:00"
}
@@ -61,3 +61,4 @@
{"ts": "2026-07-13T09:12:04.336323+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 341500, "qty": 14, "cost": 4781717, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 310647, "target": 403206, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "341,000 vs 305,450"}, {"label": "정배열(5>10)", "ok": true, "detail": "314,400 / 305,450"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "314,400 / 305,433"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+32.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -63 · 기 +144 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.90% (환산) vs 평균 0.93% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 334,500"}, {"label": "거래량 급증", "ok": true, "detail": "197,687 (환산) vs 평균 96,436"}, {"label": "회전율 급증", "ok": true, "detail": "1.90% (환산) vs 평균 0.93%"}, {"label": "RSI", "ok": true, "detail": "64"}]}
{"ts": "2026-07-13T09:24:06.483458+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 190400, "qty": 29, "cost": 5522428, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 170354, "target": 213992, "signals": [{"label": "손절선", "ok": true, "detail": "170,354 (현재 190,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 213,992"}, {"label": "추세(10일선)", "ok": true, "detail": "158,820"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 189,927"}]}
{"ts": "2026-07-13T09:26:03.443598+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 13, "cost": 1808571, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 186600, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 186,600"}, {"label": "추세(10일선)", "ok": true, "detail": "126,460"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,162"}]}
{"ts": "2026-07-14T10:20:06.181750+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 310500, "qty": 14, "proceeds": 4338523, "entry_price": 341500, "pnl": -443194, "pnl_pct": -9.08, "hold_from": "2026-07-13T09:12:04.336322+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "310,647 (현재 310,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 403,206"}, {"label": "추세(10일선)", "ok": true, "detail": "302,400"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -50 · 기 +82"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 351,713"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4843317.3248217255,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.040447+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1797744.31883954,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4019229.444473994,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4725602.001452523,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4289043.02558424,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.479634+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4444963.71074213,
"last_add_price": 134300
@@ -154,5 +154,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621011+09:00",
"updated_at": "2026-07-13T15:28:06.567119+09:00"
"updated_at": "2026-07-14T15:28:02.127495+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4843317.3248217255,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.055078+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1797744.31883954,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4019229.444473994,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4725602.001452523,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4289043.02558424,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.484444+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4444963.71074213,
"last_add_price": 134300
@@ -154,5 +154,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583395+09:00",
"updated_at": "2026-07-13T15:28:06.568856+09:00"
"updated_at": "2026-07-14T15:28:02.129251+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.061021+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.486327+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621059+09:00",
"updated_at": "2026-07-13T15:28:06.570563+09:00"
"updated_at": "2026-07-14T15:28:02.130968+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.065580+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.488191+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583512+09:00",
"updated_at": "2026-07-13T15:28:06.572274+09:00"
"updated_at": "2026-07-14T15:28:02.132694+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.069914+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.490106+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621103+09:00",
"updated_at": "2026-07-13T15:28:06.573989+09:00"
"updated_at": "2026-07-14T15:28:02.134414+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.073760+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.491941+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583628+09:00",
"updated_at": "2026-07-13T15:28:06.575702+09:00"
"updated_at": "2026-07-14T15:28:02.136147+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.077234+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.493778+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621148+09:00",
"updated_at": "2026-07-13T15:28:06.577427+09:00"
"updated_at": "2026-07-14T15:28:02.137863+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.080751+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.495609+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.583751+09:00",
"updated_at": "2026-07-13T15:28:06.579128+09:00"
"updated_at": "2026-07-14T15:28:02.139585+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.083943+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.497447+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621367+09:00",
"updated_at": "2026-07-13T15:28:06.580818+09:00"
"updated_at": "2026-07-14T15:28:02.141292+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.087014+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.499281+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.584337+09:00",
"updated_at": "2026-07-13T15:28:06.582524+09:00"
"updated_at": "2026-07-14T15:28:02.143027+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.089886+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.501109+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621411+09:00",
"updated_at": "2026-07-13T15:28:06.584227+09:00"
"updated_at": "2026-07-14T15:28:02.144743+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.092720+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.502941+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.584451+09:00",
"updated_at": "2026-07-13T15:28:06.585913+09:00"
"updated_at": "2026-07-14T15:28:02.146481+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.095509+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.504788+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621453+09:00",
"updated_at": "2026-07-13T15:28:06.587614+09:00"
"updated_at": "2026-07-14T15:28:02.148210+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.098143+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.506650+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.584565+09:00",
"updated_at": "2026-07-13T15:28:06.589316+09:00"
"updated_at": "2026-07-14T15:28:02.149927+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.100684+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.508514+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:40:00.621497+09:00",
"updated_at": "2026-07-13T15:28:06.591016+09:00"
"updated_at": "2026-07-14T15:28:02.151642+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4839631.234295702,
"last_add_price": 112800
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.103161+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1796390.6144710162,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4016046.033999526,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4721927.942785091,
"last_add_price": 12570
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4285537.86736934,
"last_add_price": 188900
@@ -118,12 +118,12 @@
"entry_at": "2026-07-10T09:26:06.510349+09:00",
"stop": 119729,
"target": 171213,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4441360.270202171,
"last_add_price": 134300
@@ -155,5 +155,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-15T14:55:00.584680+09:00",
"updated_at": "2026-07-13T15:28:06.592725+09:00"
"updated_at": "2026-07-14T15:28:02.153349+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 36833909.812000014,
"cash": 48935864.89200002,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,32 +18,11 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 4090976.455272131,
"last_add_price": 351000
},
"003490": {
"code": "003490",
"name": "대한항공",
"sources": [
"auto"
],
"qty": 356,
"entry_price": 28271.34831460674,
"entry_at": "2026-06-29T09:02:02.046811+09:00",
"stop": 25670,
"target": 36077,
"peak": 29650,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 25850,
"tranches": 2,
"tranche_value": 5054963.992590453,
"last_add_price": 28600
},
"055550": {
"code": "055550",
"name": "신한지주",
@@ -60,32 +39,11 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4371332.168068898,
"last_add_price": 105800
},
"278470": {
"code": "278470",
"name": "에이피알",
"sources": [
"interest"
],
"qty": 8,
"entry_price": 411500,
"entry_at": "2026-07-03T10:24:04.042506+09:00",
"stop": 359000,
"target": 569000,
"peak": 411500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 378500,
"tranches": 1,
"tranche_value": 3510431.812436476,
"last_add_price": 411500
},
"010950": {
"code": "010950",
"name": "S-Oil",
@@ -102,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3448434.606240806,
"last_add_price": 130800
@@ -118,12 +76,12 @@
"entry_at": "2026-07-09T11:44:04.836352+09:00",
"stop": 110758,
"target": 264357,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1478967.7315768395,
"last_add_price": 158000
@@ -139,12 +97,12 @@
"entry_at": "2026-07-13T09:58:02.808427+09:00",
"stop": 123072,
"target": 175584,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 1,
"tranche_value": 4504679.249331353,
"last_add_price": 136200
@@ -165,20 +123,20 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 1,
"tranche_value": 3908647.2655038685,
"last_add_price": 189500
}
},
"realized_pnl": -15279408.263000015,
"closed_trades": 38,
"realized_pnl": -16536056.673000015,
"closed_trades": 40,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.16067904407999992,
"max_drawdown": 0.16462635107999982,
"last_exit": {
"083450": "2026-07-06",
"278470": "2026-06-18",
"278470": "2026-07-14",
"017670": "2026-06-23",
"010170": "2026-06-19",
"254490": "2026-06-22",
@@ -186,7 +144,7 @@
"035420": "2026-06-23",
"034220": "2026-06-23",
"003550": "2026-06-23",
"003490": "2026-06-23",
"003490": "2026-07-14",
"033640": "2026-06-24",
"064400": "2026-06-24",
"010120": "2026-07-08",
@@ -207,5 +165,5 @@
"222800": "2026-07-13"
},
"created_at": "2026-06-16T09:00:03.113416+09:00",
"updated_at": "2026-07-13T15:28:06.594578+09:00"
"updated_at": "2026-07-14T15:28:02.155043+09:00"
}
@@ -97,3 +97,5 @@
{"ts": "2026-07-13T09:58:02.808443+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 136200, "qty": 33, "cost": 4495274, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 123072, "target": 175584, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "136,100 vs 118,667"}, {"label": "정배열(5>60)", "ok": true, "detail": "123,820 / 118,667"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "123,820 / 118,667"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -277 · 기 +460 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+18%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.93% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": true, "detail": "2,558,320 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": true, "detail": "0.93% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
{"ts": "2026-07-13T12:08:06.570749+09:00", "side": "SELL", "code": "222800", "name": "심텍", "price": 111600, "qty": 88, "proceeds": 9801649, "entry_price": 118820, "pnl": -656119, "pnl_pct": -6.08, "hold_from": "2026-07-09T12:36:03.278731+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "112,200 (현재 111,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,682"}, {"label": "추세(60일선)", "ok": true, "detail": "99,678"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -238 · 기 +551"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-13T12:08:06.996879+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 189500, "qty": 20, "cost": 3790569, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 168820, "target": 251541, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "189,400 vs 157,432"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,660 / 157,432"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,660 / 157,432"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+39.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -948 · 기 +1,601 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.78% (환산) vs 평균 0.46% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 182,700"}, {"label": "거래량 급증", "ok": true, "detail": "2,739,872 (환산) vs 평균 1,640,325"}, {"label": "회전율 급증", "ok": true, "detail": "0.78% (환산) vs 평균 0.46%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
{"ts": "2026-07-14T09:00:24.051157+09:00", "side": "SELL", "code": "278470", "name": "에이피알", "price": 376500, "qty": 8, "proceeds": 3006127, "entry_price": 411500, "pnl": -286367, "pnl_pct": -8.51, "hold_from": "2026-07-03T10:24:04.042506+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "359,000 (현재 384,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 569,000"}, {"label": "추세(60일선)", "ok": false, "detail": "403,283"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -50 · 기 -57"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 426,390"}]}
{"ts": "2026-07-14T09:20:06.050891+09:00", "side": "SELL", "code": "003490", "name": "대한항공", "price": 25600, "qty": 356, "proceeds": 9095828, "entry_price": 28271, "pnl": -970281, "pnl_pct": -9.45, "hold_from": "2026-06-29T09:02:02.046811+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "25,670 (현재 25,650)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 36,077"}, {"label": "추세(60일선)", "ok": true, "detail": "25,162"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -980 · 기 +868"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -1,5 +1,5 @@
{
"cash": 12571646.941499975,
"cash": 7446478.281499974,
"initial": 100000000,
"positions": {
"095610": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3916274.109485522,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 5814928.5835,
"last_add_price": 351000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5402457.352781249,
"last_add_price": 104900
@@ -76,12 +76,12 @@
"entry_at": "2026-07-02T10:18:04.653371+09:00",
"stop": 111000,
"target": 163614,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5406063.780281249,
"last_add_price": 126200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,629 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5062998.893218748,
"last_add_price": 20750
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4939827.041843749,
"last_add_price": 130800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 3387913.008326878,
"last_add_price": 13660
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 48,
"entry_price": 105000,
"qty": 94,
"entry_price": 108131.91489361702,
"entry_at": "2026-07-10T11:18:03.345732+09:00",
"stop": 88900,
"target": 153300,
"peak": 111000,
"target": 165828,
"peak": 115000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 97300,
"tranches": 1,
"cur_price": 114300,
"tranches": 2,
"tranche_value": 5132624.558843749,
"last_add_price": 105000
"last_add_price": 111400
}
},
"realized_pnl": -18871381.055000015,
@@ -195,5 +195,5 @@
"475150": "2026-07-08"
},
"created_at": "2026-06-16T09:00:03.113433+09:00",
"updated_at": "2026-07-13T15:28:06.596175+09:00"
"updated_at": "2026-07-14T15:28:02.156653+09:00"
}
@@ -61,3 +61,4 @@
{"ts": "2026-07-08T09:34:05.796671+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130800, "qty": 37, "cost": 4840326, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 110301, "target": 173498, "signals": [{"label": "손절선", "ok": true, "detail": "110,301 (현재 130,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 173,498"}, {"label": "추세(10일선)", "ok": true, "detail": "108,520"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -164 · 기 +736"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 130,050"}]}
{"ts": "2026-07-10T11:06:07.381098+09:00", "side": "BUY", "code": "093370", "name": "후성", "price": 13660, "qty": 247, "cost": 3374526, "path": "pullback", "reason": "눌림목 지정가 15,971 도달", "stop": 10360, "target": 23560, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "13,630 vs 13,385"}, {"label": "정배열(5>10)", "ok": true, "detail": "15,634 / 13,385"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,634 / 11,439"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +210 · 기 +239 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+47%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "14.23% (환산) vs 평균 4.77% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 20,050"}, {"label": "거래량 급증", "ok": true, "detail": "15,267,605 (환산) vs 평균 5,114,125"}, {"label": "회전율 급증", "ok": true, "detail": "14.23% (환산) vs 평균 4.77%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 15,971 (현재 13,630)"}]}
{"ts": "2026-07-10T11:18:03.345734+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 105000, "qty": 48, "cost": 5040756, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 88900, "target": 153300, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "104,900 vs 103,960"}, {"label": "정배열(5>10)", "ok": true, "detail": "104,660 / 103,960"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "104,660 / 70,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +577 · 기 -387 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+8%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "10.86% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": true, "detail": "2,696,005 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": true, "detail": "10.86% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "58"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 103,960 (현재 104,900)"}]}
{"ts": "2026-07-14T14:54:05.325136+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 111400, "qty": 46, "cost": 5125169, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 88900, "target": 153300, "signals": [{"label": "손절선", "ok": true, "detail": "88,900 (현재 111,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 153,300"}, {"label": "추세(10일선)", "ok": true, "detail": "104,600"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -519 · 기 +1,260"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 111,274"}]}
@@ -1,5 +1,5 @@
{
"cash": 17622149.130499974,
"cash": 12775222.200499974,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 5804012.15609375,
"last_add_price": 351000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5666061.52171875,
"last_add_price": 99700
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5177508.773437499,
"last_add_price": 20750
@@ -76,12 +76,12 @@
"entry_at": "2026-07-07T10:50:08.248202+09:00",
"stop": 123253,
"target": 271129,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 157,257 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3003806.097814414,
"last_add_price": 177000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4789675.2297187485,
"last_add_price": 130800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3311963.1438753214,
"last_add_price": 139100
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 1,
"tranche_value": 4942843.810968748,
"last_add_price": 188900
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 820,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:05.108687+09:00",
"stop": 5447,
"target": 7298,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 4852421.820656248,
"last_add_price": 5910
}
},
"realized_pnl": -22896239.96600002,
@@ -178,5 +199,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-16T09:00:03.113489+09:00",
"updated_at": "2026-07-13T15:28:06.597760+09:00"
"updated_at": "2026-07-14T15:28:02.158277+09:00"
}
@@ -78,3 +78,4 @@
{"ts": "2026-07-13T12:44:04.426517+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 56, "proceeds": 10501881, "entry_price": 168629, "pnl": 1057265, "pnl_pct": 11.43, "hold_from": "2026-07-10T09:00:30.987328+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-13T12:44:04.708625+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 188900, "qty": 26, "cost": 4912137, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 168220, "target": 250941, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "188,900 vs 160,055"}, {"label": "정배열(5>20)", "ok": true, "detail": "160,560 / 160,055"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,560 / 157,423"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+38.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -948 · 기 +1,601 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.46% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 182,700"}, {"label": "거래량 급증", "ok": true, "detail": "2,522,693 (환산) vs 평균 1,640,325"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.46%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
{"ts": "2026-07-13T13:40:05.501849+09:00", "side": "SELL", "code": "347850", "name": "디앤디파마텍", "price": 77700, "qty": 109, "proceeds": 8452785, "entry_price": 87123, "pnl": -1045040, "pnl_pct": -10.82, "hold_from": "2026-07-10T09:00:30.986158+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "77,700 (현재 77,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 115,392"}, {"label": "추세(20일선)", "ok": false, "detail": "81,995"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -174 · 기 +609"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:40:05.108688+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 820, "cost": 4846927, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 7298, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,900 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,646 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-07T10:06:08.148472+09:00",
"stop": 133077,
"target": 243984,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 4159962.72301425,
"last_add_price": 177000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4622125.121062502,
"last_add_price": 112800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,712 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 4612370.058718752,
"last_add_price": 19310
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4616918.204531251,
"last_add_price": 188900
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:26:06.520140+09:00",
"stop": 122922,
"target": 161535,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4611511.948906251,
"last_add_price": 134300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 3567295.6205262826,
"last_add_price": 14110
@@ -139,12 +139,12 @@
"entry_at": "2026-07-13T13:18:02.494259+09:00",
"stop": 96000,
"target": 209200,
"peak": 128400,
"peak": 128700,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 153,333 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 1,
"tranche_value": 3281980.220200973,
"last_add_price": 124300
@@ -176,5 +176,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-16T10:45:02.136776+09:00",
"updated_at": "2026-07-13T15:28:06.603381+09:00"
"updated_at": "2026-07-14T15:28:02.164197+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 33826155.92650001,
"cash": 29387080.165000007,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 4923926.260175001,
"last_add_price": 351000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 4698682.263375001,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4633833.688075,
"last_add_price": 112800
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4497110.087925,
"last_add_price": 130800
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:26:06.523702+09:00",
"stop": 119704,
"target": 171187,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4524049.632675001,
"last_add_price": 134300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 3736493.690810334,
"last_add_price": 13660
@@ -144,17 +144,38 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3791260.103190828,
"last_add_price": 139100
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 751,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:05.116357+09:00",
"stop": 5447,
"target": 7298,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 4441317.796325,
"last_add_price": 5910
}
},
"realized_pnl": -8866029.190500006,
"closed_trades": 10,
"wins": 0,
"peak_equity": 100162411.55350003,
"max_drawdown": 0.10727156758062853,
"max_drawdown": 0.11990157986646799,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -165,5 +186,5 @@
"093370": "2026-07-07"
},
"created_at": "2026-06-16T14:30:00.114884+09:00",
"updated_at": "2026-07-13T15:28:06.604966+09:00"
"updated_at": "2026-07-14T15:28:02.165812+09:00"
}
@@ -34,3 +34,4 @@
{"ts": "2026-07-13T09:06:09.595958+09:00", "side": "BUY", "code": "055550", "name": "신한지주", "price": 112800, "qty": 41, "cost": 4625494, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 99202, "target": 142394, "signals": [{"label": "손절선", "ok": true, "detail": "99,202 (현재 112,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 142,394"}, {"label": "추세(10일선)", "ok": true, "detail": "100,240"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -358 · 기 +991"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 112,792"}]}
{"ts": "2026-07-13T09:08:06.159910+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 134300, "qty": 33, "cost": 4432565, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 117686, "target": 170541, "signals": [{"label": "손절선", "ok": true, "detail": "117,686 (현재 134,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 170,541"}, {"label": "추세(10일선)", "ok": true, "detail": "120,980"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -277 · 기 +460"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 134,118"}]}
{"ts": "2026-07-13T09:26:04.261818+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 27, "cost": 3756263, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 216800, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,800"}, {"label": "추세(10일선)", "ok": true, "detail": "126,460"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,162"}]}
{"ts": "2026-07-14T09:40:05.116358+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 751, "cost": 4439076, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 7298, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "5,900 vs 5,543"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,646 / 5,543"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -1,5 +1,5 @@
{
"cash": 16354018.79350001,
"cash": 11944497.46450001,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 4958254.67055,
"last_add_price": 351000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 4714432.705050001,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4659224.029450001,
"last_add_price": 112800
@@ -76,12 +76,12 @@
"entry_at": "2026-07-07T10:06:08.154896+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3546990.802202721,
"last_add_price": 177000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4360729.7882,
"last_add_price": 130800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4417565.987450001,
"last_add_price": 191000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4419485.9197,
"last_add_price": 13850
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3789711.3515926166,
"last_add_price": 139100
@@ -181,15 +181,36 @@
"entry_at": "2026-07-13T09:42:03.137984+09:00",
"stop": 121972,
"target": 173684,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 1,
"tranche_value": 4639656.985925001,
"last_add_price": 134900
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 746,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:05.118058+09:00",
"stop": 5447,
"target": 7298,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 4412981.9396750005,
"last_add_price": 5910
}
},
"realized_pnl": -9997535.596500007,
@@ -208,5 +229,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-16T14:30:00.114893+09:00",
"updated_at": "2026-07-13T15:28:06.606579+09:00"
"updated_at": "2026-07-14T15:28:02.167435+09:00"
}
@@ -45,3 +45,4 @@
{"ts": "2026-07-13T09:36:03.152923+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 23, "cost": 4393659, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 166448, "target": 244255, "signals": [{"label": "손절선", "ok": true, "detail": "166,448 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 244,255"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T09:42:03.137987+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 134900, "qty": 34, "cost": 4587288, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 121972, "target": 173684, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "134,900 vs 118,990"}, {"label": "정배열(5>20)", "ok": true, "detail": "123,580 / 118,990"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "123,580 / 118,647"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -277 · 기 +460 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+19%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.63% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": true, "detail": "1,739,967 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": true, "detail": "0.63% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "64"}]}
{"ts": "2026-07-13T12:44:04.740858+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 27, "proceeds": 5063407, "entry_price": 158900, "pnl": 772464, "pnl_pct": 18.25, "hold_from": "2026-07-10T09:24:02.594857+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:40:05.118059+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 746, "cost": 4409521, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 7298, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,900 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,646 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 4204717.377117339,
"last_add_price": 351000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4696313.243375001,
"last_add_price": 112800
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T10:06:08.157119+09:00",
"stop": 123940,
"target": 271816,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1788561.3745409653,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3561275.575471075,
"last_add_price": 130800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4481454.40125,
"last_add_price": 12570
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4271753.2878373945,
"last_add_price": 188900
@@ -139,12 +139,12 @@
"entry_at": "2026-07-10T09:26:06.527124+09:00",
"stop": 119703,
"target": 171186,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4425433.834195267,
"last_add_price": 134300
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1924262.4890183615,
"last_add_price": 139100
@@ -197,5 +197,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-16T14:30:00.114901+09:00",
"updated_at": "2026-07-13T15:28:06.608310+09:00"
"updated_at": "2026-07-14T15:28:02.169188+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 838968.7208438216,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 1673351.8373961153,
"last_add_price": 364000
@@ -55,12 +55,12 @@
"entry_at": "2026-07-02T10:18:05.076562+09:00",
"stop": 111000,
"target": 144000,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 2655772.3181489734,
"last_add_price": 126200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 17,169 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 843337.2774077861,
"last_add_price": 14510
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 1651331.990927872,
"last_add_price": 136900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 1761968.1579426918,
"last_add_price": 188300
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 1874414.018276448,
"last_add_price": 110600
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1110000.4919609942,
"last_add_price": 131900
@@ -203,5 +203,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885275+09:00",
"updated_at": "2026-07-13T15:28:06.610016+09:00"
"updated_at": "2026-07-14T15:28:02.170916+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1427399.2965134282,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 2915392.515923153,
"last_add_price": 351000
@@ -55,12 +55,12 @@
"entry_at": "2026-07-03T09:02:06.149146+09:00",
"stop": 111000,
"target": 151261,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,715 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 3762514.3450991833,
"last_add_price": 126200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 2439196.1798423207,
"last_add_price": 130800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 3126233.913570834,
"last_add_price": 112800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,895 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 3519431.0206397655,
"last_add_price": 12570
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 1,
"tranche_value": 1268754.4994367112,
"last_add_price": 132600
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 1,
"tranche_value": 2961721.410646846,
"last_add_price": 193700
@@ -203,5 +203,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885286+09:00",
"updated_at": "2026-07-13T15:28:06.611725+09:00"
"updated_at": "2026-07-14T15:28:02.172648+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 41152203.21550001,
"cash": 35359534.44550001,
"initial": 100000000,
"positions": {
"095610": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2108519.4627673267,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 4334568.473236215,
"last_add_price": 351000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6033683.478843751,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3646719.3653269354,
"last_add_price": 130800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4664067.887160526,
"last_add_price": 112800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4392211.260805175,
"last_add_price": 191000
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1939184.036126371,
"last_add_price": 139100
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 980,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:05.124984+09:00",
"stop": 5447,
"target": 6835,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 5795785.200968751,
"last_add_price": 5910
}
},
"realized_pnl": -5999030.658500007,
@@ -165,5 +186,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885297+09:00",
"updated_at": "2026-07-13T15:28:06.613317+09:00"
"updated_at": "2026-07-14T15:28:02.174286+09:00"
}
@@ -46,3 +46,4 @@
{"ts": "2026-07-13T09:26:04.271838+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 13, "cost": 1808571, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 189000, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 189,000"}, {"label": "추세(20일선)", "ok": true, "detail": "120,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,962"}]}
{"ts": "2026-07-13T09:36:03.160255+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 22, "cost": 4202630, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 166448, "target": 224803, "signals": [{"label": "손절선", "ok": true, "detail": "166,448 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 224,803"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.755967+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 66, "proceeds": 12377217, "entry_price": 168655, "pnl": 1244348, "pnl_pct": 11.41, "hold_from": "2026-07-10T09:00:32.689474+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:40:05.124985+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 980, "cost": 5792669, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 6835, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,900 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,646 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 2963503.260143787,
"last_add_price": 113200
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:08.165437+09:00",
"stop": 124146,
"target": 235054,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1101385.0818785944,
"last_add_price": 177000
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T14:22:11.941049+09:00",
"stop": 118232,
"target": 156416,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 2904162.8944228827,
"last_add_price": 132700
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 2515299.6269763918,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2957378.250802568,
"last_add_price": 12570
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 2680935.910899338,
"last_add_price": 188300
@@ -152,5 +152,5 @@
"402340": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885305+09:00",
"updated_at": "2026-07-13T15:28:06.615022+09:00"
"updated_at": "2026-07-14T15:28:02.176022+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-07T09:48:09.516498+09:00",
"stop": 128453,
"target": 228269,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 157,807 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2010915.7969966698,
"last_add_price": 177000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3932156.363213972,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5086675.05729066,
"last_add_price": 110500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,038 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5562296.5279062465,
"last_add_price": 19190
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4724531.930739173,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2310199.8085648767,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1905912.3260026476,
"last_add_price": 139100
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 4091526.4858662924,
"last_add_price": 335000
@@ -192,5 +192,5 @@
"214450": "2026-07-09"
},
"created_at": "2026-06-22T09:00:04.885314+09:00",
"updated_at": "2026-07-13T15:28:06.616616+09:00"
"updated_at": "2026-07-14T15:28:02.177661+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 7629299.601532606,
"last_add_price": 104900
@@ -34,12 +34,12 @@
"entry_at": "2026-07-02T10:18:05.117493+09:00",
"stop": 114303,
"target": 148877,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 123,632 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 6715782.648119116,
"last_add_price": 126200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5629909.698589857,
"last_add_price": 130800
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,167 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 7077244.104666662,
"last_add_price": 19110
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:00:32.996874+09:00",
"stop": 134154,
"target": 234954,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 161,640 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2897052.7174822036,
"last_add_price": 168200
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 5662017.171948669,
"last_add_price": 324000
@@ -151,5 +151,5 @@
"030000": "2026-07-08"
},
"created_at": "2026-06-22T09:00:04.885323+09:00",
"updated_at": "2026-07-13T15:28:06.618190+09:00"
"updated_at": "2026-07-14T15:28:02.179277+09:00"
}
@@ -1,28 +1,7 @@
{
"cash": 69542421.84049994,
"cash": 76718201.73049994,
"initial": 100000000,
"positions": {
"003490": {
"code": "003490",
"name": "대한항공",
"sources": [
"auto"
],
"qty": 276,
"entry_price": 26270.289855072464,
"entry_at": "2026-06-24T09:02:07.275383+09:00",
"stop": 24162,
"target": 32595,
"peak": 29650,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 26,600 도달",
"cur_price": 25850,
"tranches": 2,
"tranche_value": 3644603.1767370948,
"last_add_price": 26600
},
"086790": {
"code": "086790",
"name": "하나금융지주",
@@ -34,12 +13,12 @@
"entry_at": "2026-07-03T12:00:03.961624+09:00",
"stop": 116685,
"target": 160412,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 129,300 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 3175234.87849388,
"last_add_price": 129300
@@ -55,12 +34,12 @@
"entry_at": "2026-07-08T09:48:03.209205+09:00",
"stop": 119360,
"target": 249920,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 177,000 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1155855.8136422108,
"last_add_price": 158000
@@ -81,14 +60,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 324,000 도달",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 2514022.686329285,
"last_add_price": 337500
}
},
"realized_pnl": -10202740.389500028,
"closed_trades": 46,
"realized_pnl": -10278648.089500029,
"closed_trades": 47,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.1193281823450005,
@@ -121,8 +100,9 @@
"032830": "2026-07-09",
"028260": "2026-07-09",
"089970": "2026-07-09",
"084370": "2026-07-09"
"084370": "2026-07-09",
"003490": "2026-07-14"
},
"created_at": "2026-06-22T09:00:04.885332+09:00",
"updated_at": "2026-07-13T15:28:06.623982+09:00"
"updated_at": "2026-07-14T15:28:02.185299+09:00"
}
@@ -106,3 +106,4 @@
{"ts": "2026-07-13T09:02:04.112962+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 337500, "qty": 7, "cost": 2362854, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 288383, "target": 424850, "signals": [{"label": "손절선", "ok": true, "detail": "288,383 (현재 337,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 424,850"}, {"label": "추세(60일선)", "ok": true, "detail": "305,367"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -63 · 기 +144"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 332,445"}]}
{"ts": "2026-07-13T12:08:07.069633+09:00", "side": "SELL", "code": "222800", "name": "심텍", "price": 111600, "qty": 25, "proceeds": 2784560, "entry_price": 122400, "pnl": -275900, "pnl_pct": -8.82, "hold_from": "2026-07-10T09:00:33.154218+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "112,200 (현재 111,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 153,000"}, {"label": "추세(60일선)", "ok": true, "detail": "99,678"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -238 · 기 +551"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 129,768"}]}
{"ts": "2026-07-13T12:44:04.772214+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 85, "proceeds": 15940356, "entry_price": 168631, "pnl": 1604606, "pnl_pct": 11.43, "hold_from": "2026-07-10T09:00:33.153331+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "113,690"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:04:01.694269+09:00", "side": "SELL", "code": "003490", "name": "대한항공", "price": 26050, "qty": 276, "proceeds": 7175780, "entry_price": 26270, "pnl": -75908, "pnl_pct": -0.84, "hold_from": "2026-06-24T09:02:07.275383+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "24,162 (현재 26,050)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 32,595"}, {"label": "추세(60일선)", "ok": true, "detail": "25,169"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -980 · 기 +868"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -1,28 +1,7 @@
{
"cash": 47505014.870999984,
"cash": 48238684.147499986,
"initial": 100000000,
"positions": {
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 26,
"entry_price": 342750.0,
"entry_at": "2026-07-07T13:00:08.342959+09:00",
"stop": 311790,
"target": 435630,
"peak": 348500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"tranches": 2,
"tranche_value": 4560244.1970706815,
"last_add_price": 348500
},
"010950": {
"code": "010950",
"name": "S-Oil",
@@ -39,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4672093.2982409485,
"last_add_price": 132400
@@ -55,12 +34,12 @@
"entry_at": "2026-07-08T09:48:03.227800+09:00",
"stop": 122978,
"target": 238177,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 177,000 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2071195.31789497,
"last_add_price": 158000
@@ -81,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,750 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 7171414.859041666,
"last_add_price": 19110
@@ -102,14 +81,35 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5478006.942048426,
"last_add_price": 191000
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 1239,
"entry_price": 5910,
"entry_at": "2026-07-14T09:50:06.156313+09:00",
"stop": 5563,
"target": 6951,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 7328397.072583333,
"last_add_price": 5910
}
},
"realized_pnl": -12317709.441500016,
"closed_trades": 23,
"realized_pnl": -13173288.516500017,
"closed_trades": 24,
"wins": 1,
"peak_equity": 100133491.83,
"max_drawdown": 0.14653463782038975,
@@ -125,11 +125,11 @@
"030000": "2026-07-08",
"240810": "2026-07-08",
"009150": "2026-07-03",
"214450": "2026-07-06",
"214450": "2026-07-14",
"095610": "2026-07-07",
"475150": "2026-07-08",
"319660": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885342+09:00",
"updated_at": "2026-07-13T15:28:06.625561+09:00"
"updated_at": "2026-07-14T15:28:02.186905+09:00"
}
@@ -63,3 +63,5 @@
{"ts": "2026-07-13T09:32:03.201581+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 348500, "qty": 13, "cost": 4531180, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 304326, "target": 435023, "signals": [{"label": "손절선", "ok": true, "detail": "304,326 (현재 348,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 435,023"}, {"label": "추세(20일선)", "ok": true, "detail": "296,550"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -63 · 기 +144"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 347,320"}]}
{"ts": "2026-07-13T09:36:03.172845+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 28, "cost": 5348802, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 171311, "target": 229666, "signals": [{"label": "손절선", "ok": true, "detail": "171,311 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 229,666"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.775850+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 84, "proceeds": 15752822, "entry_price": 168686, "pnl": 1581097, "pnl_pct": 11.39, "hold_from": "2026-07-10T09:00:33.260645+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:50:06.156315+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 1239, "cost": 7323588, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5563, "target": 6951, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,905 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,647 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,647 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.46% (환산) vs 평균 0.22% (보류 5배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "100,287 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.46% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
{"ts": "2026-07-14T10:20:06.249814+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 310500, "qty": 26, "proceeds": 8057258, "entry_price": 342750, "pnl": -855579, "pnl_pct": -9.41, "hold_from": "2026-07-07T13:00:08.342959+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "311,790 (현재 310,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 435,630"}, {"label": "추세(20일선)", "ok": true, "detail": "294,650"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -50 · 기 +82"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 8631054.00120924,
"last_add_price": 104900
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T09:48:10.316330+09:00",
"stop": 118177,
"target": 151615,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 129,300 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 8110500.977146673,
"last_add_price": 129300
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 6618434.466110563,
"last_add_price": 131700
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,750 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 8530297.614300001,
"last_add_price": 19110
@@ -97,12 +97,12 @@
"entry_at": "2026-07-10T09:00:33.374268+09:00",
"stop": 137885,
"target": 237725,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 177,000 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3356725.3331134818,
"last_add_price": 168200
@@ -129,5 +129,5 @@
"030000": "2026-07-08"
},
"created_at": "2026-06-22T09:00:04.885351+09:00",
"updated_at": "2026-07-13T15:28:06.631103+09:00"
"updated_at": "2026-07-14T15:28:02.192720+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 1998392.2397085025,
"last_add_price": 360000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 2392792.516725811,
"last_add_price": 112800
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T10:06:08.184570+09:00",
"stop": 114698,
"target": 244090,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 922993.4614919071,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 2048281.4287081354,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,838 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 3008716.5532425,
"last_add_price": 12570
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 2190880.642895634,
"last_add_price": 188900
@@ -139,12 +139,12 @@
"entry_at": "2026-07-10T09:26:06.847465+09:00",
"stop": 116460,
"target": 161508,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 2270015.592943854,
"last_add_price": 134300
@@ -171,5 +171,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885359+09:00",
"updated_at": "2026-07-13T15:28:06.632781+09:00"
"updated_at": "2026-07-14T15:28:02.194420+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6068978.397781251,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4479850.3557250975,
"last_add_price": 113200
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T10:06:08.186335+09:00",
"stop": 120109,
"target": 242107,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1669145.8665217268,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3777878.7367542596,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4020129.0097097848,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2403780.881365456,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1969595.787789421,
"last_add_price": 139100
@@ -166,5 +166,5 @@
"214450": "2026-07-09"
},
"created_at": "2026-06-22T09:00:04.885367+09:00",
"updated_at": "2026-07-13T15:28:06.634365+09:00"
"updated_at": "2026-07-14T15:28:02.196034+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 5418858.688415765,
"last_add_price": 351000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,259 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 7970113.977416663,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 6023800.876881614,
"last_add_price": 113200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4605074.81759219,
"last_add_price": 130800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5574443.860814035,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 143,451 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 2397963.2803351795,
"last_add_price": 139100
@@ -133,7 +133,7 @@
"closed_trades": 8,
"wins": 0,
"peak_equity": 102026100.45499997,
"max_drawdown": 0.10112917230479515,
"max_drawdown": 0.10913863867032009,
"last_exit": {
"403870": "2026-07-07",
"000660": "2026-06-29",
@@ -144,5 +144,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885375+09:00",
"updated_at": "2026-07-13T15:28:06.635933+09:00"
"updated_at": "2026-07-14T15:28:02.197653+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-03T09:02:06.628378+09:00",
"stop": 112596,
"target": 160011,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,715 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 2053187.8058698708,
"last_add_price": 126200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 17,028 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 1109013.7020369088,
"last_add_price": 13730
@@ -55,12 +55,12 @@
"entry_at": "2026-07-08T09:48:03.263220+09:00",
"stop": 116773,
"target": 255013,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,707 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 755263.3109953183,
"last_add_price": 158000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 1,
"tranche_value": 724734.2882624231,
"last_add_price": 135800
@@ -117,5 +117,5 @@
"028260": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885385+09:00",
"updated_at": "2026-07-13T15:28:06.637614+09:00"
"updated_at": "2026-07-14T15:28:02.199342+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3077257.8639161275,
"last_add_price": 132400
@@ -34,12 +34,12 @@
"entry_at": "2026-07-08T09:48:03.266436+09:00",
"stop": 122847,
"target": 238047,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,707 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1363328.9004981436,
"last_add_price": 158000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 4953086.986752339,
"last_add_price": 19110
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 3597857.2676314004,
"last_add_price": 191000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3135896.01890356,
"last_add_price": 335000
@@ -124,5 +124,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885394+09:00",
"updated_at": "2026-07-13T15:28:06.639168+09:00"
"updated_at": "2026-07-14T15:28:02.200932+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-07T09:48:10.360377+09:00",
"stop": 118178,
"target": 155796,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 124,180 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5518683.331428246,
"last_add_price": 129300
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4480079.290234277,
"last_add_price": 131700
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5663271.38615195,
"last_add_price": 112800
@@ -76,12 +76,12 @@
"entry_at": "2026-07-10T09:00:33.987743+09:00",
"stop": 137951,
"target": 250271,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 161,640 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2280725.1932677883,
"last_add_price": 168200
@@ -108,5 +108,5 @@
"030000": "2026-07-08"
},
"created_at": "2026-06-22T09:00:04.885402+09:00",
"updated_at": "2026-07-13T15:28:06.640690+09:00"
"updated_at": "2026-07-14T15:28:02.202519+09:00"
}
@@ -1,28 +1,7 @@
{
"cash": 90784651.69350001,
"cash": 91883305.13350001,
"initial": 100000000,
"positions": {
"003490": {
"code": "003490",
"name": "대한항공",
"sources": [
"auto"
],
"qty": 43,
"entry_price": 29100,
"entry_at": "2026-06-25T13:14:02.656864+09:00",
"stop": 25678,
"target": 34233,
"peak": 29650,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 25850,
"tranches": 1,
"tranche_value": 1264797.458423298,
"last_add_price": 29100
},
"214450": {
"code": "214450",
"name": "파마리서치",
@@ -39,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 1003689.558888313,
"last_add_price": 364000
@@ -55,12 +34,12 @@
"entry_at": "2026-07-08T09:48:03.271936+09:00",
"stop": 102800,
"target": 222800,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,707 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 472174.60230003326,
"last_add_price": 158000
@@ -76,19 +55,19 @@
"entry_at": "2026-07-09T10:06:03.303796+09:00",
"stop": 111000,
"target": 143560,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,722 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 1589829.8696281747,
"last_add_price": 126000
}
},
"realized_pnl": -2683468.671500012,
"closed_trades": 20,
"realized_pnl": -2836302.926500012,
"closed_trades": 21,
"wins": 0,
"peak_equity": 100023011.56,
"max_drawdown": 0.03041485773176401,
@@ -106,8 +85,9 @@
"009150": "2026-07-09",
"011070": "2026-07-09",
"319660": "2026-07-08",
"032830": "2026-07-09"
"032830": "2026-07-09",
"003490": "2026-07-14"
},
"created_at": "2026-06-22T09:00:04.885411+09:00",
"updated_at": "2026-07-13T15:28:06.642344+09:00"
"updated_at": "2026-07-14T15:28:02.204207+09:00"
}
@@ -47,3 +47,4 @@
{"ts": "2026-07-09T10:06:03.303818+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 122200, "qty": 13, "cost": 1588838, "path": "pullback", "reason": "눌림목 지정가 122,722 도달", "stop": 111000, "target": 139000, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "122,000 vs 118,432"}, {"label": "정배열(5>60)", "ok": true, "detail": "121,000 / 118,432"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "121,000 / 118,432"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.4%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -553 · 기 +773 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+30%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.61% (환산) vs 평균 0.37% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "1,687,949 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.61% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,722 (현재 122,000)"}]}
{"ts": "2026-07-10T09:00:34.085890+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 158000, "qty": 2, "cost": 316047, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 213950, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 157,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 213,950"}, {"label": "추세(60일선)", "ok": true, "detail": "99,733"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +452 · 기 -360"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 155,600"}]}
{"ts": "2026-07-10T09:06:05.239762+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 126000, "qty": 12, "cost": 1512227, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 139000, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 139,000"}, {"label": "추세(60일선)", "ok": true, "detail": "118,497"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -427 · 기 +555"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 125,443"}]}
{"ts": "2026-07-14T09:20:06.102226+09:00", "side": "SELL", "code": "003490", "name": "대한항공", "price": 25600, "qty": 43, "proceeds": 1098653, "entry_price": 29100, "pnl": -152834, "pnl_pct": -12.03, "hold_from": "2026-06-25T13:14:02.656864+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "25,678 (현재 25,650)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 34,233"}, {"label": "추세(60일선)", "ok": true, "detail": "25,162"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -980 · 기 +868"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 29,715"}]}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-08T09:48:03.274655+09:00",
"stop": 109093,
"target": 235813,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,707 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 767499.0884707351,
"last_add_price": 158000
@@ -34,12 +34,12 @@
"entry_at": "2026-07-09T09:36:04.834155+09:00",
"stop": 111000,
"target": 150769,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,722 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 2456847.6228259695,
"last_add_price": 126000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,895 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2217935.879978564,
"last_add_price": 12610
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 1,
"tranche_value": 860958.8841434265,
"last_add_price": 133100
@@ -117,5 +117,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-22T09:00:04.885419+09:00",
"updated_at": "2026-07-13T15:28:06.644021+09:00"
"updated_at": "2026-07-14T15:28:02.205901+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 66746884.98999996,
"cash": 62077284.65499996,
"initial": 100000000,
"positions": {
"095610": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,157 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1528029.598003398,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5471035.172017734,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 2797695.7491575275,
"last_add_price": 348500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 2896999.7554967864,
"last_add_price": 131700
@@ -102,10 +102,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 3427016.6001207763,
"last_add_price": 191000
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 790,
"entry_price": 5910,
"entry_at": "2026-07-14T09:46:02.030211+09:00",
"stop": 5447,
"target": 6835,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 4673122.761535364,
"last_add_price": 5910
}
},
"realized_pnl": -1864877.4805000038,
@@ -123,5 +144,5 @@
"003490": "2026-07-09"
},
"created_at": "2026-06-22T09:00:04.885428+09:00",
"updated_at": "2026-07-13T15:28:06.645568+09:00"
"updated_at": "2026-07-14T15:28:02.207489+09:00"
}
@@ -33,3 +33,4 @@
{"ts": "2026-07-13T09:32:03.223061+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 348500, "qty": 8, "cost": 2788418, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 293434, "target": 424131, "signals": [{"label": "손절선", "ok": true, "detail": "293,434 (현재 348,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 424,131"}, {"label": "추세(20일선)", "ok": true, "detail": "296,550"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -63 · 기 +144"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 347,320"}]}
{"ts": "2026-07-13T09:36:03.193624+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 17, "cost": 3247487, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 166448, "target": 224803, "signals": [{"label": "손절선", "ok": true, "detail": "166,448 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 224,803"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.800332+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 93, "proceeds": 17440624, "entry_price": 168645, "pnl": 1754272, "pnl_pct": 11.42, "hold_from": "2026-07-10T09:00:34.290491+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:46:02.030213+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 790, "cost": 4669600, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 6835, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,890 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,644 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,644 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.44% (환산) vs 평균 0.22% (보류 5배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "95,600 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.44% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -1,5 +1,5 @@
{
"cash": 17319799.410499953,
"cash": 12023645.106499951,
"initial": 100000000,
"positions": {
"095610": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 4043603.119681299,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 6050980.045874998,
"last_add_price": 351000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5568897.7301562475,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5165873.995968748,
"last_add_price": 130800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5219708.679718748,
"last_add_price": 112800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5227047.927531247,
"last_add_price": 191000
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3576798.937709192,
"last_add_price": 139100
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 896,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:04.983975+09:00",
"stop": 5447,
"target": 6835,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 5300993.7131562475,
"last_add_price": 5910
}
},
"realized_pnl": -14020523.182500018,
@@ -168,5 +189,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943227+09:00",
"updated_at": "2026-07-13T15:28:06.476761+09:00"
"updated_at": "2026-07-14T15:28:02.038507+09:00"
}
@@ -55,3 +55,4 @@
{"ts": "2026-07-13T09:26:03.349344+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 25, "cost": 3478022, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 189000, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 189,000"}, {"label": "추세(20일선)", "ok": true, "detail": "120,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,962"}]}
{"ts": "2026-07-13T09:36:02.212391+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 27, "cost": 5157774, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 166448, "target": 224803, "signals": [{"label": "손절선", "ok": true, "detail": "166,448 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 224,803"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.290141+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 60, "proceeds": 11252016, "entry_price": 168640, "pnl": 1132098, "pnl_pct": 11.42, "hold_from": "2026-07-10T09:00:08.949732+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:40:04.983978+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 896, "cost": 5296154, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 6835, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,900 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,646 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -1,5 +1,5 @@
{
"cash": 16691403.027499966,
"cash": 11507555.566999966,
"initial": 100000000,
"positions": {
"095610": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 157,386 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3673653.508228102,
"last_add_price": 163900
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 2,
"tranche_value": 6068447.828687498,
"last_add_price": 351000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5476703.495874999,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5048122.616093748,
"last_add_price": 130800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5101462.481093748,
"last_add_price": 112800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5117738.221718748,
"last_add_price": 191000
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 163,375 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3502168.108413708,
"last_add_price": 139100
},
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 877,
"entry_price": 5910,
"entry_at": "2026-07-14T09:40:04.988375+09:00",
"stop": 5447,
"target": 7298,
"peak": 5950,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5930,
"tranches": 1,
"tranche_value": 5189689.564218748,
"last_add_price": 5910
}
},
"realized_pnl": -16373708.245000012,
@@ -170,5 +191,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943590+09:00",
"updated_at": "2026-07-13T15:28:06.481018+09:00"
"updated_at": "2026-07-14T15:28:02.042288+09:00"
}
@@ -60,3 +60,4 @@
{"ts": "2026-07-13T09:26:03.359944+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 25, "cost": 3478022, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 220000, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 220,000"}, {"label": "추세(20일선)", "ok": true, "detail": "120,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,962"}]}
{"ts": "2026-07-13T09:36:02.220976+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 26, "cost": 4966745, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 166448, "target": 244255, "signals": [{"label": "손절선", "ok": true, "detail": "166,448 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 244,255"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.300703+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 59, "proceeds": 11064482, "entry_price": 168719, "pnl": 1108589, "pnl_pct": 11.37, "hold_from": "2026-07-10T09:00:09.059474+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T09:40:04.988377+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 877, "cost": 5183847, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5447, "target": 7298, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "5,900 vs 5,334"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,646 / 5,334"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,646 / 5,614"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+33.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +107 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.34% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "74,367 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.34% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5704730.292062499,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 5573332.452624999,
"last_add_price": 112800
@@ -55,12 +55,12 @@
"entry_at": "2026-07-07T09:12:07.217502+09:00",
"stop": 128745,
"target": 221168,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,314 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 3690119.928641941,
"last_add_price": 177000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5363919.985249998,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5387632.640562498,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 4481174.692094209,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 3700658.2439712575,
"last_add_price": 139100
@@ -170,5 +170,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943599+09:00",
"updated_at": "2026-07-13T15:28:06.484492+09:00"
"updated_at": "2026-07-14T15:28:02.045594+09:00"
}
@@ -11,14 +11,14 @@
"qty": 27,
"entry_price": 150948.14814814815,
"entry_at": "2026-07-09T09:02:04.050348+09:00",
"stop": 122148,
"stop": 196014,
"target": 208548,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,479 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2060558.4140316749,
"last_add_price": 158000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,021 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5490641.461343751,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5241905.40054189,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5481846.065062502,
"last_add_price": 110900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5484865.745375002,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2279283.607568078,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1880501.2830996532,
"last_add_price": 139100
@@ -171,5 +171,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943663+09:00",
"updated_at": "2026-07-13T15:28:06.487567+09:00"
"updated_at": "2026-07-14T15:28:02.048689+09:00"
}
@@ -11,14 +11,14 @@
"qty": 29,
"entry_price": 160724.1379310345,
"entry_at": "2026-07-07T10:06:07.206724+09:00",
"stop": 132997,
"stop": 196014,
"target": 202314,
"peak": 199000,
"trailing_on": false,
"peak": 216500,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2403556.8912331606,
"last_add_price": 177000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5725859.24128125,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5467215.23496758,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5739515.617,
"last_add_price": 110900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5742869.467937499,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2386758.275590506,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1961081.3407003311,
"last_add_price": 139100
@@ -168,5 +168,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943683+09:00",
"updated_at": "2026-07-13T15:28:06.490591+09:00"
"updated_at": "2026-07-14T15:28:02.051503+09:00"
}
@@ -13,12 +13,12 @@
"entry_at": "2026-07-07T10:06:07.210537+09:00",
"stop": 132997,
"target": 243905,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2403556.8912331606,
"last_add_price": 177000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5631297.602718748,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5376905.59304502,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 5645053.210468749,
"last_add_price": 110900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5648361.226093749,
"last_add_price": 191000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2347492.193838107,
"last_add_price": 13850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1928781.9145576486,
"last_add_price": 139100
@@ -168,5 +168,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943703+09:00",
"updated_at": "2026-07-13T15:28:06.493587+09:00"
"updated_at": "2026-07-14T15:28:02.054333+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5999062.46775,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4844779.018864605,
"last_add_price": 112800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4170396.505155157,
"last_add_price": 136900
@@ -76,12 +76,12 @@
"entry_at": "2026-07-10T09:26:06.407594+09:00",
"stop": 119704,
"target": 158317,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4631043.743609013,
"last_add_price": 134300
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1931952.3048708485,
"last_add_price": 13660
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1953052.7124730793,
"last_add_price": 139100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3853827.2535399394,
"last_add_price": 338500
@@ -154,7 +154,7 @@
"closed_trades": 10,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.07607651027999997,
"max_drawdown": 0.08242481027999997,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -165,5 +165,5 @@
"093370": "2026-07-07"
},
"created_at": "2026-06-11T09:00:01.943761+09:00",
"updated_at": "2026-07-13T15:28:06.496288+09:00"
"updated_at": "2026-07-14T15:28:02.057047+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5999062.46775,
"last_add_price": 20750
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 2,
"tranche_value": 4844779.018864605,
"last_add_price": 112800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4200692.986817652,
"last_add_price": 136900
@@ -76,12 +76,12 @@
"entry_at": "2026-07-10T09:26:06.410608+09:00",
"stop": 119704,
"target": 151882,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 4664583.432162063,
"last_add_price": 134300
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1945967.2189908484,
"last_add_price": 13660
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1967206.2528969536,
"last_add_price": 139100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3881692.4296628344,
"last_add_price": 338500
@@ -154,7 +154,7 @@
"closed_trades": 10,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.06931774956999988,
"max_drawdown": 0.07567714956999988,
"last_exit": {
"030000": "2026-07-02",
"086790": "2026-06-23",
@@ -165,5 +165,5 @@
"093370": "2026-07-07"
},
"created_at": "2026-06-11T09:00:01.943780+09:00",
"updated_at": "2026-07-13T15:28:06.498887+09:00"
"updated_at": "2026-07-14T15:28:02.059576+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 46764747.777499974,
"cash": 51413165.652499974,
"initial": 100000000,
"positions": {
"095610": {
@@ -13,12 +13,12 @@
"entry_at": "2026-07-07T10:06:07.219735+09:00",
"stop": 132997,
"target": 243905,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2418225.3551565195,
"last_add_price": 177000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,657 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 1,
"tranche_value": 5697024.742468747,
"last_add_price": 19110
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 5342670.471327519,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 5714912.246093748,
"last_add_price": 191000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2376696.190974949,
"last_add_price": 13850
@@ -123,35 +123,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1951096.0467774002,
"last_add_price": 139100
},
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 15,
"entry_price": 341500,
"entry_at": "2026-07-13T09:12:04.264230+09:00",
"stop": 310647,
"target": 434059,
"peak": 348500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"tranches": 1,
"tranche_value": 5237858.401562448,
"last_add_price": 341500
}
},
"realized_pnl": -7432702.870500008,
"closed_trades": 14,
"realized_pnl": -7907553.370500009,
"closed_trades": 15,
"wins": 1,
"peak_equity": 101012300.052,
"max_drawdown": 0.10250177338967575,
@@ -159,12 +138,12 @@
"030000": "2026-07-08",
"403870": "2026-07-02",
"240810": "2026-07-08",
"214450": "2026-07-03",
"214450": "2026-07-14",
"093370": "2026-07-07",
"003490": "2026-07-07",
"034730": "2026-07-08",
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.943999+09:00",
"updated_at": "2026-07-13T15:28:06.501370+09:00"
"updated_at": "2026-07-14T15:28:02.062075+09:00"
}
@@ -44,3 +44,4 @@
{"ts": "2026-07-13T09:26:03.382670+09:00", "side": "BUY", "code": "240810", "name": "원익IPS", "price": 139100, "qty": 14, "cost": 1947692, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 96000, "target": 216800, "signals": [{"label": "손절선", "ok": true, "detail": "96,000 (현재 139,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,800"}, {"label": "추세(20일선)", "ok": true, "detail": "120,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -213 · 기 +772"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,162"}]}
{"ts": "2026-07-13T09:36:02.245087+09:00", "side": "BUY", "code": "105560", "name": "KB금융", "price": 191000, "qty": 29, "cost": 5539831, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 171311, "target": 229666, "signals": [{"label": "손절선", "ok": true, "detail": "171,311 (현재 191,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 229,666"}, {"label": "추세(20일선)", "ok": true, "detail": "160,160"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -867 · 기 +1,393"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 190,952"}]}
{"ts": "2026-07-13T12:44:04.325972+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 187900, "qty": 35, "proceeds": 6563676, "entry_price": 158900, "pnl": 1001342, "pnl_pct": 18.25, "hold_from": "2026-07-10T09:24:02.074779+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "189,133 (현재 187,900)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "151,185"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -254 · 기 +457"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-14T10:20:06.117645+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 310500, "qty": 15, "proceeds": 4648418, "entry_price": 341500, "pnl": -474851, "pnl_pct": -9.08, "hold_from": "2026-07-13T09:12:04.264230+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "310,647 (현재 310,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 434,059"}, {"label": "추세(20일선)", "ok": true, "detail": "294,650"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -50 · 기 +82"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 351,713"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2088366.7995946202,
"last_add_price": 179100
@@ -34,12 +34,12 @@
"entry_at": "2026-07-02T10:18:03.775201+09:00",
"stop": 111006,
"target": 163689,
"peak": 137500,
"peak": 137600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,215 도달",
"cur_price": 131800,
"cur_price": 134000,
"tranches": 2,
"tranche_value": 5334313.7727854485,
"last_add_price": 126200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5924112.946093753,
"last_add_price": 20750
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4011361.8546706727,
"last_add_price": 136900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 1,
"tranche_value": 1917969.4213397584,
"last_add_price": 13660
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1937633.9877557629,
"last_add_price": 139100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3890688.706288562,
"last_add_price": 341500
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 108100,
"cur_price": 106800,
"tranches": 1,
"tranche_value": 4766841.087787137,
"last_add_price": 113100
@@ -186,5 +186,5 @@
"034730": "2026-07-07"
},
"created_at": "2026-06-11T09:00:01.944063+09:00",
"updated_at": "2026-07-13T15:28:06.503762+09:00"
"updated_at": "2026-07-14T15:28:02.064351+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 158,264 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 2079456.3546856907,
"last_add_price": 179100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,004 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 5878894.755656252,
"last_add_price": 20750
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 3953954.8215015037,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4304438.731796989,
"last_add_price": 191000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,984 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2341080.1013005073,
"last_add_price": 13850
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 162,268 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1927673.6668487922,
"last_add_price": 139100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3886029.232766459,
"last_add_price": 341500
@@ -168,5 +168,5 @@
"319660": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.944112+09:00",
"updated_at": "2026-07-13T15:28:06.506223+09:00"
"updated_at": "2026-07-14T15:28:02.066594+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,631 도달",
"cur_price": 18750,
"cur_price": 18790,
"tranches": 2,
"tranche_value": 6035337.956937501,
"last_add_price": 20750
@@ -34,12 +34,12 @@
"entry_at": "2026-07-07T10:06:07.227558+09:00",
"stop": 123940,
"target": 234847,
"peak": 199000,
"peak": 216500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 148,050 도달",
"cur_price": 187900,
"cur_price": 215500,
"tranches": 2,
"tranche_value": 1822449.0314863992,
"last_add_price": 177000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138200,
"cur_price": 130300,
"tranches": 2,
"tranche_value": 4062274.8724324326,
"last_add_price": 136900
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 186200,
"cur_price": 181100,
"tranches": 2,
"tranche_value": 4430210.138478563,
"last_add_price": 191000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,971 도달",
"cur_price": 12270,
"cur_price": 11860,
"tranches": 2,
"tranche_value": 2408114.6712393723,
"last_add_price": 13850
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 151,752 도달",
"cur_price": 126000,
"cur_price": 128100,
"tranches": 2,
"tranche_value": 1971330.1207604639,
"last_add_price": 139100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 330000,
"cur_price": 318000,
"tranches": 1,
"tranche_value": 3951428.5123865386,
"last_add_price": 341500
@@ -166,5 +166,5 @@
"003490": "2026-07-13"
},
"created_at": "2026-06-11T09:00:01.944132+09:00",
"updated_at": "2026-07-13T15:28:06.508565+09:00"
"updated_at": "2026-07-14T15:28:02.068812+09:00"
}

Some files were not shown because too many files have changed in this diff Show More