auto: 일일 백업 2026-09-22 02:00

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-09-22 02:00:05 +09:00
parent 8e12b4027c
commit 408a3e0d4a
133 changed files with 1748 additions and 1597 deletions
+3 -3
View File
File diff suppressed because one or more lines are too long
@@ -0,0 +1,120 @@
#!/usr/bin/env python3
"""KRX 애프터마켓(16:00~20:00, 2026-09-14 시행) 실측 probe — **조회 전용, 일회성**.
세션 모델을 고치기 전에 확인해야 할 4가지를 시각대별로 스냅샷으로 남긴다.
분석이 끝나면 이 스크립트와 plist(ai.openclaw.stock.aftermarket-probe)를 지운다.
확인 대상:
1. 애프터마켓 체결가가 KRX / NXT / SOR(AL) 중 어디로 오는가 (ka10095 3거래소 동시 조회)
2. 애프터마켓 가격제한폭이 정규장과 같은가 (`upl_pric`/`lst_pric` 시각대별 비교)
3. KRX 정규장 미체결이 15:35 증거금 해지 후 ka10075 에서 빠지는가
4. 애프터마켓에 호가가 뜨는가 (ka10004 bare=KRX / _AL)
⚠️ 주문 경로를 일절 건드리지 않는다 — orders 패키지를 import 하지 않고 kiwoom_client 만 쓴다.
⚠️ 응답을 **원시 그대로** 저장한다. 목적이 '새 필드가 생겼는지' 확인이라 정규화하면 안 된다.
⚠️ 한 항목이 실패해도 나머지는 계속 수집한다 (에러도 같이 기록).
결과: state/aftermarket_probe.jsonl — 1회차 = 1줄
사용: python3 aftermarket_probe.py [--tag <라벨>]
"""
from __future__ import annotations
import json
import sys
import traceback
from datetime import datetime, timedelta, timezone
from pathlib import Path
KST = timezone(timedelta(hours=9))
WORKSPACE = Path('/Users/snowoyh/.openclaw/agents/stock/workspace')
sys.path.insert(0, str(WORKSPACE / 'scripts'))
import kiwoom_client as kc # noqa: E402
OUT = WORKSPACE / 'state' / 'aftermarket_probe.jsonl'
# NXT 미상장 일반주 = 애프터마켓에서 새로 거래 가능해지는 쪽 (관심의 핵심)
# NXT 상장 = 기존에도 15:30 이후 거래되던 쪽 (대조)
# ETF = 애프터마켓 거래불가로 공지된 쪽 (대조)
TARGETS = [
('005935', '삼성전자우', 'nxt_미상장'),
('064400', 'LG씨엔에스', 'nxt_미상장'),
('381620', '제닉스로보틱스', 'nxt_미상장'),
('025980', '아난티', 'nxt_미상장'),
('005930', '삼성전자', 'nxt_상장'),
('000660', 'SK하이닉스', 'nxt_상장'),
('102110', 'TIGER 200', 'etf'),
]
BOOK_CODES = ['005935', '005930', '102110'] # 호가는 유형별 대표 1종목씩만
def _safe(fn, *a, **kw):
"""수집 실패를 예외로 흘리지 않는다 — 한 항목 실패가 회차 전체를 날리면 안 된다."""
try:
return {'ok': True, 'data': fn(*a, **kw)}
except Exception as e:
return {'ok': False, 'error': f'{e!r}', 'trace': traceback.format_exc(limit=3)}
def _raw_ka10095(codes: list[str], suffix: str) -> dict:
"""ka10095 원시 응답. get_watchlist_quotes 는 필드를 추려버려서 직접 부른다."""
label = kc._default_account_label()
param = '|'.join(f'{c}{suffix}' for c in codes)
return kc._call(label, kc.TR_WATCHLIST_INFO, {'stk_cd': param},
endpoint=kc.ENDPOINT_STKINFO)
def _raw_ka10004(code: str, suffix: str) -> dict:
label = kc._default_account_label()
url = kc.base_url() + kc.ENDPOINT_MRKCOND
resp, _ = kc._http_post_full(url, {'stk_cd': f'{code}{suffix}'},
kc.auth_headers(label, tr_id='ka10004'))
return resp
def collect(tag: str) -> dict:
now = datetime.now(KST)
codes = [c for c, _, _ in TARGETS]
rec: dict = {
'ts': now.isoformat(),
'tag': tag,
'targets': [{'code': c, 'name': n, 'kind': k} for c, n, k in TARGETS],
'quotes': {},
'books': {},
'open_orders': None,
}
# 1·2번 — 같은 종목을 세 거래소로 동시에 물어 값이 갈리는지 본다
for ex_name, suffix in (('KRX', ''), ('NXT', '_NX'), ('SOR', '_AL')):
rec['quotes'][ex_name] = _safe(_raw_ka10095, codes, suffix)
# 4번 — 애프터마켓에 호가가 실리는지
for code in BOOK_CODES:
for ex_name, suffix in (('KRX', ''), ('SOR', '_AL')):
rec['books'][f'{code}:{ex_name}'] = _safe(_raw_ka10004, code, suffix)
# 3번 — KRX 미체결 생존 (증거금 해지 15:35 / NXT 20:05)
rec['open_orders'] = _safe(kc.get_open_orders_all)
return rec
def main() -> int:
tag = 'manual'
if '--tag' in sys.argv:
tag = sys.argv[sys.argv.index('--tag') + 1]
rec = collect(tag)
OUT.parent.mkdir(parents=True, exist_ok=True)
with OUT.open('a', encoding='utf-8') as f:
f.write(json.dumps(rec, ensure_ascii=False) + '\n')
ok_q = sum(1 for v in rec['quotes'].values() if v['ok'])
ok_b = sum(1 for v in rec['books'].values() if v['ok'])
oo = rec['open_orders']
n_oo = len(oo['data']) if oo['ok'] else -1
print(f"[{rec['ts']}] tag={tag} 시세 {ok_q}/3 · 호가 {ok_b}/{len(rec['books'])} · 미체결 {n_oo}건 → {OUT}")
return 0
if __name__ == '__main__':
sys.exit(main())
+93 -28
View File
@@ -789,10 +789,20 @@ def _market_phase_state() -> dict:
"""현재 시각 기준 시장 phase 판정. 거래 모달 시간 가드용.
- regular(정규장): 평일 09:00~15:30 — KRX+NXT 거래 가능
- nxt(NXT): 평일 08:00~09:00 + 15:30~20:00 — NXT만 거래 가능
- nxt(NXT): 평일 08:00~09:00(프리) + 15:30~16:00 — NXT만 거래 가능
- after(애프터마켓): 평일 16:00~20:00 — **KRX 애프터마켓 + NXT 애프터마켓** (2026-09-14 시행)
- closed(장외): 평일 그 외 — 매매 불가
- holiday(휴장): KRX 휴장일 — 매매 불가
- weekend(주말): 토·일 — 매매 불가
⚠️ `after` 를 `nxt` 와 나눠야 하는 이유 — 2026-09-14 KRX 애프터마켓 신설로 **NXT 미상장
종목도 16:00 이후 거래된다**(2026-09-21 실측: 삼성전자우 KRX 거래량 16:05→18:00
+134,198주). 한 값으로 뭉치면 `nxt_enable=False` 인 2,600여 종목을 부당하게 잠근다
(실측 당시 보유 16·관심 26·감시 46종목이 "값은 갱신되는데 버튼은 잠긴" 상태였다).
⚠️ 15:30~16:00 은 `nxt` 로 남긴다 — KRX 쪽은 시간외 종가매매(15:40~16:00)뿐이고
우리는 그 주문유형(`trde_tp=81`)을 쓰지 않으므로 "NXT 만 거래 가능"이 맞다.
⚠️ `after` 를 새로 넣을 때 **`== 'nxt'` 로 비교하는 소비처를 전부 같이 고쳐야 한다** —
안 고치면 else 로 떨어져 실시간 가격 보정·거래가능 초록점·OHLC 활성열이 조용히 죽는다.
"""
now = datetime.now(KST)
time_str = now.strftime('%H:%M')
@@ -803,13 +813,18 @@ def _market_phase_state() -> dict:
hm = now.hour * 60 + now.minute
if 9 * 60 <= hm < 15 * 60 + 30:
return {'phase': 'regular', 'label': '정규장', 'active': True, 'time': time_str}
if 16 * 60 <= hm < 20 * 60:
return {'phase': 'after', 'label': '애프터마켓', 'active': True, 'time': time_str}
if 8 * 60 <= hm < 20 * 60:
return {'phase': 'nxt', 'label': 'NXT 시장', 'active': True, 'time': time_str}
return {'phase': 'closed', 'label': '장외 시간', 'active': False, 'time': time_str}
# 지금 거래 시간인 phase (거래가능 점·활성 열·실시간 보정 대상).
_PHASE_TRADING = ('regular', 'nxt', 'after')
# phase 경계 시각(분) — _market_phase_state 의 분기 경계와 같은 값.
_PHASE_BOUNDARIES_MIN = (8 * 60, 9 * 60, 15 * 60 + 30, 20 * 60)
_PHASE_BOUNDARIES_MIN = (8 * 60, 9 * 60, 15 * 60 + 30, 16 * 60, 20 * 60)
def _secs_to_next_phase() -> int | None:
@@ -863,30 +878,41 @@ def _load_interests() -> list[dict]:
_NXT_ENABLE_TTL = 300.0
_nxt_enable_cache: dict = {'ts': 0.0, 'map': {}}
_nxt_enable_cache: dict = {'ts': 0.0, 'map': {}, 'etf': {}}
def _nxt_enable_map() -> dict:
"""종목코드 → NXT 거래가능 여부(bool). `state/stock_codes.json` 캐시 읽기라 키움 콜 0.
def _code_flag_maps() -> tuple[dict, dict]:
"""종목코드 → (NXT 거래가능, ETF/ETN) 두 맵. `state/stock_codes.json` 읽기라 키움 콜 0.
⚠️ `kc.lookup_stock_meta` 는 호출마다 954KB JSON 을 다시 읽고 3500종목을 순회하므로
100종목에 부르면 렌더가 멈춘다 — 코드 키 역인덱스를 만들어 5분 캐시한다.
⚠️ 캐시에 없는 종목(신규 상장 등)은 여기서 빠지고, 호출측이 보수적으로 True 취급한다
(조회를 한 번 더 하는 쪽이 값이 틀리는 것보다 낫다).
⚠️ 두 플래그를 한 번에 만드는 이유는 같은 파일을 두 번 읽지 않기 위함이다.
⚠️ 캐시에 없는 종목(신규 상장 등)은 여기서 빠지고, 호출측이 보수적 기본값을 쓴다.
"""
now = time.time()
if now - _nxt_enable_cache['ts'] <= _NXT_ENABLE_TTL and _nxt_enable_cache['map']:
return _nxt_enable_cache['map']
return _nxt_enable_cache['map'], _nxt_enable_cache['etf']
m: dict = {}
e: dict = {}
try:
import kiwoom_client as kc
m = {info['code']: bool(info.get('nxt_enable'))
for info in kc._load_code_cache().values() if info.get('code')}
for info in kc._load_code_cache().values():
c = info.get('code')
if not c:
continue
m[c] = bool(info.get('nxt_enable'))
e[c] = bool(info.get('etf_etn'))
except Exception:
m = {}
m, e = {}, {}
if m:
_nxt_enable_cache['map'] = m
_nxt_enable_cache['etf'] = e
_nxt_enable_cache['ts'] = now
return m
return m, e
def _nxt_enable_map() -> dict:
return _code_flag_maps()[0]
def _is_nxt_traded(code: str) -> bool:
@@ -896,6 +922,37 @@ def _is_nxt_traded(code: str) -> bool:
return _nxt_enable_map().get(code, True)
def _is_etf_etn(code: str) -> bool:
"""ETF/ETN 인가. **KRX 애프터마켓(16:00~20:00)에서 거래되지 않는 종목군**이다.
2026-09-21 실측: TIGER 200 은 15:35 이후 거래량·현재가·호가잔량이 완전히 고정된다.
⚠️ 모르면 **False(거래 가능)** 로 둔다 — 여기서 True 로 기울면 캐시에 없는 신규 종목을
통째로 잠근다. 애프터마켓 제외종목은 ETF/ETN 말고도 9종류(거래정지·투자경고·이상급등 등)가
더 있는데 그것들은 판별 필드가 없어 어차피 완전 차단이 불가능하다. 우리가 막을 수 있는
것만 막고, 나머지는 키움 거부 메시지로 드러나게 한다.
"""
if not code:
return False
return _code_flag_maps()[1].get(code, False)
def _phase_tradable(phase: str, code: str) -> bool:
"""지금 이 종목이 거래 가능한가 — 거래가능 초록점·화면 표시 공용 판정.
정규장은 전부, NXT 시간대는 NXT 상장분만, 애프터마켓은 ETF/ETN 을 뺀 전부다.
⚠️ 판정을 한 곳에 모은 이유 — 예전엔 미리보기 행과 보유행에 같은 if/elif 가 복제돼
있었고, 2026-09-14 애프터마켓 신설처럼 조건이 하나 늘 때 **한쪽만 고치면 같은
종목이 화면 두 곳에서 다르게 보인다**.
"""
if phase == 'regular':
return True
if phase == 'nxt':
return _is_nxt_traded(code)
if phase == 'after':
return not _is_etf_etn(code)
return False
def _fetch_quotes_batch(entries: list[dict]) -> list[dict]:
"""ka10095(관심종목정보) 한 콜로 워치리스트 시세 일괄 조회. 19종목 ~0.05s.
캐시 히트인 entry는 캐시 사용, 미스인 entry만 batch에 포함.
@@ -1469,7 +1526,7 @@ def _fetch_all_data(entries: list[dict], only_owner: str | None = None) -> dict:
except Exception as e:
sys.stderr.write(f'AL positions price fetch failed: {e}\n')
_phase = _market_phase_state().get('phase')
active_map = ohlc_map_al if _phase in ('regular', 'nxt') else None
active_map = ohlc_map_al if _phase in _PHASE_TRADING else None
if active_map:
for _items in positions_by_acc.values():
for _p in _items:
@@ -2949,15 +3006,11 @@ def _render_row(c: dict, source: str = 'watchlist') -> str:
# 거래가능 표시 — 지금 거래시간이면 초록점, 아니면 점 없음.
# 정규장: KRX+NXT 모두 거래 → 초록점
# NXT 시간대: NXT 거래 종목(종목 목록의 nxt_enable)만 초록점
# 애프터마켓: ETF/ETN 빼고 전부 초록점 (KRX 애프터마켓이 일반주를 받는다)
# 장마감·휴장·주말: 점 없음
nxt_p = 1 if _is_nxt_traded(c.get('code') or '') else 0
_phase = _market_phase_state()['phase']
if _phase == 'regular':
_tradable = True
elif _phase == 'nxt':
_tradable = nxt_p > 0
else:
_tradable = False
_tradable = _phase_tradable(_phase, c.get('code') or '')
mark_html = '<span class="px-dot tradable" title="지금 거래 가능"></span>' if _tradable else ''
# 미리보기 등락은 KRX 전일종가 대비 — ka10095의 change_pct가 이미 KRX 기준이라 그대로 사용.
day_pct = c.get('day_change_pct')
@@ -4438,15 +4491,10 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
# 활성 열 판정 — OHLC 미니테이블 강조용. 두 열은 'KRX 단독' vs '하루 전체 통합'이라
# 장중이면 항상 통합 열이 최신(현재가와 같은 값)이고, KRX 열은 15:30 이후 마감값으로 고정된다.
_phase = _market_phase_state()['phase']
mark = 'AL' if _phase in ('regular', 'nxt') else 'NONE'
mark = 'AL' if _phase in _PHASE_TRADING else 'NONE'
# 거래가능 표시 — 지금 거래시간이면 초록점, 아니면 점 없음. (미리보기 행과 동일 규칙)
# 정규장: KRX+NXT 모두 거래 → 초록점 / NXT 시간대: NXT 거래 종목(종목 목록의 nxt_enable)만 / 장외·휴장·주말: 점 없음
if _phase == 'regular':
_tradable = True
elif _phase == 'nxt':
_tradable = _is_nxt_traded(r.get('code') or '')
else:
_tradable = False
# 정규장: 전부 / NXT 시간대: nxt_enable 만 / 애프터마켓: ETF/ETN 빼고 전부 / 장외·휴장·주말: 없음
_tradable = _phase_tradable(_phase, r.get('code') or '')
mark_html = '<span class="px-dot tradable" title="지금 거래 가능"></span>' if _tradable else ''
# OHLC mini-table — ka10095 KRX/AL batch 결과를 각 열에 표시. 활성 열만 밝게.
@@ -4491,7 +4539,11 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
ohlc_al_for_render,
active_market=mark.lower(),
al_price=price, # 현재가 행은 통합 현재가를 양 열 공통 — 등락률만 각 기준 전일종가 대비.
krx_closed=_trd_ohlc and _hm_ohlc >= 15 * 60 + 30,
# ⚠️ KRX 열은 15:30~16:00 과 20:00 이후에만 '종가'다 — 애프터마켓(16:00~20:00)엔
# KRX 가 접속매매로 다시 돌아 가격이 변한다(2026-09-21 실측). 예전처럼 15:30 이후
# 전부 종가로 두면 "종가"라 써놓고 값이 계속 바뀐다. 15:40~16:00 시간외 종가매매는
# 15:30 종가로만 체결돼 거래량만 늘므로 종가 표시가 맞다.
krx_closed=_trd_ohlc and (15 * 60 + 30 <= _hm_ohlc < 16 * 60 or _hm_ohlc >= 20 * 60),
al_closed=_trd_ohlc and _hm_ohlc >= 20 * 60,
)
@@ -13055,6 +13107,13 @@ function updateMarketPhaseDisplay(){
cls = 'closed';
canTrade = false;
}
// 애프터마켓(16:00~20:00) — KRX 애프터마켓이 일반주를 받으므로 nxt_enable 은 보지 않는다.
// ETF/ETN 만 거래불가 (2026-09-21 실측 확증).
else if(phase.phase === 'after' && book && book.etf_etn === true){
label = '📵 애프터마켓 거래불가 (ETF/ETN)';
cls = 'closed';
canTrade = false;
}
// 실시간 VI 발동 종목이면 모달 상태줄에 표시 (window.__rtState 는 realtime_script 가 채움)
try {
var _rt = window.__rtState;
@@ -14934,6 +14993,10 @@ class Handler(BaseHTTPRequestHandler):
# NXT 시간대엔 KRX 호가창이 15:30 종가로 고정 → 현재가(NXT)와 갭 발생.
# 그 시간대엔 NXT 호가창·NXT 현재가로 정합시킨다. 단 NXT 미상장 종목은 NXT 호가가
# 없으므로 그 시간대에도 KRX 기준으로 표시.
# ⚠️ 애프터마켓(16:00~20:00)은 KRX 를 쓴다 — KRX 애프터마켓 호가가 bare 조회로
# 그대로 실려 온다(2026-09-21 실측: 삼성전자우 매도1/매수1 이 16:05·17:00·18:00
# 모두 갱신). 이 구간을 'nxt' 로 묶어 NXT 호가를 보면 NXT 미상장 종목은
# 호가가 통째로 비고, NXT 상장 종목도 KRX 쪽 물량을 못 본다.
_ph = _market_phase_state().get('phase')
use_nxt = (_ph == 'nxt') and nxt_enable
if use_nxt:
@@ -14958,6 +15021,8 @@ class Handler(BaseHTTPRequestHandler):
# 미리보기용으로 추가했다가 옵션 제거와 함께 제거(2026-07-30).
# 기업정보 모달의 '52주 최고'는 /api/stock_info(get_stock_basic) 경로다.
book['nxt_enable'] = nxt_enable # 위에서 판정한 값 재사용
# 애프터마켓 거래불가 판정용 — ETF/ETN 은 16:00~20:00 에 거래되지 않는다.
book['etf_etn'] = _is_etf_etn(code)
# 종목이 속한 시장(KOSPI/KOSDAQ)의 20일 ADR 과매수/과매도 — 극단일 때만 실림.
_mkt = (meta or {}).get('market') or ''
book['market'] = _mkt
@@ -1213,6 +1213,12 @@ def refresh_stock_codes(account_label: str | None = None) -> dict:
- nxt_enable: bool — ka10099 응답 nxtEnable=='Y' 변환. NXT 가드 정확화에 사용
- state: str — 종목상태 (예: '관리종목', '정리매매', '증거금100%')
- order_warning: str — 투자유의 (0/1/2/3/4/5, ka10099 명세 참조)
- etf_etn: bool — ETF/ETN 여부 (2026-09-21 추가). **KRX 애프터마켓(16:00~20:00)에서
ETF/ETN 은 거래되지 않는다**(2026-09-21 실측: TIGER 200 거래량·호가가 15:35 이후 완전
고정). 자산웹이 애프터마켓에 이들만 잠그려면 판별 수단이 필요한데, KOSPI/KOSDAQ 조회
응답에는 ETF 구분이 없다. 그래서 ETF/ETN 전용 시장을 따로 조회해 코드로 표시한다.
⚠️ 종목명 프리픽스(KODEX/TIGER…) 추측을 쓰지 않는 이유 — 신규 운용사 브랜드가 생기면
조용히 틀리고, 매매 게이트라 정확도가 우선이다.
"""
label = account_label or _default_account_label()
url = base_url() + ENDPOINT_STKINFO
@@ -1246,6 +1252,40 @@ def refresh_stock_codes(account_label: str | None = None) -> dict:
time.sleep(0.15)
else:
break
# ETF/ETN 표시 — 전용 시장을 훑어 코드 집합을 만들고 위에서 담은 항목에 플래그만 얹는다.
# ETF/ETN 은 KOSPI/KOSDAQ 조회에도 이미 들어 있으므로 **새 항목을 추가하지 않는다**.
# ⚠️ 여기서 실패해도 캐시 저장은 계속한다 — 플래그 하나 때문에 4300종목 캐시를
# 통째로 잃으면 종목명 검색·NXT 판정이 다 멈춘다. 플래그가 없으면 호출측이
# 보수적 기본값으로 떨어질 뿐이다.
# ⚠️ ka10099 유량은 초당 5건이고 위 페이지네이션이 이미 버스트를 쌓아놨다 — 0.15s 간격으로
# 이어 붙이면 마지막 시장이 429 로 튕긴다(2026-09-21 실측: mrkt_tp=90 8종목 누락).
# 빠진 시장의 ETF/ETN 은 플래그가 False 로 남아 애프터마켓에 열려버리므로 재시도한다.
etf_codes: set[str] = set()
for mrkt_tp in ('8', '60', '70', '90'): # 8:ETF, 60:ETN, 70:손실제한ETN, 90:변동성ETN
for attempt in range(2):
time.sleep(0.5 if attempt == 0 else 1.5)
try:
resp, _ = _http_post_full(url, {'mrkt_tp': mrkt_tp},
auth_headers(label, tr_id=TR_STOCK_LIST))
if resp.get('return_code', 0) != 0:
if _is_quote_rate_limit(str(resp.get('return_msg') or '')):
continue
break
for it in (resp.get('list') or []):
c = _clean_code(it.get('code', ''))
if c:
etf_codes.add(c)
break
except Exception as e:
if attempt == 0 and _is_quote_rate_limit(str(e)):
continue
print(f'[refresh_stock_codes] ETF/ETN 표시 실패 (mrkt_tp={mrkt_tp}): {e}',
file=sys.stderr)
break
for info in result.values():
info['etf_etn'] = info['code'] in etf_codes
STOCK_CODES_CACHE.parent.mkdir(parents=True, exist_ok=True)
STOCK_CODES_CACHE.write_text(json.dumps({
'refreshed_at': datetime.now(KST).isoformat(),
+63 -10
View File
@@ -76,6 +76,18 @@ def _parse_hms(s: str) -> dtime:
def session_at(now: datetime) -> str:
"""현재 시각의 거래 세션. 경계 시각은 limits.json['trading_hours'] 가 단일 진실 소스다.
NXT_PRE(08:00~09:00) / KRX_NXT(09:00:30~15:20) / KRX_CLOSE(15:20~15:30)
NXT_AFTER(15:30~16:00) / AFTER(16:00~20:00) / CLOSED
⚠️ AFTER = **KRX 애프터마켓 + NXT 애프터마켓 동시**(2026-09-14 시행). 이걸 NXT_AFTER 로
뭉쳐 두면 NXT 미상장 종목이 validate_trading_hours 의 NXT_NOT_ELIGIBLE 로 막혀
**애프터마켓에 주문을 낼 수 없다** — 정작 KRX 애프터마켓에서는 거래되는 종목들이다
(2026-09-21 실측: 삼성전자우 KRX 거래량 16:05→18:00 +134,198주).
⚠️ 15:30~16:00 은 NXT_AFTER 로 남긴다 — KRX 쪽은 시간외 종가매매(15:40~16:00)뿐이고
우리는 그 주문유형(trde_tp=81)을 쓰지 않으므로 "NXT 만 거래 가능"이 맞다.
"""
th = _limits()['trading_hours']
t = now.replace(tzinfo=None).time()
if _parse_hms(th['nxt_pre_start']) <= t < _parse_hms(th['nxt_pre_end']):
@@ -84,6 +96,10 @@ def session_at(now: datetime) -> str:
return 'KRX_NXT'
if _parse_hms(th['krx_closing_auction_start']) <= t < _parse_hms(th['krx_closing_auction_end']):
return 'KRX_CLOSE'
# ⚠️ AFTER 를 NXT_AFTER 보다 **먼저** 본다 — nxt_after(15:30~20:00) 구간이 애프터마켓을
# 통째로 덮고 있어서, 순서를 바꾸면 16:00 이후가 영원히 NXT_AFTER 로 잡힌다.
if _parse_hms(th['krx_after_start']) <= t < _parse_hms(th['nxt_after_end']):
return 'AFTER'
if _parse_hms(th['nxt_after_start']) <= t < _parse_hms(th['nxt_after_end']):
return 'NXT_AFTER'
return 'CLOSED'
@@ -137,10 +153,31 @@ def validate_trading_hours(now: datetime, is_holiday: bool, nxt_eligible: bool)
return Result.REJECT('OUTSIDE_HOURS', f'거래시간 외 ({now.strftime("%H:%M:%S")})')
if sess in ('NXT_PRE', 'NXT_AFTER') and not nxt_eligible:
return Result.REJECT('NXT_NOT_ELIGIBLE', '지금은 NXT 시간대인데 이 종목은 NXT 거래 불가')
# ⚠️ AFTER(16:00~20:00)는 nxt_eligible 을 보지 않는다 — KRX 애프터마켓이 NXT 미상장
# 종목을 받으므로, 여기서 막으면 정작 거래되는 종목을 거부한다.
# ⚠️ 애프터마켓 제외종목(ETF/ETN + 거래정지·투자경고·이상급등 등 9종)의 **서버 가드는
# 없다** — ETF/ETN 은 자산웹 버튼이 stock_codes 의 etf_etn 으로 막고, 나머지는 판별
# 필드가 없어 키움 거부 메시지가 최종 방어선이다. market_data 에 플래그를 실어
# 여기서 막으려면 datasource 를 함께 고쳐야 한다(미구현).
return Result.OK(code=sess)
def determine_routing(now: datetime, nxt_eligible: bool, force: Optional[str]) -> str:
# 스톱지정가(trde_tp=28)를 쓰는 주문유형. SOR 라우팅으로는 발주되지 않는다.
STOP_ORDER_TYPES = ('STOP_LIMIT', 'TRAILING_STOP', 'TRAILING_ARM')
def determine_routing(now: datetime, nxt_eligible: bool, force: Optional[str],
order_type: Optional[str] = None) -> str:
"""세션·NXT 거래여부로 거래소 라우팅 suffix 를 정한다.
⚠️ 스톱 계열은 SOR(_AL) 로 낼 수 없다 — 키움이 `407022: SOR주문이 불가능한
주문종류입니다` 로 거부한다(2026-09-21 삼성전자 실측). NXT 거래 종목은 정규장
라우팅이 _AL 이라, 이 강등이 없으면 대형주 트레일링이 **항상** 거부된다.
(2026-07-30 제닉스로보틱스가 성공했던 건 NXT 미거래 종목이라 KRX 로 나갔기 때문)
NXT 단독 시간대(_NX)가 스톱을 받는지는 실증 안 됐다 — 시도는 그대로 두고,
거부되면 그 메시지로 드러나게 한다(KRX 가 닫힌 시간이라 강등할 곳도 없다).
"""
routing = _limits()['routing']
suffix_map = {
'AL': routing['suffix_AL'],
@@ -150,15 +187,30 @@ def determine_routing(now: datetime, nxt_eligible: bool, force: Optional[str]) -
if force:
if force not in routing['force_options']:
raise ValueError(f'unknown routing force: {force}')
return suffix_map[force]
sess = session_at(now)
if sess in ('NXT_PRE', 'NXT_AFTER'):
return routing['suffix_NX']
if sess == 'KRX_CLOSE':
suffix = suffix_map[force]
else:
sess = session_at(now)
if sess in ('NXT_PRE', 'NXT_AFTER'):
suffix = routing['suffix_NX']
elif sess == 'KRX_CLOSE':
suffix = routing['suffix_KRX']
elif sess == 'AFTER':
# 애프터마켓은 **KRX 로 보낸다** — KRX 애프터마켓이 대상 종목을 전부 받고
# (2026-09-21 실측: NXT 미상장 종목도 16:00 이후 KRX 거래량이 증가),
# dmst_stex_tp 에 애프터 전용 값이 생기지도 않았다(KRX/NXT/SOR 그대로).
# ⚠️ SOR 을 쓰지 않는 이유 — 시세는 SOR 이 KRX+NXT 통합으로 오지만
# **주문이 애프터마켓에 어떻게 라우팅되는지는 미검증**이다. 오늘 아침
# "SOR 주문이 불가능한 주문종류입니다"(407022) 가 정확히 그 함정이었다.
# 검증된 경로만 쓴다. NXT 상장 종목도 KRX 애프터마켓에서 거래되므로 손실 없다.
suffix = routing['suffix_KRX']
elif sess == 'KRX_NXT':
suffix = routing['suffix_AL'] if nxt_eligible else routing['suffix_KRX']
else:
raise ValueError('CLOSED session has no valid routing')
if order_type in STOP_ORDER_TYPES and suffix == routing['suffix_AL']:
return routing['suffix_KRX']
if sess == 'KRX_NXT':
return routing['suffix_AL'] if nxt_eligible else routing['suffix_KRX']
raise ValueError('CLOSED session has no valid routing')
return suffix
# ---- 가격 가드 (±30% 상한가/하한가) ----
@@ -196,7 +248,8 @@ def validate_market_order_session(now: datetime, order_type: str) -> Result:
if order_type != 'MARKET':
return Result.OK()
sess = session_at(now)
if sess in ('NXT_PRE', 'NXT_AFTER'):
# 애프터마켓 제출가능 호가는 지정가·최우선지정가·최유리지정가(+IOC/FOK)뿐 — **시장가 없음**.
if sess in ('NXT_PRE', 'NXT_AFTER', 'AFTER'):
return Result.REJECT('MARKET_NOT_ALLOWED_IN_NXT',
'NXT 시간대에는 시장가 불가 — 지정가만 가능. "지금 바로" 또는 가격 명시로 다시 시도.')
if sess == 'KRX_CLOSE':
@@ -376,7 +376,7 @@ def propose_trade(
return {'ok': False, 'message': card.format_rejected(sr.code, sr.message)}
state_warning = state_eval['warning'] # 카드에 표시할 경고 (None이면 정상)
suffix = guards.determine_routing(md['now'], md['nxt_eligible'], routing_force)
suffix = guards.determine_routing(md['now'], md['nxt_eligible'], routing_force, order_type)
estimate = None
final_price = price
@@ -1237,7 +1237,7 @@ def amend_trade(qty: Optional[int] = None, price: Optional[int] = None,
return {'ok': False, 'message': card.format_rejected(sr.code, sr.message)}
state_warning = state_eval['warning']
suffix = guards.determine_routing(md['now'], md['nxt_eligible'], routing_force)
suffix = guards.determine_routing(md['now'], md['nxt_eligible'], routing_force, new_order_type)
estimate = None
final_price = new_price
@@ -81,6 +81,15 @@ def idempotency_hash(account: str, symbol: str, side: str, qty: int, price: int
return hashlib.sha256(key.encode('utf-8')).hexdigest()[:16]
# 멱등성 매칭 대상 — **이중 발주 위험이 실재하는 이벤트만** 본다.
# submitted : 키움이 접수했다 (확정)
# failed : 네트워크 에러 — 나갔는지 모른다 (가장 위험, 반드시 차단)
# rejected(브로커 거부·idem 중복)·dryrun 은 접수되지 않은 게 확정이라 재시도를 막지 않는다.
# ⚠️ 이게 없으면 키움이 거부한 직후 같은 주문을 다시 내는 게 90초간 IDEMPOTENCY_DUP 으로
# 막혀, 관리자님이 영문 모를 두 번째 실패를 본다 (2026-09-21 SOR 스톱 거부 때 실측).
IDEM_MATCH_EVENTS = ('submitted', 'failed')
def find_recent_idempotency(h: str, within_seconds: int = 90) -> Optional[dict]:
path = _ledger_path()
if not path.exists():
@@ -99,7 +108,8 @@ def find_recent_idempotency(h: str, within_seconds: int = 90) -> Optional[dict]:
continue
if ts < cutoff:
return None
if rec.get('payload', {}).get('idem_hash') == h:
if (rec.get('event') in IDEM_MATCH_EVENTS
and rec.get('payload', {}).get('idem_hash') == h):
return rec
return None
@@ -4,14 +4,22 @@
"last_updated": "2026-05-06",
"note": "변경 시 별도 커밋. guards 단위테스트가 이 파일을 검증. 손으로 풀지 말고 항상 이 파일을 통해 조정."
},
"enabled": false,
"kill_switch_file": "state/orders_disabled",
"accounts_whitelist": ["일반", "ISA", "가희_일반", "가희_ISA"],
"owner_accounts": ["일반", "ISA"],
"spouse_accounts": ["가희_일반", "가희_ISA"],
"accounts_whitelist": [
"일반",
"ISA",
"가희_일반",
"가희_ISA"
],
"owner_accounts": [
"일반",
"ISA"
],
"spouse_accounts": [
"가희_일반",
"가희_ISA"
],
"limits": {
"single_order_max_won": null,
"daily_total_max_won": null,
@@ -19,11 +27,9 @@
"price_band_pct_soft": null,
"price_band_pct_hard": 30
},
"delays": {
"between_orders_seconds": 5
},
"pin": {
"owner_length": 4,
"owner_charset": "digits",
@@ -33,7 +39,6 @@
"expiry_seconds": 120,
"max_attempts": 1
},
"trading_hours": {
"tz": "Asia/Seoul",
"krx_regular_start": "09:00:30",
@@ -44,27 +49,36 @@
"nxt_pre_end": "09:00:00",
"nxt_after_start": "15:30:00",
"nxt_after_end": "20:00:00",
"krx_after_start": "16:00:00",
"block_outside": true,
"holiday_state_file": "state/market_holidays.json"
},
"routing": {
"default": "AL",
"force_options": ["AL", "NX", "KRX"],
"force_options": [
"AL",
"NX",
"KRX"
],
"suffix_AL": "_AL",
"suffix_NX": "_NX",
"suffix_KRX": ""
},
"market_order": {
"allowed": true,
"natural_language_market": ["시장가"],
"natural_language_aggressive_limit": ["지금 바로", "즉시", "빨리", "당장"],
"natural_language_market": [
"시장가"
],
"natural_language_aggressive_limit": [
"지금 바로",
"즉시",
"빨리",
"당장"
],
"aggressive_limit_ticks": 1,
"show_orderbook_depth": 3,
"estimate_slippage": true
},
"guards": {
"block_market_holidays": true,
"block_trading_halt": true,
@@ -74,9 +88,13 @@
"require_position_check_for_sell": true,
"block_market_order_when_orderbook_thin": false
},
"card": {
"highlight_fields": ["side", "account", "symbol_name", "price"],
"highlight_fields": [
"side",
"account",
"symbol_name",
"price"
],
"highlight_marker": "▶",
"highlight_bold_markdown": true,
"buy_emoji": "🛒",
@@ -86,13 +104,35 @@
"orderbook_depth": 3,
"show_balance_ratio": true
},
"ledger": {
"log_file": "state/order_log.jsonl",
"events": ["card_issued", "pin_issued", "amended", "approved", "rejected", "expired", "canceled", "submitted", "filled", "partial", "failed", "dryrun", "cancel_submitted", "cancel_rejected", "cancel_confirmed", "cancel_unconfirmed_timeout", "modify_submitted", "modify_rejected", "trailing_register_failed", "arm_registered", "arm_fired", "arm_fire_failed", "arm_canceled"],
"events": [
"card_issued",
"pin_issued",
"amended",
"approved",
"rejected",
"expired",
"canceled",
"submitted",
"filled",
"partial",
"failed",
"dryrun",
"cancel_submitted",
"cancel_rejected",
"cancel_confirmed",
"cancel_unconfirmed_timeout",
"modify_submitted",
"modify_rejected",
"trailing_register_failed",
"arm_registered",
"arm_fired",
"arm_fire_failed",
"arm_canceled"
],
"mask_token_in_logs": true
},
"telegram": {
"dm_only": true,
"chat_id_whitelist_env": "OPENCLAW_OWNER_CHAT_ID",
@@ -61,8 +61,14 @@ class SessionTests(unittest.TestCase):
def test_nxt_after(self):
self.assertEqual(guards.session_at(t(15, 30)), 'NXT_AFTER')
self.assertEqual(guards.session_at(t(18, 0)), 'NXT_AFTER')
self.assertEqual(guards.session_at(t(19, 59, 59)), 'NXT_AFTER')
self.assertEqual(guards.session_at(t(15, 59, 59)), 'NXT_AFTER')
def test_krx_aftermarket(self):
"""16:00~20:00 = KRX 애프터마켓 + NXT 애프터마켓 (2026-09-14 시행)."""
self.assertEqual(guards.session_at(t(16, 0)), 'AFTER')
self.assertEqual(guards.session_at(t(18, 0)), 'AFTER')
self.assertEqual(guards.session_at(t(19, 59, 59)), 'AFTER')
self.assertEqual(guards.session_at(t(20, 0)), 'CLOSED')
def test_closed_after_after(self):
self.assertEqual(guards.session_at(t(20, 0)), 'CLOSED')
@@ -94,9 +100,13 @@ class TradingHoursTests(unittest.TestCase):
self.assertEqual(r.code, 'NXT_NOT_ELIGIBLE')
def test_nxt_after_not_eligible(self):
r = guards.validate_trading_hours(t(18, 0), False, False)
r = guards.validate_trading_hours(t(15, 45), False, False)
self.assertEqual(r.code, 'NXT_NOT_ELIGIBLE')
def test_aftermarket_allows_non_nxt(self):
"""애프터마켓엔 KRX 가 NXT 미상장 종목을 받는다 — 여기서 막으면 안 된다."""
self.assertTrue(guards.validate_trading_hours(t(18, 0), False, False).ok)
def test_krx_close_no_nxt_required(self):
self.assertTrue(guards.validate_trading_hours(t(15, 25), False, False).ok)
@@ -114,7 +124,12 @@ class RoutingTests(unittest.TestCase):
self.assertEqual(guards.determine_routing(t(8, 30), True, None), '_NX')
def test_nxt_after(self):
self.assertEqual(guards.determine_routing(t(18, 0), True, None), '_NX')
self.assertEqual(guards.determine_routing(t(15, 45), True, None), '_NX')
def test_aftermarket_routes_to_krx(self):
"""애프터마켓은 검증된 KRX 경로만 쓴다 — SOR 주문 라우팅은 미검증."""
self.assertEqual(guards.determine_routing(t(18, 0), True, None), '')
self.assertEqual(guards.determine_routing(t(18, 0), False, None), '')
def test_krx_close(self):
self.assertEqual(guards.determine_routing(t(15, 25), False, None), '')
@@ -133,6 +148,31 @@ class RoutingTests(unittest.TestCase):
guards.determine_routing(t(21, 0), True, None)
class StopRoutingTests(unittest.TestCase):
"""스톱 계열은 SOR(_AL) 로 못 낸다 — 키움 407022 (2026-09-21 삼성전자 실측)."""
def test_stop_types_downgrade_al_to_krx(self):
for ot in ('STOP_LIMIT', 'TRAILING_STOP', 'TRAILING_ARM'):
self.assertEqual(guards.determine_routing(t(10, 0), True, None, ot), '', ot)
def test_force_al_also_downgraded(self):
# force 는 사람의 명시 지정이지만 SOR 자체가 스톱을 안 받는다
self.assertEqual(guards.determine_routing(t(10, 0), True, 'AL', 'STOP_LIMIT'), '')
def test_nxt_session_kept(self):
# NXT 단독 시간대는 KRX 가 닫혀 강등할 곳이 없다 — 시도는 그대로 둔다
self.assertEqual(guards.determine_routing(t(8, 30), True, None, 'STOP_LIMIT'), '_NX')
self.assertEqual(guards.determine_routing(t(15, 45), True, None, 'STOP_LIMIT'), '_NX')
def test_non_stop_types_unaffected(self):
self.assertEqual(guards.determine_routing(t(10, 0), True, None, 'LIMIT'), '_AL')
self.assertEqual(guards.determine_routing(t(10, 0), True, None, 'MARKET'), '_AL')
self.assertEqual(guards.determine_routing(t(10, 0), True, None, None), '_AL')
def test_non_nxt_symbol_already_krx(self):
self.assertEqual(guards.determine_routing(t(10, 0), False, None, 'STOP_LIMIT'), '')
# ---------- 가격 가드 ----------
class PriceBandTests(unittest.TestCase):
@@ -98,3 +98,46 @@ class SubmitResponseTests(unittest.TestCase):
if __name__ == '__main__':
unittest.main(verbosity=2)
class IdempotencyMatchTests(unittest.TestCase):
"""멱등성은 '이중 발주 위험이 실재하는' 이벤트만 본다.
2026-09-21: SOR 스톱 거부 직후 같은 주문을 다시 냈더니 IDEMPOTENCY_DUP 으로 또 막혔다.
키움이 거부한 주문은 접수되지 않은 게 확정이라 재시도를 막을 이유가 없다.
"""
def setUp(self):
import tempfile
from pathlib import Path
self.tmp = Path(tempfile.mkdtemp()) / 'order_log.jsonl'
mock.patch.object(ledger, '_ledger_path', return_value=self.tmp).start()
self.addCleanup(mock.patch.stopall)
def _write(self, event: str, h: str = 'HASH1'):
import json
from datetime import datetime
with self.tmp.open('a', encoding='utf-8') as f:
f.write(json.dumps({'ts': datetime.now(ledger.KST).isoformat(),
'event': event, 'payload': {'idem_hash': h}}) + '\n')
def test_submitted_blocks(self):
self._write('submitted')
self.assertIsNotNone(ledger.find_recent_idempotency('HASH1'))
def test_network_failure_blocks(self):
"""나갔는지 모르는 상태 — 가장 위험하므로 반드시 차단."""
self._write('failed')
self.assertIsNotNone(ledger.find_recent_idempotency('HASH1'))
def test_broker_reject_does_not_block(self):
self._write('rejected')
self.assertIsNone(ledger.find_recent_idempotency('HASH1'))
def test_dryrun_does_not_block(self):
self._write('dryrun')
self.assertIsNone(ledger.find_recent_idempotency('HASH1'))
def test_other_hash_ignored(self):
self._write('submitted', h='OTHER')
self.assertIsNone(ledger.find_recent_idempotency('HASH1'))
@@ -723,7 +723,11 @@ class ArmMonitorTests(unittest.TestCase):
tm.sidecar.is_disabled = lambda: self.state['disabled']
tm.ledger.append = lambda ev, payload: None
tm.datasource.nxt_eligible = lambda code: True
tm.guards.determine_routing = lambda now, nxt, force: '_AL'
# 발동 레그는 스톱지정가라 SOR(_AL) 로 나갈 수 없다 — 실제 determine_routing 이
# KRX 로 강등한다. 스텁도 같은 값을 주고, order_type 이 실제로 넘어오는지 기록한다.
self.routing_calls = []
tm.guards.determine_routing = lambda now, nxt, force, order_type=None: (
self.routing_calls.append(order_type) or '')
self.steps = t.normalize_steps([{'pct': 10, 'cum': 20}, {'pct': 20, 'cum': 50},
{'pct': 30, 'cum': 100}])
@@ -760,7 +764,9 @@ class ArmMonitorTests(unittest.TestCase):
self.state['quote'] = 81000
self.tm.check(force=True)
self.assertEqual(len(self.submits), 3)
self.assertEqual([s['routing'] for s in self.submits], ['_AL'] * 3)
self.assertEqual([s['routing'] for s in self.submits], [''] * 3)
# 발동 레그는 스톱지정가 — SOR 로 내면 키움이 407022 로 거부한다
self.assertEqual(self.routing_calls, ['STOP_LIMIT'])
self.assertEqual(t.list_arms(), [])
self.assertEqual(len(t.list_active()), 1)
self.assertEqual(t.list_active()[0]['peak'], 81000) # 고점 = 발동 시점 현재가
@@ -270,7 +270,8 @@ def _fire_arm(arm: dict, plan: dict, sess: str, dry_run: bool) -> None:
# 라우팅은 등록 시점이 아니라 지금 정한다 — 같은 날 안에서도 정규장에 등록해 NXT
# 애프터에 발동할 수 있고, 옛 suffix 로 발주하면 거부된다.
try:
suffix = guards.determine_routing(datetime.now(KST), datasource.nxt_eligible(symbol), None)
suffix = guards.determine_routing(datetime.now(KST), datasource.nxt_eligible(symbol),
None, 'STOP_LIMIT')
except ValueError as e:
_log(f'라우팅 결정 실패 {arm["id"]} (세션 {sess}): {e!r}')
return
@@ -166,3 +166,5 @@
{"date": "2026-09-17", "market": "KOSPI", "market_label": "코스피", "rise": 453, "upper": 1, "fall": 398, "lower": 0, "steady": 62, "adr": 114.07, "personal": 3020, "foreign": -22546, "institutional": 2480, "captured_at": "2026-09-17T21:00:06.412999+09:00"}
{"date": "2026-09-18", "market": "KOSDAQ", "market_label": "코스닥", "rise": 919, "upper": 3, "fall": 698, "lower": 2, "steady": 116, "adr": 131.71, "personal": 162, "foreign": -511, "institutional": 250, "captured_at": "2026-09-18T21:00:02.289980+09:00"}
{"date": "2026-09-18", "market": "KOSPI", "market_label": "코스피", "rise": 407, "upper": 5, "fall": 465, "lower": 1, "steady": 41, "adr": 88.41, "personal": -36359, "foreign": 4486, "institutional": 15322, "captured_at": "2026-09-18T21:00:02.289980+09:00"}
{"date": "2026-09-21", "market": "KOSDAQ", "market_label": "코스닥", "rise": 628, "upper": 5, "fall": 1023, "lower": 0, "steady": 82, "adr": 61.88, "personal": 1416, "foreign": -995, "institutional": -285, "captured_at": "2026-09-21T21:00:05.395370+09:00"}
{"date": "2026-09-21", "market": "KOSPI", "market_label": "코스피", "rise": 310, "upper": 0, "fall": 552, "lower": 0, "steady": 52, "adr": 56.16, "personal": -31850, "foreign": 117, "institutional": 15162, "captured_at": "2026-09-21T21:00:05.395370+09:00"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 5572914.42378125,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 5640114.3750312505,
"last_add_price": 353000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4803063.4110624995,
"last_add_price": 13420
@@ -76,12 +76,12 @@
"entry_at": "2026-09-03T09:02:19.208652+09:00",
"stop": 10093,
"target": 16265,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4801549.203874999,
"last_add_price": 11930
@@ -97,12 +97,12 @@
"entry_at": "2026-09-04T10:32:21.056829+09:00",
"stop": 10340,
"target": 22696,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,168 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 3703169.8275951464,
"last_add_price": 13820
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 4823066.232562499,
"last_add_price": 129800
@@ -198,5 +198,5 @@
"003550": "2026-09-15"
},
"created_at": "2026-06-11T09:00:01.943184+09:00",
"updated_at": "2026-09-18T15:28:32.650407+09:00"
"updated_at": "2026-09-21T15:28:33.331607+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 37780908.97975002,
"cash": 42481724.47975002,
"initial": 100000000,
"positions": {
"194370": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3504336.4241500003,
"last_add_price": 13420
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"cur_price": 2825,
"tranches": 1,
"tranche_value": 5588552.318031251,
"last_add_price": 2945
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:24.974496+09:00",
"stop": 10215,
"target": 14072,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3334430.645615085,
"last_add_price": 11930
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1651454.8079885093,
"last_add_price": 7390
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5860,
"cur_price": 5780,
"tranches": 2,
"tranche_value": 3924128.001144519,
"last_add_price": 6010
@@ -137,42 +137,21 @@
"qty": 304,
"entry_price": 13496.184210526315,
"entry_at": "2026-09-07T15:06:35.044589+09:00",
"stop": 10420,
"stop": 16018,
"target": 18110,
"peak": 17650,
"trailing_on": false,
"peak": 18380,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,160 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2059070.58259455,
"last_add_price": 13930
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:37.654100+09:00",
"stop": 375781,
"target": 462578,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,461 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 5117479.911622797,
"last_add_price": 410500
}
},
"realized_pnl": -13345196.035500024,
"closed_trades": 36,
"realized_pnl": -13571119.435500024,
"closed_trades": 37,
"wins": 4,
"peak_equity": 100172467.23000002,
"max_drawdown": 0.14748235408916366,
@@ -192,8 +171,9 @@
"090850": "2026-08-05",
"078930": "2026-09-03",
"068270": "2026-09-04",
"327260": "2026-09-07"
"327260": "2026-09-07",
"004370": "2026-09-21"
},
"created_at": "2026-06-11T09:00:01.944232+09:00",
"updated_at": "2026-09-18T15:28:40.874977+09:00"
"updated_at": "2026-09-21T15:28:41.963085+09:00"
}
@@ -104,3 +104,4 @@
{"ts": "2026-09-10T14:02:37.654102+09:00", "side": "BUY", "code": "004370", "name": "농심", "price": 410500, "qty": 12, "cost": 4926739, "path": "pullback", "reason": "눌림목 지정가 411,461 도달", "stop": 375781, "target": 462578, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "410,500 vs 396,800"}, {"label": "정배열(5>10)", "ok": true, "detail": "404,600 / 396,800"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "404,600 / 369,900"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+10.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +8 · 기 -29 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+38%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.27% (환산) vs 평균 0.51% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 440,000"}, {"label": "거래량 급증", "ok": false, "detail": "16,224 (환산) vs 평균 31,191"}, {"label": "회전율 급증", "ok": false, "detail": "0.27% (환산) vs 평균 0.51%"}, {"label": "RSI", "ok": true, "detail": "61"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 411,461 (현재 410,500)"}]}
{"ts": "2026-09-11T11:44:31.402107+09:00", "side": "BUY", "code": "041520", "name": "이엘씨", "price": 11930, "qty": 279, "cost": 3328969, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10071, "target": 13868, "signals": [{"label": "손절선", "ok": true, "detail": "10,071 (현재 11,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 13,868"}, {"label": "추세(10일선)", "ok": true, "detail": "11,366"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +5 · 기 +0"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 11,976"}]}
{"ts": "2026-09-14T09:28:34.566240+09:00", "side": "BUY", "code": "316140", "name": "우리금융지주", "price": 36150, "qty": 131, "cost": 4736360, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 32007, "target": 40115, "signals": [{"label": "손절선", "ok": true, "detail": "32,007 (현재 36,150)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 40,115"}, {"label": "추세(10일선)", "ok": true, "detail": "32,225"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +2,045 · 기 -615"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 36,089"}]}
{"ts": "2026-09-21T15:08:43.617889+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 12, "proceeds": 4700816, "entry_price": 410500, "pnl": -225923, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:37.654100+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 462,578"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -1,5 +1,5 @@
{
"cash": 32359695.756000057,
"cash": 37060511.25600006,
"initial": 100000000,
"positions": {
"086790": {
@@ -11,14 +11,14 @@
"qty": 83,
"entry_price": 123226.50602409638,
"entry_at": "2026-07-30T09:04:06.862578+09:00",
"stop": 131986,
"stop": 132275,
"target": 141566,
"peak": 141800,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 5150762.675171776,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3497500.5799993444,
"last_add_price": 13420
@@ -53,7 +53,7 @@
"qty": 329,
"entry_price": 32318.54103343465,
"entry_at": "2026-08-24T13:12:20.462989+09:00",
"stop": 34360,
"stop": 34376,
"target": 35946,
"peak": 36900,
"trailing_on": true,
@@ -76,12 +76,12 @@
"entry_at": "2026-09-04T11:14:26.495104+09:00",
"stop": 11085,
"target": 18636,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,946 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1928587.8820308954,
"last_add_price": 14660
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1653071.9448850204,
"last_add_price": 7390
@@ -128,27 +128,6 @@
"tranche_value": 3179542.968018449,
"last_add_price": 141500
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:37.657664+09:00",
"stop": 375781,
"target": 462578,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,141 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 5122592.989336174,
"last_add_price": 410500
},
"041520": {
"code": "041520",
"name": "이엘씨",
@@ -160,19 +139,19 @@
"entry_at": "2026-09-15T09:04:39.495077+09:00",
"stop": 10441,
"target": 14267,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,977 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3370314.5438456116,
"last_add_price": 12170
}
},
"realized_pnl": -14769454.806000032,
"closed_trades": 40,
"realized_pnl": -14995378.206000032,
"closed_trades": 41,
"wins": 5,
"peak_equity": 101529111.72700004,
"max_drawdown": 0.16624243648348033,
@@ -194,8 +173,9 @@
"078930": "2026-07-31",
"068270": "2026-09-04",
"138040": "2026-09-08",
"003550": "2026-09-15"
"003550": "2026-09-15",
"004370": "2026-09-21"
},
"created_at": "2026-06-11T09:00:01.944251+09:00",
"updated_at": "2026-09-18T15:28:40.877591+09:00"
"updated_at": "2026-09-21T15:28:41.965908+09:00"
}
@@ -117,3 +117,4 @@
{"ts": "2026-09-15T09:01:02.932908+09:00", "side": "SELL", "code": "003550", "name": "LG", "price": 113400, "qty": 36, "proceeds": 4074439, "entry_price": 122000, "pnl": -318219, "pnl_pct": -7.05, "hold_from": "2026-09-03T09:56:26.998121+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "109,684 (현재 111,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 140,474"}, {"label": "추세(10일선)", "ok": false, "detail": "118,280"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -16 · 기 -177"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,558"}]}
{"ts": "2026-09-15T09:04:39.495078+09:00", "side": "BUY", "code": "041520", "name": "이엘씨", "price": 11780, "qty": 286, "cost": 3369585, "path": "pullback", "reason": "눌림목 지정가 11,977 도달", "stop": 10254, "target": 14069, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "11,790 vs 11,347"}, {"label": "정배열(5>10)", "ok": true, "detail": "11,788 / 11,347"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "11,788 / 9,429"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+35.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +26 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.00% (환산) vs 평균 0.30% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 13,450"}, {"label": "거래량 급증", "ok": false, "detail": "313 (환산) vs 평균 36,789"}, {"label": "회전율 급증", "ok": false, "detail": "0.00% (환산) vs 평균 0.30%"}, {"label": "RSI", "ok": true, "detail": "65"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 11,977 (현재 11,790)"}]}
{"ts": "2026-09-17T13:50:40.410598+09:00", "side": "BUY", "code": "041520", "name": "이엘씨", "price": 12170, "qty": 276, "cost": 3359424, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10254, "target": 14069, "signals": [{"label": "손절선", "ok": true, "detail": "10,254 (현재 12,170)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,069"}, {"label": "추세(10일선)", "ok": true, "detail": "11,385"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +16 · 기 +0"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 12,163"}]}
{"ts": "2026-09-21T15:08:43.620924+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 12, "proceeds": 4700816, "entry_price": 410500, "pnl": -225923, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:37.657664+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 462,578"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -11,14 +11,14 @@
"qty": 97,
"entry_price": 34562.886597938144,
"entry_at": "2026-08-20T09:02:17.450989+09:00",
"stop": 42848,
"stop": 43009,
"target": 49986,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1699505.011186723,
"last_add_price": 35800
@@ -32,7 +32,7 @@
"qty": 302,
"entry_price": 31969.370860927153,
"entry_at": "2026-08-24T09:02:22.276742+09:00",
"stop": 34360,
"stop": 34376,
"target": 36108,
"peak": 36900,
"trailing_on": true,
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:24.986233+09:00",
"stop": 11803,
"target": 18598,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,982 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2363869.6412348715,
"last_add_price": 14660
@@ -76,12 +76,12 @@
"entry_at": "2026-09-10T09:00:55.814433+09:00",
"stop": 10997,
"target": 14266,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 12,003 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4373273.034451844,
"last_add_price": 12290
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 3977003.979830668,
"last_add_price": 117800
@@ -118,12 +118,12 @@
"entry_at": "2026-09-15T10:28:40.300992+09:00",
"stop": 4497,
"target": 6305,
"peak": 5290,
"peak": 5410,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 5,108 도달",
"cur_price": 5010,
"cur_price": 5150,
"tranches": 1,
"tranche_value": 3476292.7545329626,
"last_add_price": 5100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,341 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2789435.574661536,
"last_add_price": 20200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,386 도달",
"cur_price": 16330,
"cur_price": 16240,
"tranches": 1,
"tranche_value": 5079314.422828128,
"last_add_price": 16170
@@ -205,5 +205,5 @@
"004370": "2026-09-17"
},
"created_at": "2026-06-11T09:00:01.944270+09:00",
"updated_at": "2026-09-18T15:28:40.880242+09:00"
"updated_at": "2026-09-21T15:28:41.968639+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 5180051.180047499,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4464385.527789056,
"last_add_price": 13420
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:24.991070+09:00",
"stop": 11801,
"target": 18596,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,982 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2517324.6404987266,
"last_add_price": 14660
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 3,140 도달",
"cur_price": 3100,
"cur_price": 3125,
"tranches": 2,
"tranche_value": 4146153.6468727933,
"last_add_price": 3255
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 2135715.450247605,
"last_add_price": 7390
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,341 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2842559.6395269656,
"last_add_price": 20200
@@ -139,12 +139,12 @@
"entry_at": "2026-09-16T13:08:40.269206+09:00",
"stop": 10788,
"target": 14231,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,955 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4111186.507374883,
"last_add_price": 12170
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 6,155 도달",
"cur_price": 6190,
"cur_price": 6080,
"tranches": 1,
"tranche_value": 5205107.041859375,
"last_add_price": 6130
@@ -199,5 +199,5 @@
"004370": "2026-09-18"
},
"created_at": "2026-06-11T09:00:01.944290+09:00",
"updated_at": "2026-09-18T15:28:40.882690+09:00"
"updated_at": "2026-09-21T15:28:41.971242+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 5184250.1290937485,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 4675255.455593748,
"last_add_price": 120500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4550435.925312498,
"last_add_price": 125200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 4604300.898906248,
"last_add_price": 136000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4446388.7381874975,
"last_add_price": 13420
@@ -118,12 +118,12 @@
"entry_at": "2026-08-20T09:02:17.459458+09:00",
"stop": 24273,
"target": 65401,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 2315542.8746463708,
"last_add_price": 35800
@@ -160,12 +160,12 @@
"entry_at": "2026-09-10T09:00:57.076883+09:00",
"stop": 10458,
"target": 22762,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,977 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 3390239.348206665,
"last_add_price": 13930
@@ -199,5 +199,5 @@
"161890": "2026-07-30"
},
"created_at": "2026-06-15T14:55:00.582771+09:00",
"updated_at": "2026-09-18T15:28:42.043527+09:00"
"updated_at": "2026-09-21T15:28:43.155740+09:00"
}
@@ -11,14 +11,14 @@
"qty": 81,
"entry_price": 123225.92592592593,
"entry_at": "2026-07-30T09:04:07.472633+09:00",
"stop": 131986,
"stop": 132275,
"target": 141565,
"peak": 141800,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 5030428.7588749975,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4920739.488124997,
"last_add_price": 13420
@@ -53,14 +53,14 @@
"qty": 147,
"entry_price": 34559.183673469386,
"entry_at": "2026-08-20T09:02:17.463463+09:00",
"stop": 42848,
"stop": 43009,
"target": 49982,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 2545799.7712668725,
"last_add_price": 35800
@@ -74,7 +74,7 @@
"qty": 295,
"entry_price": 32320.677966101695,
"entry_at": "2026-08-24T13:12:20.475258+09:00",
"stop": 34360,
"stop": 34376,
"target": 35952,
"peak": 36900,
"trailing_on": true,
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4975122.724249996,
"last_add_price": 30200
@@ -116,14 +116,14 @@
"qty": 543,
"entry_price": 13534.364640883978,
"entry_at": "2026-09-10T09:00:57.191927+09:00",
"stop": 10458,
"stop": 16018,
"target": 18148,
"peak": 17650,
"trailing_on": false,
"peak": 18380,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,977 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 3681766.0445766635,
"last_add_price": 13930
@@ -139,12 +139,12 @@
"entry_at": "2026-09-15T09:04:40.682851+09:00",
"stop": 10442,
"target": 14267,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,977 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 5111363.335968746,
"last_add_price": 12170
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 1,
"tranche_value": 5117033.466531246,
"last_add_price": 339000
@@ -201,5 +201,5 @@
"012450": "2026-09-15"
},
"created_at": "2026-06-15T14:55:00.582787+09:00",
"updated_at": "2026-09-18T15:28:42.060773+09:00"
"updated_at": "2026-09-21T15:28:43.172453+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4697478.874937497,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4594021.1274374975,
"last_add_price": 13420
@@ -55,12 +55,12 @@
"entry_at": "2026-08-20T09:02:17.467056+09:00",
"stop": 24274,
"target": 55120,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 2377721.795719703,
"last_add_price": 35800
@@ -97,12 +97,12 @@
"entry_at": "2026-09-09T14:22:31.922572+09:00",
"stop": 10572,
"target": 19800,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,936 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 3428684.1695128847,
"last_add_price": 14070
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4704444.468062498,
"last_add_price": 89700
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 4675233.334531248,
"last_add_price": 117800
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 1,
"tranche_value": 4832581.963906247,
"last_add_price": 339000
@@ -201,5 +201,5 @@
"012450": "2026-09-15"
},
"created_at": "2026-06-15T14:55:00.582803+09:00",
"updated_at": "2026-09-18T15:28:42.071234+09:00"
"updated_at": "2026-09-21T15:28:43.181466+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4929642.288776176,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4296364.655919675,
"last_add_price": 13420
@@ -53,14 +53,14 @@
"qty": 100,
"entry_price": 34552.0,
"entry_at": "2026-08-20T09:02:17.470693+09:00",
"stop": 42848,
"stop": 43009,
"target": 49975,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1744609.622982949,
"last_add_price": 35800
@@ -76,12 +76,12 @@
"entry_at": "2026-09-03T09:02:25.006986+09:00",
"stop": 11802,
"target": 18597,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,982 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2434547.9721527454,
"last_add_price": 14660
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4463555.687218576,
"last_add_price": 89700
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 1,
"tranche_value": 4627244.071259187,
"last_add_price": 339000
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,358 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2897546.077914521,
"last_add_price": 20400
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 6,155 도달",
"cur_price": 6190,
"cur_price": 6080,
"tranches": 1,
"tranche_value": 5190716.56796875,
"last_add_price": 6130
@@ -203,5 +203,5 @@
"004370": "2026-09-18"
},
"created_at": "2026-06-15T14:55:00.582834+09:00",
"updated_at": "2026-09-18T15:28:42.078818+09:00"
"updated_at": "2026-09-21T15:28:43.189373+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4489026.732352336,
"last_add_price": 13420
@@ -32,14 +32,14 @@
"qty": 102,
"entry_price": 34552.94117647059,
"entry_at": "2026-08-20T09:02:17.473909+09:00",
"stop": 42848,
"stop": 43009,
"target": 46120,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1773404.3510667775,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 4928101.458627134,
"last_add_price": 50000
@@ -76,12 +76,12 @@
"entry_at": "2026-09-03T09:02:25.010915+09:00",
"stop": 10600,
"target": 13493,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4133528.1959721213,
"last_add_price": 11930
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,342 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 2547466.077043123,
"last_add_price": 4795
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4422821.372265709,
"last_add_price": 89700
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,361 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2705294.1080848053,
"last_add_price": 20200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 409,907 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4952859.68257812,
"last_add_price": 392500
@@ -202,5 +202,5 @@
"060250": "2026-09-16"
},
"created_at": "2026-06-15T14:55:00.582849+09:00",
"updated_at": "2026-09-18T15:28:42.085093+09:00"
"updated_at": "2026-09-21T15:28:43.196545+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4188989.7646745183,
"last_add_price": 13420
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:17.477466+09:00",
"stop": 26851,
"target": 57698,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1684859.3510976394,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 4686399.784966664,
"last_add_price": 50000
@@ -76,12 +76,12 @@
"entry_at": "2026-09-01T09:00:35.729808+09:00",
"stop": 10519,
"target": 14942,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,563 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3841219.293311723,
"last_add_price": 11890
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,342 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 2440070.444136775,
"last_add_price": 4795
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 3791358.59699398,
"last_add_price": 117800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4228860.553627883,
"last_add_price": 90400
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 409,907 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4768466.620374998,
"last_add_price": 392500
@@ -201,5 +201,5 @@
"068270": "2026-09-04"
},
"created_at": "2026-06-15T14:55:00.582864+09:00",
"updated_at": "2026-09-18T15:28:42.090311+09:00"
"updated_at": "2026-09-21T15:28:43.201921+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3813943.0504600187,
"last_add_price": 350000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3759463.8630866953,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3342042.065213833,
"last_add_price": 13420
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"cur_price": 2825,
"tranches": 1,
"tranche_value": 5363811.392406253,
"last_add_price": 2960
@@ -97,12 +97,12 @@
"entry_at": "2026-09-03T09:02:26.527931+09:00",
"stop": 10214,
"target": 16387,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3177696.924168879,
"last_add_price": 11930
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 3239694.510071496,
"last_add_price": 126400
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 2,
"tranche_value": 3233975.9230847433,
"last_add_price": 152000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 1,
"tranche_value": 4302231.2098323405,
"last_add_price": 30300
@@ -198,5 +198,5 @@
"327260": "2026-09-07"
},
"created_at": "2026-06-15T14:55:00.582879+09:00",
"updated_at": "2026-09-18T15:28:43.278297+09:00"
"updated_at": "2026-09-21T15:28:44.395992+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 41868261.21100005,
"cash": 46177342.08600005,
"initial": 100000000,
"positions": {
"194370": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3342042.065213833,
"last_add_price": 13420
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"cur_price": 2825,
"tranches": 1,
"tranche_value": 5343166.925093753,
"last_add_price": 2960
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:26.541405+09:00",
"stop": 10214,
"target": 14844,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3169899.6784588406,
"last_add_price": 11930
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 3232111.486475773,
"last_add_price": 126400
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 2,
"tranche_value": 3225992.8046420617,
"last_add_price": 152000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 1,
"tranche_value": 4294882.6988680065,
"last_add_price": 30300
@@ -139,40 +139,19 @@
"entry_at": "2026-09-09T14:22:32.552571+09:00",
"stop": 6036,
"target": 7967,
"peak": 6690,
"peak": 6770,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 1,
"tranche_value": 4287737.740777487,
"last_add_price": 6680
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 11,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:38.896994+09:00",
"stop": 375781,
"target": 479937,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,461 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 4801102.649890805,
"last_add_price": 410500
}
},
"realized_pnl": -17178616.74200002,
"closed_trades": 38,
"realized_pnl": -17385713.19200002,
"closed_trades": 39,
"wins": 3,
"peak_equity": 100000000,
"max_drawdown": 0.19164184571499943,
@@ -195,8 +174,9 @@
"090850": "2026-08-05",
"078930": "2026-09-03",
"068270": "2026-09-04",
"327260": "2026-09-07"
"327260": "2026-09-07",
"004370": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.582910+09:00",
"updated_at": "2026-09-18T15:28:43.294510+09:00"
"updated_at": "2026-09-21T15:28:44.410085+09:00"
}
@@ -111,3 +111,4 @@
{"ts": "2026-09-10T10:04:33.243952+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 152500, "qty": 55, "proceeds": 8371144, "entry_price": 133404, "pnl": 1032844, "pnl_pct": 14.31, "hold_from": "2026-07-30T09:16:11.950700+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "153,508 (현재 152,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(10일선)", "ok": true, "detail": "110,750"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +0 · 기 +306"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-10T14:02:38.896999+09:00", "side": "BUY", "code": "004370", "name": "농심", "price": 410500, "qty": 11, "cost": 4516177, "path": "pullback", "reason": "눌림목 지정가 411,461 도달", "stop": 375781, "target": 479937, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "410,500 vs 396,800"}, {"label": "정배열(5>10)", "ok": true, "detail": "404,600 / 396,800"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "404,600 / 369,900"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+10.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +8 · 기 -29 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+38%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.27% (환산) vs 평균 0.51% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 440,000"}, {"label": "거래량 급증", "ok": false, "detail": "16,224 (환산) vs 평균 31,191"}, {"label": "회전율 급증", "ok": false, "detail": "0.27% (환산) vs 평균 0.51%"}, {"label": "RSI", "ok": true, "detail": "61"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 411,461 (현재 410,500)"}]}
{"ts": "2026-09-11T11:44:33.698969+09:00", "side": "BUY", "code": "041520", "name": "이엘씨", "price": 11930, "qty": 265, "cost": 3161924, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10071, "target": 14627, "signals": [{"label": "손절선", "ok": true, "detail": "10,071 (현재 11,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,627"}, {"label": "추세(10일선)", "ok": true, "detail": "11,366"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +5 · 기 +0"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 11,976"}]}
{"ts": "2026-09-21T15:08:46.000247+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 11, "proceeds": 4309081, "entry_price": 410500, "pnl": -207096, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:38.896994+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 479,937"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3393650.506937234,
"last_add_price": 13420
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"cur_price": 2825,
"tranches": 1,
"tranche_value": 5376321.98103125,
"last_add_price": 2960
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:26.549668+09:00",
"stop": 10214,
"target": 14072,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3188265.499071182,
"last_add_price": 11930
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4425264.84827894,
"last_add_price": 30200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 3216718.402620471,
"last_add_price": 126400
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 2,
"tranche_value": 3217490.050630382,
"last_add_price": 152000
@@ -160,12 +160,12 @@
"entry_at": "2026-09-15T09:22:38.524884+09:00",
"stop": 19796,
"target": 27931,
"peak": 23700,
"peak": 26000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 23550,
"cur_price": 25150,
"tranches": 1,
"tranche_value": 2877279.885443339,
"last_add_price": 23050
@@ -198,5 +198,5 @@
"327260": "2026-09-07"
},
"created_at": "2026-06-15T14:55:00.582926+09:00",
"updated_at": "2026-09-18T15:28:43.304007+09:00"
"updated_at": "2026-09-21T15:28:44.418206+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 37777981.883749984,
"cash": 41262543.71224999,
"initial": 100000000,
"positions": {
"194370": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4271897.688361821,
"last_add_price": 13420
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:18.553157+09:00",
"stop": 26852,
"target": 57698,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1725875.4362712654,
"last_add_price": 35800
@@ -55,37 +55,16 @@
"entry_at": "2026-09-01T09:00:39.404439+09:00",
"stop": 10518,
"target": 14942,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,563 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3922687.5648087934,
"last_add_price": 11890
},
"079650": {
"code": "079650",
"name": "서산",
"sources": [
"watch"
],
"qty": 579,
"entry_price": 7398.480138169258,
"entry_at": "2026-09-03T09:02:26.557502+09:00",
"stop": 6041,
"target": 11472,
"peak": 8840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"tranches": 2,
"tranche_value": 2145338.3431725265,
"last_add_price": 7700
},
"003680": {
"code": "003680",
"name": "한성기업",
@@ -102,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,342 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 2474296.0650329688,
"last_add_price": 4795
@@ -123,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4391923.653301918,
"last_add_price": 90400
@@ -144,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4981802.023234375,
"last_add_price": 411000
@@ -165,14 +144,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,104 도달",
"cur_price": 16330,
"cur_price": 16240,
"tranches": 1,
"tranche_value": 4892789.090421874,
"last_add_price": 16140
}
},
"realized_pnl": -21528399.989000022,
"closed_trades": 50,
"realized_pnl": -22328200.71850002,
"closed_trades": 51,
"wins": 3,
"peak_equity": 100344662.275,
"max_drawdown": 0.23080444655370694,
@@ -197,8 +176,9 @@
"078930": "2026-09-03",
"003550": "2026-08-19",
"068270": "2026-09-04",
"001790": "2026-09-11"
"001790": "2026-09-11",
"079650": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.583136+09:00",
"updated_at": "2026-09-18T15:28:43.311307+09:00"
"updated_at": "2026-09-21T15:28:44.426061+09:00"
}
@@ -139,3 +139,4 @@
{"ts": "2026-09-11T11:12:36.146277+09:00", "side": "BUY", "code": "004370", "name": "농심", "price": 411000, "qty": 12, "cost": 4932740, "path": "pullback", "reason": "눌림목 지정가 411,247 도달", "stop": 384747, "target": 489760, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "411,000 vs 383,775"}, {"label": "정배열(5>20)", "ok": true, "detail": "404,700 / 383,775"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "404,700 / 369,908"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +8 · 기 -25 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+38%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.43% (환산) vs 평균 0.51% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 440,000"}, {"label": "거래량 급증", "ok": false, "detail": "26,341 (환산) vs 평균 31,191"}, {"label": "회전율 급증", "ok": false, "detail": "0.43% (환산) vs 평균 0.51%"}, {"label": "RSI", "ok": true, "detail": "61"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 411,247 (현재 411,000)"}]}
{"ts": "2026-09-17T09:08:42.380668+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 134300, "qty": 25, "proceeds": 3350953, "entry_price": 150996, "pnl": -424513, "pnl_pct": -11.06, "hold_from": "2026-08-20T09:02:18.554253+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "122,357 (현재 134,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 236,914"}, {"label": "추세(20일선)", "ok": false, "detail": "135,130"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -114 · 기 -31"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-17T09:08:42.382623+09:00", "side": "BUY", "code": "300720", "name": "한일시멘트", "price": 16140, "qty": 303, "cost": 4891154, "path": "pullback", "reason": "눌림목 지정가 16,104 도달", "stop": 15294, "target": 18677, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "16,100 vs 15,209"}, {"label": "정배열(5>20)", "ok": true, "detail": "16,302 / 15,209"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "16,302 / 14,436"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+17.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +8 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+27%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.02% (환산) vs 평균 0.12% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 17,140"}, {"label": "거래량 급증", "ok": false, "detail": "13,200 (환산) vs 평균 89,609"}, {"label": "회전율 급증", "ok": false, "detail": "0.02% (환산) vs 평균 0.12%"}, {"label": "RSI", "ok": true, "detail": "61"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 16,104 (현재 16,100)"}]}
{"ts": "2026-09-21T13:36:43.486787+09:00", "side": "SELL", "code": "079650", "name": "서산", "price": 6030, "qty": 579, "proceeds": 3484562, "entry_price": 7398, "pnl": -799801, "pnl_pct": -18.5, "hold_from": "2026-09-03T09:02:26.557502+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,041 (현재 6,040)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 11,472"}, {"label": "추세(20일선)", "ok": true, "detail": "4,838"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +60 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3889733.683715179,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 5327150.576000001,
"last_add_price": 120500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4940372.790080874,
"last_add_price": 125200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3791237.2526261737,
"last_add_price": 136000
@@ -118,12 +118,12 @@
"entry_at": "2026-09-04T11:14:28.093854+09:00",
"stop": 11084,
"target": 23166,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,946 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1870914.8665673207,
"last_add_price": 14660
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 1,
"tranche_value": 4478278.821943787,
"last_add_price": 30200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,358 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2222419.950014418,
"last_add_price": 20800
@@ -199,5 +199,5 @@
"327260": "2026-09-07"
},
"created_at": "2026-06-15T14:55:00.583184+09:00",
"updated_at": "2026-09-18T15:28:43.316859+09:00"
"updated_at": "2026-09-21T15:28:44.432074+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 5075960.404438956,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3433240.983007488,
"last_add_price": 13420
@@ -55,12 +55,12 @@
"entry_at": "2026-08-20T09:02:18.566265+09:00",
"stop": 24287,
"target": 55133,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1369448.2358109318,
"last_add_price": 35800
@@ -97,12 +97,12 @@
"entry_at": "2026-09-10T09:00:59.533567+09:00",
"stop": 10457,
"target": 19685,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,977 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2028063.468468333,
"last_add_price": 13930
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 3559282.5485596135,
"last_add_price": 90400
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,141 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 5110932.165583902,
"last_add_price": 410500
@@ -160,12 +160,12 @@
"entry_at": "2026-09-15T10:28:42.212262+09:00",
"stop": 10606,
"target": 14939,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,977 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3423153.5325177917,
"last_add_price": 12300
@@ -199,5 +199,5 @@
"012450": "2026-09-15"
},
"created_at": "2026-06-15T14:55:00.583198+09:00",
"updated_at": "2026-09-18T15:28:43.321896+09:00"
"updated_at": "2026-09-21T15:28:44.437364+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3393597.375168939,
"last_add_price": 13420
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:18.571212+09:00",
"stop": 24287,
"target": 55133,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1360762.8418676818,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,342 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 2667186.0151028302,
"last_add_price": 4795
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 3452170.020442301,
"last_add_price": 90400
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,461 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4957124.381763087,
"last_add_price": 410500
@@ -118,12 +118,12 @@
"entry_at": "2026-09-15T10:28:42.222734+09:00",
"stop": 13984,
"target": 23028,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2314620.8603280014,
"last_add_price": 17350
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,361 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2104217.9889743566,
"last_add_price": 20200
@@ -160,12 +160,12 @@
"entry_at": "2026-09-17T09:08:42.400423+09:00",
"stop": 10684,
"target": 15043,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,592 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3193443.5587442005,
"last_add_price": 12330
@@ -201,5 +201,5 @@
"060250": "2026-09-16"
},
"created_at": "2026-06-15T14:55:00.583212+09:00",
"updated_at": "2026-09-18T15:28:43.326619+09:00"
"updated_at": "2026-09-21T15:28:44.442338+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 36774522.65349998,
"cash": 41083603.52849998,
"initial": 100000000,
"positions": {
"086790": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4940372.790080874,
"last_add_price": 125200
@@ -55,12 +55,12 @@
"entry_at": "2026-09-04T11:14:28.107284+09:00",
"stop": 11084,
"target": 20145,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,946 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1867525.9036903584,
"last_add_price": 14660
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 1,
"tranche_value": 4469498.464141663,
"last_add_price": 30200
@@ -107,27 +107,6 @@
"tranche_value": 3071180.117220259,
"last_add_price": 141500
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 11,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:38.938971+09:00",
"stop": 375781,
"target": 479937,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,141 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 4920492.504829236,
"last_add_price": 410500
},
"327260": {
"code": "327260",
"name": "RF머트리얼즈",
@@ -139,12 +118,12 @@
"entry_at": "2026-09-10T14:12:34.510311+09:00",
"stop": 36405,
"target": 63833,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 2073999.8646011376,
"last_add_price": 46800
@@ -165,14 +144,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,358 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2239564.1285592173,
"last_add_price": 20800
}
},
"realized_pnl": -18308390.79400002,
"closed_trades": 42,
"realized_pnl": -18515487.244000018,
"closed_trades": 43,
"wins": 3,
"peak_equity": 101140808.32700005,
"max_drawdown": 0.19631637526867085,
@@ -197,8 +176,9 @@
"078930": "2026-07-31",
"068270": "2026-09-04",
"327260": "2026-09-07",
"138040": "2026-09-08"
"138040": "2026-09-08",
"004370": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.583227+09:00",
"updated_at": "2026-09-18T15:28:43.330673+09:00"
"updated_at": "2026-09-21T15:28:44.446637+09:00"
}
@@ -124,3 +124,4 @@
{"ts": "2026-09-14T10:58:39.698024+09:00", "side": "BUY", "code": "327260", "name": "RF머트리얼즈", "price": 46800, "qty": 44, "cost": 2059509, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 35450, "target": 62150, "signals": [{"label": "손절선", "ok": true, "detail": "35,450 (현재 46,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 62,150"}, {"label": "추세(10일선)", "ok": true, "detail": "36,705"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -325 · 기 +685"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 46,636"}]}
{"ts": "2026-09-17T09:00:51.562393+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 137000, "qty": 21, "proceeds": 2871390, "entry_price": 158014, "pnl": -447408, "pnl_pct": -13.3, "hold_from": "2026-09-07T15:06:37.194049+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "120,000 (현재 135,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 234,043"}, {"label": "추세(10일선)", "ok": false, "detail": "151,150"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -114 · 기 -31"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-17T09:00:51.566474+09:00", "side": "BUY", "code": "372170", "name": "윤성에프앤씨", "price": 20800, "qty": 107, "cost": 2225934, "path": "pullback", "reason": "눌림목 지정가 21,358 도달", "stop": 16916, "target": 28569, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "20,350 vs 19,093"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,706 / 19,093"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,706 / 19,451"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+42.4%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +3 · 기 +2 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.08% (환산) vs 평균 0.56% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 23,400"}, {"label": "거래량 급증", "ok": false, "detail": "6,607 (환산) vs 평균 44,688"}, {"label": "회전율 급증", "ok": false, "detail": "0.08% (환산) vs 평균 0.56%"}, {"label": "RSI", "ok": true, "detail": "57"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 21,358 (현재 20,350)"}]}
{"ts": "2026-09-21T15:08:46.041798+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 11, "proceeds": 4309081, "entry_price": 410500, "pnl": -207096, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:38.938971+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 479,937"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -1,5 +1,5 @@
{
"cash": 41002570.703499965,
"cash": 44782026.365499966,
"initial": 100000000,
"positions": {
"327260": {
@@ -11,14 +11,14 @@
"qty": 105,
"entry_price": 34565.71428571428,
"entry_at": "2026-08-20T09:02:18.579921+09:00",
"stop": 42848,
"stop": 43009,
"target": 46133,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1835134.7132164796,
"last_add_price": 35800
@@ -34,37 +34,16 @@
"entry_at": "2026-09-01T09:00:39.955979+09:00",
"stop": 10518,
"target": 13283,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,563 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4188194.7669907366,
"last_add_price": 11890
},
"079650": {
"code": "079650",
"name": "서산",
"sources": [
"watch"
],
"qty": 628,
"entry_price": 7398.91719745223,
"entry_at": "2026-09-03T09:02:26.579292+09:00",
"stop": 6041,
"target": 9435,
"peak": 8840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"tranches": 2,
"tranche_value": 2326946.156796955,
"last_add_price": 7700
},
"003490": {
"code": "003490",
"name": "대한항공",
@@ -81,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 5380475.415249998,
"last_add_price": 30000
@@ -95,14 +74,14 @@
"qty": 358,
"entry_price": 13434.525139664804,
"entry_at": "2026-09-09T09:04:30.445123+09:00",
"stop": 15352,
"stop": 16018,
"target": 16895,
"peak": 17650,
"peak": 18380,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,153 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2413342.693478599,
"last_add_price": 13820
@@ -123,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 4372017.345337843,
"last_add_price": 142500
@@ -144,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4778356.865055864,
"last_add_price": 90400
@@ -165,14 +144,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,361 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2964066.934819155,
"last_add_price": 20200
}
},
"realized_pnl": -14868090.888500039,
"closed_trades": 59,
"realized_pnl": -15735852.204500038,
"closed_trades": 60,
"wins": 11,
"peak_equity": 100344662.275,
"max_drawdown": 0.17793081459150337,
@@ -199,8 +178,9 @@
"194370": "2026-08-24",
"068270": "2026-08-26",
"012450": "2026-09-15",
"060250": "2026-09-16"
"060250": "2026-09-16",
"079650": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.583241+09:00",
"updated_at": "2026-09-18T15:28:43.334610+09:00"
"updated_at": "2026-09-21T15:28:44.450744+09:00"
}
@@ -159,3 +159,4 @@
{"ts": "2026-09-15T10:28:42.631949+09:00", "side": "BUY", "code": "060250", "name": "NHN KCP", "price": 14480, "qty": 348, "cost": 5039796, "path": "pullback", "reason": "눌림목 지정가 14,528 도달", "stop": 13230, "target": 16355, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "14,480 vs 14,348"}, {"label": "정배열(5>20)", "ok": true, "detail": "15,314 / 14,348"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,314 / 13,589"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+20.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +19 · 기 +4 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+31%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.96% (환산) vs 평균 1.51% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 16,190"}, {"label": "거래량 급증", "ok": false, "detail": "384,894 (환산) vs 평균 608,910"}, {"label": "회전율 급증", "ok": false, "detail": "0.96% (환산) vs 평균 1.51%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 14,528 (현재 14,480)"}]}
{"ts": "2026-09-16T09:02:40.224730+09:00", "side": "SELL", "code": "060250", "name": "NHN KCP", "price": 12830, "qty": 348, "proceeds": 4456134, "entry_price": 14480, "pnl": -583662, "pnl_pct": -11.4, "hold_from": "2026-09-15T10:28:42.631932+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "13,230 (현재 12,850)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,355"}, {"label": "추세(20일선)", "ok": false, "detail": "14,266"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +14 · 기 +18"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 15,078"}]}
{"ts": "2026-09-16T13:08:42.133985+09:00", "side": "BUY", "code": "372170", "name": "윤성에프앤씨", "price": 20200, "qty": 146, "cost": 2949642, "path": "pullback", "reason": "눌림목 지정가 20,361 도달", "stop": 17261, "target": 24608, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "20,150 vs 16,762"}, {"label": "정배열(5>20)", "ok": true, "detail": "19,666 / 16,762"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,666 / 19,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+39.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +0 · 기 +1 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.56% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 23,400"}, {"label": "거래량 급증", "ok": false, "detail": "14,282 (환산) vs 평균 44,688"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.56%"}, {"label": "RSI", "ok": true, "detail": "56"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 20,361 (현재 20,150)"}]}
{"ts": "2026-09-21T13:36:43.512667+09:00", "side": "SELL", "code": "079650", "name": "서산", "price": 6030, "qty": 628, "proceeds": 3779456, "entry_price": 7399, "pnl": -867761, "pnl_pct": -18.5, "hold_from": "2026-09-03T09:02:26.579292+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,041 (현재 6,040)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,435"}, {"label": "추세(20일선)", "ok": true, "detail": "4,838"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +60 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -11,14 +11,14 @@
"qty": 81,
"entry_price": 34555.555555555555,
"entry_at": "2026-08-20T09:02:18.583985+09:00",
"stop": 42848,
"stop": 43009,
"target": 49979,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1405152.4684093075,
"last_add_price": 35800
@@ -34,12 +34,12 @@
"entry_at": "2026-09-03T09:02:26.582362+09:00",
"stop": 11047,
"target": 18598,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,982 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1936750.8143745721,
"last_add_price": 14660
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5860,
"cur_price": 5780,
"tranches": 2,
"tranche_value": 3900770.372145102,
"last_add_price": 6010
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,748 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 5407643.370014776,
"last_add_price": 418500
@@ -97,12 +97,12 @@
"entry_at": "2026-09-10T09:01:00.003107+09:00",
"stop": 10634,
"target": 14266,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 12,003 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3508251.3322146544,
"last_add_price": 12290
@@ -118,12 +118,12 @@
"entry_at": "2026-09-15T10:28:42.648525+09:00",
"stop": 4297,
"target": 6305,
"peak": 5290,
"peak": 5410,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 5,108 도달",
"cur_price": 5010,
"cur_price": 5150,
"tranches": 1,
"tranche_value": 2789847.3916354305,
"last_add_price": 5100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,341 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2236369.174025517,
"last_add_price": 20200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 6,156 도달",
"cur_price": 6190,
"cur_price": 6080,
"tranches": 2,
"tranche_value": 5435662.905375001,
"last_add_price": 6250
@@ -203,5 +203,5 @@
"060250": "2026-09-16"
},
"created_at": "2026-06-15T14:55:00.583273+09:00",
"updated_at": "2026-09-18T15:28:43.338433+09:00"
"updated_at": "2026-09-21T15:28:44.454710+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 41771429.65375005,
"cash": 46080510.52875005,
"initial": 100000000,
"positions": {
"194370": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3377559.3310465557,
"last_add_price": 13420
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"cur_price": 2825,
"tranches": 1,
"tranche_value": 5376462.657906253,
"last_add_price": 2945
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:26.586284+09:00",
"stop": 10214,
"target": 14844,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3207769.240733453,
"last_add_price": 11930
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 3270991.576203241,
"last_add_price": 126400
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5860,
"cur_price": 5780,
"tranches": 2,
"tranche_value": 3847717.292460384,
"last_add_price": 6050
@@ -118,37 +118,16 @@
"entry_at": "2026-09-07T15:06:37.205681+09:00",
"stop": 10421,
"target": 19649,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,160 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1999967.3303914513,
"last_add_price": 13930
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 11,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:38.951303+09:00",
"stop": 375781,
"target": 479937,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,461 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 4919066.491939197,
"last_add_price": 410500
},
"327260": {
"code": "327260",
"name": "RF머트리얼즈",
@@ -160,19 +139,19 @@
"entry_at": "2026-09-10T14:12:34.522062+09:00",
"stop": 36405,
"target": 63833,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 2072539.7610259354,
"last_add_price": 46800
}
},
"realized_pnl": -16271262.694000028,
"closed_trades": 37,
"realized_pnl": -16478359.144000027,
"closed_trades": 38,
"wins": 3,
"peak_equity": 100024962.38500004,
"max_drawdown": 0.17739604290679473,
@@ -194,8 +173,9 @@
"090850": "2026-08-05",
"078930": "2026-09-03",
"068270": "2026-09-04",
"327260": "2026-09-07"
"327260": "2026-09-07",
"004370": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.583289+09:00",
"updated_at": "2026-09-18T15:28:43.341895+09:00"
"updated_at": "2026-09-21T15:28:44.458244+09:00"
}
@@ -110,3 +110,4 @@
{"ts": "2026-09-10T14:12:34.522063+09:00", "side": "BUY", "code": "327260", "name": "RF머트리얼즈", "price": 44350, "qty": 46, "cost": 2040406, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 35450, "target": 62150, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "44,350 vs 36,470"}, {"label": "정배열(5>10)", "ok": true, "detail": "37,790 / 36,470"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "37,790 / 29,897"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+14.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -27 · 기 +263 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+53%"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "10.79% (환산) vs 평균 4.02% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 43,650"}, {"label": "거래량 급증", "ok": true, "detail": "1,941,613 (환산) vs 평균 673,097"}, {"label": "회전율 급증", "ok": true, "detail": "10.79% (환산) vs 평균 4.02%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
{"ts": "2026-09-11T11:44:33.746853+09:00", "side": "BUY", "code": "041520", "name": "이엘씨", "price": 11930, "qty": 268, "cost": 3197720, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10071, "target": 14627, "signals": [{"label": "손절선", "ok": true, "detail": "10,071 (현재 11,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,627"}, {"label": "추세(10일선)", "ok": true, "detail": "11,366"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +5 · 기 +0"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 11,976"}]}
{"ts": "2026-09-14T10:58:39.707343+09:00", "side": "BUY", "code": "327260", "name": "RF머트리얼즈", "price": 46800, "qty": 44, "cost": 2059509, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 35450, "target": 62150, "signals": [{"label": "손절선", "ok": true, "detail": "35,450 (현재 46,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 62,150"}, {"label": "추세(10일선)", "ok": true, "detail": "36,705"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -325 · 기 +685"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 46,636"}]}
{"ts": "2026-09-21T15:08:46.053607+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 11, "proceeds": 4309081, "entry_price": 410500, "pnl": -207096, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:38.951303+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 479,937"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -1,5 +1,5 @@
{
"cash": 37095923.43000002,
"cash": 41796738.93000002,
"initial": 100000000,
"positions": {
"194370": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3428336.7554835076,
"last_add_price": 13420
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"cur_price": 2825,
"tranches": 1,
"tranche_value": 5467963.193781251,
"last_add_price": 2945
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:26.589529+09:00",
"stop": 10215,
"target": 14072,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3262304.762250248,
"last_add_price": 11930
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4492093.16528453,
"last_add_price": 30000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1623025.8813087621,
"last_add_price": 7390
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 5860,
"cur_price": 5780,
"tranches": 2,
"tranche_value": 3857497.927320607,
"last_add_price": 6010
@@ -137,42 +137,21 @@
"qty": 299,
"entry_price": 13497.357859531772,
"entry_at": "2026-09-07T15:06:37.209053+09:00",
"stop": 10421,
"stop": 16018,
"target": 18111,
"peak": 17650,
"trailing_on": false,
"peak": 18380,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,160 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2022912.4075034007,
"last_add_price": 13930
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:38.955194+09:00",
"stop": 375781,
"target": 462578,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,461 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 5011499.306498856,
"last_add_price": 410500
}
},
"realized_pnl": -15231956.824500022,
"closed_trades": 38,
"realized_pnl": -15457880.224500023,
"closed_trades": 39,
"wins": 4,
"peak_equity": 100024962.38500004,
"max_drawdown": 0.16498611269635213,
@@ -194,8 +173,9 @@
"090850": "2026-08-05",
"078930": "2026-09-03",
"068270": "2026-09-04",
"327260": "2026-09-07"
"327260": "2026-09-07",
"004370": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.583304+09:00",
"updated_at": "2026-09-18T15:28:43.345104+09:00"
"updated_at": "2026-09-21T15:28:44.461583+09:00"
}
@@ -110,3 +110,4 @@
{"ts": "2026-09-10T11:38:29.520379+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 13930, "qty": 145, "cost": 2020153, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10340, "target": 17215, "signals": [{"label": "손절선", "ok": true, "detail": "10,340 (현재 13,910)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 17,215"}, {"label": "추세(10일선)", "ok": true, "detail": "12,964"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -256 · 기 +80"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,859"}]}
{"ts": "2026-09-10T14:02:38.955195+09:00", "side": "BUY", "code": "004370", "name": "농심", "price": 410500, "qty": 12, "cost": 4926739, "path": "pullback", "reason": "눌림목 지정가 411,461 도달", "stop": 375781, "target": 462578, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "410,500 vs 396,800"}, {"label": "정배열(5>10)", "ok": true, "detail": "404,600 / 396,800"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "404,600 / 369,900"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+10.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +8 · 기 -29 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+38%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.27% (환산) vs 평균 0.51% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 440,000"}, {"label": "거래량 급증", "ok": false, "detail": "16,224 (환산) vs 평균 31,191"}, {"label": "회전율 급증", "ok": false, "detail": "0.27% (환산) vs 평균 0.51%"}, {"label": "RSI", "ok": true, "detail": "61"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 411,461 (현재 410,500)"}]}
{"ts": "2026-09-11T11:44:33.750185+09:00", "side": "BUY", "code": "041520", "name": "이엘씨", "price": 11930, "qty": 273, "cost": 3257379, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10071, "target": 13868, "signals": [{"label": "손절선", "ok": true, "detail": "10,071 (현재 11,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 13,868"}, {"label": "추세(10일선)", "ok": true, "detail": "11,366"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +5 · 기 +0"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 11,976"}]}
{"ts": "2026-09-21T15:08:46.057703+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 12, "proceeds": 4700816, "entry_price": 410500, "pnl": -225923, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:38.955194+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 462,578"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -1,5 +1,5 @@
{
"cash": 33256802.97700002,
"cash": 37957618.47700002,
"initial": 100000000,
"positions": {
"086790": {
@@ -11,14 +11,14 @@
"qty": 81,
"entry_price": 123225.92592592593,
"entry_at": "2026-07-30T09:04:07.536116+09:00",
"stop": 131986,
"stop": 132275,
"target": 141565,
"peak": 141800,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 5045807.2398149045,
"last_add_price": 125200
@@ -32,7 +32,7 @@
"qty": 322,
"entry_price": 32319.72049689441,
"entry_at": "2026-08-24T13:12:22.306023+09:00",
"stop": 34360,
"stop": 34376,
"target": 35949,
"peak": 36900,
"trailing_on": true,
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4580366.904239814,
"last_add_price": 30000
@@ -76,12 +76,12 @@
"entry_at": "2026-09-04T11:14:28.125177+09:00",
"stop": 11085,
"target": 18635,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,946 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1889084.2845179967,
"last_add_price": 14660
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1621037.6222288562,
"last_add_price": 7390
@@ -128,27 +128,6 @@
"tranche_value": 3122084.7056819946,
"last_add_price": 141500
},
"004370": {
"code": "004370",
"name": "농심",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 410500,
"entry_at": "2026-09-10T14:02:38.958516+09:00",
"stop": 375781,
"target": 462578,
"peak": 418500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,141 도달",
"cur_price": 390000,
"tranches": 1,
"tranche_value": 5026349.779541391,
"last_add_price": 410500
},
"372170": {
"code": "372170",
"name": "윤성에프앤씨",
@@ -165,14 +144,14 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,358 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2273315.5710422248,
"last_add_price": 20800
}
},
"realized_pnl": -16949769.129000027,
"closed_trades": 46,
"realized_pnl": -17175692.52900003,
"closed_trades": 47,
"wins": 5,
"peak_equity": 101140808.32700005,
"max_drawdown": 0.1794339105371308,
@@ -197,8 +176,9 @@
"078930": "2026-07-31",
"068270": "2026-09-04",
"327260": "2026-09-07",
"138040": "2026-09-08"
"138040": "2026-09-08",
"004370": "2026-09-21"
},
"created_at": "2026-06-15T14:55:00.583318+09:00",
"updated_at": "2026-09-18T15:28:43.348308+09:00"
"updated_at": "2026-09-21T15:28:44.464743+09:00"
}
@@ -133,3 +133,4 @@
{"ts": "2026-09-11T09:04:37.247783+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 14660, "qty": 128, "cost": 1876761, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 10481, "target": 18253, "signals": [{"label": "손절선", "ok": true, "detail": "10,481 (현재 14,510)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 18,253"}, {"label": "추세(10일선)", "ok": true, "detail": "13,024"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -103 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 14,345"}]}
{"ts": "2026-09-17T09:00:52.117769+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 137000, "qty": 21, "proceeds": 2871390, "entry_price": 158014, "pnl": -447408, "pnl_pct": -13.3, "hold_from": "2026-09-07T15:06:37.212194+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "120,000 (현재 135,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 215,035"}, {"label": "추세(10일선)", "ok": false, "detail": "151,150"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -114 · 기 -31"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-17T09:00:52.122065+09:00", "side": "BUY", "code": "372170", "name": "윤성에프앤씨", "price": 20800, "qty": 109, "cost": 2267540, "path": "pullback", "reason": "눌림목 지정가 21,358 도달", "stop": 16916, "target": 26626, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "20,350 vs 19,093"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,706 / 19,093"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,706 / 19,451"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+42.4%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +3 · 기 +2 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.08% (환산) vs 평균 0.56% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 23,400"}, {"label": "거래량 급증", "ok": false, "detail": "6,607 (환산) vs 평균 44,688"}, {"label": "회전율 급증", "ok": false, "detail": "0.08% (환산) vs 평균 0.56%"}, {"label": "RSI", "ok": true, "detail": "57"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 21,358 (현재 20,350)"}]}
{"ts": "2026-09-21T15:08:46.061089+09:00", "side": "SELL", "code": "004370", "name": "농심", "price": 392500, "qty": 12, "proceeds": 4700816, "entry_price": 410500, "pnl": -225923, "pnl_pct": -4.38, "hold_from": "2026-09-10T14:02:38.958516+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "375,781 (현재 392,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 462,578"}, {"label": "추세(10일선)", "ok": false, "detail": "395,000"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -1 · 기 -5"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 419,823"}]}
@@ -11,14 +11,14 @@
"qty": 101,
"entry_price": 34564.35643564357,
"entry_at": "2026-08-20T09:02:18.598460+09:00",
"stop": 42848,
"stop": 43009,
"target": 49987,
"peak": 50000,
"peak": 50300,
"trailing_on": true,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1761589.922015132,
"last_add_price": 35800
@@ -32,7 +32,7 @@
"qty": 312,
"entry_price": 31969.55128205128,
"entry_at": "2026-08-24T09:02:24.073710+09:00",
"stop": 34360,
"stop": 34376,
"target": 36109,
"peak": 36900,
"trailing_on": true,
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:26.595154+09:00",
"stop": 11802,
"target": 18597,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,982 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2433888.3605985767,
"last_add_price": 14660
@@ -76,12 +76,12 @@
"entry_at": "2026-09-09T09:10:30.121434+09:00",
"stop": 2838,
"target": 3818,
"peak": 3240,
"peak": 3245,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 3,136 도달",
"cur_price": 3100,
"cur_price": 3125,
"tranches": 2,
"tranche_value": 3860262.073953841,
"last_add_price": 3210
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 4029288.693393851,
"last_add_price": 117800
@@ -118,12 +118,12 @@
"entry_at": "2026-09-15T10:28:42.676166+09:00",
"stop": 10967,
"target": 14217,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,977 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4301175.50574383,
"last_add_price": 12300
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,341 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2831252.2401680327,
"last_add_price": 20200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 16,386 도달",
"cur_price": 16330,
"cur_price": 16240,
"tranches": 1,
"tranche_value": 5154404.266803124,
"last_add_price": 16170
@@ -203,5 +203,5 @@
"004370": "2026-09-17"
},
"created_at": "2026-06-15T14:55:00.583333+09:00",
"updated_at": "2026-09-18T15:28:43.351422+09:00"
"updated_at": "2026-09-21T15:28:44.467873+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 5051285.121721717,
"last_add_price": 125200
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 4362596.463271157,
"last_add_price": 13420
@@ -55,12 +55,12 @@
"entry_at": "2026-09-03T09:02:26.597960+09:00",
"stop": 11802,
"target": 18597,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,982 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2432613.4618839705,
"last_add_price": 14660
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,404 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 2,
"tranche_value": 3058381.8542864355,
"last_add_price": 22300
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 3,140 도달",
"cur_price": 3100,
"cur_price": 3125,
"tranches": 2,
"tranche_value": 4008637.751201471,
"last_add_price": 3255
@@ -118,12 +118,12 @@
"entry_at": "2026-09-16T13:08:42.157542+09:00",
"stop": 10788,
"target": 14231,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,955 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3954670.320777218,
"last_add_price": 12170
@@ -139,12 +139,12 @@
"entry_at": "2026-09-16T13:08:42.157933+09:00",
"stop": 4317,
"target": 6155,
"peak": 5290,
"peak": 5410,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 5,102 도달",
"cur_price": 5010,
"cur_price": 5150,
"tranches": 1,
"tranche_value": 3199498.373584197,
"last_add_price": 4930
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 6,155 도달",
"cur_price": 6190,
"cur_price": 6080,
"tranches": 1,
"tranche_value": 5017816.601578125,
"last_add_price": 6130
@@ -202,5 +202,5 @@
"004370": "2026-09-18"
},
"created_at": "2026-06-15T14:55:00.583347+09:00",
"updated_at": "2026-09-18T15:28:43.354436+09:00"
"updated_at": "2026-09-21T15:28:44.470785+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3627364.7637924887,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3547525.853504033,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1688085.214726109,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 3967368.72635773,
"last_add_price": 112800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2862100.411366492,
"last_add_price": 135100
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4185836.328126983,
"last_add_price": 30200
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 2940234.9193805554,
"last_add_price": 143200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4452166.016150367,
"last_add_price": 411000
@@ -210,5 +210,5 @@
"257720": "2026-09-10"
},
"created_at": "2026-06-15T14:40:00.621011+09:00",
"updated_at": "2026-09-18T15:28:47.809248+09:00"
"updated_at": "2026-09-21T15:28:49.157675+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3627364.7637924887,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3470885.263866936,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1668794.556510239,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3062184.227151159,
"last_add_price": 13420
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3007474.6079847123,
"last_add_price": 101700
@@ -118,12 +118,12 @@
"entry_at": "2026-08-20T09:02:20.302047+09:00",
"stop": 24267,
"target": 65396,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1249060.2562777183,
"last_add_price": 35800
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4826843.2429375,
"last_add_price": 1094000
@@ -212,5 +212,5 @@
"068270": "2026-09-09"
},
"created_at": "2026-06-15T14:55:00.583395+09:00",
"updated_at": "2026-09-18T15:28:48.975714+09:00"
"updated_at": "2026-09-21T15:28:49.671621+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 29639209.574999973,
"cash": 28192992.674999975,
"initial": 100000000,
"positions": {
"161890": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2892213.1259382935,
"last_add_price": 135100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3261176.5302310046,
"last_add_price": 145300
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4176661.959968715,
"last_add_price": 30200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 2932587.5188024,
"last_add_price": 143200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 3961540.240576688,
"last_add_price": 137500
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 4611339.344683614,
"last_add_price": 127800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4481449.565928179,
"last_add_price": 411000
@@ -155,27 +155,27 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.797435+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1555563.4787240115,
"last_add_price": 133600
"last_add_price": 144600
}
},
"realized_pnl": -24586675.33750005,
"closed_trades": 135,
"wins": 4,
"peak_equity": 100000000,
"max_drawdown": 0.24407290425000028,
"max_drawdown": 0.24471290425000028,
"last_exit": {
"017670": "2026-06-19",
"086790": "2026-07-29",
@@ -211,5 +211,5 @@
"257720": "2026-09-09"
},
"created_at": "2026-06-15T14:40:00.621059+09:00",
"updated_at": "2026-09-18T15:28:48.988215+09:00"
"updated_at": "2026-09-21T15:28:49.681370+09:00"
}
@@ -308,3 +308,4 @@
{"ts": "2026-09-11T11:18:40.947126+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 137500, "qty": 28, "cost": 3850578, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 121143, "target": 173770, "signals": [{"label": "손절선", "ok": true, "detail": "121,143 (현재 137,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 173,770"}, {"label": "추세(60일선)", "ok": true, "detail": "118,692"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +209 · 기 -149"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 137,582"}]}
{"ts": "2026-09-14T09:02:42.595350+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 134700, "qty": 19, "proceeds": 2554309, "entry_price": 142379, "pnl": -151296, "pnl_pct": -5.39, "hold_from": "2026-08-24T09:02:26.350420+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "102,936 (현재 135,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 260,707"}, {"label": "추세(60일선)", "ok": true, "detail": "99,373"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -750 · 기 +948"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-15T09:04:46.797451+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-21T09:52:51.043710+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -1,5 +1,5 @@
{
"cash": 29336086.893499944,
"cash": 27889869.993499946,
"initial": 100000000,
"positions": {
"078930": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3042388.163482306,
"last_add_price": 101700
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:20.356139+09:00",
"stop": 24285,
"target": 65413,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1267059.834384944,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4047548.093650061,
"last_add_price": 30200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4742672.546312497,
"last_add_price": 1094000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 112900,
"cur_price": 111800,
"tranches": 1,
"tranche_value": 3757574.4583486076,
"last_add_price": 119600
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.810142+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1510162.3677440109,
"last_add_price": 133600
"last_add_price": 144600
}
},
"realized_pnl": -26823738.066500068,
@@ -216,5 +216,5 @@
"257720": "2026-09-08"
},
"created_at": "2026-06-15T14:55:00.583512+09:00",
"updated_at": "2026-09-18T15:28:48.999158+09:00"
"updated_at": "2026-09-21T15:28:49.689531+09:00"
}
@@ -303,3 +303,4 @@
{"ts": "2026-09-14T09:10:42.879213+09:00", "side": "BUY", "code": "012450", "name": "한화에어로스페이스", "price": 1094000, "qty": 4, "cost": 4376656, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 998000, "target": 1214000, "signals": [{"label": "손절선", "ok": true, "detail": "998,000 (현재 1,094,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 1,214,000"}, {"label": "추세(60일선)", "ok": true, "detail": "1,050,800"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +66 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 1,091,327"}]}
{"ts": "2026-09-14T09:22:43.181028+09:00", "side": "BUY", "code": "316140", "name": "우리금융지주", "price": 35950, "qty": 113, "cost": 4062959, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 31742, "target": 44573, "signals": [{"label": "손절선", "ok": true, "detail": "31,742 (현재 35,950)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 44,573"}, {"label": "추세(60일선)", "ok": true, "detail": "30,944"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +2,045 · 기 -615"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 35,782"}]}
{"ts": "2026-09-15T09:04:46.810145+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-21T09:52:51.060594+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3546894.320639113,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1687768.019262798,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 3966630.036179657,
"last_add_price": 112800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2861643.9610576206,
"last_add_price": 135100
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4185204.743405741,
"last_add_price": 30200
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 2939786.4219278474,
"last_add_price": 143200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4451467.75105609,
"last_add_price": 411000
@@ -211,5 +211,5 @@
"257720": "2026-09-10"
},
"created_at": "2026-06-15T14:40:00.621103+09:00",
"updated_at": "2026-09-18T15:28:49.006002+09:00"
"updated_at": "2026-09-21T15:28:49.695486+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3468191.0592600796,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1667469.2912320814,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3059768.9052410396,
"last_add_price": 13420
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3005090.6555779856,
"last_add_price": 101700
@@ -118,12 +118,12 @@
"entry_at": "2026-08-20T09:02:20.368732+09:00",
"stop": 24267,
"target": 65396,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1248111.8252958565,
"last_add_price": 35800
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4823227.379406248,
"last_add_price": 1094000
@@ -213,5 +213,5 @@
"068270": "2026-09-09"
},
"created_at": "2026-06-15T14:55:00.583628+09:00",
"updated_at": "2026-09-18T15:28:49.012215+09:00"
"updated_at": "2026-09-21T15:28:49.700980+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 29639209.574999973,
"cash": 28192992.674999975,
"initial": 100000000,
"positions": {
"161890": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2892213.1259382935,
"last_add_price": 135100
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3261176.5302310046,
"last_add_price": 145300
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4176661.959968715,
"last_add_price": 30200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 2932587.5188024,
"last_add_price": 143200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 3961540.240576688,
"last_add_price": 137500
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 4611339.344683614,
"last_add_price": 127800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4481449.565928179,
"last_add_price": 411000
@@ -155,27 +155,27 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.830348+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1555563.4787240115,
"last_add_price": 133600
"last_add_price": 144600
}
},
"realized_pnl": -24586675.33750005,
"closed_trades": 135,
"wins": 4,
"peak_equity": 100000000,
"max_drawdown": 0.24407290425000028,
"max_drawdown": 0.24471290425000028,
"last_exit": {
"017670": "2026-06-19",
"086790": "2026-07-29",
@@ -211,5 +211,5 @@
"257720": "2026-09-09"
},
"created_at": "2026-06-15T14:40:00.621148+09:00",
"updated_at": "2026-09-18T15:28:49.016847+09:00"
"updated_at": "2026-09-21T15:28:49.705805+09:00"
}
@@ -308,3 +308,4 @@
{"ts": "2026-09-11T11:18:40.982255+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 137500, "qty": 28, "cost": 3850578, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 121143, "target": 173770, "signals": [{"label": "손절선", "ok": true, "detail": "121,143 (현재 137,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 173,770"}, {"label": "추세(60일선)", "ok": true, "detail": "118,692"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +209 · 기 -149"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 137,582"}]}
{"ts": "2026-09-14T09:02:42.626979+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 134700, "qty": 19, "proceeds": 2554309, "entry_price": 142379, "pnl": -151296, "pnl_pct": -5.39, "hold_from": "2026-08-24T09:02:26.376579+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "102,936 (현재 135,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 260,707"}, {"label": "추세(60일선)", "ok": true, "detail": "99,373"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -750 · 기 +948"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-15T09:04:46.830351+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-21T09:52:51.085416+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -1,5 +1,5 @@
{
"cash": 29336086.893499944,
"cash": 27889869.993499946,
"initial": 100000000,
"positions": {
"078930": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3042388.163482306,
"last_add_price": 101700
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:20.377162+09:00",
"stop": 24285,
"target": 65413,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1267059.834384944,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4047548.093650061,
"last_add_price": 30200
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4742672.546312497,
"last_add_price": 1094000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 112900,
"cur_price": 111800,
"tranches": 1,
"tranche_value": 3757574.4583486076,
"last_add_price": 119600
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.835417+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1510162.3677440109,
"last_add_price": 133600
"last_add_price": 144600
}
},
"realized_pnl": -26823738.066500068,
@@ -216,5 +216,5 @@
"257720": "2026-09-08"
},
"created_at": "2026-06-15T14:55:00.583751+09:00",
"updated_at": "2026-09-18T15:28:49.021449+09:00"
"updated_at": "2026-09-21T15:28:49.710448+09:00"
}
@@ -303,3 +303,4 @@
{"ts": "2026-09-14T09:10:42.905897+09:00", "side": "BUY", "code": "012450", "name": "한화에어로스페이스", "price": 1094000, "qty": 4, "cost": 4376656, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 998000, "target": 1214000, "signals": [{"label": "손절선", "ok": true, "detail": "998,000 (현재 1,094,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 1,214,000"}, {"label": "추세(60일선)", "ok": true, "detail": "1,050,800"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +66 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 1,091,327"}]}
{"ts": "2026-09-14T09:22:43.214705+09:00", "side": "BUY", "code": "316140", "name": "우리금융지주", "price": 35950, "qty": 113, "cost": 4062959, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 31742, "target": 44573, "signals": [{"label": "손절선", "ok": true, "detail": "31,742 (현재 35,950)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 44,573"}, {"label": "추세(60일선)", "ok": true, "detail": "30,944"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +2,045 · 기 -615"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 35,782"}]}
{"ts": "2026-09-15T09:04:46.835420+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-21T09:52:51.090993+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -1,5 +1,5 @@
{
"cash": 39861725.19849997,
"cash": 36285088.78349997,
"initial": 100000000,
"positions": {
"010950": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3229829.7909181127,
"last_add_price": 145300
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4114454.4034401365,
"last_add_price": 30200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1611451.4576744305,
"last_add_price": 7850
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3527023.225691173,
"last_add_price": 51000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 2831922.2510831044,
"last_add_price": 120700
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4435147.047639696,
"last_add_price": 411000
@@ -134,20 +134,20 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.840761+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1520913.5675996346,
"last_add_price": 133600
"last_add_price": 144600
},
"252990": {
"code": "252990",
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 125,
"entry_price": 16990,
"qty": 244,
"entry_price": 17433.811475409835,
"entry_at": "2026-09-15T09:42:47.219722+09:00",
"stop": 14015,
"target": 25914,
"peak": 17650,
"stop": 14364,
"target": 26645,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17320,
"tranches": 1,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2134348.726385529,
"last_add_price": 16990
"last_add_price": 17900
}
},
"realized_pnl": -24900229.88750005,
@@ -211,5 +211,5 @@
"004370": "2026-09-07"
},
"created_at": "2026-06-15T14:40:00.621367+09:00",
"updated_at": "2026-09-18T15:28:49.025506+09:00"
"updated_at": "2026-09-21T15:28:49.714293+09:00"
}
@@ -310,3 +310,5 @@
{"ts": "2026-09-15T09:04:46.840764+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-15T09:42:46.802087+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 144100, "qty": 36, "proceeds": 5177484, "entry_price": 153150, "pnl": -336743, "pnl_pct": -5.91, "hold_from": "2026-08-26T09:40:26.851689+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "132,047 (현재 144,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,459"}, {"label": "추세(60일선)", "ok": true, "detail": "92,672"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -135 · 기 +167"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-15T09:42:47.219737+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 16990, "qty": 125, "cost": 2124069, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 14015, "target": 25914, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "16,900 vs 13,331"}, {"label": "정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+17.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +515 · 기 +348 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+33%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.92% (환산) vs 평균 1.47% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 15,870"}, {"label": "거래량 급증", "ok": true, "detail": "1,755,087 (환산) vs 평균 882,736"}, {"label": "회전율 급증", "ok": true, "detail": "2.92% (환산) vs 평균 1.47%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
{"ts": "2026-09-21T09:14:48.946277+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 17900, "qty": 119, "cost": 2130420, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 14015, "target": 25914, "signals": [{"label": "손절선", "ok": true, "detail": "14,015 (현재 17,830)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 25,914"}, {"label": "추세(60일선)", "ok": true, "detail": "13,346"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +275 · 기 -62"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 17,758"}]}
{"ts": "2026-09-21T09:52:51.096423+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -1,5 +1,5 @@
{
"cash": 35336016.69299997,
"cash": 31777282.96299997,
"initial": 100000000,
"positions": {
"078930": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3042388.163482306,
"last_add_price": 101700
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:20.385184+09:00",
"stop": 24285,
"target": 65413,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1267059.834384944,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 1,
"tranche_value": 3881914.001622301,
"last_add_price": 6670
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4745116.755187498,
"last_add_price": 1097000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4079729.186576085,
"last_add_price": 29450
@@ -134,20 +134,20 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.845888+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1518714.2537293003,
"last_add_price": 133600
"last_add_price": 144600
},
"252990": {
"code": "252990",
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 125,
"entry_price": 16990,
"qty": 243,
"entry_price": 17431.893004115227,
"entry_at": "2026-09-15T09:42:47.233763+09:00",
"stop": 14015,
"target": 25914,
"peak": 17650,
"stop": 14362,
"target": 26643,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17320,
"tranches": 1,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2126392.023682259,
"last_add_price": 16990
"last_add_price": 17900
}
},
"realized_pnl": -26589402.97650007,
@@ -215,5 +215,5 @@
"257720": "2026-09-08"
},
"created_at": "2026-06-15T14:55:00.584337+09:00",
"updated_at": "2026-09-18T15:28:49.029543+09:00"
"updated_at": "2026-09-21T15:28:49.718473+09:00"
}
@@ -290,3 +290,5 @@
{"ts": "2026-09-15T09:04:46.845890+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-15T09:42:47.233126+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 144100, "qty": 35, "proceeds": 5033665, "entry_price": 153071, "pnl": -324638, "pnl_pct": -5.86, "hold_from": "2026-08-26T09:40:26.864910+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "131,968 (현재 144,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,381"}, {"label": "추세(60일선)", "ok": true, "detail": "92,672"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -135 · 기 +167"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-15T09:42:47.233767+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 16990, "qty": 125, "cost": 2124069, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 14015, "target": 25914, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "16,900 vs 13,331"}, {"label": "정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+17.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +515 · 기 +348 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+33%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.92% (환산) vs 평균 1.47% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 15,870"}, {"label": "거래량 급증", "ok": true, "detail": "1,755,087 (환산) vs 평균 882,736"}, {"label": "회전율 급증", "ok": true, "detail": "2.92% (환산) vs 평균 1.47%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
{"ts": "2026-09-21T09:14:48.958183+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 17900, "qty": 118, "cost": 2112517, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 14015, "target": 25914, "signals": [{"label": "손절선", "ok": true, "detail": "14,015 (현재 17,830)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 25,914"}, {"label": "추세(60일선)", "ok": true, "detail": "13,346"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +275 · 기 -62"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 17,758"}]}
{"ts": "2026-09-21T09:52:51.100868+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -1,5 +1,5 @@
{
"cash": 39861725.19849997,
"cash": 36285088.78349997,
"initial": 100000000,
"positions": {
"010950": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3229829.7909181127,
"last_add_price": 145300
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4114454.4034401365,
"last_add_price": 30200
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1611451.4576744305,
"last_add_price": 7850
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3527023.225691173,
"last_add_price": 51000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 1,
"tranche_value": 2831922.2510831044,
"last_add_price": 120700
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 4435147.047639696,
"last_add_price": 411000
@@ -134,20 +134,20 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.850539+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1520913.5675996346,
"last_add_price": 133600
"last_add_price": 144600
},
"252990": {
"code": "252990",
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 125,
"entry_price": 16990,
"qty": 244,
"entry_price": 17433.811475409835,
"entry_at": "2026-09-15T09:42:47.242387+09:00",
"stop": 14015,
"target": 25914,
"peak": 17650,
"stop": 14364,
"target": 26645,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17320,
"tranches": 1,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2134348.726385529,
"last_add_price": 16990
"last_add_price": 17900
}
},
"realized_pnl": -24900229.88750005,
@@ -211,5 +211,5 @@
"004370": "2026-09-07"
},
"created_at": "2026-06-15T14:40:00.621411+09:00",
"updated_at": "2026-09-18T15:28:49.034986+09:00"
"updated_at": "2026-09-21T15:28:49.722019+09:00"
}
@@ -310,3 +310,5 @@
{"ts": "2026-09-15T09:04:46.850541+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-15T09:42:47.241934+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 144100, "qty": 36, "proceeds": 5177484, "entry_price": 153150, "pnl": -336743, "pnl_pct": -5.91, "hold_from": "2026-08-26T09:40:26.872296+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "132,047 (현재 144,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,459"}, {"label": "추세(60일선)", "ok": true, "detail": "92,672"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -135 · 기 +167"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-15T09:42:47.242390+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 16990, "qty": 125, "cost": 2124069, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 14015, "target": 25914, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "16,900 vs 13,331"}, {"label": "정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+17.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +515 · 기 +348 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+33%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.92% (환산) vs 평균 1.47% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 15,870"}, {"label": "거래량 급증", "ok": true, "detail": "1,755,087 (환산) vs 평균 882,736"}, {"label": "회전율 급증", "ok": true, "detail": "2.92% (환산) vs 평균 1.47%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
{"ts": "2026-09-21T09:14:48.964093+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 17900, "qty": 119, "cost": 2130420, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 14015, "target": 25914, "signals": [{"label": "손절선", "ok": true, "detail": "14,015 (현재 17,830)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 25,914"}, {"label": "추세(60일선)", "ok": true, "detail": "13,346"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +275 · 기 -62"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 17,758"}]}
{"ts": "2026-09-21T09:52:51.105243+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -1,5 +1,5 @@
{
"cash": 35336016.69299997,
"cash": 31777282.96299997,
"initial": 100000000,
"positions": {
"078930": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3042388.163482306,
"last_add_price": 101700
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:20.392120+09:00",
"stop": 24285,
"target": 65413,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1267059.834384944,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 1,
"tranche_value": 3881914.001622301,
"last_add_price": 6670
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4745116.755187498,
"last_add_price": 1097000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4079729.186576085,
"last_add_price": 29450
@@ -134,20 +134,20 @@
"sources": [
"auto"
],
"qty": 11,
"entry_price": 133600,
"qty": 21,
"entry_price": 138838.09523809524,
"entry_at": "2026-09-15T09:04:46.855157+09:00",
"stop": 100700,
"target": 232300,
"peak": 141400,
"target": 253252,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1518714.2537293003,
"last_add_price": 133600
"last_add_price": 144600
},
"252990": {
"code": "252990",
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 125,
"entry_price": 16990,
"qty": 243,
"entry_price": 17431.893004115227,
"entry_at": "2026-09-15T09:42:47.250207+09:00",
"stop": 14015,
"target": 25914,
"peak": 17650,
"stop": 14362,
"target": 26643,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17320,
"tranches": 1,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2126392.023682259,
"last_add_price": 16990
"last_add_price": 17900
}
},
"realized_pnl": -26589402.97650007,
@@ -215,5 +215,5 @@
"257720": "2026-09-08"
},
"created_at": "2026-06-15T14:55:00.584451+09:00",
"updated_at": "2026-09-18T15:28:49.038744+09:00"
"updated_at": "2026-09-21T15:28:49.725636+09:00"
}
@@ -290,3 +290,5 @@
{"ts": "2026-09-15T09:04:46.855160+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 11, "cost": 1469820, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 232300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-15T09:42:47.249754+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 144100, "qty": 35, "proceeds": 5033665, "entry_price": 153071, "pnl": -324638, "pnl_pct": -5.86, "hold_from": "2026-08-26T09:40:26.877901+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "131,968 (현재 144,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 216,381"}, {"label": "추세(60일선)", "ok": true, "detail": "92,672"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -135 · 기 +167"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-15T09:42:47.250210+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 16990, "qty": 125, "cost": 2124069, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 14015, "target": 25914, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "16,900 vs 13,331"}, {"label": "정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,128 / 13,331"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+17.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +515 · 기 +348 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+33%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.92% (환산) vs 평균 1.47% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 15,870"}, {"label": "거래량 급증", "ok": true, "detail": "1,755,087 (환산) vs 평균 882,736"}, {"label": "회전율 급증", "ok": true, "detail": "2.92% (환산) vs 평균 1.47%"}, {"label": "RSI", "ok": true, "detail": "65"}]}
{"ts": "2026-09-21T09:14:48.970944+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 17900, "qty": 118, "cost": 2112517, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 14015, "target": 25914, "signals": [{"label": "손절선", "ok": true, "detail": "14,015 (현재 17,830)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 25,914"}, {"label": "추세(60일선)", "ok": true, "detail": "13,346"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +275 · 기 -62"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 17,758"}]}
{"ts": "2026-09-21T09:52:51.109136+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 10, "cost": 1446217, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 232300, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 232,300"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3546894.320639113,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1687768.019262798,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 3966630.036179657,
"last_add_price": 112800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4104392.319035925,
"last_add_price": 30200
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1613925.865525043,
"last_add_price": 7850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3521468.04972381,
"last_add_price": 51000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2751857.4030862907,
"last_add_price": 146300
@@ -212,5 +212,5 @@
"257720": "2026-09-10"
},
"created_at": "2026-06-15T14:40:00.621453+09:00",
"updated_at": "2026-09-18T15:28:49.041977+09:00"
"updated_at": "2026-09-21T15:28:49.728782+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3468191.0592600796,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1667469.2912320814,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3059768.9052410396,
"last_add_price": 13420
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3005090.6555779856,
"last_add_price": 101700
@@ -118,12 +118,12 @@
"entry_at": "2026-08-20T09:02:20.398238+09:00",
"stop": 24267,
"target": 65396,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1248111.8252958565,
"last_add_price": 35800
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4823227.379406248,
"last_add_price": 1094000
@@ -213,5 +213,5 @@
"068270": "2026-09-09"
},
"created_at": "2026-06-15T14:55:00.584565+09:00",
"updated_at": "2026-09-18T15:28:49.045221+09:00"
"updated_at": "2026-09-21T15:28:49.732045+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3546894.320639113,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1687768.019262798,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 3966630.036179657,
"last_add_price": 112800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 4104392.319035925,
"last_add_price": 30200
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1613925.865525043,
"last_add_price": 7850
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3521468.04972381,
"last_add_price": 51000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2751857.4030862907,
"last_add_price": 146300
@@ -212,5 +212,5 @@
"257720": "2026-09-10"
},
"created_at": "2026-06-15T14:40:00.621497+09:00",
"updated_at": "2026-09-18T15:28:49.048119+09:00"
"updated_at": "2026-09-21T15:28:49.734952+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3468191.0592600796,
"last_add_price": 136000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1667469.2912320814,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3059768.9052410396,
"last_add_price": 13420
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3005090.6555779856,
"last_add_price": 101700
@@ -118,12 +118,12 @@
"entry_at": "2026-08-20T09:02:20.403886+09:00",
"stop": 24267,
"target": 65396,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1248111.8252958565,
"last_add_price": 35800
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 1,053,984 도달",
"cur_price": 1098000,
"cur_price": 1070000,
"tranches": 2,
"tranche_value": 4823227.379406248,
"last_add_price": 1094000
@@ -213,5 +213,5 @@
"068270": "2026-09-09"
},
"created_at": "2026-06-15T14:55:00.584680+09:00",
"updated_at": "2026-09-18T15:28:49.051149+09:00"
"updated_at": "2026-09-21T15:28:49.738006+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 4371332.168068898,
"last_add_price": 105800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3448434.606240806,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4425860.654266699,
"last_add_price": 125200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 221000,
"cur_price": 223500,
"tranches": 2,
"tranche_value": 2243002.5784807494,
"last_add_price": 244500
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2796943.490474186,
"last_add_price": 133800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 147,729 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1467735.2954887256,
"last_add_price": 157600
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 2,
"tranche_value": 3093167.6730282507,
"last_add_price": 134900
@@ -160,12 +160,12 @@
"entry_at": "2026-09-18T09:14:50.585010+09:00",
"stop": 10765,
"target": 20066,
"peak": 13160,
"peak": 13180,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 12940,
"cur_price": 12880,
"tranches": 1,
"tranche_value": 2288070.2774689887,
"last_add_price": 13090
@@ -221,5 +221,5 @@
"003680": "2026-08-24"
},
"created_at": "2026-06-16T09:00:03.113416+09:00",
"updated_at": "2026-09-18T15:28:49.053925+09:00"
"updated_at": "2026-09-21T15:28:49.740735+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 489066.87549995957,
"cash": 380959.8089999594,
"initial": 100000000,
"positions": {
"055550": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 5402457.352781249,
"last_add_price": 104900
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 4939827.041843749,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 4504266.321593748,
"last_add_price": 125200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 4268049.827468748,
"last_add_price": 122900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 4349667.340562498,
"last_add_price": 118900
@@ -144,35 +144,35 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 2,
"tranche_value": 4617879.361156248,
"last_add_price": 6330
},
"079650": {
"code": "079650",
"name": "서산",
"200470": {
"code": "200470",
"name": "에이팩트",
"sources": [
"watch"
"interest"
],
"qty": 728,
"entry_price": 7881.195054945055,
"entry_at": "2026-09-10T10:16:32.556205+09:00",
"stop": 5985,
"target": 13569,
"peak": 8320,
"qty": 549,
"entry_price": 8110,
"entry_at": "2026-09-21T15:00:50.060288+09:00",
"stop": 7041,
"target": 11318,
"peak": 8150,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"tranches": 2,
"tranche_value": 2872733.8097820883,
"last_add_price": 8230
"cur_price": 8100,
"tranches": 1,
"tranche_value": 4456984.8542187475,
"last_add_price": 8110
}
},
"realized_pnl": -32662637.384000026,
"closed_trades": 40,
"realized_pnl": -34056057.218500026,
"closed_trades": 41,
"wins": 2,
"peak_equity": 100289247.17,
"max_drawdown": 0.3190878467384953,
@@ -201,8 +201,9 @@
"078930": "2026-07-31",
"090850": "2026-08-06",
"257720": "2026-09-04",
"068270": "2026-09-04"
"068270": "2026-09-04",
"079650": "2026-09-21"
},
"created_at": "2026-06-16T09:00:03.113433+09:00",
"updated_at": "2026-09-18T15:28:49.056653+09:00"
"updated_at": "2026-09-21T15:28:49.743426+09:00"
}
@@ -115,3 +115,5 @@
{"ts": "2026-09-10T10:16:32.134343+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 344000, "qty": 11, "proceeds": 3776621, "entry_price": 391500, "pnl": -530525, "pnl_pct": -12.13, "hold_from": "2026-09-04T12:34:31.973906+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "344,720 (현재 344,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 531,840"}, {"label": "추세(10일선)", "ok": true, "detail": "305,800"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +101 · 기 -147"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 402,266"}]}
{"ts": "2026-09-10T10:16:32.556222+09:00", "side": "BUY", "code": "079650", "name": "서산", "price": 7560, "qty": 379, "cost": 2865670, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5684, "target": 13188, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "7,540 vs 5,136"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,354 / 5,136"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,354 / 4,377"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+82.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -87 · 기 +1 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "54.30% (환산) vs 평균 23.23% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 6,760"}, {"label": "거래량 급증", "ok": true, "detail": "10,859,186 (환산) vs 평균 4,645,030"}, {"label": "회전율 급증", "ok": true, "detail": "54.30% (환산) vs 평균 23.23%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
{"ts": "2026-09-10T11:22:35.329171+09:00", "side": "BUY", "code": "079650", "name": "서산", "price": 8230, "qty": 349, "cost": 2872701, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 5684, "target": 13188, "signals": [{"label": "손절선", "ok": true, "detail": "5,684 (현재 8,320)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 13,188"}, {"label": "추세(10일선)", "ok": true, "detail": "5,214"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -87 · 기 +1"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 8,034"}]}
{"ts": "2026-09-21T15:00:49.633295+09:00", "side": "SELL", "code": "079650", "name": "서산", "price": 5980, "qty": 728, "proceeds": 4344951, "entry_price": 7881, "pnl": -1393420, "pnl_pct": -24.12, "hold_from": "2026-09-10T10:16:32.556205+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,985 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 13,569"}, {"label": "추세(10일선)", "ok": true, "detail": "4,980"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +40 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-21T15:00:50.060303+09:00", "side": "BUY", "code": "200470", "name": "에이팩트", "price": 8110, "qty": 549, "cost": 4453058, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 7041, "target": 11318, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "8,140 vs 6,635"}, {"label": "정배열(5>10)", "ok": true, "detail": "7,034 / 6,635"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "7,034 / 5,883"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+35.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +402 · 기 +386 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.41% (환산) vs 평균 1.93% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 7,420"}, {"label": "거래량 급증", "ok": true, "detail": "1,931,630 (환산) vs 평균 834,624"}, {"label": "회전율 급증", "ok": true, "detail": "4.41% (환산) vs 평균 1.93%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
@@ -1,5 +1,5 @@
{
"cash": 592518.9019999569,
"cash": 491300.76149995625,
"initial": 100000000,
"positions": {
"055550": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 5666061.52171875,
"last_add_price": 99700
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 4789675.2297187485,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 293000,
"cur_price": 299000,
"tranches": 2,
"tranche_value": 4236521.005156248,
"last_add_price": 295000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 4279461.011749998,
"last_add_price": 101700
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 4367140.436124997,
"last_add_price": 135000
@@ -149,30 +149,30 @@
"tranche_value": 4594313.305218747,
"last_add_price": 141500
},
"079650": {
"code": "079650",
"name": "서산",
"200470": {
"code": "200470",
"name": "에이팩트",
"sources": [
"watch"
"interest"
],
"qty": 721,
"entry_price": 7880.596393897365,
"entry_at": "2026-09-10T10:16:32.571711+09:00",
"stop": 5985,
"target": 13568,
"peak": 8320,
"qty": 543,
"entry_price": 8110,
"entry_at": "2026-09-21T15:00:50.077544+09:00",
"stop": 7041,
"target": 11318,
"peak": 8150,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"tranches": 2,
"tranche_value": 2847632.8240141775,
"last_add_price": 8230
"cur_price": 8100,
"tranches": 1,
"tranche_value": 4411518.207562497,
"last_add_price": 8110
}
},
"realized_pnl": -33259650.411500037,
"closed_trades": 45,
"realized_pnl": -34639240.27900004,
"closed_trades": 46,
"wins": 3,
"peak_equity": 102093754.3635,
"max_drawdown": 0.346576129965988,
@@ -208,8 +208,9 @@
"090850": "2026-08-06",
"138040": "2026-09-08",
"003680": "2026-08-24",
"068270": "2026-09-04"
"068270": "2026-09-04",
"079650": "2026-09-21"
},
"created_at": "2026-06-16T09:00:03.113489+09:00",
"updated_at": "2026-09-18T15:28:49.059415+09:00"
"updated_at": "2026-09-21T15:28:49.746112+09:00"
}
@@ -130,3 +130,5 @@
{"ts": "2026-09-10T10:16:32.569187+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 344000, "qty": 11, "proceeds": 3776621, "entry_price": 391500, "pnl": -530525, "pnl_pct": -12.13, "hold_from": "2026-09-04T12:34:31.977177+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "344,720 (현재 344,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 531,840"}, {"label": "추세(20일선)", "ok": true, "detail": "296,350"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +101 · 기 -147"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 402,266"}]}
{"ts": "2026-09-10T10:16:32.571716+09:00", "side": "BUY", "code": "079650", "name": "서산", "price": 7560, "qty": 376, "cost": 2842986, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5684, "target": 13188, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "7,540 vs 4,914"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,354 / 4,914"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,354 / 4,377"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+82.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -87 · 기 +1 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "54.30% (환산) vs 평균 23.23% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 6,760"}, {"label": "거래량 급증", "ok": true, "detail": "10,859,186 (환산) vs 평균 4,645,030"}, {"label": "회전율 급증", "ok": true, "detail": "54.30% (환산) vs 평균 23.23%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
{"ts": "2026-09-10T11:22:35.332102+09:00", "side": "BUY", "code": "079650", "name": "서산", "price": 8230, "qty": 345, "cost": 2839776, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 5684, "target": 13188, "signals": [{"label": "손절선", "ok": true, "detail": "5,684 (현재 8,320)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 13,188"}, {"label": "추세(20일선)", "ok": true, "detail": "4,952"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -87 · 기 +1"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 8,034"}]}
{"ts": "2026-09-21T15:00:50.074810+09:00", "side": "SELL", "code": "079650", "name": "서산", "price": 5980, "qty": 721, "proceeds": 4303172, "entry_price": 7881, "pnl": -1379590, "pnl_pct": -24.12, "hold_from": "2026-09-10T10:16:32.571711+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,985 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 13,568"}, {"label": "추세(20일선)", "ok": true, "detail": "4,836"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +40 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-21T15:00:50.077549+09:00", "side": "BUY", "code": "200470", "name": "에이팩트", "price": 8110, "qty": 543, "cost": 4404391, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 7041, "target": 11318, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "8,140 vs 6,418"}, {"label": "정배열(5>20)", "ok": true, "detail": "7,034 / 6,418"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "7,034 / 5,883"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+35.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +402 · 기 +386 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.41% (환산) vs 평균 1.93% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 7,420"}, {"label": "거래량 급증", "ok": true, "detail": "1,931,630 (환산) vs 평균 834,624"}, {"label": "회전율 급증", "ok": true, "detail": "4.41% (환산) vs 평균 1.93%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 2602335.520457338,
"last_add_price": 147600
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3682720.3330000006,
"last_add_price": 13420
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3788581.3199375006,
"last_add_price": 50400
@@ -76,12 +76,12 @@
"entry_at": "2026-09-03T09:00:44.984169+09:00",
"stop": 10600,
"target": 15229,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,581 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3822139.0130625004,
"last_add_price": 11930
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,350 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 3773712.918396452,
"last_add_price": 4810
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 3798944.7854062505,
"last_add_price": 144100
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 1,
"tranche_value": 3730753.9550937507,
"last_add_price": 6670
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 1029,
"cur_price": 1030,
"tranches": 1,
"tranche_value": 3720793.6927812505,
"last_add_price": 1046
@@ -209,5 +209,5 @@
"257720": "2026-09-09"
},
"created_at": "2026-06-16T10:45:02.136776+09:00",
"updated_at": "2026-09-18T15:28:49.679444+09:00"
"updated_at": "2026-09-21T15:28:50.951199+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 4497110.087925,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 4537990.22125,
"last_add_price": 353000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3916421.3406499997,
"last_add_price": 13420
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 3939438.35845,
"last_add_price": 135000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3906404.1509499997,
"last_add_price": 50500
@@ -118,12 +118,12 @@
"entry_at": "2026-09-03T09:02:29.324709+09:00",
"stop": 10251,
"target": 16355,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,601 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 4014765.8981999992,
"last_add_price": 11970
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 113500,
"cur_price": 112900,
"tranches": 2,
"tranche_value": 3990539.118775,
"last_add_price": 129800
@@ -186,7 +186,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 2,
"tranche_value": 3880908.2525249994,
"last_add_price": 6740
@@ -241,5 +241,5 @@
"003550": "2026-09-15"
},
"created_at": "2026-06-16T14:30:00.114884+09:00",
"updated_at": "2026-09-18T15:28:49.686447+09:00"
"updated_at": "2026-09-21T15:28:50.964960+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 4360729.7882,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 4542977.951950001,
"last_add_price": 353000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 12700,
"cur_price": 12640,
"tranches": 2,
"tranche_value": 3756374.284550001,
"last_add_price": 13420
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48400,
"cur_price": 48700,
"tranches": 2,
"tranche_value": 3779374.505025001,
"last_add_price": 50500
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 3753616.173025001,
"last_add_price": 135000
@@ -118,12 +118,12 @@
"entry_at": "2026-08-24T09:02:26.769879+09:00",
"stop": 23816,
"target": 65659,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,047 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 2355344.402237601,
"last_add_price": 35650
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,342 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 3832048.9757250003,
"last_add_price": 4795
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 1,
"tranche_value": 3818388.2761875005,
"last_add_price": 30850
@@ -186,7 +186,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6590,
"cur_price": 6600,
"tranches": 1,
"tranche_value": 3751556.2420625,
"last_add_price": 6670
@@ -207,7 +207,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 409,907 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 3737257.7022625008,
"last_add_price": 392500
@@ -243,5 +243,5 @@
"004370": "2026-09-07"
},
"created_at": "2026-06-16T14:30:00.114893+09:00",
"updated_at": "2026-09-18T15:28:49.692007+09:00"
"updated_at": "2026-09-21T15:28:50.973244+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3561275.575471075,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 2,
"tranche_value": 3616873.7658032966,
"last_add_price": 349500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1695866.1189129704,
"last_add_price": 147600
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 3896691.6945500015,
"last_add_price": 112800
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2745363.955329169,
"last_add_price": 132000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,365 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 2237058.4160459745,
"last_add_price": 4895
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 3946598.3595250016,
"last_add_price": 30200
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1617867.8531665015,
"last_add_price": 6580
@@ -186,7 +186,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 2963407.3031992856,
"last_add_price": 143200
@@ -202,12 +202,12 @@
"entry_at": "2026-09-10T13:26:37.623734+09:00",
"stop": 35987,
"target": 72444,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1901666.048918765,
"last_add_price": 46500
@@ -253,5 +253,5 @@
"257720": "2026-09-10"
},
"created_at": "2026-06-16T14:30:00.114901+09:00",
"updated_at": "2026-09-18T15:28:49.697039+09:00"
"updated_at": "2026-09-21T15:28:50.979540+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 61801156.10724992,
"cash": 66053516.87774992,
"initial": 100000000,
"positions": {
"161890": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 1302564.8461088152,
"last_add_price": 135000
@@ -39,53 +39,11 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 1481365.9160708203,
"last_add_price": 145300
},
"001790": {
"code": "001790",
"name": "대한제당",
"sources": [
"watch"
],
"qty": 1000,
"entry_price": 2960,
"entry_at": "2026-09-01T09:18:28.021372+09:00",
"stop": 2738,
"target": 3293,
"peak": 2960,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"tranches": 1,
"tranche_value": 2963129.566266665,
"last_add_price": 2960
},
"055550": {
"code": "055550",
"name": "신한지주",
"sources": [
"auto"
],
"qty": 31,
"entry_price": 112796.7741935484,
"entry_at": "2026-09-01T09:40:30.287246+09:00",
"stop": 98639,
"target": 134034,
"peak": 116100,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 111500,
"tranches": 2,
"tranche_value": 1795776.053869894,
"last_add_price": 114500
},
"086790": {
"code": "086790",
"name": "하나금융지주",
@@ -102,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 1,
"tranche_value": 1850114.0973526826,
"last_add_price": 140100
@@ -118,12 +76,12 @@
"entry_at": "2026-09-03T13:38:33.380609+09:00",
"stop": 10340,
"target": 19060,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,939 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 988188.6519627835,
"last_add_price": 14370
@@ -144,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,748 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 2190803.55608851,
"last_add_price": 418500
@@ -165,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 1327917.140914299,
"last_add_price": 144000
@@ -176,20 +134,20 @@
"sources": [
"auto"
],
"qty": 6,
"entry_price": 133600,
"qty": 12,
"entry_price": 139100.0,
"entry_at": "2026-09-15T09:04:46.899527+09:00",
"stop": 100700,
"target": 182950,
"peak": 141400,
"target": 196700,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,479 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 888103.2638242849,
"last_add_price": 133600
"last_add_price": 144600
},
"261520": {
"code": "261520",
@@ -202,12 +160,12 @@
"entry_at": "2026-09-15T09:22:44.343877+09:00",
"stop": 4066,
"target": 6576,
"peak": 5290,
"peak": 5410,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 5,108 도달",
"cur_price": 5010,
"cur_price": 5150,
"tranches": 1,
"tranche_value": 1104635.9623891795,
"last_add_price": 5070
@@ -223,12 +181,12 @@
"entry_at": "2026-09-16T13:08:48.027753+09:00",
"stop": 34191,
"target": 63454,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 853163.9032473661,
"last_add_price": 47000
@@ -244,19 +202,40 @@
"entry_at": "2026-09-16T15:22:45.015024+09:00",
"stop": 2579,
"target": 3940,
"peak": 3240,
"peak": 3245,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 3,133 도달",
"cur_price": 3100,
"cur_price": 3125,
"tranches": 2,
"tranche_value": 1199694.5417108096,
"last_add_price": 3195
},
"010170": {
"code": "010170",
"name": "대한광통신",
"sources": [
"interest"
],
"qty": 67,
"entry_price": 17790,
"entry_at": "2026-09-21T10:08:49.729705+09:00",
"stop": 14532,
"target": 22676,
"peak": 17930,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17720,
"tranches": 1,
"tranche_value": 1197077.8466134714,
"last_add_price": 17790
}
},
"realized_pnl": -13233394.637000069,
"closed_trades": 217,
"realized_pnl": -13378863.44200007,
"closed_trades": 220,
"wins": 7,
"peak_equity": 100036582.48,
"max_drawdown": 0.15270831167742246,
@@ -281,7 +260,7 @@
"402340": "2026-07-23",
"034730": "2026-09-09",
"004170": "2026-07-23",
"319660": "2026-09-16",
"319660": "2026-09-21",
"032830": "2026-07-31",
"028260": "2026-09-09",
"003490": "2026-09-16",
@@ -291,7 +270,7 @@
"010950": "2026-08-26",
"105560": "2026-07-29",
"252990": "2026-09-01",
"055550": "2026-08-27",
"055550": "2026-09-21",
"003680": "2026-09-09",
"161890": "2026-08-13",
"078930": "2026-09-03",
@@ -299,8 +278,9 @@
"180640": "2026-08-19",
"439090": "2026-09-03",
"001450": "2026-09-07",
"257720": "2026-09-14"
"257720": "2026-09-14",
"001790": "2026-09-21"
},
"created_at": "2026-06-22T09:00:04.885275+09:00",
"updated_at": "2026-09-18T15:28:49.701561+09:00"
"updated_at": "2026-09-21T15:28:50.984995+09:00"
}
@@ -485,3 +485,9 @@
{"ts": "2026-09-16T15:22:45.015034+09:00", "side": "BUY", "code": "478560", "name": "블랙야크아이앤씨", "price": 3055, "qty": 392, "cost": 1197740, "path": "pullback", "reason": "눌림목 지정가 3,133 도달", "stop": 2500, "target": 3888, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "3,060 vs 2,714"}, {"label": "정배열(5>60)", "ok": true, "detail": "3,249 / 2,714"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "3,249 / 2,714"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+17.2%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -15 · 기 +1 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.04% (환산) vs 평균 0.96% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 3,495"}, {"label": "거래량 급증", "ok": false, "detail": "10,045 (환산) vs 평균 247,795"}, {"label": "회전율 급증", "ok": false, "detail": "0.04% (환산) vs 평균 0.96%"}, {"label": "RSI", "ok": true, "detail": "57"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 3,133 (현재 3,060)"}]}
{"ts": "2026-09-17T09:02:47.116753+09:00", "side": "BUY", "code": "327260", "name": "RF머트리얼즈", "price": 47000, "qty": 18, "cost": 846127, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 33386, "target": 62046, "signals": [{"label": "손절선", "ok": true, "detail": "33,386 (현재 47,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 62,046"}, {"label": "추세(60일선)", "ok": true, "detail": "29,954"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -224 · 기 +158"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 47,191"}]}
{"ts": "2026-09-18T09:06:50.572737+09:00", "side": "BUY", "code": "478560", "name": "블랙야크아이앤씨", "price": 3195, "qty": 375, "cost": 1198305, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 2500, "target": 3888, "signals": [{"label": "손절선", "ok": true, "detail": "2,500 (현재 3,175)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 3,888"}, {"label": "추세(60일선)", "ok": true, "detail": "2,716"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +4 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 3,164"}]}
{"ts": "2026-09-21T09:20:51.719682+09:00", "side": "SELL", "code": "001790", "name": "대한제당", "price": 2845, "qty": 1000, "proceeds": 2839452, "entry_price": 2960, "pnl": -120992, "pnl_pct": -3.89, "hold_from": "2026-09-01T09:18:28.021372+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "2,738 (현재 2,855)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 3,293"}, {"label": "추세(60일선)", "ok": true, "detail": "2,599"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -222 · 기 +319"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 3,002"}]}
{"ts": "2026-09-21T09:42:47.198220+09:00", "side": "SELL", "code": "055550", "name": "신한지주", "price": 112400, "qty": 31, "proceeds": 3477605, "entry_price": 112797, "pnl": -19619, "pnl_pct": -0.35, "hold_from": "2026-09-01T09:40:30.287246+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "98,639 (현재 112,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 134,034"}, {"label": "추세(60일선)", "ok": true, "detail": "96,663"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -381 · 기 +345"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-21T09:52:51.763161+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 6, "cost": 867730, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 182950, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 182,950"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
{"ts": "2026-09-21T10:08:49.729707+09:00", "side": "BUY", "code": "010170", "name": "대한광통신", "price": 17790, "qty": 67, "cost": 1192109, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 14532, "target": 22676, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "17,790 vs 12,360"}, {"label": "정배열(5>60)", "ok": true, "detail": "15,794 / 12,360"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,794 / 12,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.9%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +8,759 · 기 +610 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "28.88% (환산) vs 평균 7.69% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 16,750"}, {"label": "거래량 급증", "ok": true, "detail": "44,912,169 (환산) vs 평균 11,952,805"}, {"label": "회전율 급증", "ok": true, "detail": "28.88% (환산) vs 평균 7.69%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
{"ts": "2026-09-21T10:08:50.152236+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 136500, "qty": 26, "cost": 3549532, "path": "pullback", "reason": "눌림목 지정가 167,090 도달", "stop": 136499, "target": 136502, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "135,900 vs 112,823"}, {"label": "정배열(5>60)", "ok": true, "detail": "164,820 / 112,823"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "164,820 / 112,823"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+35.1%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +117 · 기 -1 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "5.14% (환산) vs 평균 2.68% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,488,971 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": true, "detail": "5.14% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "48"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 167,090 (현재 135,900)"}]}
{"ts": "2026-09-21T10:10:51.522544+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 136600, "qty": 26, "proceeds": 3544674, "entry_price": 136500, "pnl": -4858, "pnl_pct": 0.07, "hold_from": "2026-09-21T10:08:50.152221+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "136,499 (현재 136,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,502"}, {"label": "추세(60일선)", "ok": true, "detail": "112,832"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +117 · 기 -1"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 147,055"}]}
@@ -1,5 +1,5 @@
{
"cash": 51876591.9675,
"cash": 52765047.648499995,
"initial": 100000000,
"positions": {
"161890": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 2055644.4533983106,
"last_add_price": 132000
@@ -39,32 +39,11 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 2440249.8896798776,
"last_add_price": 145300
},
"001790": {
"code": "001790",
"name": "대한제당",
"sources": [
"watch"
],
"qty": 1456,
"entry_price": 2960,
"entry_at": "2026-09-01T09:18:28.023363+09:00",
"stop": 2765,
"target": 3351,
"peak": 2960,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"tranches": 1,
"tranche_value": 4311465.0601,
"last_add_price": 2960
},
"252990": {
"code": "252990",
"name": "샘씨엔에스",
@@ -76,12 +55,12 @@
"entry_at": "2026-09-03T13:06:31.272281+09:00",
"stop": 10542,
"target": 20306,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,939 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 1448661.5729395074,
"last_add_price": 14370
@@ -102,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1187700.4705399747,
"last_add_price": 7630
@@ -123,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 1,
"tranche_value": 2327287.0247324635,
"last_add_price": 370000
@@ -144,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,748 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 3607796.163008242,
"last_add_price": 418500
@@ -160,12 +139,12 @@
"entry_at": "2026-09-14T09:18:44.719793+09:00",
"stop": 35590,
"target": 66491,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1438578.7331247122,
"last_add_price": 47000
@@ -186,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149000,
"cur_price": 145900,
"tranches": 1,
"tranche_value": 3594602.813411665,
"last_add_price": 152200
@@ -197,24 +176,45 @@
"sources": [
"auto"
],
"qty": 9,
"entry_price": 132600,
"qty": 18,
"entry_price": 138200.0,
"entry_at": "2026-09-16T13:08:48.759982+09:00",
"stop": 100700,
"target": 196400,
"peak": 141400,
"target": 213200,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,257 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1304118.2847785852,
"last_add_price": 132600
"last_add_price": 143800
},
"010170": {
"code": "010170",
"name": "대한광통신",
"sources": [
"interest"
],
"qty": 109,
"entry_price": 17900,
"entry_at": "2026-09-21T09:22:46.032716+09:00",
"stop": 15033,
"target": 23633,
"peak": 17930,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 17720,
"tranches": 1,
"tranche_value": 1964912.7448622035,
"last_add_price": 17900
}
},
"realized_pnl": -16777506.85250008,
"closed_trades": 191,
"realized_pnl": -16953670.840500083,
"closed_trades": 192,
"wins": 6,
"peak_equity": 100139236.48850003,
"max_drawdown": 0.19573051570800562,
@@ -256,8 +256,9 @@
"138040": "2026-09-08",
"180640": "2026-08-19",
"439090": "2026-09-04",
"257720": "2026-09-14"
"257720": "2026-09-14",
"001790": "2026-09-21"
},
"created_at": "2026-06-22T09:00:04.885286+09:00",
"updated_at": "2026-09-18T15:28:49.705667+09:00"
"updated_at": "2026-09-21T15:28:50.989893+09:00"
}
@@ -431,3 +431,6 @@
{"ts": "2026-09-16T09:22:44.869023+09:00", "side": "SELL", "code": "003490", "name": "대한항공", "price": 28850, "qty": 217, "proceeds": 6248242, "entry_price": 29135, "pnl": -75006, "pnl_pct": -0.98, "hold_from": "2026-08-27T09:20:25.042182+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "26,132 (현재 28,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 35,142"}, {"label": "추세(60일선)", "ok": true, "detail": "25,215"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +3,012 · 기 -1,934"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-16T13:08:48.759999+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 132600, "qty": 9, "cost": 1193579, "path": "pullback", "reason": "눌림목 지정가 156,257 도달", "stop": 100700, "target": 196400, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "132,500 vs 99,325"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,140 / 99,325"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,140 / 99,325"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+13.7%p"}, {"label": "수급(7일 외/기)", "ok": true, "detail": "외 -853 · 기 +919 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+62%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 3.06% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "127,461 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.66% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,257 (현재 132,500)"}]}
{"ts": "2026-09-17T09:02:47.127302+09:00", "side": "BUY", "code": "327260", "name": "RF머트리얼즈", "price": 47000, "qty": 30, "cost": 1410212, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 35076, "target": 64398, "signals": [{"label": "손절선", "ok": true, "detail": "35,076 (현재 47,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 64,398"}, {"label": "추세(60일선)", "ok": true, "detail": "29,954"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -224 · 기 +158"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 47,191"}]}
{"ts": "2026-09-21T09:20:51.727484+09:00", "side": "SELL", "code": "001790", "name": "대한제당", "price": 2845, "qty": 1456, "proceeds": 4134242, "entry_price": 2960, "pnl": -176164, "pnl_pct": -3.89, "hold_from": "2026-09-01T09:18:28.023363+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "2,765 (현재 2,855)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 3,351"}, {"label": "추세(60일선)", "ok": true, "detail": "2,599"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -222 · 기 +319"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 3,002"}]}
{"ts": "2026-09-21T09:22:46.032720+09:00", "side": "BUY", "code": "010170", "name": "대한광통신", "price": 17900, "qty": 109, "cost": 1951393, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 15033, "target": 23633, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "17,960 vs 12,362"}, {"label": "정배열(5>60)", "ok": true, "detail": "15,828 / 12,362"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "15,828 / 12,362"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.6%p"}, {"label": "수급(7일 외/기)", "ok": true, "detail": "외 +9,023 · 기 +610 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": false, "detail": "약세 — 돌파만 허용"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "21.71% (환산) vs 평균 7.69% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 16,750"}, {"label": "거래량 급증", "ok": true, "detail": "33,750,340 (환산) vs 평균 11,952,805"}, {"label": "회전율 급증", "ok": true, "detail": "21.71% (환산) vs 평균 7.69%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
{"ts": "2026-09-21T09:46:49.770637+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 143800, "qty": 9, "cost": 1294394, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 196400, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 143,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 196,400"}, {"label": "추세(60일선)", "ok": true, "detail": "99,507"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 142,611"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 3112377.8236046005,
"last_add_price": 136000
@@ -34,12 +34,12 @@
"entry_at": "2026-08-20T09:02:20.789589+09:00",
"stop": 24287,
"target": 55133,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1369462.9055232927,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 5294052.814218748,
"last_add_price": 128900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 3422958.2281204336,
"last_add_price": 89700
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 14120,
"cur_price": 13950,
"tranches": 2,
"tranche_value": 3872819.8089462193,
"last_add_price": 15390
@@ -139,12 +139,12 @@
"entry_at": "2026-09-15T12:26:45.617657+09:00",
"stop": 10568,
"target": 14901,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,977 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 3213033.799832977,
"last_add_price": 12180
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 306500,
"cur_price": 307000,
"tranches": 1,
"tranche_value": 2696407.517061467,
"last_add_price": 319500
@@ -206,5 +206,5 @@
"024110": "2026-09-16"
},
"created_at": "2026-06-22T09:00:04.885297+09:00",
"updated_at": "2026-09-18T15:28:49.709624+09:00"
"updated_at": "2026-09-21T15:28:50.994735+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 53951085.16199991,
"cash": 52938733.33199991,
"initial": 100000000,
"positions": {
"161890": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 1879557.3308712046,
"last_add_price": 135000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 2119787.0272304374,
"last_add_price": 145300
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 2730942.1302758893,
"last_add_price": 30200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 1940371.9507704265,
"last_add_price": 143900
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 2625647.016824501,
"last_add_price": 139300
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 3050406.2025119783,
"last_add_price": 128500
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,247 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 2968861.567423891,
"last_add_price": 411000
@@ -155,27 +155,27 @@
"sources": [
"auto"
],
"qty": 7,
"entry_price": 133600,
"qty": 14,
"entry_price": 139100.0,
"entry_at": "2026-09-15T09:04:47.244160+09:00",
"stop": 100700,
"target": 199400,
"peak": 141400,
"target": 215900,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1028691.8844119626,
"last_add_price": 133600
"last_add_price": 144600
}
},
"realized_pnl": -16251245.858000081,
"closed_trades": 143,
"wins": 5,
"peak_equity": 100266527.41749999,
"max_drawdown": 0.16456880157814388,
"max_drawdown": 0.16501361602568418,
"last_exit": {
"033640": "2026-07-01",
"307950": "2026-07-01",
@@ -209,5 +209,5 @@
"257720": "2026-09-09"
},
"created_at": "2026-06-22T09:00:04.885305+09:00",
"updated_at": "2026-09-18T15:28:49.713295+09:00"
"updated_at": "2026-09-21T15:28:50.998835+09:00"
}
@@ -326,3 +326,4 @@
{"ts": "2026-09-14T09:02:44.509661+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 134700, "qty": 12, "proceeds": 1613248, "entry_price": 142650, "pnl": -98809, "pnl_pct": -5.57, "hold_from": "2026-08-24T09:02:27.224749+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "103,207 (현재 135,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 221,535"}, {"label": "추세(60일선)", "ok": true, "detail": "99,373"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -750 · 기 +948"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-09-14T09:26:43.829914+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 139300, "qty": 18, "cost": 2507776, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 121843, "target": 161313, "signals": [{"label": "손절선", "ok": true, "detail": "121,843 (현재 138,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 161,313"}, {"label": "추세(60일선)", "ok": true, "detail": "118,707"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +334 · 기 -305"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 138,318"}]}
{"ts": "2026-09-15T09:04:47.244164+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 133600, "qty": 7, "cost": 935340, "path": "pullback", "reason": "눌림목 지정가 146,218 도달", "stop": 100700, "target": 199400, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "133,700 vs 99,345"}, {"label": "정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,380 / 99,345"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+16.2%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -836 · 기 +961 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": false, "detail": "60,587 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": false, "detail": "0.31% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 146,218 (현재 133,700)"}]}
{"ts": "2026-09-21T09:52:51.777912+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 7, "cost": 1012352, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 199400, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 199,400"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
@@ -13,12 +13,12 @@
"entry_at": "2026-08-20T09:02:20.801043+09:00",
"stop": 25303,
"target": 53064,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 35,709 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1449597.1229143601,
"last_add_price": 35800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,926 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 5048404.923093746,
"last_add_price": 416500
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 3646874.570375844,
"last_add_price": 89700
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 3502770.0196038075,
"last_add_price": 150200
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 14730,
"cur_price": 13900,
"tranches": 1,
"tranche_value": 3145303.58774031,
"last_add_price": 14780
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 21,369 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2340657.5506936996,
"last_add_price": 20400
@@ -210,5 +210,5 @@
"257720": "2026-09-18"
},
"created_at": "2026-06-22T09:00:04.885314+09:00",
"updated_at": "2026-09-18T15:28:49.716811+09:00"
"updated_at": "2026-09-21T15:28:51.002783+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 4806997.344940743,
"last_add_price": 135800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 6651621.94570833,
"last_add_price": 123300
@@ -55,12 +55,12 @@
"entry_at": "2026-09-08T09:10:37.312187+09:00",
"stop": 10992,
"target": 19066,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 14,250 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 2756420.9418846015,
"last_add_price": 13690
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 4075467.59098812,
"last_add_price": 22300
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 293000,
"cur_price": 299000,
"tranches": 2,
"tranche_value": 6508957.26983333,
"last_add_price": 299000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 1,
"tranche_value": 6538768.702041663,
"last_add_price": 112200
@@ -164,5 +164,5 @@
"003550": "2026-09-11"
},
"created_at": "2026-06-22T09:00:04.885323+09:00",
"updated_at": "2026-09-18T15:28:49.720043+09:00"
"updated_at": "2026-09-21T15:28:51.006573+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 99,600 도달",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 3798555.0123003162,
"last_add_price": 101000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 129,300 도달",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 2,
"tranche_value": 2967341.7108377954,
"last_add_price": 130100
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 26,600 도달",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 3075924.51097547,
"last_add_price": 26850
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 177,000 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1033801.29869291,
"last_add_price": 155000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 292,000 도달",
"cur_price": 293000,
"cur_price": 299000,
"tranches": 2,
"tranche_value": 3244419.3281071694,
"last_add_price": 297500
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 5,940 도달",
"cur_price": 6470,
"cur_price": 6310,
"tranches": 2,
"tranche_value": 2849364.796820624,
"last_add_price": 5780
@@ -178,5 +178,5 @@
"252990": "2026-08-25"
},
"created_at": "2026-06-22T09:00:04.885332+09:00",
"updated_at": "2026-09-18T15:28:49.731212+09:00"
"updated_at": "2026-09-21T15:28:51.018709+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 99,600 도달",
"cur_price": 111500,
"cur_price": 113300,
"tranches": 2,
"tranche_value": 6198757.029677045,
"last_add_price": 101000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 3936709.9183330103,
"last_add_price": 133800
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 292,000 도달",
"cur_price": 293000,
"cur_price": 299000,
"tranches": 2,
"tranche_value": 5887493.979971665,
"last_add_price": 297500
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 201,500 도달",
"cur_price": 203500,
"cur_price": 203000,
"tranches": 2,
"tranche_value": 5548128.162214979,
"last_add_price": 207000
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4404535.175002412,
"last_add_price": 88500
@@ -163,5 +163,5 @@
"051900": "2026-09-03"
},
"created_at": "2026-06-22T09:00:04.885342+09:00",
"updated_at": "2026-09-18T15:28:49.734071+09:00"
"updated_at": "2026-09-21T15:28:51.021700+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 5,630 도달",
"cur_price": 5860,
"cur_price": 5780,
"tranches": 2,
"tranche_value": 7035399.461406734,
"last_add_price": 5640
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 123,300 도달",
"cur_price": 125700,
"cur_price": 129700,
"tranches": 2,
"tranche_value": 7954457.869899998,
"last_add_price": 123300
@@ -76,12 +76,12 @@
"entry_at": "2026-09-08T09:18:33.326196+09:00",
"stop": 11358,
"target": 19355,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 15,500 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 3232197.24058738,
"last_add_price": 13790
@@ -140,5 +140,5 @@
"003550": "2026-09-11"
},
"created_at": "2026-06-22T09:00:04.885351+09:00",
"updated_at": "2026-09-18T15:28:49.743259+09:00"
"updated_at": "2026-09-21T15:28:51.031574+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 66450438.474749975,
"cash": 68870684.27949996,
"initial": 100000000,
"positions": {
"161890": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 1565704.8516703448,
"last_add_price": 135100
@@ -39,32 +39,11 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149400,
"cur_price": 154000,
"tranches": 2,
"tranche_value": 1794750.344984049,
"last_add_price": 145300
},
"001790": {
"code": "001790",
"name": "대한제당",
"sources": [
"watch"
],
"qty": 1211,
"entry_price": 2960,
"entry_at": "2026-09-01T09:18:28.048468+09:00",
"stop": 2738,
"target": 3360,
"peak": 2960,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 2865,
"tranches": 1,
"tranche_value": 3587609.4965399997,
"last_add_price": 2960
},
"086790": {
"code": "086790",
"name": "하나금융지주",
@@ -81,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 133600,
"cur_price": 135400,
"tranches": 1,
"tranche_value": 2222785.3286645445,
"last_add_price": 139700
@@ -102,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 873272.7535912446,
"last_add_price": 7630
@@ -123,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 138100,
"cur_price": 138700,
"tranches": 1,
"tranche_value": 1607329.4707070105,
"last_add_price": 143200
@@ -144,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 1,
"tranche_value": 1778505.5130547632,
"last_add_price": 367500
@@ -155,20 +134,20 @@
"sources": [
"auto"
],
"qty": 7,
"entry_price": 133600,
"qty": 14,
"entry_price": 139100.0,
"entry_at": "2026-09-15T09:04:47.290375+09:00",
"stop": 100700,
"target": 192820,
"peak": 141400,
"target": 208220,
"peak": 149800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 146,218 도달",
"cur_price": 138100,
"tranches": 1,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 1068670.3914512638,
"last_add_price": 133600
"last_add_price": 144600
},
"204270": {
"code": "204270",
@@ -181,12 +160,12 @@
"entry_at": "2026-09-15T09:22:44.817377+09:00",
"stop": 18983,
"target": 30371,
"peak": 23700,
"peak": 26000,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 23550,
"cur_price": 25150,
"tranches": 1,
"tranche_value": 1490686.1619100037,
"last_add_price": 23050
@@ -202,19 +181,19 @@
"entry_at": "2026-09-17T09:02:48.284088+09:00",
"stop": 4035,
"target": 6205,
"peak": 5290,
"peak": 5410,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 4,889 도달",
"cur_price": 5010,
"cur_price": 5150,
"tranches": 1,
"tranche_value": 1625998.4041680093,
"last_add_price": 4810
}
},
"realized_pnl": -12468279.807250062,
"closed_trades": 150,
"realized_pnl": -12620779.856500063,
"closed_trades": 152,
"wins": 6,
"peak_equity": 100186518.14249998,
"max_drawdown": 0.12935489871318767,
@@ -228,7 +207,7 @@
"034730": "2026-09-09",
"093370": "2026-07-20",
"032830": "2026-07-31",
"319660": "2026-09-16",
"319660": "2026-09-21",
"011070": "2026-07-24",
"402340": "2026-07-22",
"003490": "2026-09-16",
@@ -248,8 +227,9 @@
"138040": "2026-09-08",
"252990": "2026-08-25",
"257720": "2026-09-14",
"042500": "2026-09-17"
"042500": "2026-09-17",
"001790": "2026-09-21"
},
"created_at": "2026-06-22T09:00:04.885359+09:00",
"updated_at": "2026-09-18T15:28:49.745717+09:00"
"updated_at": "2026-09-21T15:28:51.034083+09:00"
}
@@ -335,3 +335,7 @@
{"ts": "2026-09-16T15:22:45.431320+09:00", "side": "BUY", "code": "042500", "name": "링네트", "price": 4205, "qty": 1038, "cost": 4365445, "path": "pullback", "reason": "눌림목 지정가 4,222 도달", "stop": 4204, "target": 4207, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "4,205 vs 4,186"}, {"label": "정배열(5>60)", "ok": true, "detail": "4,378 / 4,186"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "4,378 / 4,186"}, {"label": "상대강도(시장대비)", "ok": false, "detail": "-2.7%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -45 · 기 +2 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.44% (환산) vs 평균 0.55% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 4,590"}, {"label": "거래량 급증", "ok": false, "detail": "97,015 (환산) vs 평균 122,940"}, {"label": "회전율 급증", "ok": false, "detail": "0.44% (환산) vs 평균 0.55%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 4,222 (현재 4,205)"}]}
{"ts": "2026-09-17T09:02:47.866939+09:00", "side": "SELL", "code": "042500", "name": "링네트", "price": 4170, "qty": 1038, "proceeds": 4320020, "entry_price": 4205, "pnl": -45425, "pnl_pct": -0.83, "hold_from": "2026-09-16T15:22:45.431310+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "4,204 (현재 4,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 4,207"}, {"label": "추세(60일선)", "ok": true, "detail": "4,186"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -56 · 기 -2"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 4,282"}]}
{"ts": "2026-09-17T09:02:48.284105+09:00", "side": "BUY", "code": "261520", "name": "이지스", "price": 4810, "qty": 337, "cost": 1621213, "path": "pullback", "reason": "눌림목 지정가 4,889 도달", "stop": 4035, "target": 6205, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "4,810 vs 4,253"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,141 / 4,253"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,141 / 4,253"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+15.2%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -42 · 기 +1 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.02% (환산) vs 평균 1.40% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 5,510"}, {"label": "거래량 급증", "ok": false, "detail": "2,153 (환산) vs 평균 143,937"}, {"label": "회전율 급증", "ok": false, "detail": "0.02% (환산) vs 평균 1.40%"}, {"label": "RSI", "ok": true, "detail": "56"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 4,889 (현재 4,810)"}]}
{"ts": "2026-09-21T09:20:51.778902+09:00", "side": "SELL", "code": "001790", "name": "대한제당", "price": 2845, "qty": 1211, "proceeds": 3438577, "entry_price": 2960, "pnl": -146521, "pnl_pct": -3.89, "hold_from": "2026-09-01T09:18:28.048468+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "2,738 (현재 2,855)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 3,360"}, {"label": "추세(60일선)", "ok": true, "detail": "2,599"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -222 · 기 +319"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 3,002"}]}
{"ts": "2026-09-21T09:52:51.815235+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 144600, "qty": 7, "cost": 1012352, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 100700, "target": 192820, "signals": [{"label": "손절선", "ok": true, "detail": "100,700 (현재 144,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 192,820"}, {"label": "추세(60일선)", "ok": true, "detail": "99,527"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +59 · 기 -54"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 143,611"}]}
{"ts": "2026-09-21T10:08:50.228135+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 136500, "qty": 32, "cost": 4368655, "path": "pullback", "reason": "눌림목 지정가 156,535 도달", "stop": 136499, "target": 136502, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "135,900 vs 112,823"}, {"label": "정배열(5>60)", "ok": true, "detail": "164,820 / 112,823"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "164,820 / 112,823"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+35.1%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +117 · 기 -1 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "5.14% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,488,971 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": true, "detail": "5.14% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "48"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,535 (현재 135,900)"}]}
{"ts": "2026-09-21T10:10:51.580030+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 136600, "qty": 32, "proceeds": 4362676, "entry_price": 136500, "pnl": -5979, "pnl_pct": 0.07, "hold_from": "2026-09-21T10:08:50.228133+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "136,499 (현재 136,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,502"}, {"label": "추세(60일선)", "ok": true, "detail": "112,832"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +117 · 기 -1"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 147,055"}]}
@@ -13,12 +13,12 @@
"entry_at": "2026-08-20T09:02:21.929202+09:00",
"stop": 23257,
"target": 57188,
"peak": 50000,
"peak": 50300,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 33,138 도달",
"cur_price": 48600,
"cur_price": 49050,
"tranches": 2,
"tranche_value": 1295489.4529810352,
"last_add_price": 35800
@@ -34,12 +34,12 @@
"entry_at": "2026-09-01T09:00:48.159091+09:00",
"stop": 10002,
"target": 14868,
"peak": 12340,
"peak": 12520,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 11,563 도달",
"cur_price": 12260,
"cur_price": 12520,
"tranches": 2,
"tranche_value": 2911004.1109875888,
"last_add_price": 11890
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 1615452.829907214,
"last_add_price": 7700
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 1,
"tranche_value": 4244307.225767524,
"last_add_price": 30050
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 3260067.840603473,
"last_add_price": 89700
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 411,568 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 2,
"tranche_value": 5441389.490632502,
"last_add_price": 414500
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 325500,
"cur_price": 324000,
"tranches": 1,
"tranche_value": 3290595.6980217183,
"last_add_price": 339000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,361 도달",
"cur_price": 20650,
"cur_price": 20200,
"tranches": 1,
"tranche_value": 2006934.1779601518,
"last_add_price": 20200
@@ -201,5 +201,5 @@
"060250": "2026-09-16"
},
"created_at": "2026-06-22T09:00:04.885367+09:00",
"updated_at": "2026-09-18T15:28:49.748142+09:00"
"updated_at": "2026-09-21T15:28:51.036682+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 145100,
"cur_price": 146200,
"tranches": 2,
"tranche_value": 3850824.8781825085,
"last_add_price": 132000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6360,
"cur_price": 6010,
"tranches": 2,
"tranche_value": 2161970.368894262,
"last_add_price": 7700
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 6,970 도달",
"cur_price": 4725,
"cur_price": 4640,
"tranches": 1,
"tranche_value": 3307799.126482089,
"last_add_price": 4795
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 85100,
"cur_price": 85300,
"tranches": 1,
"tranche_value": 4295888.63301571,
"last_add_price": 89700
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 306500,
"cur_price": 307000,
"tranches": 2,
"tranche_value": 3463164.94193938,
"last_add_price": 327500
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 149000,
"cur_price": 145900,
"tranches": 1,
"tranche_value": 6571824.799409013,
"last_add_price": 152900
@@ -133,7 +133,7 @@
"closed_trades": 33,
"wins": 1,
"peak_equity": 102026100.45499997,
"max_drawdown": 0.1970265460024736,
"max_drawdown": 0.20036872999734656,
"last_exit": {
"403870": "2026-07-07",
"000660": "2026-06-29",
@@ -159,5 +159,5 @@
"041520": "2026-09-14"
},
"created_at": "2026-06-22T09:00:04.885375+09:00",
"updated_at": "2026-09-18T15:28:49.750465+09:00"
"updated_at": "2026-09-21T15:28:51.039209+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,907 도달",
"cur_price": 138100,
"cur_price": 149100,
"tranches": 2,
"tranche_value": 683690.8887678265,
"last_add_price": 148600
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 29300,
"cur_price": 28800,
"tranches": 2,
"tranche_value": 2103052.160088299,
"last_add_price": 30000
@@ -55,12 +55,12 @@
"entry_at": "2026-09-04T09:14:31.933656+09:00",
"stop": 11212,
"target": 21863,
"peak": 17650,
"peak": 18380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,958 도달",
"cur_price": 17320,
"cur_price": 18010,
"tranches": 2,
"tranche_value": 863955.0606460258,
"last_add_price": 14370
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 420,748 도달",
"cur_price": 390000,
"cur_price": 393500,
"tranches": 1,
"tranche_value": 2453224.2449245187,
"last_add_price": 416500
@@ -97,12 +97,12 @@
"entry_at": "2026-09-09T09:44:37.054163+09:00",
"stop": 2777,
"target": 4346,
"peak": 3240,
"peak": 3245,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 3,136 도달",
"cur_price": 3100,
"cur_price": 3125,
"tranches": 2,
"tranche_value": 1410941.5700872256,
"last_add_price": 3210
@@ -143,5 +143,5 @@
"252990": "2026-09-01"
},
"created_at": "2026-06-22T09:00:04.885385+09:00",
"updated_at": "2026-09-18T15:28:49.752684+09:00"
"updated_at": "2026-09-21T15:28:51.041570+09:00"
}

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