auto: 일일 백업 2026-06-13 02:00

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-06-13 02:00:02 +09:00
parent 137b160a09
commit c749e66460
153 changed files with 1169 additions and 531 deletions
+275 -20
View File
@@ -68,7 +68,7 @@ PTR_HTML = """
# 전체 리로드여도 보던 화면이 유지되게 한다 (자동·당겨서·수동 새로고침 공통).
REFRESH_JS = """
<script>(function(){
var TABS=['lab','watch','market'],SUBS=['bt','cmp'];
var TABS=['lab','watch','market'],SUBS=['bt','cmp','day'];
var p=new URLSearchParams(location.search);
var t=p.get('t'),s=p.get('s'),vw=p.get('view');
if(SUBS.indexOf(t)>=0){s=t;t='lab';} /* 레거시 ?t=bt/cmp 하위호환 */
@@ -79,7 +79,10 @@ REFRESH_JS = """
function simURL(){
var cur=TABS.find(function(x){var e=document.getElementById('tab-'+x);return e&&e.checked;});
var sub=SUBS.find(function(x){var e=document.getElementById('sub-'+x);return e&&e.checked;});
return '/?t='+(cur||'lab')+(cur==='lab'?'&s='+(sub||'cmp'):'')+((cur==='watch'&&vw)?'&view='+encodeURIComponent(vw):'');
var u='/?t='+(cur||'lab')+(cur==='lab'?'&s='+(sub||'cmp'):'')+((cur==='watch'&&vw)?'&view='+encodeURIComponent(vw):'');
if(cur==='lab'&&sub==='day'){var dd=new URLSearchParams(location.search).get('d');
if(dd)u+='&d='+encodeURIComponent(dd);} /* 거래목록 선택 날짜 보존 */
return u;
}
window._simURL=simURL;
function syncUrl(){try{history.replaceState(null,'',simURL());}catch(e){}}
@@ -914,6 +917,12 @@ def _compare_panel() -> str:
# 스캔 시점 '노리는 종목' (variants_compare.json) — id별 매핑
watch_map = {c['id']: c.get('watching', [])
for c in (_load(vmod.COMPARE_PATH, {}) or {}).get('variants', [])}
# 라이브 거래일수 — equity_history.json 에 거래일마다 (id,ph) 1점씩 → 등장한 거래일 수 (백테스트 제외)
_eh = _load(config.STATE_DIR / 'equity_history.json', {}) or {}
live_days: dict = {}
for _d, _items in _eh.items():
for _e in _items:
live_days.setdefault((_e.get('id'), _e.get('ph')), set()).add(_d)
def _row(rid, name, params, pf, tpath):
s = pf.summary()
@@ -961,13 +970,12 @@ def _compare_panel() -> str:
scanned = _load(config.LAST_SCAN_PATH, {}).get('scanned_at', '')[:16].replace('T', ' ')
head = (f'<div class="sub">실시간 누적 비교 · 마지막 스캔 {scanned or ""} '
f'· 전략 {len(rows_data)}개</div>')
clear_btn = ('' if not defs else
'<form method="post" action="/variants_clear_all" style="display:inline;margin-left:8px" '
'onsubmit="return confirm(\'메인을 제외한 비교군 변이를 전부 삭제할까요?\')">'
f'<button type="submit" class="cmp-clear">🗑 전체삭제 {len(defs)}</button></form>')
bt_btn = ('<label for="sub-bt" class="cmp-btlink" role="button" tabindex="0" '
'title="백테스트 순위표 보기">📊 모의결과보기</label>')
title = f'<h2 class="cmp-title">병렬 페이퍼 비교{clear_btn}{bt_btn}</h2>'
day_btn = ('<label for="sub-day" class="cmp-btlink" role="button" tabindex="0" '
'title="날짜별 거래 종목">📋 거래목록</label>')
title = (f'<div class="cmp-title"><h2>병렬 페이퍼 비교</h2>'
f'<div class="cmp-acts">{bt_btn}{day_btn}</div></div>')
rows = ''
for i, v in enumerate(rows_data):
s = v['summary']
@@ -982,6 +990,8 @@ def _compare_panel() -> str:
mf_sum = _market_fit_summary(mp)
mf_w = _market_fit_words(mp)
bm = _bear_mode(mp)
_ph = hashlib.md5(json.dumps(mp, sort_keys=True).encode()).hexdigest()[:8]
ndays = len(live_days.get((v['id'], _ph), ()))
w = watch_map.get(v['id'], [])
_STL = {'BUY': '🟢 매수', 'ADD': '🟢 추격', 'WAIT': '🟡 대기'}
watch_html = ''.join(
@@ -1029,6 +1039,7 @@ def _compare_panel() -> str:
f'<div class="kv"><span class="k">약세장대처</span><span><b>{_BEAR_NAME[bm]}</b>'
f'<button type="button" class="chk-i" data-title="약세장대처 — {_BEAR_NAME[bm]}" '
f'data-detail="{_esc(_BEAR_DESC[bm] + _BEAR_LEGEND)}">ⓘ</button></span></div>'
f'<div class="kv"><span class="k">운영 기간</span><span>{ndays or ""}거래일째 <span class="muted">(백테스트 제외)</span></span></div>'
f'<div class="kv"><span class="k">평가자산</span><span>{s.get("equity",0):,}원</span></div>'
f'<div class="kv"><span class="k">예수금 / 주식</span><span>{s.get("cash",0):,} / {s.get("held_value",0):,}</span></div>'
f'<div class="kv"><span class="k">수익률</span><span style="color:{rc}">{ret:+g}%</span></div>'
@@ -1262,7 +1273,7 @@ td:first-child,th:first-child{text-align:left}
# 종합 코멘트 (결정론 — LLM 미경유)
notes = []
rk_s = f'#{rank}위/{len(ranked)}' if rank else '순위 산정 전'
notes.append(f'운영 {len(series) or 1}일째 · 현재 {rk_s} · 누적 <b>{ret:+.2f}%</b>')
notes.append(f'라이브 {len(series) or 1}거래일째(백테스트 제외) · 현재 {rk_s} · 누적 <b>{ret:+.2f}%</b>')
ak = (bench.get('KOSPI') or {}).get('alpha')
if ak is not None:
notes.append(f'같은 기간 KOSPI 대비 <b>{ak:+.2f}%p</b> — '
@@ -1359,6 +1370,201 @@ td:first-child,th:first-child{text-align:left}
</body></html>"""
_DAY_CAL_JS = """<script>(function(){
var TD=__DATES__, SEL='__SEL__', TODAY='__TODAY__';
var tset={}; TD.forEach(function(d){tset[d]=1;});
var box=document.getElementById('day-cal'); if(!box)return;
var cur=(SEL||TD[0]||'').slice(0,7); /* 표시 중인 YYYY-MM */
var WD=['','','','','','',''];
function pad(n){return ('0'+n).slice(-2);}
function render(){
var p=cur.split('-'), y=+p[0], m=+p[1];
var startDow=new Date(y,m-1,1).getDay(), ndays=new Date(y,m,0).getDate();
var minYM=(TD[TD.length-1]||'').slice(0,7), maxYM=(TD[0]||'').slice(0,7);
var h='<div class="cal-hd">'
+'<button type="button" data-nav="-1"'+(cur<=minYM?' disabled':'')+'></button>'
+'<span>'+y+'.'+pad(m)+'</span>'
+'<button type="button" data-nav="1"'+(cur>=maxYM?' disabled':'')+'></button></div>';
h+='<div class="cal-grid">';
WD.forEach(function(w){h+='<div class="cal-wd">'+w+'</div>';});
for(var i=0;i<startDow;i++)h+='<div></div>';
for(var d=1;d<=ndays;d++){
var ds=y+'-'+pad(m)+'-'+pad(d);
var cls='cal-d'+(ds===TODAY?' tdy':'');
if(tset[ds]){h+='<a class="'+cls+' on'+(ds===SEL?' sel':'')+'" data-d="'+ds+'" href="/?t=lab&s=day&d='+ds+'">'+d+'</a>';}
else{h+='<span class="'+cls+' off">'+d+'</span>';}
}
h+='</div>';
box.innerHTML=h;
box.querySelectorAll('[data-nav]').forEach(function(b){
b.addEventListener('click',function(){
if(b.disabled)return;
var p=cur.split('-'), nm=+p[1]+(+b.dataset.nav), ny=+p[0];
if(nm<1){nm=12;ny--;} if(nm>12){nm=1;ny++;}
cur=ny+'-'+pad(nm); render();
});
});
box.querySelectorAll('.cal-d.on').forEach(function(a){
a.addEventListener('click',function(e){ e.preventDefault(); pick(a.getAttribute('data-d')); });
});
}
var loading=false;
function pick(ds){
/* 날짜 선택 — 달력 닫지 않고 거래내역만 fetch 갱신. 로딩 표시로 진행 상태를 보여줌 */
if(loading)return; loading=true;
var url='/?t=lab&s=day&d='+ds;
var clbl=document.getElementById('day-sel-label');
if(clbl)clbl.innerHTML=ds+' <span class="day-load">⏳ 불러오는 중…</span>';
var rowsEl=document.getElementById('day-rows');
if(rowsEl)rowsEl.style.opacity='.35'; /* 갱신 중 흐리게 */
SEL=ds; render(); /* 선택 하이라이트 즉시 이동(반응성) */
fetch(url).then(function(r){return r.text();}).then(function(html){
var doc=new DOMParser().parseFromString(html,'text/html');
['day-rows','day-sub'].forEach(function(id){
var nw=doc.getElementById(id), cu=document.getElementById(id);
if(nw&&cu)cu.innerHTML=nw.innerHTML;
});
var lbl=doc.getElementById('day-sel-label');
if(lbl&&clbl)clbl.innerHTML=lbl.innerHTML;
if(rowsEl)rowsEl.style.opacity='';
try{history.replaceState(null,'',url);}catch(e){}
loading=false;
}).catch(function(){
if(clbl)clbl.innerHTML=ds+' <span class="day-load" style="color:#ef4444">불러오기 실패 · 다시 탭</span>';
if(rowsEl)rowsEl.style.opacity='';
loading=false;
});
}
render();
var cb=document.getElementById('day-cal-close');
if(cb)cb.addEventListener('click',function(){
var w=document.getElementById('day-cal-wrap'); if(w)w.open=false;
});
})();</script>"""
def _day_trades_panel(sel_date: str | None = None) -> str:
"""전 전략(변이)이 거래한 종목 — 날짜별 매수/매도 집계. sel_date=YYYY-MM-DD (없으면 최근 거래일)."""
from . import variants as vmod
# 순위맵 (비교 스냅샷) — 전략번호 옆 현재 순위
cv = [c for c in (_load(vmod.COMPARE_PATH, {}) or {}).get('variants', []) if c.get('id') != 'main']
ranked = sorted(cv, key=lambda c: c['summary'].get('total_return_pct', 0) or 0, reverse=True)
rank_map = {c['id']: n + 1 for n, c in enumerate(ranked)}
# 전 전략 거래로그 1회 로드 — 날짜 목록 + 선택일 집계 동시 처리
all_rows = [] # (date, vid, record)
for v in vmod.load_variants():
_, tp = vmod.variant_paths(v['id'])
if not tp.exists():
continue
for ln in tp.read_text().splitlines():
if not ln.strip():
continue
try:
r = json.loads(ln)
except Exception:
continue
d = str(r.get('ts', ''))[:10]
if d:
all_rows.append((d, v['id'], r))
dates = sorted({d for d, _, _ in all_rows}, reverse=True) # 최신순
back = '<label for="sub-cmp" class="cmp-btlink" role="button" tabindex="0">← 비교로</label>'
if not dates:
return (f'<h2 class="cmp-title">📋 거래목록 {back}</h2>'
'<div class="empty">아직 거래 기록이 없어요 — 스캔이 진입 조건을 기다리는 중</div>')
if sel_date not in dates:
sel_date = dates[0] # 기본 = 최근 거래일
# 달력형 날짜 선택 — 거래일만 밝게·클릭가능, 거래 없는 날은 어둡게. 월 이동은 JS(새로고침 X).
is_today = sel_date == datetime.now(config.KST).strftime('%Y-%m-%d')
cal_js = (_DAY_CAL_JS.replace('__DATES__', json.dumps(dates))
.replace('__SEL__', sel_date)
.replace('__TODAY__', datetime.now(config.KST).strftime('%Y-%m-%d')))
picker = (f'<details class="day-cal-wrap" id="day-cal-wrap"><summary>'
f'📅 <b id="day-sel-label">{sel_date}{" (오늘)" if is_today else ""}</b> '
f'<span class="muted">▾ 날짜 선택</span>'
f'</summary><div id="day-cal" class="day-cal"></div>'
f'<button type="button" id="day-cal-close" class="day-cal-close">닫기</button>'
f'{cal_js}</details>')
head = (f'<h2 class="cmp-title"><span>📋 거래목록</span>'
f'<div class="cmp-acts">{back}</div></h2>{picker}')
# 선택일 집계: (code, side) → {name, vids[], prices[], pnls[]}
agg: dict = {}
for d, vid, r in all_rows:
if d != sel_date:
continue
key = (r.get('code'), r.get('side'))
a = agg.setdefault(key, {'name': r.get('name', ''), 'vids': [],
'prices': [], 'pnls': [], 'reason': r.get('reason', ''),
'kinds': {}, 'time': r.get('ts', '')[11:16]})
a['vids'].append(vid)
if r.get('price'):
a['prices'].append(r['price'])
if r.get('side') == 'SELL':
if r.get('pnl_pct') is not None:
a['pnls'].append(r['pnl_pct'])
rsn = r.get('reason', '') or ''
kind = ('익절' if '익절' in rsn else '손절' if '손절' in rsn
else '추세이탈' if '이탈' in rsn else '청산')
a['kinds'][kind] = a['kinds'].get(kind, 0) + 1
for a in agg.values():
a['n'] = len(a['vids'])
if not agg:
return head + '<div class="empty">이 날은 거래가 없어요</div>'
# (종목, 방향) 단위로 한 아이템 — 같은 종목에 매수·매도 동시면 2개 아이템으로 분리.
# 정렬: 매도(청산) 먼저, 그다음 전략 수 많은 순.
_SIDE = {'BUY': ('매수', '🟢', '#22c55e'), 'SELL': ('매도', '🔴', '#ef4444')}
order = sorted(agg.items(),
key=lambda kv: (0 if kv[0][1] == 'SELL' else 1, -kv[1]['n']))
n_buy = sum(1 for (_, side) in agg if side == 'BUY')
n_sell = sum(1 for (_, side) in agg if side == 'SELL')
sub = (f'<div class="sub" id="day-sub">매수 {n_buy} · 매도 {n_sell} 아이템 (전 전략 합산, 종목·방향별 구분)</div>')
rows = ''
for (code, side), a in order:
label, emo, color = _SIDE.get(side, (side, '', '#9ca3af'))
ps = a['prices']
prng = (f'{min(ps):,}' if len(set(ps)) == 1 else f'{min(ps):,}~{max(ps):,}') if ps else ''
extra = ''
kind_badge = ''
kind_row = ''
if side == 'SELL':
if a['pnls']:
avg = sum(a['pnls']) / len(a['pnls'])
pc = '#22c55e' if avg >= 0 else '#ef4444'
extra = f' · <span style="color:{pc}">평균 {avg:+.1f}%</span>'
# 익절/손절 분류 — 매도 사유 기반. 요약엔 대표 1개, 본문엔 전체 내역
_KC = {'익절': '#22c55e', '손절': '#ef4444', '추세이탈': '#eab308', '청산': '#9ca3af'}
kinds = sorted(a['kinds'].items(), key=lambda kv: -kv[1])
if kinds:
top = kinds[0][0]
kind_badge = f'<span class="day-kind" style="color:{_KC[top]};border-color:{_KC[top]}">{top}</span> '
parts = ' · '.join(f'<span style="color:{_KC[k]}">{k} {c}</span>' for k, c in kinds)
kind_row = (f'<div class="kv"><span class="k">청산 유형</span><span>{parts}</span></div>')
vids = sorted(a['vids'], key=lambda x: rank_map.get(x, 999))
vid_str = ' '.join(
f'<a href="/strategy?id={x}" class="vchip">{_vid_disp(x)}'
+ (f'<span class="vr">{rank_map[x]}위</span>' if x in rank_map else '') + '</a>'
for x in vids)
rows += (
f'<details class="row"><summary>'
f'<span class="nm">{_esc(a["name"])}</span>'
f'<span class="rt">{kind_badge}<span class="day-badge" style="color:{color};border-color:{color}">'
f'{emo} {label} <b>{a["n"]}</b></span></span></summary>'
f'<div class="body">'
f'<div class="kv"><span class="k" style="color:{color}">{emo} {label} <b>{a["n"]}</b>개 전략</span>'
f'<span>{prng}{extra}</span></div>'
f'{kind_row}'
f'<div class="kv"><span class="k muted" style="font-size:11px">{a["time"]} · 사유</span>'
f'<span class="muted" style="font-size:11px">{_esc(a["reason"])[:30]}</span></div>'
f'<div class="vchips">{vid_str}</div>'
f'</div></details>')
return head + sub + f'<div id="day-rows">{rows}</div>'
def _engine_status(snap, asset_line) -> tuple[str, str]:
"""스캔 엔진 헬스 → (점 클래스 ok/idle/bad, 토스트 상세). 장중 최근스캔=초록, 장중 멈춤=빨강, 장외=대기."""
now = datetime.now(config.KST)
@@ -1394,6 +1600,7 @@ def _pos_table(pf) -> str:
pnl_amt = int(round((cur - entry) * qty))
pc = '#22c55e' if pnl >= 0 else '#ef4444'
evalv = cur * qty
costv = int(round(entry * qty))
trail = ' <span class="tag">트레일링</span>' if p.get('trailing_on') else ''
tr_n, tr_max = p.get('tranches', 1), config.ENTRY_TRANCHES
scaled = ' <span class="tag">일부익절</span>' if p.get('scaled_out') else ''
@@ -1405,6 +1612,7 @@ def _pos_table(pf) -> str:
f'<div class="body">'
f'<div class="kv"><span class="k">수량</span><span>{qty:,}주 <span class="muted">({tr_n}/{tr_max}분할)</span>{scaled}</span></div>'
f'<div class="kv"><span class="k">평단</span><span>{entry:,.0f}원</span></div>'
f'<div class="kv"><span class="k">매수금액</span><span>{costv:,}원</span></div>'
f'<div class="kv"><span class="k">평가금액</span><span>{evalv:,}원</span></div>'
f'<div class="kv"><span class="k">평가손익</span><span style="color:{pc}">{pnl_amt:+,}원 ({pnl:+.1f}%)</span></div>'
f'<div class="kv"><span class="k">손절</span><span>{p["stop"]:,}원</span></div>'
@@ -1503,7 +1711,8 @@ def _decision_card(d, watch_n: int = 0, held_n: int = 0, acc_detail: str = '') -
)
def render_html(view: str | None = None) -> str:
def render_html(view: str | None = None, day_date: str | None = None,
tab: str | None = None, sub: str | None = None) -> str:
snap = _load(config.LAST_SCAN_PATH, {})
from . import variants as vmod
_cv = [c for c in (_load(vmod.COMPARE_PATH, {}) or {}).get('variants', [])
@@ -1679,6 +1888,14 @@ def render_html(view: str | None = None) -> str:
market_html = _market_panel()
bt_html = _backtest_panel()
cmp_html = _compare_panel()
day_html = _day_trades_panel(day_date)
# 활성 탭/서브탭을 서버에서 미리 checked — JS가 로드 후 바꾸며 생기던 깜빡임 제거.
tab = tab if tab in ('lab', 'watch', 'market') else 'lab'
sub = sub if sub in ('cmp', 'bt', 'day') else 'cmp'
ck = {f'tab-{tab}': ' checked', f'sub-{sub}': ' checked'}
def _ck(rid):
return ck.get(rid, '')
return f"""<!doctype html><html lang=ko><head><meta charset=utf-8>
<meta name=viewport content="width=device-width,initial-scale=1">
@@ -1733,10 +1950,37 @@ h3.grp{{font-size:13px;margin:16px 0 8px;color:#cbd5e1}}
.mfit{{display:block;width:100%;margin:8px 0 2px;background:#0e2236;color:#7dd3fc;border:1px solid #1e3a5f;border-radius:8px;padding:8px;font-size:12px;font-weight:600;cursor:pointer}}
.bt-type{{margin:18px 0 8px;font-size:14px;font-weight:700;border-bottom:1px solid #1f2937;padding-bottom:5px}}
.bt-type .bt-type-d{{display:block;font-size:11px;font-weight:400;color:#9ca3af;margin-top:2px}}
.cmp-title{{display:flex;align-items:center}}
.cmp-clear{{background:#3a1518;color:#fca5a5;border:1px solid #7f1d1d;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:600;cursor:pointer}}
.cmp-btlink{{background:#0f2a3f;color:#7dd3fc;border:1px solid #1e3a5f;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:600;cursor:pointer;margin-left:8px;display:inline-block}}
.cmp-title{{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 6px}}
.cmp-title h2{{margin:0;flex:0 0 auto}}
.cmp-acts{{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:1 1 auto;justify-content:flex-end}}
.cmp-acts form{{margin:0}}
.day-badge{{border:1px solid;border-radius:6px;padding:2px 8px;font-size:11px;font-weight:600;white-space:nowrap}}
.day-kind{{border:1px solid;border-radius:6px;padding:2px 7px;font-size:10px;font-weight:600;white-space:nowrap}}
.vchips{{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 2px}}
.vchip{{display:inline-flex;align-items:center;gap:3px;background:#1e293b;color:#7dd3fc;border:1px solid #334155;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:600;text-decoration:none}}
.vchip .vr{{color:#94a3b8;font-size:9px;font-weight:500}}
.cmp-clear{{background:#3a1518;color:#fca5a5;border:1px solid #7f1d1d;border-radius:6px;padding:4px 9px;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}}
.cmp-btlink{{background:#0f2a3f;color:#7dd3fc;border:1px solid #1e3a5f;border-radius:6px;padding:4px 9px;font-size:11px;font-weight:600;cursor:pointer;display:inline-block;white-space:nowrap}}
#judge-view{{background:#141b24;border:1px solid #2a3142;color:#e5e7eb;border-radius:6px;padding:3px 6px;font-size:10px;max-width:88%}}
.day-cal-wrap{{margin:8px 0 4px;background:#111824;border:1px solid #1f2937;border-radius:10px;max-width:300px}}
.day-cal-wrap>summary{{cursor:pointer;padding:8px 10px;font-size:12px;list-style:none}}
.day-cal-wrap>summary::-webkit-details-marker{{display:none}}
.day-cal{{padding:2px 10px 8px}}
.cal-hd{{display:flex;justify-content:space-between;align-items:center;margin:2px 0 5px}}
.cal-hd button{{background:#1e293b;border:1px solid #334155;color:#7dd3fc;border-radius:5px;padding:2px 12px;font-size:13px;cursor:pointer}}
.cal-hd button:disabled{{opacity:.3;cursor:default}}
.cal-hd span{{font-weight:700;font-size:12px}}
.cal-grid{{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}}
.cal-wd{{text-align:center;font-size:9px;color:#64748b;padding:1px 0}}
.cal-d{{position:relative;text-align:center;padding:5px 0;border-radius:5px;font-size:11px;font-variant-numeric:tabular-nums}}
.cal-d.on{{background:#0f2a3f;color:#7dd3fc;border:1px solid #1e3a5f;font-weight:700;text-decoration:none;cursor:pointer}}
.cal-d.off{{color:#2c3848}}
.cal-d.sel{{background:#2563eb;color:#fff;border-color:#60a5fa;box-shadow:0 0 0 1px #60a5fa}}
.cal-d.tdy::after{{content:'';position:absolute;bottom:2px;left:50%;transform:translateX(-50%);width:3px;height:3px;border-radius:50%;background:#7dd3fc}}
.cal-d.tdy.sel::after{{background:#fff}}
.day-cal-close{{display:block;width:calc(100% - 20px);margin:4px 10px 10px;background:#1e293b;border:1px solid #334155;color:#cbd5e1;border-radius:6px;padding:7px;font-size:12px;cursor:pointer}}
.day-load{{font-size:11px;color:#7dd3fc;font-weight:400}}
#day-rows{{transition:opacity .12s}}
.fav-b{{background:none;border:none;font-size:13px;cursor:pointer;padding:0 2px;line-height:1;flex:0 0 auto}}
.fav-none{{opacity:.35;filter:grayscale(1)}}
.fav-grid{{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:8px;margin:10px 0;padding-bottom:4px}}
@@ -1808,7 +2052,7 @@ input[name="tab"],input[name="subtab"]{{display:none}}
.btn-mini{{background:#1e3a8a;color:#fff;border:1px solid #2952cc;border-radius:7px;padding:9px 11px;font-size:12px;font-weight:600;cursor:pointer;width:100%}}
.btn-mini.btn-warn{{background:#3f2d0a;border-color:#b45309;color:#fcd34d}}
.btn-mini.btn-danger{{background:#3b1213;border-color:#b91c1c;color:#fca5a5}}
#sub-cmp:checked~#p-lab #ps-cmp,#sub-bt:checked~#p-lab #ps-bt{{display:block}}
#sub-cmp:checked~#p-lab #ps-cmp,#sub-bt:checked~#p-lab #ps-bt,#sub-day:checked~#p-lab #ps-day{{display:block}}
.btn-apply{{background:#15803d;color:#fff;border:1px solid #16a34a;border-radius:8px;padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer;width:100%}}
.tabs label{{font-size:12px;padding:9px 4px}}
.prow{{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid #161e29}}
@@ -1837,11 +2081,12 @@ input[name="tab"],input[name="subtab"]{{display:none}}
</style></head><body>
<div id="ptr"><span class="arrow">↓</span><span class="spinner"></span></div>
<div id="page">
<input type="radio" name="tab" id="tab-lab" checked>
<input type="radio" name="tab" id="tab-watch">
<input type="radio" name="tab" id="tab-market">
<input type="radio" name="subtab" id="sub-cmp" checked>
<input type="radio" name="subtab" id="sub-bt">
<input type="radio" name="tab" id="tab-lab"{_ck('tab-lab')}>
<input type="radio" name="tab" id="tab-watch"{_ck('tab-watch')}>
<input type="radio" name="tab" id="tab-market"{_ck('tab-market')}>
<input type="radio" name="subtab" id="sub-cmp"{_ck('sub-cmp')}>
<input type="radio" name="subtab" id="sub-bt"{_ck('sub-bt')}>
<input type="radio" name="subtab" id="sub-day"{_ck('sub-day')}>
<header class="hd">
<h1>🪎 레이 자동매매 시뮬레이션 <span id="health" class="hdot {hcls}" data-detail="{_esc(hdetail)}" role="button" tabindex="0" title="시뮬 상태 보기"></span></h1>
<div class=sub>마지막 스캔 {scanned or ''} · 시장 {mkt_h}</div>
@@ -1864,6 +2109,7 @@ input[name="tab"],input[name="subtab"]{{display:none}}
<section class="panel" id="p-lab">
<div class="subpanel" id="ps-cmp">{cmp_html}</div>
<div class="subpanel" id="ps-bt"><h2 class="cmp-title">백테스트 순위표 <label for="sub-cmp" class="cmp-btlink" role="button" tabindex="0">← 비교로</label></h2>{bt_html}</div>
<div class="subpanel" id="ps-day">{day_html}</div>
</section>
<div class=sub style="margin-top:20px">60초 자동 새로고침 · 당겨서 새로고침 · sim/ 가상 엔진 (실주문 아님)</div>
</div>
@@ -1906,8 +2152,17 @@ class Handler(BaseHTTPRequestHandler):
self.send_response(404)
self.end_headers()
return
_view = (urllib.parse.parse_qs(parsed.query).get('view') or ['main'])[0]
body = render_html(view=_view).encode('utf-8')
_qs = urllib.parse.parse_qs(parsed.query)
_view = (_qs.get('view') or ['main'])[0]
_dd = (_qs.get('d') or [None])[0]
_tab = (_qs.get('t') or [None])[0]
_sub = (_qs.get('s') or [None])[0]
# 레거시 ?t=bt/cmp/day (서브탭이 t로 옴) 하위호환 — REFRESH_JS와 동일 규칙
if _tab in ('bt', 'cmp', 'day'):
_sub, _tab = _tab, 'lab'
if _tab in ('acct', 'tune'):
_tab = 'lab'
body = render_html(view=_view, day_date=_dd, tab=_tab, sub=_sub).encode('utf-8')
self.send_response(200)
self.send_header('Content-Type', 'text/html; charset=utf-8')
# 캐시 금지 — Safari 휴리스틱 캐싱이 옛 HTML/JS를 재사용해 탭 복원 로직이 구버전으로 돌던 문제 방지
@@ -28,3 +28,5 @@
{"date": "2026-06-10", "market": "KOSPI", "market_label": "코스피", "rise": 343, "upper": 2, "fall": 550, "lower": 0, "steady": 28, "adr": 62.73, "personal": 48643, "foreign": -27754, "institutional": -22665, "captured_at": "2026-06-10T21:00:04.276904+09:00"}
{"date": "2026-06-11", "market": "KOSDAQ", "market_label": "코스닥", "rise": 1219, "upper": 10, "fall": 457, "lower": 0, "steady": 59, "adr": 268.93, "personal": -3634, "foreign": -3601, "institutional": 7149, "captured_at": "2026-06-11T21:00:01.845336+09:00"}
{"date": "2026-06-11", "market": "KOSPI", "market_label": "코스피", "rise": 576, "upper": 3, "fall": 320, "lower": 0, "steady": 25, "adr": 180.94, "personal": 20803, "foreign": -14640, "institutional": -7561, "captured_at": "2026-06-11T21:00:01.845336+09:00"}
{"date": "2026-06-12", "market": "KOSDAQ", "market_label": "코스닥", "rise": 1318, "upper": 9, "fall": 371, "lower": 0, "steady": 47, "adr": 357.68, "personal": -9416, "foreign": 2769, "institutional": 6315, "captured_at": "2026-06-12T21:00:03.422609+09:00"}
{"date": "2026-06-12", "market": "KOSPI", "market_label": "코스피", "rise": 756, "upper": 3, "fall": 144, "lower": 0, "steady": 18, "adr": 527.08, "personal": -43174, "foreign": 22041, "institutional": 22870, "captured_at": "2026-06-12T21:00:03.422609+09:00"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943184+09:00",
"updated_at": "2026-06-11T15:25:06.464885+09:00"
"updated_at": "2026-06-12T15:25:02.233392+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943289+09:00",
"updated_at": "2026-06-11T15:25:06.550097+09:00"
"updated_at": "2026-06-12T15:25:03.011659+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944222+09:00",
"updated_at": "2026-06-11T15:25:07.503889+09:00"
"updated_at": "2026-06-12T15:25:03.143491+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944232+09:00",
"updated_at": "2026-06-11T15:25:07.505039+09:00"
"updated_at": "2026-06-12T15:25:03.144663+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944241+09:00",
"updated_at": "2026-06-11T15:25:07.506218+09:00"
"updated_at": "2026-06-12T15:25:03.145850+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944251+09:00",
"updated_at": "2026-06-11T15:25:07.507372+09:00"
"updated_at": "2026-06-12T15:25:03.147039+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944261+09:00",
"updated_at": "2026-06-11T15:25:07.508515+09:00"
"updated_at": "2026-06-12T15:25:03.148171+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 93565534.975,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 27,
"entry_price": 238277.77777777778,
"entry_at": "2026-06-12T09:00:34.009427+09:00",
"stop": 203394,
"target": 308046,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3332473.3402132783,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 100666534.975,
"max_drawdown": 0.005230139292375102,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944270+09:00",
"updated_at": "2026-06-11T15:25:07.509676+09:00"
"updated_at": "2026-06-12T15:25:03.149359+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:34.009437+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 14, "cost": 3255488, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 197616, "target": 302268, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.174047+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 13, "cost": 3178977, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 197616, "target": 302268, "signals": [{"label": "손절선", "ok": true, "detail": "197,616 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 302,268"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -1,5 +1,5 @@
{
"cash": 96383457.6,
"cash": 92805420.975,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 16,
"entry_price": 226000,
"qty": 31,
"entry_price": 232048.38709677418,
"entry_at": "2026-06-11T10:25:02.231934+09:00",
"stop": 195800,
"target": 286400,
"peak": 226000,
"stop": 197164,
"target": 301817,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3741721.8543046354,
"last_add_price": 226000
"last_add_price": 238500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0010454240000000595,
"peak_equity": 100958420.975,
"max_drawdown": 0.0059876134567287895,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944280+09:00",
"updated_at": "2026-06-11T15:25:07.510844+09:00"
"updated_at": "2026-06-12T15:25:03.150563+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T10:25:02.231935+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 226000, "qty": 16, "cost": 3616542, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 286400, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "226,000 vs 224,445"}, {"label": "정배열(5>20)", "ok": true, "detail": "257,000 / 224,445"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "257,000 / 215,498"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -85 · 기 +1,187 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.51% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "10,205,151 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "6.51% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 226,000)"}]}
{"ts": "2026-06-12T09:20:02.965943+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 238500, "qty": 15, "cost": 3578037, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 286400, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 238,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 286,400"}, {"label": "추세(20일선)", "ok": true, "detail": "225,070"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 237,628"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944290+09:00",
"updated_at": "2026-06-11T15:25:07.512007+09:00"
"updated_at": "2026-06-12T15:25:03.151726+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.944300+09:00",
"updated_at": "2026-06-11T15:25:07.513155+09:00"
"updated_at": "2026-06-12T15:25:03.152868+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943299+09:00",
"updated_at": "2026-06-11T15:25:06.552450+09:00"
"updated_at": "2026-06-12T15:25:03.014412+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943310+09:00",
"updated_at": "2026-06-11T15:25:06.554689+09:00"
"updated_at": "2026-06-12T15:25:03.016933+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943320+09:00",
"updated_at": "2026-06-11T15:25:07.358839+09:00"
"updated_at": "2026-06-12T15:25:03.024987+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943331+09:00",
"updated_at": "2026-06-11T15:25:07.366171+09:00"
"updated_at": "2026-06-12T15:25:03.027412+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943342+09:00",
"updated_at": "2026-06-11T15:25:07.370543+09:00"
"updated_at": "2026-06-12T15:25:03.029560+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943352+09:00",
"updated_at": "2026-06-11T15:25:07.374468+09:00"
"updated_at": "2026-06-12T15:25:03.031721+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943361+09:00",
"updated_at": "2026-06-11T15:25:07.377881+09:00"
"updated_at": "2026-06-12T15:25:03.033694+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943371+09:00",
"updated_at": "2026-06-11T15:25:07.381990+09:00"
"updated_at": "2026-06-12T15:25:03.035650+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943381+09:00",
"updated_at": "2026-06-11T15:25:07.385291+09:00"
"updated_at": "2026-06-12T15:25:03.037555+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 87840676.375,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 51,
"entry_price": 238382.35294117648,
"entry_at": "2026-06-12T09:00:04.966877+09:00",
"stop": 195800,
"target": 366129,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 101253676.375,
"max_drawdown": 0.009821865591495171,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943203+09:00",
"updated_at": "2026-06-11T15:25:06.526338+09:00"
"updated_at": "2026-06-12T15:25:02.979059+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:04.966891+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 342600, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.007017+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 25, "cost": 6113417, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 342600, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 342,600"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943391+09:00",
"updated_at": "2026-06-11T15:25:07.388354+09:00"
"updated_at": "2026-06-12T15:25:03.039344+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943400+09:00",
"updated_at": "2026-06-11T15:25:07.391455+09:00"
"updated_at": "2026-06-12T15:25:03.041123+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 95790868.725,
"cash": 91605240.975,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 19,
"entry_price": 221500,
"qty": 37,
"entry_price": 226851.35135135136,
"entry_at": "2026-06-11T12:45:02.417933+09:00",
"stop": 195800,
"target": 272900,
"peak": 224000,
"target": 288954,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 4309338.521400778,
"last_add_price": 221500
"last_add_price": 232500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100046868.725,
"max_drawdown": 0.0004747774778495448,
"peak_equity": 101336240.975,
"max_drawdown": 0.0071198614933624445,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943410+09:00",
"updated_at": "2026-06-11T15:25:07.394259+09:00"
"updated_at": "2026-06-12T15:25:03.042846+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T12:45:02.417938+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 221500, "qty": 19, "cost": 4209131, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 272900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "221,000 vs 218,048"}, {"label": "정배열(5>20)", "ok": true, "detail": "256,000 / 218,048"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "256,000 / 215,415"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+3.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -132 · 기 +1,200 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+49%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "3.39% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "5,311,497 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "3.39% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "48"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 221,000)"}]}
{"ts": "2026-06-12T09:00:25.290561+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 18, "cost": 4185628, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 272900, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 233,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 272,900"}, {"label": "추세(20일선)", "ok": true, "detail": "218,360"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 233,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943420+09:00",
"updated_at": "2026-06-11T15:25:07.396835+09:00"
"updated_at": "2026-06-12T15:25:03.044538+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 95790868.725,
"cash": 91605240.975,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 19,
"entry_price": 221500,
"qty": 37,
"entry_price": 226851.35135135136,
"entry_at": "2026-06-11T12:45:02.424478+09:00",
"stop": 195800,
"target": 272900,
"peak": 224000,
"target": 288954,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 4309338.521400778,
"last_add_price": 221500
"last_add_price": 232500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100046868.725,
"max_drawdown": 0.0004747774778495448,
"peak_equity": 101336240.975,
"max_drawdown": 0.0071198614933624445,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943430+09:00",
"updated_at": "2026-06-11T15:25:07.399194+09:00"
"updated_at": "2026-06-12T15:25:03.046214+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T12:45:02.424482+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 221500, "qty": 19, "cost": 4209131, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 272900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "221,000 vs 218,048"}, {"label": "정배열(5>20)", "ok": true, "detail": "256,000 / 218,048"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "256,000 / 215,415"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+3.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -132 · 기 +1,200 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+49%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "3.39% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "5,311,497 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "3.39% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "48"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 221,000)"}]}
{"ts": "2026-06-12T09:00:25.485302+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 18, "cost": 4185628, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 272900, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 233,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 272,900"}, {"label": "추세(20일선)", "ok": true, "detail": "218,360"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 233,128"}]}
@@ -1,5 +1,5 @@
{
"cash": 95790868.725,
"cash": 91605240.975,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 19,
"entry_price": 221500,
"qty": 37,
"entry_price": 226851.35135135136,
"entry_at": "2026-06-11T12:45:02.427828+09:00",
"stop": 195800,
"target": 260050,
"peak": 224000,
"target": 273428,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 4309338.521400778,
"last_add_price": 221500
"last_add_price": 232500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100046868.725,
"max_drawdown": 0.0004747774778495448,
"peak_equity": 101336240.975,
"max_drawdown": 0.0071198614933624445,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943440+09:00",
"updated_at": "2026-06-11T15:25:07.401623+09:00"
"updated_at": "2026-06-12T15:25:03.047871+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T12:45:02.427830+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 221500, "qty": 19, "cost": 4209131, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 260050, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "221,000 vs 218,048"}, {"label": "정배열(5>20)", "ok": true, "detail": "256,000 / 218,048"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "256,000 / 215,415"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+3.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -132 · 기 +1,200 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+49%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "3.39% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "5,311,497 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "3.39% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "48"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 221,000)"}]}
{"ts": "2026-06-12T09:00:25.581879+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 18, "cost": 4185628, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 260050, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 233,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 260,050"}, {"label": "추세(20일선)", "ok": true, "detail": "218,360"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 233,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943450+09:00",
"updated_at": "2026-06-11T15:25:07.403888+09:00"
"updated_at": "2026-06-12T15:25:03.049378+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 94042606.525,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 25,
"entry_price": 238260.0,
"entry_at": "2026-06-12T09:00:25.774636+09:00",
"stop": 195800,
"target": 323180,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3167574.931880109,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 100617606.525,
"max_drawdown": 0.004845076491447578,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943460+09:00",
"updated_at": "2026-06-11T15:25:07.406120+09:00"
"updated_at": "2026-06-12T15:25:03.050918+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:25.774643+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 13, "cost": 3022953, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 305900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.077741+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 12, "cost": 2934440, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 305900, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 305,900"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943470+09:00",
"updated_at": "2026-06-11T15:25:07.408165+09:00"
"updated_at": "2026-06-12T15:25:03.052403+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943480+09:00",
"updated_at": "2026-06-11T15:25:07.410164+09:00"
"updated_at": "2026-06-12T15:25:03.053831+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 87840676.375,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 51,
"entry_price": 238382.35294117648,
"entry_at": "2026-06-12T09:00:09.430821+09:00",
"stop": 195800,
"target": 302256,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 101253676.375,
"max_drawdown": 0.009821865591495171,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943216+09:00",
"updated_at": "2026-06-11T15:25:06.530101+09:00"
"updated_at": "2026-06-12T15:25:02.986645+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:09.430828+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 287550, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.018369+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 25, "cost": 6113417, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 287550, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 287,550"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943489+09:00",
"updated_at": "2026-06-11T15:25:07.412089+09:00"
"updated_at": "2026-06-12T15:25:03.055325+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 94042606.525,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 25,
"entry_price": 238260.0,
"entry_at": "2026-06-12T09:00:26.164560+09:00",
"stop": 195800,
"target": 301950,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3167574.931880109,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 100617606.525,
"max_drawdown": 0.004845076491447578,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943499+09:00",
"updated_at": "2026-06-11T15:25:07.413928+09:00"
"updated_at": "2026-06-12T15:25:03.056763+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:26.164570+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 13, "cost": 3022953, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 287550, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.083403+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 12, "cost": 2934440, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 287550, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 287,550"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943509+09:00",
"updated_at": "2026-06-11T15:25:07.415765+09:00"
"updated_at": "2026-06-12T15:25:03.058148+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943518+09:00",
"updated_at": "2026-06-11T15:25:07.417573+09:00"
"updated_at": "2026-06-12T15:25:03.059514+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943528+09:00",
"updated_at": "2026-06-11T15:25:07.419366+09:00"
"updated_at": "2026-06-12T15:25:03.060852+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 93565534.975,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 27,
"entry_price": 238277.77777777778,
"entry_at": "2026-06-12T09:00:26.549147+09:00",
"stop": 203394,
"target": 308046,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3332473.3402132783,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 100666534.975,
"max_drawdown": 0.005230139292375102,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943540+09:00",
"updated_at": "2026-06-11T15:25:07.421149+09:00"
"updated_at": "2026-06-12T15:25:03.062186+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:26.549157+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 14, "cost": 3255488, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 197616, "target": 302268, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.088710+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 13, "cost": 3178977, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 197616, "target": 302268, "signals": [{"label": "손절선", "ok": true, "detail": "197,616 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 302,268"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943551+09:00",
"updated_at": "2026-06-11T15:25:07.422820+09:00"
"updated_at": "2026-06-12T15:25:03.063510+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943560+09:00",
"updated_at": "2026-06-11T15:25:07.424521+09:00"
"updated_at": "2026-06-12T15:25:03.064790+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943570+09:00",
"updated_at": "2026-06-11T15:25:07.426135+09:00"
"updated_at": "2026-06-12T15:25:03.066047+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 87840676.375,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 51,
"entry_price": 238382.35294117648,
"entry_at": "2026-06-12T09:00:26.941903+09:00",
"stop": 195800,
"target": 366129,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 101253676.375,
"max_drawdown": 0.009821865591495171,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943580+09:00",
"updated_at": "2026-06-11T15:25:07.427703+09:00"
"updated_at": "2026-06-12T15:25:03.067341+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:26.941912+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 342600, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.093759+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 25, "cost": 6113417, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 342600, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 342,600"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 87840676.375,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 51,
"entry_price": 238382.35294117648,
"entry_at": "2026-06-12T09:00:09.535925+09:00",
"stop": 195800,
"target": 323547,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 101253676.375,
"max_drawdown": 0.009821865591495171,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943227+09:00",
"updated_at": "2026-06-11T15:25:06.533738+09:00"
"updated_at": "2026-06-12T15:25:02.990969+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:09.535934+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 305900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.022583+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 25, "cost": 6113417, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 305900, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 305,900"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -1,5 +1,5 @@
{
"cash": 93897084.7,
"cash": 87695154.55,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 27,
"entry_price": 226000,
"qty": 53,
"entry_price": 232132.0754716981,
"entry_at": "2026-06-11T10:25:02.147016+09:00",
"stop": 195800,
"target": 316600,
"peak": 226000,
"target": 341128,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 226000
"last_add_price": 238500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0017641529999999702,
"peak_equity": 101634154.55,
"max_drawdown": 0.010168825672589806,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943590+09:00",
"updated_at": "2026-06-11T15:25:07.429284+09:00"
"updated_at": "2026-06-12T15:25:03.068671+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T10:25:02.147018+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 226000, "qty": 27, "cost": 6102915, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 316600, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "226,000 vs 224,445"}, {"label": "정배열(5>20)", "ok": true, "detail": "257,000 / 224,445"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "257,000 / 215,498"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -85 · 기 +1,187 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.51% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "10,205,151 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "6.51% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 226,000)"}]}
{"ts": "2026-06-12T09:20:02.881339+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 238500, "qty": 26, "cost": 6201930, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 316600, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 238,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 316,600"}, {"label": "추세(20일선)", "ok": true, "detail": "225,070"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 237,628"}]}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 87840676.375,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 51,
"entry_price": 238382.35294117648,
"entry_at": "2026-06-12T09:00:27.136804+09:00",
"stop": 195800,
"target": 302256,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 101253676.375,
"max_drawdown": 0.009821865591495171,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943599+09:00",
"updated_at": "2026-06-11T15:25:07.430807+09:00"
"updated_at": "2026-06-12T15:25:03.070070+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:27.136812+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 287550, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.096284+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 25, "cost": 6113417, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 287550, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 287,550"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -1,5 +1,5 @@
{
"cash": 93897084.7,
"cash": 87695154.55,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 27,
"entry_price": 226000,
"qty": 53,
"entry_price": 232132.0754716981,
"entry_at": "2026-06-11T10:25:02.151149+09:00",
"stop": 195800,
"target": 271300,
"peak": 226000,
"target": 286630,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 226000
"last_add_price": 238500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0017641529999999702,
"peak_equity": 101634154.55,
"max_drawdown": 0.010168825672589806,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943609+09:00",
"updated_at": "2026-06-11T15:25:07.432382+09:00"
"updated_at": "2026-06-12T15:25:03.071293+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T10:25:02.151151+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 226000, "qty": 27, "cost": 6102915, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 271300, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "226,000 vs 224,445"}, {"label": "정배열(5>20)", "ok": true, "detail": "257,000 / 224,445"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "257,000 / 215,498"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -85 · 기 +1,187 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.51% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "10,205,151 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "6.51% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 226,000)"}]}
{"ts": "2026-06-12T09:20:02.884489+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 238500, "qty": 26, "cost": 6201930, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 271300, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 238,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 271,300"}, {"label": "추세(20일선)", "ok": true, "detail": "225,070"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 237,628"}]}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 87840676.375,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 51,
"entry_price": 238382.35294117648,
"entry_at": "2026-06-12T09:00:27.330902+09:00",
"stop": 195800,
"target": 323547,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 101253676.375,
"max_drawdown": 0.009821865591495171,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943619+09:00",
"updated_at": "2026-06-11T15:25:07.433821+09:00"
"updated_at": "2026-06-12T15:25:03.072506+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:27.330912+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 195800, "target": 305900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.098759+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 25, "cost": 6113417, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 305900, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 305,900"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -1,5 +1,5 @@
{
"cash": 93897084.7,
"cash": 87695154.55,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 27,
"entry_price": 226000,
"qty": 53,
"entry_price": 232132.0754716981,
"entry_at": "2026-06-11T10:25:02.154758+09:00",
"stop": 195800,
"target": 286400,
"peak": 226000,
"target": 304796,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 226000
"last_add_price": 238500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0017641529999999702,
"peak_equity": 101634154.55,
"max_drawdown": 0.010168825672589806,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943633+09:00",
"updated_at": "2026-06-11T15:25:07.435257+09:00"
"updated_at": "2026-06-12T15:25:03.073728+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T10:25:02.154760+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 226000, "qty": 27, "cost": 6102915, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 286400, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "226,000 vs 224,445"}, {"label": "정배열(5>20)", "ok": true, "detail": "257,000 / 224,445"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "257,000 / 215,498"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -85 · 기 +1,187 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.51% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "10,205,151 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "6.51% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 226,000)"}]}
{"ts": "2026-06-12T09:20:02.887497+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 238500, "qty": 26, "cost": 6201930, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 286400, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 238,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 286,400"}, {"label": "추세(20일선)", "ok": true, "detail": "225,070"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 237,628"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943643+09:00",
"updated_at": "2026-06-11T15:25:07.436643+09:00"
"updated_at": "2026-06-12T15:25:03.074897+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943653+09:00",
"updated_at": "2026-06-11T15:25:07.438026+09:00"
"updated_at": "2026-06-12T15:25:03.076068+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 93565534.975,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 27,
"entry_price": 238277.77777777778,
"entry_at": "2026-06-12T09:00:27.724169+09:00",
"stop": 203394,
"target": 308046,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3332473.3402132783,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 100666534.975,
"max_drawdown": 0.005230139292375102,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943663+09:00",
"updated_at": "2026-06-11T15:25:07.439417+09:00"
"updated_at": "2026-06-12T15:25:03.079082+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:27.724180+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 14, "cost": 3255488, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 197616, "target": 302268, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.103581+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 13, "cost": 3178977, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 197616, "target": 302268, "signals": [{"label": "손절선", "ok": true, "detail": "197,616 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 302,268"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -1,5 +1,5 @@
{
"cash": 96383457.6,
"cash": 92805420.975,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,28 +8,28 @@
"sources": [
"interest"
],
"qty": 16,
"entry_price": 226000,
"qty": 31,
"entry_price": 232048.38709677418,
"entry_at": "2026-06-11T10:25:02.161225+09:00",
"stop": 195800,
"target": 286400,
"peak": 226000,
"stop": 197164,
"target": 301817,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 232,280 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3741721.8543046354,
"last_add_price": 226000
"last_add_price": 238500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0010454240000000595,
"peak_equity": 100958420.975,
"max_drawdown": 0.0059876134567287895,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943673+09:00",
"updated_at": "2026-06-11T15:25:07.440747+09:00"
"updated_at": "2026-06-12T15:25:03.080306+09:00"
}
@@ -1 +1,2 @@
{"ts": "2026-06-11T10:25:02.161226+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 226000, "qty": 16, "cost": 3616542, "path": "pullback", "reason": "눌림목 지정가 232,280 도달", "stop": 195800, "target": 286400, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "226,000 vs 224,445"}, {"label": "정배열(5>20)", "ok": true, "detail": "257,000 / 224,445"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "257,000 / 215,498"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+6.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -85 · 기 +1,187 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.51% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "10,205,151 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": true, "detail": "6.51% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 232,280 (현재 226,000)"}]}
{"ts": "2026-06-12T09:20:02.892942+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 238500, "qty": 15, "cost": 3578037, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 286400, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 238,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 286,400"}, {"label": "추세(20일선)", "ok": true, "detail": "225,070"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 237,628"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943683+09:00",
"updated_at": "2026-06-11T15:25:07.442090+09:00"
"updated_at": "2026-06-12T15:25:03.081520+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943238+09:00",
"updated_at": "2026-06-11T15:25:06.536744+09:00"
"updated_at": "2026-06-12T15:25:02.994749+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943693+09:00",
"updated_at": "2026-06-11T15:25:07.443439+09:00"
"updated_at": "2026-06-12T15:25:03.082720+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943703+09:00",
"updated_at": "2026-06-11T15:25:07.444730+09:00"
"updated_at": "2026-06-12T15:25:03.083918+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943713+09:00",
"updated_at": "2026-06-11T15:25:07.445992+09:00"
"updated_at": "2026-06-12T15:25:03.085112+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943722+09:00",
"updated_at": "2026-06-11T15:25:07.447250+09:00"
"updated_at": "2026-06-12T15:25:03.086287+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943732+09:00",
"updated_at": "2026-06-11T15:25:07.448510+09:00"
"updated_at": "2026-06-12T15:25:03.087429+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943741+09:00",
"updated_at": "2026-06-11T15:25:07.449695+09:00"
"updated_at": "2026-06-12T15:25:03.088595+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943751+09:00",
"updated_at": "2026-06-11T15:25:07.450870+09:00"
"updated_at": "2026-06-12T15:25:03.089739+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943761+09:00",
"updated_at": "2026-06-11T15:25:07.452053+09:00"
"updated_at": "2026-06-12T15:25:03.090890+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943771+09:00",
"updated_at": "2026-06-11T15:25:07.453242+09:00"
"updated_at": "2026-06-12T15:25:03.092056+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943780+09:00",
"updated_at": "2026-06-11T15:25:07.454393+09:00"
"updated_at": "2026-06-12T15:25:03.093232+09:00"
}
@@ -1,13 +1,35 @@
{
"cash": 100000000,
"cash": 93565534.975,
"initial": 100000000,
"positions": {},
"positions": {
"035420": {
"code": "035420",
"name": "NAVER",
"sources": [
"interest"
],
"qty": 27,
"entry_price": 238277.77777777778,
"entry_at": "2026-06-12T09:00:09.742410+09:00",
"stop": 203394,
"target": 308046,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 233,744 도달",
"cur_price": 247500,
"tranches": 2,
"tranche_value": 3332473.3402132783,
"last_add_price": 244500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100000000,
"max_drawdown": 0.0,
"peak_equity": 100666534.975,
"max_drawdown": 0.005230139292375102,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943248+09:00",
"updated_at": "2026-06-11T15:25:06.539716+09:00"
"updated_at": "2026-06-12T15:25:02.998173+09:00"
}
@@ -0,0 +1,2 @@
{"ts": "2026-06-12T09:00:09.742420+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 14, "cost": 3255488, "path": "pullback", "reason": "눌림목 지정가 233,744 도달", "stop": 197616, "target": 302268, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "233,500 vs 224,820"}, {"label": "정배열(5>20)", "ok": true, "detail": "258,500 / 224,820"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "258,500 / 215,623"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+8.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -159 · 기 +1,154 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.99% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": true, "detail": "4,694,733 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.99% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 233,744 (현재 233,500)"}]}
{"ts": "2026-06-12T10:25:04.029441+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 244500, "qty": 13, "cost": 3178977, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 197616, "target": 302268, "signals": [{"label": "손절선", "ok": true, "detail": "197,616 (현재 244,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 302,268"}, {"label": "추세(20일선)", "ok": true, "detail": "225,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -116 · 기 +1,185"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 244,128"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943790+09:00",
"updated_at": "2026-06-11T15:25:07.455538+09:00"
"updated_at": "2026-06-12T15:25:03.094381+09:00"
}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943802+09:00",
"updated_at": "2026-06-11T15:25:07.456761+09:00"
"updated_at": "2026-06-12T15:25:03.095654+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 88242436.63000001,
"cash": 76598690.33000001,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,20 +8,20 @@
"sources": [
"interest"
],
"qty": 28,
"entry_price": 220500,
"qty": 54,
"entry_price": 226277.77777777778,
"entry_at": "2026-06-11T09:00:18.583852+09:00",
"stop": 195800,
"target": 294600,
"peak": 227500,
"target": 317711,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 219,919 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 220500
"last_add_price": 232500
},
"064400": {
"code": "064400",
@@ -29,28 +29,28 @@
"sources": [
"interest"
],
"qty": 63,
"entry_price": 88600,
"qty": 121,
"entry_price": 92386.77685950413,
"entry_at": "2026-06-11T09:00:18.994914+09:00",
"stop": 72800,
"target": 136000,
"peak": 93900,
"stop": 72971,
"target": 150634,
"peak": 98500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 96,991 도달",
"cur_price": 92800,
"tranches": 1,
"cur_price": 92300,
"tranches": 2,
"tranche_value": 5607543.004772153,
"last_add_price": 88600
"last_add_price": 96500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100454286.63000001,
"max_drawdown": 0.0037524531072368034,
"peak_equity": 102463190.33000001,
"max_drawdown": 0.01628096875206872,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943812+09:00",
"updated_at": "2026-06-11T15:25:07.457973+09:00"
"updated_at": "2026-06-12T15:25:03.096892+09:00"
}
@@ -1,2 +1,4 @@
{"ts": "2026-06-11T09:00:18.583865+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 220500, "qty": 28, "cost": 6174926, "path": "pullback", "reason": "눌림목 지정가 219,919 도달", "stop": 195800, "target": 294600, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "219,000 vs 217,998"}, {"label": "정배열(5>20)", "ok": true, "detail": "255,600 / 217,998"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "255,600 / 215,382"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+4.7%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -136 · 기 +1,176 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+50%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.41% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "3,773,113 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.41% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "47"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 219,919 (현재 219,000)"}]}
{"ts": "2026-06-11T09:00:18.994932+09:00", "side": "BUY", "code": "064400", "name": "LG씨엔에스", "price": 88600, "qty": 63, "cost": 5582637, "path": "pullback", "reason": "눌림목 지정가 96,991 도달", "stop": 72800, "target": 136000, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "88,000 vs 78,822"}, {"label": "정배열(5>20)", "ok": true, "detail": "122,260 / 78,822"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "122,260 / 73,337"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+31.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +980 · 기 -117 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+8%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "3.58% (환산) vs 평균 4.14% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 153,300"}, {"label": "거래량 급증", "ok": false, "detail": "3,466,467 (환산) vs 평균 4,014,817"}, {"label": "회전율 급증", "ok": false, "detail": "3.58% (환산) vs 평균 4.14%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 96,991 (현재 88,000)"}]}
{"ts": "2026-06-12T09:00:29.275106+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 294600, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 233,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 294,600"}, {"label": "추세(20일선)", "ok": true, "detail": "218,360"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 232,128"}]}
{"ts": "2026-06-12T09:00:29.332295+09:00", "side": "BUY", "code": "064400", "name": "LG씨엔에스", "price": 96500, "qty": 58, "cost": 5597840, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 72800, "target": 136000, "signals": [{"label": "손절선", "ok": true, "detail": "72,800 (현재 97,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,000"}, {"label": "추세(20일선)", "ok": true, "detail": "79,050"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +810 · 기 +60"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 95,072"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943822+09:00",
"updated_at": "2026-06-11T15:25:07.459214+09:00"
"updated_at": "2026-06-12T15:25:03.098170+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 88242436.63000001,
"cash": 76598690.33000001,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,20 +8,20 @@
"sources": [
"interest"
],
"qty": 28,
"entry_price": 220500,
"qty": 54,
"entry_price": 226277.77777777778,
"entry_at": "2026-06-11T09:00:19.195639+09:00",
"stop": 195800,
"target": 257550,
"peak": 227500,
"target": 271994,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 219,919 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 220500
"last_add_price": 232500
},
"064400": {
"code": "064400",
@@ -29,28 +29,28 @@
"sources": [
"interest"
],
"qty": 63,
"entry_price": 88600,
"qty": 121,
"entry_price": 92386.77685950413,
"entry_at": "2026-06-11T09:00:19.197119+09:00",
"stop": 72800,
"target": 112300,
"peak": 93900,
"stop": 72971,
"target": 121510,
"peak": 98500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 96,991 도달",
"cur_price": 92800,
"tranches": 1,
"cur_price": 92300,
"tranches": 2,
"tranche_value": 5607543.004772153,
"last_add_price": 88600
"last_add_price": 96500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100454286.63000001,
"max_drawdown": 0.0037524531072368034,
"peak_equity": 102463190.33000001,
"max_drawdown": 0.01628096875206872,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943832+09:00",
"updated_at": "2026-06-11T15:25:07.460431+09:00"
"updated_at": "2026-06-12T15:25:03.099404+09:00"
}
@@ -1,2 +1,4 @@
{"ts": "2026-06-11T09:00:19.195649+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 220500, "qty": 28, "cost": 6174926, "path": "pullback", "reason": "눌림목 지정가 219,919 도달", "stop": 195800, "target": 257550, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "219,000 vs 217,998"}, {"label": "정배열(5>20)", "ok": true, "detail": "255,600 / 217,998"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "255,600 / 215,382"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+4.7%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -136 · 기 +1,176 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+50%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.41% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "3,773,113 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.41% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "47"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 219,919 (현재 219,000)"}]}
{"ts": "2026-06-11T09:00:19.197125+09:00", "side": "BUY", "code": "064400", "name": "LG씨엔에스", "price": 88600, "qty": 63, "cost": 5582637, "path": "pullback", "reason": "눌림목 지정가 96,991 도달", "stop": 72800, "target": 112300, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "88,000 vs 78,822"}, {"label": "정배열(5>20)", "ok": true, "detail": "122,260 / 78,822"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "122,260 / 73,337"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+31.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +980 · 기 -117 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+8%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "3.58% (환산) vs 평균 4.14% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 153,300"}, {"label": "거래량 급증", "ok": false, "detail": "3,466,467 (환산) vs 평균 4,014,817"}, {"label": "회전율 급증", "ok": false, "detail": "3.58% (환산) vs 평균 4.14%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 96,991 (현재 88,000)"}]}
{"ts": "2026-06-12T09:00:29.538667+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 257550, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 233,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 257,550"}, {"label": "추세(20일선)", "ok": true, "detail": "218,360"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 232,128"}]}
{"ts": "2026-06-12T09:00:29.540549+09:00", "side": "BUY", "code": "064400", "name": "LG씨엔에스", "price": 96500, "qty": 58, "cost": 5597840, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 72800, "target": 112300, "signals": [{"label": "손절선", "ok": true, "detail": "72,800 (현재 97,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 112,300"}, {"label": "추세(20일선)", "ok": true, "detail": "79,050"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +810 · 기 +60"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 95,072"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943843+09:00",
"updated_at": "2026-06-11T15:25:07.461661+09:00"
"updated_at": "2026-06-12T15:25:03.100667+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 88242436.63000001,
"cash": 76598690.33000001,
"initial": 100000000,
"positions": {
"035420": {
@@ -8,20 +8,20 @@
"sources": [
"interest"
],
"qty": 28,
"entry_price": 220500,
"qty": 54,
"entry_price": 226277.77777777778,
"entry_at": "2026-06-11T09:00:19.398879+09:00",
"stop": 195800,
"target": 269900,
"peak": 227500,
"target": 287233,
"peak": 263000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 219,919 도달",
"cur_price": 222000,
"tranches": 1,
"cur_price": 247500,
"tranches": 2,
"tranche_value": 6250000.0,
"last_add_price": 220500
"last_add_price": 232500
},
"064400": {
"code": "064400",
@@ -29,28 +29,28 @@
"sources": [
"interest"
],
"qty": 63,
"entry_price": 88600,
"qty": 121,
"entry_price": 92386.77685950413,
"entry_at": "2026-06-11T09:00:19.400261+09:00",
"stop": 72800,
"target": 120200,
"peak": 93900,
"stop": 72971,
"target": 131218,
"peak": 98500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 96,991 도달",
"cur_price": 92800,
"tranches": 1,
"cur_price": 92300,
"tranches": 2,
"tranche_value": 5607543.004772153,
"last_add_price": 88600
"last_add_price": 96500
}
},
"realized_pnl": 0.0,
"closed_trades": 0,
"wins": 0,
"peak_equity": 100454286.63000001,
"max_drawdown": 0.0037524531072368034,
"peak_equity": 102463190.33000001,
"max_drawdown": 0.01628096875206872,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943852+09:00",
"updated_at": "2026-06-11T15:25:07.462900+09:00"
"updated_at": "2026-06-12T15:25:03.101926+09:00"
}
@@ -1,2 +1,4 @@
{"ts": "2026-06-11T09:00:19.398889+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 220500, "qty": 28, "cost": 6174926, "path": "pullback", "reason": "눌림목 지정가 219,919 도달", "stop": 195800, "target": 269900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "219,000 vs 217,998"}, {"label": "정배열(5>20)", "ok": true, "detail": "255,600 / 217,998"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "255,600 / 215,382"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+4.7%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -136 · 기 +1,176 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+50%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.41% (환산) vs 평균 2.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 304,000"}, {"label": "거래량 급증", "ok": false, "detail": "3,773,113 (환산) vs 평균 3,404,288"}, {"label": "회전율 급증", "ok": false, "detail": "2.41% (환산) vs 평균 2.17%"}, {"label": "RSI", "ok": true, "detail": "47"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 219,919 (현재 219,000)"}]}
{"ts": "2026-06-11T09:00:19.400267+09:00", "side": "BUY", "code": "064400", "name": "LG씨엔에스", "price": 88600, "qty": 63, "cost": 5582637, "path": "pullback", "reason": "눌림목 지정가 96,991 도달", "stop": 72800, "target": 120200, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "88,000 vs 78,822"}, {"label": "정배열(5>20)", "ok": true, "detail": "122,260 / 78,822"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "122,260 / 73,337"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+31.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +980 · 기 -117 (천주)"}, {"label": "투자의견", "ok": true, "detail": "4.0/5"}, {"label": "상승여력", "ok": true, "detail": "+8%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "3.58% (환산) vs 평균 4.14% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 153,300"}, {"label": "거래량 급증", "ok": false, "detail": "3,466,467 (환산) vs 평균 4,014,817"}, {"label": "회전율 급증", "ok": false, "detail": "3.58% (환산) vs 평균 4.14%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 96,991 (현재 88,000)"}]}
{"ts": "2026-06-12T09:00:29.731825+09:00", "side": "BUY", "code": "035420", "name": "NAVER", "price": 232500, "qty": 26, "cost": 6045907, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 195800, "target": 269900, "signals": [{"label": "손절선", "ok": true, "detail": "195,800 (현재 233,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 269,900"}, {"label": "추세(20일선)", "ok": true, "detail": "218,360"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -159 · 기 +1,154"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 232,128"}]}
{"ts": "2026-06-12T09:00:29.733826+09:00", "side": "BUY", "code": "064400", "name": "LG씨엔에스", "price": 96500, "qty": 58, "cost": 5597840, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 72800, "target": 120200, "signals": [{"label": "손절선", "ok": true, "detail": "72,800 (현재 97,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 120,200"}, {"label": "추세(20일선)", "ok": true, "detail": "79,050"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +810 · 기 +60"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 95,072"}]}
@@ -9,5 +9,5 @@
"max_drawdown": 0.0,
"last_exit": {},
"created_at": "2026-06-11T09:00:01.943862+09:00",
"updated_at": "2026-06-11T15:25:07.464153+09:00"
"updated_at": "2026-06-12T15:25:03.103185+09:00"
}

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