auto: 일일 백업 2026-07-31 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
| **증권잔액 → 골디 inbox** | `python3 ~/.openclaw/agents/stock/workspace/scripts/send_balance_to_budget.py` | launchd `ai.openclaw.stock.send-balance` (매월 1일 04:30) |
|
||||
| **골디 inbox 처리** (단독) | `python3 ~/.openclaw/agents/budget/workspace/skills/monthly-settlement/scripts/inbox_handler.py [--dry-run]` | 트리거 없음 — 월간결산 cron 진입부에서 자동 호출. 수동 점검·재처리용 |
|
||||
| **워치리스트 모니터링** | `python3 ~/.openclaw/agents/stock/workspace/scripts/watchlist_monitor.py check` | launchd `ai.openclaw.stock.watchlist-monitor` (평일 09–15시 매 15분) |
|
||||
| **트레일링 스톱 감시** | `python3 ~/.openclaw/agents/stock/workspace/scripts/trailing_monitor.py {check [--repeat N --gap S] [--force] [--dry-run]\|list}` | launchd `ai.openclaw.stock.trailing-monitor` (평일 09:00–15:30 **매 1분**, 스크립트가 장외·휴장 self-skip). 자산웹에서 PIN 승인된 트레일링 예약의 조건단가를 고점 갱신 시 kt10002로 **상향만** 정정. 신규 발주 없음. 예약 0건이면 즉시 종료(API 콜 0). 상태 `state/trailing_stops.json`. ⚠️ cadence 변경 이력 2분→30초→**1분**(2026-07-30 관리자님) — 30초는 launchd로 불가해 `--repeat 2 --gap 30`(프로세스 내부 2회)으로 구현했었고, 옵션은 살아있으니 다시 쓸 땐 plist 인자만 추가 |
|
||||
| **공모주 캘린더 동기화** | `python3 ~/.openclaw/agents/stock/workspace/scripts/ipo_calendar_sync.py` | launchd `ai.openclaw.stock.ipo-calendar-sync` (매월 1일 09:00) |
|
||||
| **FOMC 캘린더 동기화** | `python3 ~/.openclaw/agents/stock/workspace/scripts/fomc_calendar_sync.py [--list\|--dry-run]` | launchd `ai.openclaw.stock.fomc-calendar-sync` (매월 1일 09:10). 연준 공식 일정표 → `[FOMC] YYYY-MM 회의` 종일 일정(회의 시작일 ET ~ 발표일 KST). `--list`는 파싱 결과만(캘린더 미접근) |
|
||||
| **휴장일 동기화** | `python3 ~/.openclaw/agents/stock/workspace/scripts/holiday_sync.py [--show]` | launchd `ai.openclaw.stock.holiday-sync` (매주 일요일 03:00) |
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
| 라벨 (`ai.openclaw.stock.`) | 일정 | 스크립트 | 핵심 비고 |
|
||||
|---|---|---|---|
|
||||
| `watchlist-monitor` | 평일 10·12·14시 (휴장일 self-skip) | `watchlist_monitor.py check` | buy/target/stop 감지 시 텔레그램 요약 + HTML 메일 1통. 2026-05-12 15분 간격 → 3회 축소 (관리자님 요청) |
|
||||
| `trailing-monitor` | 평일 09:00–15:30 **매 1분** (`StartCalendarInterval` 391엔트리, 스크립트 self-skip) | `trailing_monitor.py check` | **트레일링 스톱 감시** (2026-07-30 도입). ⚠️ **매매 API를 자동 호출하는 유일한 트리거** — `feedback_no_trade_auto_triggers` 예외로 관리자님이 명시 승인. 허용 근거: 호출하는 건 `kiwoom_order.modify_order` **하나뿐**이고 신규 발주·수량·방향 변경 경로가 없음. PIN 승인 시 계좌·종목·수량·트레일 폭이 확정되고, 감시는 이미 승인된 스톱주문의 조건단가를 **상향만** 정정. 예약 0건이면 즉시 종료(API 콜 0). 상태 `state/trailing_stops.json`, 로그 `logs/stock-trailing-monitor.{log,err.log}`. ⚠️ **cadence 이력 2분→30초→1분**(전부 2026-07-30 관리자님 지시). launchd 최소 단위가 1분이라 30초는 프로세스 내부 `--repeat 2 --gap 30`(1분 발화 × 30초 간격 2회)으로 구현했고 **CLI 옵션은 살아있다** — 다시 30초로 갈 땐 plist ProgramArguments에 인자만 추가. `StartInterval=30`은 GUI idle 시 발화 보류라 사용 금지(sim-scan이 같은 이유로 캘린더 전환). ⚠️ **스톱주문은 장 마감 후 소멸한다 — 2026-07-30 실증 완료**(가정이 틀렸음). 첫 실주문 TRL-A2Z4(제닉스로보틱스 1주, 14:35 등록, 손절선 4,370→4,455 3회 상향)가 **체결 없이** 사라졌다: 당일매매일지 매도 기록 0건 · 보유수량 3,338주 불변 · 미체결 0건. 감지 시각 **18:21**(15:30 장 마감 즉시가 아니라 몇 시간 뒤 — 감시는 그 사이 매분 정상 발화했고 로그가 조용했으니 주문은 18:20까지 조회에 살아있었다. NXT 시간대엔 손절선이 실제로 유효했던 셈. 1회 관측이라 매일 같은 시각인지는 미확인). ⚠️ **자동 재등록 안 한다**(관리자님 결정) — 알림만 보내고 재등록은 자산웹에서 수동. 소멸 알림에 사유 구분 있음(아래). ⚠️ **예약 종료 알림 3갈래**(`_fill_check`+`_notify_gone`): 미체결 조회에서 사라진 것만으로는 체결·취소·소멸을 구분할 수 없어(셋 다 목록에서 빠짐) 예약이 사라질 때만 ka10170 1콜 추가로 판정 — ✅체결(당일 매도기록 있음, 수량·평균가·실현손익 표시. 관리자님 수동 매도와는 구분 불가라 단정 안 함) / ⚠️소멸(매도기록 없음 = 체결 안 됨 확정 + 재등록 안내) / 🎯판정불가(일지 조회 실패). **조회 실패를 '체결 안 됨'으로 단정하면 안 된다** — `_fill_check`가 (기록, 성공여부) 튜플을 반환하는 이유. ⚠️ **초기 고점 = 등록 시점 현재가 고정**, 이후 갱신도 **현재가로만**(당일고가를 쓰면 등록 전 고가 때문에 즉시 발동). ⚠️ **고점 기준 선택 옵션은 2026-07-30 제거 — 다시 넣지 말 것**(`peak_basis`/`52주 전고점`/`매수후 고점`). 과거 고점 기준은 손절선이 현재가 위로 올라가 `TRAIL_IMMEDIATE` 거부되는데, **손실 종목은 등록 자체가 불가**(실측 제닉스로보틱스 현재가 4,805 · 매수후 고점 6,890 → 필요 폭 30.3% / 52주 19,940 → 75.9%, 상한 30% 초과)고 **이익 종목은 과거 고점 ≈ 현재가라 결과가 동일**. 차이 날 때 못 쓰고 쓸 수 있을 때 차이 없어 폐기. ⚠️ **최저 매도가**(`min_sell_price`)로 손절선 하한 지정 가능 — `cond_uv = max(트레일, 최저가)`. 트레일 폭을 넓게 잡아도 이 가격 아래로 안 내려간다. 고점이 올라 트레일이 추월하면 그 뒤론 트레일 지배(전환점 = 최저가÷(1−pct)). 1분 간격이라 그 사이 스파이크는 놓친다(손절선이 덜 올라가는 방향 — 손실 위험 아님). ⚠️ **정밀도 보완 안 함으로 결론**(2026-07-30 관리자님): 최저 매도가로 하한이 통제되니 1분 해상도 누락은 감당 범위. `entry_day_high` 기준선 / `realtime_hub` WS 틱 추적 **둘 다 채택 안 함 — 재제안 금지** |
|
||||
| `briefing` | 평일 20:10 (휴장일 self-skip) | `stock_portfolio_report.py send` | 메일만 발송. 텔레그램 리포트 요약은 2026-05-14 관리자님 요청으로 비활성화. 실패 시 자가 알림 |
|
||||
| `briefing-fallback-2030` | 평일 20:30 (휴장일 self-skip) | `briefing_fallback.py retry` | 스냅샷 있으면 skip(idempotent), 없으면 send 재실행. 알림 없음 |
|
||||
| `briefing-fallback-2100` | 평일 21:00 (휴장일 self-skip) | `briefing_fallback.py final` | 마지막 폴백. 실패 시 레이 텔레그램 알림 |
|
||||
|
||||
@@ -1509,6 +1509,10 @@ def _fetch_all_data(entries: list[dict], only_owner: str | None = None) -> dict:
|
||||
'qty': qty,
|
||||
'price': o.get('order_price', 0),
|
||||
'order_type': o.get('order_type', ''),
|
||||
# 스톱지정가 조건단가 (ka10075 stop_pric) + 트레일링 예약이면 그 상태.
|
||||
# 상세 표시가 "지정가"로 뭉개지지 않게 주문 성격을 그대로 실어 보낸다.
|
||||
'stop_price': o.get('stop_price', 0),
|
||||
'trailing': _trailing_info_for(o.get('ord_no', '')),
|
||||
'time': o.get('order_time', ''),
|
||||
'account': o.get('account', ''),
|
||||
'exchange': o.get('exchange', ''),
|
||||
@@ -3612,10 +3616,65 @@ def _fmt_hhmmss(raw: str) -> str:
|
||||
return s
|
||||
|
||||
|
||||
_TRAILING_LOOKUP_TTL = 5.0
|
||||
_trailing_lookup_cache: dict = {'ts': 0.0, 'by_ord': {}}
|
||||
|
||||
|
||||
def _trailing_info_for(ord_no: str):
|
||||
"""미체결 주문번호 → 트레일링 예약 요약 (없으면 None).
|
||||
|
||||
`state/trailing_stops.json` 읽기라 키움 콜 0. 렌더 경로에서 주문마다 불리므로 5초 캐시.
|
||||
⚠️ 예약의 ord_no 는 정정할 때마다 바뀌므로(kt10002 가 새 번호 발급) 항상 예약 파일의
|
||||
현재 ord_no 와 매칭한다 — 등록 시점 번호로 매칭하면 첫 상향 후 연결이 끊긴다.
|
||||
"""
|
||||
if not ord_no:
|
||||
return None
|
||||
now = time.time()
|
||||
if now - _trailing_lookup_cache['ts'] > _TRAILING_LOOKUP_TTL:
|
||||
try:
|
||||
from orders import trailing as _trl
|
||||
by_ord = {r['ord_no']: r for r in _trl.list_active()}
|
||||
except Exception:
|
||||
by_ord = {}
|
||||
_trailing_lookup_cache['by_ord'] = by_ord
|
||||
_trailing_lookup_cache['ts'] = now
|
||||
r = _trailing_lookup_cache['by_ord'].get(ord_no)
|
||||
if not r:
|
||||
return None
|
||||
return {
|
||||
'id': r['id'], 'trail_pct': r.get('trail_pct'), 'peak': r.get('peak', 0),
|
||||
'min_sell_price': r.get('min_sell_price'),
|
||||
'modify_count': r.get('modify_count', 0),
|
||||
# 등록 시점 값 — 손절선·고점이 그 뒤로 얼마 올라왔는지 보여주는 데 쓴다.
|
||||
'entry_cond_uv': r.get('entry_cond_uv', 0),
|
||||
'entry_peak': r.get('entry_peak', 0),
|
||||
}
|
||||
|
||||
|
||||
def _stop_gap_html(stop_price: int, limit_price: int) -> str:
|
||||
"""스톱 주문의 조건단가−지정가 갭 표기. 호가단위로 나눠 틱수로 보여준다.
|
||||
|
||||
`orders/trailing.ORD_UV_GAP_TICKS` 값을 화면에 그대로 박지 않는 이유는 실제 주문에
|
||||
걸린 값과 어긋날 수 있기 때문(정정 중 값 변화·키움앱 수동 개입). 실측값으로 역산한다.
|
||||
틱으로 딱 나눠지지 않으면 원으로 폴백.
|
||||
"""
|
||||
gap = (stop_price or 0) - (limit_price or 0)
|
||||
if gap <= 0:
|
||||
return ''
|
||||
try:
|
||||
from orders.trailing import tick_size
|
||||
t = tick_size(stop_price)
|
||||
except Exception:
|
||||
t = 0
|
||||
if t > 0 and gap % t == 0:
|
||||
return f' <span class="muted">−{gap // t}틱</span>'
|
||||
return f' <span class="muted">−{gap:,}원</span>'
|
||||
|
||||
|
||||
def _pending_detail_html(r: dict) -> str:
|
||||
"""자세히보기용 미체결 ord 단위 상세. 매수/매도 분리 표시.
|
||||
`r['pending_orders']` 가 ord별 dict 리스트.
|
||||
레이아웃: dt(라벨, 컬러) / dd 2줄(상단=수량@가격, 하단=계좌·시각·주문번호 muted).
|
||||
레이아웃: dt(라벨, 컬러) / dd 2~3줄(상단=수량@가격, 조건줄, 하단=계좌·시각·주문번호 muted).
|
||||
"""
|
||||
orders = r.get('pending_orders') or []
|
||||
if not orders:
|
||||
@@ -3623,11 +3682,14 @@ def _pending_detail_html(r: dict) -> str:
|
||||
buys = [o for o in orders if o.get('side') == 'BUY']
|
||||
sells = [o for o in orders if o.get('side') == 'SELL']
|
||||
|
||||
cur_price = r.get('price', 0) or 0 # 조건단가까지 남은 거리 계산용
|
||||
|
||||
def _row(o: dict, kind: str) -> str:
|
||||
qty = o.get('qty', 0)
|
||||
price = o.get('price', 0)
|
||||
otype = o.get('order_type') or ''
|
||||
price_str = f'{price:,}원 지정가' if price else (otype or '시장가')
|
||||
stop_p = o.get('stop_price', 0) or 0
|
||||
trl = o.get('trailing')
|
||||
acc = html.escape(o.get('account', ''))
|
||||
ord_no = html.escape(o.get('ord_no', ''))
|
||||
tm = _fmt_hhmmss(html.escape(o.get('time', '')))
|
||||
@@ -3636,11 +3698,72 @@ def _pending_detail_html(r: dict) -> str:
|
||||
meta_parts.append(tm)
|
||||
if ord_no:
|
||||
meta_parts.append(f'주문번호 {ord_no}')
|
||||
|
||||
label = '미체결 매수' if kind == 'buy' else '미체결 매도'
|
||||
if kind == 'sell' and trl:
|
||||
label = '트레일링 매도'
|
||||
elif kind == 'sell' and stop_p:
|
||||
label = '스톱 매도'
|
||||
|
||||
# 스톱 계열은 가격이 두 개다 — 조건단가(방아쇠)와 지정가(실제 주문가).
|
||||
# 첫 줄에 지정가만 '@ N원' 으로 박으면 그게 방아쇠처럼 오해되고 둘의 관계도 안 보인다.
|
||||
# 그래서 트레일링은 첫 줄에 수량만 남기고 두 가격을 미니표 맨 위 단독 항으로 올린다.
|
||||
if trl or stop_p:
|
||||
main = f'{qty:,}주 매도 예약'
|
||||
elif price:
|
||||
main = f'{qty:,}주 @ {price:,}원 {otype}' if otype else f'{qty:,}주 @ {price:,}원 지정가'
|
||||
else:
|
||||
main = f'{qty:,}주 @ {otype or "시장가"}'
|
||||
|
||||
cond_line = ''
|
||||
if stop_p and not trl:
|
||||
# 순수 스톱지정가 — 조건단가 고정. 표 없이 한 줄이지만 순서는 트레일링과 같게
|
||||
# (조건가 닿으면 → 지정가로 매도). 지정가가 먼저 오면 그게 방아쇠로 오해된다.
|
||||
tail = f' {price:,}원에 매도' if price else ' 매도'
|
||||
cond_line = (f'<div class="small pending-line-cond">'
|
||||
f'{stop_p:,}원 닿으면{tail}{_stop_gap_html(stop_p, price)} '
|
||||
f'<span class="muted">(고정)</span></div>')
|
||||
if trl:
|
||||
mini = []
|
||||
mini.append(f'<dt>손절선</dt><dd><b>{stop_p:,}원</b> 도달 시</dd>')
|
||||
if price:
|
||||
# 갭은 두 값의 차를 호가단위로 나눠 틱수로 표시 — ORD_UV_GAP_TICKS 를 그대로
|
||||
# 박지 않는 이유는 실제 주문 값과 어긋날 수 있어서다(정정·수동 개입).
|
||||
# 틱으로 딱 안 나눠지면 원으로 폴백.
|
||||
gap_part = _stop_gap_html(stop_p, price)
|
||||
mini.append(f'<dt>매도 지정가</dt><dd>{price:,}원{gap_part}</dd>')
|
||||
# 고점에 '등록 시점' 라벨을 붙이지 않는다 — peak 는 감시가 갱신한 현재 고점이라
|
||||
# 붙여 놓으면 지금 고점이 등록 시점 값인 것처럼 읽힌다
|
||||
# (실측 entry_peak 4,860 vs peak 4,950). 등록 후 얼마나 올랐는지는
|
||||
# 아래 '고점 상승' 행이 실제 값으로 보여준다.
|
||||
mini.append(f'<dt>고점</dt><dd><b>{trl.get("peak", 0):,}원</b></dd>')
|
||||
mini.append(f'<dt>트레일 폭</dt><dd>−{trl.get("trail_pct")}%</dd>')
|
||||
if trl.get('min_sell_price'):
|
||||
mini.append(f'<dt>최저 매도가</dt><dd>{trl["min_sell_price"]:,}원</dd>')
|
||||
if cur_price > 0 and stop_p:
|
||||
# 손절선을 기준으로 현재가가 몇 % 위에 있는지 = 팔리기까지 남은 여유.
|
||||
# 라벨이 '손절선 대비'이므로 분모도 손절선이어야 라벨과 계산이 어긋나지 않는다.
|
||||
room = (cur_price - stop_p) / stop_p * 100
|
||||
mini.append(f'<dt>손절선 대비</dt><dd>{room:+.1f}% '
|
||||
f'<span class="muted">(현재 {cur_price:,}원)</span></dd>')
|
||||
# 상향 횟수는 표시하지 않는다(관리자님 지시). mc 는 상승 행들의 표시 조건으로만 쓴다.
|
||||
mc = trl.get('modify_count', 0)
|
||||
entry_peak = trl.get('entry_peak') or 0
|
||||
peak_now = trl.get('peak', 0)
|
||||
if entry_peak and peak_now > entry_peak:
|
||||
mini.append(f'<dt>고점 상승</dt><dd>{entry_peak:,} → {peak_now:,}원 '
|
||||
f'<span class="up">+{peak_now - entry_peak:,}</span></dd>')
|
||||
entry_cond = trl.get('entry_cond_uv') or 0
|
||||
if mc and entry_cond and stop_p > entry_cond:
|
||||
mini.append(f'<dt>손절선 상승</dt><dd>{entry_cond:,} → {stop_p:,}원 '
|
||||
f'<span class="up">+{stop_p - entry_cond:,}</span></dd>')
|
||||
cond_line += f'<dl class="trail-mini">{"".join(mini)}</dl>'
|
||||
|
||||
return (
|
||||
f'<dt class="pending-{kind}-label">{label}</dt>'
|
||||
f'<dd>'
|
||||
f'<div class="num pending-line-main">{qty:,}주 @ {price_str}</div>'
|
||||
f'<div class="num pending-line-main">{main}</div>'
|
||||
f'{cond_line}'
|
||||
f'<div class="muted small pending-line-meta">{" · ".join(meta_parts)}</div>'
|
||||
f'</dd>'
|
||||
)
|
||||
@@ -3994,151 +4117,6 @@ def _render_phantom_row(r: dict) -> str:
|
||||
</details>'''
|
||||
|
||||
|
||||
def _render_pending_buy_held_row(r: dict) -> str:
|
||||
"""보유 종목 중 매수 미체결 걸린 행. 매수등록 섹션 (보유분) 카드.
|
||||
summary는 매수 대기 합계·평균 주문가, 보유 수량·평단도 함께. detail은 _pending_detail_html이 주문 단위 상세 출력."""
|
||||
stock = html.escape(r['stock'])
|
||||
code = html.escape(r.get('code', '') or '')
|
||||
accounts = html.escape('+'.join(r.get('accounts', [])))
|
||||
qty = r.get('qty', 0)
|
||||
avg = r.get('avg', 0)
|
||||
price = r.get('price', 0)
|
||||
buy_qty = r.get('pending_buy_qty', 0)
|
||||
|
||||
orders = [o for o in (r.get('pending_orders') or []) if o.get('side') == 'BUY']
|
||||
priced = [o for o in orders if o.get('price', 0) > 0]
|
||||
if priced:
|
||||
total = sum(o['qty'] for o in priced)
|
||||
avg_buy = sum(o['qty'] * o['price'] for o in priced) // total if total else 0
|
||||
else:
|
||||
avg_buy = 0
|
||||
|
||||
# 매수 주문 평균가 vs 현재가 → 추가매수 거리
|
||||
if avg_buy and price:
|
||||
gap = price - avg_buy
|
||||
gap_pct = (gap / avg_buy * 100) if avg_buy else 0.0
|
||||
gcls = 'up' if gap > 0 else ('down' if gap < 0 else 'neutral')
|
||||
gsign = '+' if gap >= 0 else ''
|
||||
diff_html = f'<span class="{gcls}">{gsign}{gap:,.0f}<span class="pct">{gsign}{gap_pct:.2f}%</span></span>'
|
||||
else:
|
||||
diff_html = ''
|
||||
|
||||
price_html = f'<span class="rt-px">{price:,}</span>' if price else '<span class="muted">-</span>'
|
||||
|
||||
summary_line2 = f'<span class="muted small">매수 대기 {buy_qty:,}주'
|
||||
if avg_buy:
|
||||
summary_line2 += f' · 평균 주문가 {avg_buy:,}원'
|
||||
if qty and avg:
|
||||
summary_line2 += f' · 보유 {qty:,}주 @ {avg:,}'
|
||||
summary_line2 += '</span>'
|
||||
|
||||
chart_block = ''
|
||||
if code:
|
||||
chart_block = f'<div class="block chart-svg" data-chart-code="{code}"></div>'
|
||||
|
||||
detail_pairs: list[str] = [f'<dt>종목코드</dt><dd class="muted">{code}</dd>']
|
||||
if price:
|
||||
detail_pairs.append(f'<dt>현재가</dt><dd class="num">{price:,}원</dd>')
|
||||
if avg:
|
||||
detail_pairs.append(f'<dt>평단가</dt><dd class="num">{avg:,}원</dd>')
|
||||
if avg_buy:
|
||||
detail_pairs.append(f'<dt>주문 평균가</dt><dd class="num">{avg_buy:,}원</dd>')
|
||||
if qty:
|
||||
detail_pairs.append(f'<dt>보유 수량</dt><dd class="num">{qty:,}주</dd>')
|
||||
detail_pairs.append(f'<dt>매수 대기</dt><dd class="num">{buy_qty:,}주</dd>')
|
||||
|
||||
row_key = (code or stock) + ':pending-buy'
|
||||
return f'''<details class="row neutral mode-pending-buy" data-row-key="{row_key}">
|
||||
<summary>
|
||||
<div class="left">
|
||||
<div class="line1"><span class="stock">{stock}</span><span class="badge pending-buy" title="키움 미체결 매수">매수등록</span><span class="code">{accounts}</span></div>
|
||||
<div class="line2">{summary_line2}</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="price">{price_html}<span class="caret" aria-hidden="true">▾</span></div>
|
||||
{f'<div class="diff">{diff_html}</div>' if diff_html else ''}
|
||||
</div>
|
||||
</summary>
|
||||
<div class="detail">
|
||||
<dl>{''.join(detail_pairs)}</dl>
|
||||
{_pending_detail_html(r)}
|
||||
{chart_block}
|
||||
</div>
|
||||
</details>'''
|
||||
|
||||
|
||||
def _render_pending_sell_held_row(r: dict) -> str:
|
||||
"""보유 종목 중 매도 미체결 걸린 행. 매도등록 섹션 전용 카드.
|
||||
summary는 매도 대기 합계·평균 주문가, 보유 수량·평단도 함께. detail은 _pending_detail_html이 주문 단위 상세 출력."""
|
||||
stock = html.escape(r['stock'])
|
||||
code = html.escape(r.get('code', '') or '')
|
||||
accounts = html.escape('+'.join(r.get('accounts', [])))
|
||||
qty = r.get('qty', 0)
|
||||
avg = r.get('avg', 0)
|
||||
price = r.get('price', 0)
|
||||
sell_qty = r.get('pending_sell_qty', 0)
|
||||
|
||||
orders = [o for o in (r.get('pending_orders') or []) if o.get('side') == 'SELL']
|
||||
priced = [o for o in orders if o.get('price', 0) > 0]
|
||||
if priced:
|
||||
total = sum(o['qty'] for o in priced)
|
||||
avg_sell = sum(o['qty'] * o['price'] for o in priced) // total if total else 0
|
||||
else:
|
||||
avg_sell = 0
|
||||
|
||||
if avg_sell and avg:
|
||||
gap = avg_sell - avg
|
||||
gap_pct = (gap / avg * 100) if avg else 0.0
|
||||
gcls = 'up' if gap > 0 else ('down' if gap < 0 else 'neutral')
|
||||
gsign = '+' if gap >= 0 else ''
|
||||
diff_html = f'<span class="{gcls}">{gsign}{gap:,.0f}<span class="pct">{gsign}{gap_pct:.2f}%</span></span>'
|
||||
else:
|
||||
diff_html = ''
|
||||
|
||||
price_html = f'<span class="rt-px">{price:,}</span>' if price else '<span class="muted">-</span>'
|
||||
|
||||
summary_line2 = f'<span class="muted small">매도 대기 {sell_qty:,}주'
|
||||
if avg_sell:
|
||||
summary_line2 += f' · 평균 주문가 {avg_sell:,}원'
|
||||
if qty and avg:
|
||||
summary_line2 += f' · 보유 {qty:,}주 @ {avg:,}'
|
||||
summary_line2 += '</span>'
|
||||
|
||||
chart_block = ''
|
||||
if code:
|
||||
chart_block = f'<div class="block chart-svg" data-chart-code="{code}"></div>'
|
||||
|
||||
detail_pairs: list[str] = [f'<dt>종목코드</dt><dd class="muted">{code}</dd>']
|
||||
if price:
|
||||
detail_pairs.append(f'<dt>현재가</dt><dd class="num">{price:,}원</dd>')
|
||||
if avg:
|
||||
detail_pairs.append(f'<dt>평단가</dt><dd class="num">{avg:,}원</dd>')
|
||||
if avg_sell:
|
||||
detail_pairs.append(f'<dt>주문 평균가</dt><dd class="num">{avg_sell:,}원</dd>')
|
||||
if qty:
|
||||
detail_pairs.append(f'<dt>보유 수량</dt><dd class="num">{qty:,}주</dd>')
|
||||
detail_pairs.append(f'<dt>매도 대기</dt><dd class="num">{sell_qty:,}주</dd>')
|
||||
|
||||
row_key = (code or stock) + ':pending-sell'
|
||||
return f'''<details class="row neutral mode-pending-sell" data-row-key="{row_key}">
|
||||
<summary>
|
||||
<div class="left">
|
||||
<div class="line1"><span class="stock">{stock}</span><span class="badge pending-sell" title="키움 미체결 매도">매도등록</span><span class="code">{accounts}</span></div>
|
||||
<div class="line2">{summary_line2}</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="price">{price_html}<span class="caret" aria-hidden="true">▾</span></div>
|
||||
{f'<div class="diff">{diff_html}</div>' if diff_html else ''}
|
||||
</div>
|
||||
</summary>
|
||||
<div class="detail">
|
||||
<dl>{''.join(detail_pairs)}</dl>
|
||||
{_pending_detail_html(r)}
|
||||
{chart_block}
|
||||
</div>
|
||||
</details>'''
|
||||
|
||||
|
||||
def _render_pending_unheld_row(r: dict) -> str:
|
||||
"""미보유 + 미체결 매수 주문 종목. 보유·당일정산 아닌 신규 매수 대기 행.
|
||||
summary는 종목명·미체결 합계, detail은 _pending_detail_html이 주문 단위로 출력."""
|
||||
@@ -5058,8 +5036,13 @@ def _render_owner_panel(owner: str, d: dict, balances: dict, owner_label_text: s
|
||||
parts.append(
|
||||
f'<div class="section-label">매수등록<span class="count">{buy_total}</span></div>'
|
||||
)
|
||||
# 보유 종목의 매수등록 카드도 보유종목 카드를 그대로 쓴다 (2026-07-30 관리자님 지시,
|
||||
# 매도등록과 동일한 이유·방식). pending_buy_held 원소가 consolidated 행 객체 자체다.
|
||||
# ⚠️ pending_unheld(미보유 + 매수 미체결)는 보유 수량·평단·손익이 없어 종목카드로
|
||||
# 대체할 수 없다 — 전용 카드 유지.
|
||||
for r in sorted(pending_buy_held, key=lambda x: -x.get('pending_buy_qty', 0)):
|
||||
parts.append(_render_pending_buy_held_row(r))
|
||||
parts.append(_render_holding_row(r, d['total_value'], show_day_change,
|
||||
key_suffix=':pending-buy'))
|
||||
for r in pending_unheld:
|
||||
parts.append(_render_pending_unheld_row(r))
|
||||
|
||||
@@ -5069,8 +5052,14 @@ def _render_owner_panel(owner: str, d: dict, balances: dict, owner_label_text: s
|
||||
parts.append(
|
||||
f'<div class="section-label">매도등록<span class="count">{len(pending_sell_held)}</span></div>'
|
||||
)
|
||||
# 매도등록 카드는 보유종목 카드를 그대로 쓴다 (2026-07-30 관리자님 지시).
|
||||
# pending_sell_held 원소가 consolidated(보유종목) 행 객체 자체라 필요한 필드가 다 있고,
|
||||
# 전용 카드는 summary 값을 detail 에서 되풀이하면서 손익·버튼·태그가 없어 축소판이었다.
|
||||
# 같은 종목이 자산정보 탭 보유종목과 겹치므로 key_suffix 로 row_key 를 분리한다
|
||||
# (바로 아래 ':held' 와 같은 방식 — mutex/open 복원 충돌 방지).
|
||||
for r in sorted(pending_sell_held, key=lambda x: -x.get('pending_sell_qty', 0)):
|
||||
parts.append(_render_pending_sell_held_row(r))
|
||||
parts.append(_render_holding_row(r, d['total_value'], show_day_change,
|
||||
key_suffix=':pending-sell'))
|
||||
|
||||
# 당일매매 발생한 종목도 보유 종목 섹션에 그대로 표시 — 양쪽 다 보이게 함.
|
||||
# 같은 종목이 양쪽에 들어가니 row_key에 ':held' suffix를 붙여 mutex/open 복원 충돌 방지.
|
||||
@@ -5446,6 +5435,42 @@ dl.pending-detail dt.pending-sell-label { color: #7fb8ff; }
|
||||
dl.pending-detail dd { line-height: 1.45; }
|
||||
dl.pending-detail .pending-line-main { font-variant-numeric: tabular-nums; }
|
||||
dl.pending-detail .pending-line-meta { margin-top: 2px; }
|
||||
/* 스톱·트레일링 조건단가 줄 — 좁은 폭에서 줄바꿈되게(가로 스크롤 방지) */
|
||||
dl.pending-detail .pending-line-cond { margin-top: 2px; color: #8b8f9a; overflow-wrap: anywhere; }
|
||||
dl.pending-detail .pending-line-cond.trailing { color: #d9a84a; }
|
||||
/* 트레일링 근거 미니표 — dd 안에 중첩되는 dl. 라벨 좌측 / 값 우측정렬로 자리수를 맞춘다.
|
||||
두 열 모두 minmax(0,..) 라 좁은 폭에서도 안 넘친다. */
|
||||
dl.pending-detail dl.trail-mini { display: grid; grid-template-columns: minmax(0, auto) minmax(0, 1fr);
|
||||
gap: 1px 8px; margin: 4px 0 0; padding: 5px 7px; font-size: 10.5px;
|
||||
border: 1px solid rgba(217,168,74,0.22); border-radius: 6px; background: rgba(217,168,74,0.05); }
|
||||
dl.pending-detail dl.trail-mini dt { color: #8b8f9a; font-weight: 400; white-space: nowrap; }
|
||||
dl.pending-detail dl.trail-mini dd { margin: 0; text-align: right; color: #a8adb8; line-height: 1.45;
|
||||
font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
|
||||
dl.pending-detail dl.trail-mini dd b { color: #d9a84a; font-weight: 600; }
|
||||
/* ⚠️ 보유종목 행(.row.mode-held)의 `.detail dl` 은 4열 grid(80px 1fr 80px 1fr)이고 명시도가
|
||||
(0,3,1) 로 위 `dl.pending-detail dl.trail-mini` (0,2,2) 보다 높다. 되돌리지 않으면 미니표가
|
||||
4열로 펼쳐져 고정 80px 두 개 때문에 폭을 넘겨 잘린다. pending-detail 도 같은 이유로
|
||||
바로 위에서 2열로 되돌려 놓았다. 이 규칙은 (0,4,1) 이라 640px 미디어쿼리 안의
|
||||
4열 규칙(0,3,1)까지 함께 이긴다 — 미디어쿼리용 사본은 필요 없다. */
|
||||
.row.mode-held .detail dl.trail-mini { grid-template-columns: minmax(0, auto) minmax(0, 1fr); }
|
||||
/* 트레일링 미리보기 카드 — .order-inputs 실폭이 좁아(모바일 ~200px) 가로로 벌어지는 요소를
|
||||
두면 가로 스크롤이 생긴다. 전부 세로 쌓기 + minmax(0,..) + anywhere 로 묶는다. */
|
||||
.trail-pv { border: 1px solid #1f2330; border-radius: 8px; padding: 8px 9px; background: #0f131c;
|
||||
display: flex; flex-direction: column; gap: 7px; min-width: 0; overflow-wrap: anywhere; }
|
||||
.trail-pv-hero { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
|
||||
.trail-pv-hero .cap { font-size: 10px; color: #7c8290; letter-spacing: .02em; }
|
||||
.trail-pv-hero .val { font-size: 17px; font-weight: 700; color: #cfd3dc; font-variant-numeric: tabular-nums; line-height: 1.15; }
|
||||
.trail-pv-hero .sub { font-size: 10px; color: #7c8290; }
|
||||
.trail-pv.bad { border-color: rgba(224,85,85,0.45); background: rgba(224,85,85,0.07); }
|
||||
.trail-pv.bad .val { color: #e05555; font-size: 13px; }
|
||||
.trail-pv-kv { display: grid; grid-template-columns: minmax(0, auto) minmax(0, 1fr); gap: 2px 8px;
|
||||
font-size: 11px; border-top: 1px solid #1a1e28; padding-top: 6px; }
|
||||
.trail-pv-kv dt { color: #7c8290; }
|
||||
.trail-pv-kv dd { margin: 0; text-align: right; color: #a8adb8; font-variant-numeric: tabular-nums; }
|
||||
.trail-pv-kv dd b { color: #cfd3dc; font-weight: 600; }
|
||||
.trail-pv-note { font-size: 10px; color: #6f7480; line-height: 1.45; border-top: 1px solid #1a1e28; padding-top: 6px; }
|
||||
.trail-pv-badge { display: inline-block; font-size: 9px; padding: 1px 5px; border-radius: 999px;
|
||||
background: #2a2313; color: #d9a84a; margin-left: 4px; vertical-align: middle; }
|
||||
|
||||
.caret { color: #4a4f5a; font-size: 10px; transition: transform 0.2s; }
|
||||
.row[open] .caret { transform: rotate(180deg); color: #8b8f9a; }
|
||||
@@ -6578,7 +6603,11 @@ table.adr-info-table td.adr-breakdown { font-size: 11px; color: #8b8f9a; white-s
|
||||
.qty-step-buttons button[data-qty-step="max"] { background: #2a1f24; color: #ffcc77; }
|
||||
.qty-step-buttons button[data-qty-step="clear"] { background: #1d1418; color: #ff8a95; }
|
||||
.order-inputs input:disabled, .order-inputs select:disabled { opacity: 0.5; cursor: not-allowed; }
|
||||
.order-inputs { display: flex; flex-direction: column; gap: 8px; min-height: 0; overflow-y: auto; }
|
||||
/* overflow-x: hidden 필수 — overflow-y:auto 만 주면 브라우저가 가로도 auto 로 만들어,
|
||||
내부가 조금만 넘쳐도 가로 스크롤이 생긴다(.orderbook 도 같은 이유로 명시). */
|
||||
.order-inputs { display: flex; flex-direction: column; gap: 8px; min-height: 0; overflow-y: auto; overflow-x: hidden; }
|
||||
/* 폼 컨트롤이 부모보다 넓어지는 것 자체를 막는다 — select 는 내재 최소폭을 갖는다 */
|
||||
.order-inputs input, .order-inputs select { max-width: 100%; box-sizing: border-box; }
|
||||
/* 입력이 모달 높이를 넘쳐도 매수/취소 버튼은 항상 하단 고정 — 잘림 방지 */
|
||||
.order-inputs .order-actions { margin-top: auto; position: sticky; bottom: 0; background: #0d1018; padding-top: 8px; }
|
||||
.order-inputs label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: #8b8f9a; }
|
||||
@@ -8038,11 +8067,33 @@ def _render_order_modal() -> str:
|
||||
'<option value="LIMIT">지정가</option>'
|
||||
'<option value="MARKET">시장가</option>'
|
||||
'<option value="STOP_LIMIT">스톱지정가 (하락 시 매도)</option>'
|
||||
'<option value="TRAILING_STOP">트레일링 스톱 (고점 따라 손절선 상승)</option>'
|
||||
'</select></label>'
|
||||
'<label data-order-stop-row style="display:none;">'
|
||||
'<span>조건단가 <span class="muted small" style="font-weight:400;">(이 가격 도달 시 매도)</span></span>'
|
||||
'<input type="number" inputmode="numeric" min="0" step="1" data-order-stop-input>'
|
||||
'</label>'
|
||||
# 트레일링: 폭(%)만 입력받고 조건단가·지정가는 서버가 현재가 기준으로 계산.
|
||||
# 미리보기는 클라이언트에서 같은 식으로 계산해 보여주되 실제 값은 서버 계산분이 승자.
|
||||
# 고점 기준 select 제거(2026-07-30) — 과거 고점(52주·매수후) 기준은 손절선이 현재가
|
||||
# 위로 올라가 등록 즉시 발동하는 구조라 쓸 수 없었다. 초기 고점은 등록 시점 현재가 고정.
|
||||
'<label data-order-trail-row style="display:none;">'
|
||||
# 단위(%·원)를 라벨에 박는다 — 입력칸 옆에 붙이면 가로로 벌어져 스크롤이 생기고,
|
||||
# number input 안쪽 absolute 접미사는 데스크톱 스피너와 겹친다.
|
||||
# 트레일 폭은 드롭다운(2026-07-30 관리자님 요청). 옵션 텍스트에 % 가 들어가므로
|
||||
# 라벨의 (%) 표기는 뺀다. select 는 label(flex column) 안에서 full-width 로 늘어나
|
||||
# 폭 문제가 없다 — 값이 '10%' 처럼 짧아 더욱 안전.
|
||||
'<span style="margin-top:8px;">트레일 폭 <span class="muted small" style="font-weight:400;">고점 대비 이만큼 떨어지면 매도</span></span>'
|
||||
# 1~30% 1%단위. 상한 30 은 orders/trailing.MAX_TRAIL_PCT 와 맞춰야 한다
|
||||
# (그쪽 주석에 세 곳 동시 수정 규칙 있음).
|
||||
'<select data-order-trail-input>'
|
||||
+ ''.join(f'<option value="{v}"{" selected" if v == 10 else ""}>{v}%</option>'
|
||||
for v in range(1, 31))
|
||||
+ '</select>'
|
||||
'<span style="margin-top:8px;">최저 매도가 <b style="color:#d9a84a;">(원)</b> <span class="muted small" style="font-weight:400;">비우면 제한 없음 · 손절선 하한</span></span>'
|
||||
'<input type="number" inputmode="numeric" min="0" step="1" placeholder="예: 4500" data-order-trail-min>'
|
||||
'<div data-order-trail-preview style="margin-top:6px; min-width:0;"></div>'
|
||||
'</label>'
|
||||
'<label data-order-price-row><span data-order-price-label>단가</span>'
|
||||
'<input type="number" inputmode="numeric" min="0" step="1" data-order-price-input>'
|
||||
'<div class="price-tick-buttons">'
|
||||
@@ -11378,17 +11429,84 @@ function setSide(side){
|
||||
updateCheck();
|
||||
fetchAdvice(); // 매수/매도 방향에 따라 권장가 세트가 다름
|
||||
}
|
||||
// 스톱지정가는 매도 전용 — 매수면 옵션 비활성+선택돼 있으면 LIMIT로 되돌림. 조건단가 행·단가 라벨 갱신.
|
||||
// 스톱지정가·트레일링은 매도 전용 — 매수면 옵션 비활성+선택돼 있으면 LIMIT로 되돌림.
|
||||
// 조건단가 행·트레일 폭 행·단가 라벨 갱신. 트레일링은 단가를 서버가 계산하므로 단가 행을 숨긴다.
|
||||
function refreshStopUI(){
|
||||
var otSel = $('[data-order-type]'); if(!otSel) return;
|
||||
var stopOpt = otSel.querySelector('option[value="STOP_LIMIT"]');
|
||||
if(stopOpt) stopOpt.disabled = (state.side === 'BUY');
|
||||
if(state.side === 'BUY' && otSel.value === 'STOP_LIMIT') otSel.value = 'LIMIT';
|
||||
var trailOpt = otSel.querySelector('option[value="TRAILING_STOP"]');
|
||||
if(trailOpt) trailOpt.disabled = (state.side === 'BUY');
|
||||
if(state.side === 'BUY' && (otSel.value === 'STOP_LIMIT' || otSel.value === 'TRAILING_STOP')) otSel.value = 'LIMIT';
|
||||
var isStop = (otSel.value === 'STOP_LIMIT');
|
||||
var isTrail = (otSel.value === 'TRAILING_STOP');
|
||||
var stopRow = $('[data-order-stop-row]');
|
||||
if(stopRow) stopRow.style.display = isStop ? '' : 'none';
|
||||
var trailRow = $('[data-order-trail-row]');
|
||||
if(trailRow) trailRow.style.display = isTrail ? '' : 'none';
|
||||
var priceRow = $('[data-order-price-row]');
|
||||
if(priceRow) priceRow.style.display = isTrail ? 'none' : '';
|
||||
var priceLabel = $('[data-order-price-label]');
|
||||
if(priceLabel) priceLabel.textContent = isStop ? '매도 단가' : '단가';
|
||||
if(isTrail) renderTrailPreview();
|
||||
else refreshSubmitGate(); // 트레일링에서 빠져나오면 트레일 게이트를 풀어야 한다
|
||||
}
|
||||
// 트레일링 입력값 읽기 (트레일 폭·최저 매도가). 미리보기·propose 공용.
|
||||
// 초기 고점은 항상 등록 시점 현재가 — 과거 고점 기준 옵션은 2026-07-30 제거됨.
|
||||
function trailInputs(){
|
||||
return {
|
||||
pct: parseFloat(($('[data-order-trail-input]')||{}).value || '0'),
|
||||
minPrice: parseInt(($('[data-order-trail-min]')||{}).value || '0', 10) || 0
|
||||
};
|
||||
}
|
||||
// 손절선 계산 — 서버 `orders/trailing.compute_levels` 와 **같은 식**이어야 한다.
|
||||
// 실제 발주값은 서버 계산분이 승자이므로, 한쪽만 바꾸면 표시와 발주가 어긋난다.
|
||||
function trailCondPrice(peak, pct, minPrice){
|
||||
var cond = floorTick(Math.floor(peak * (1 - pct/100)));
|
||||
var floorUv = minPrice > 0 ? floorTick(minPrice) : 0;
|
||||
return { cond: Math.max(cond, floorUv), floorApplied: floorUv > cond };
|
||||
}
|
||||
function renderTrailPreview(){
|
||||
// 게이트 갱신은 조기 반환보다 먼저 — 폭이 비었거나 시세 로딩 중일 때도 버튼이 잠겨야 한다.
|
||||
// trailBlockReason 이 DOM 을 직접 읽으므로 호출 순서에 의존하지 않는다.
|
||||
refreshSubmitGate();
|
||||
var el = $('[data-order-trail-preview]'); if(!el) return;
|
||||
var t = trailInputs();
|
||||
var cur = (state.lastCheck && state.lastCheck.cur_price) || (state.lastBook && state.lastBook.price) || 0;
|
||||
if(!(t.pct > 0) || !(cur > 0)){ el.textContent = ''; return; }
|
||||
var peak = cur; // 초기 고점 = 등록 시점 현재가 (서버 handler 와 동일)
|
||||
var r = trailCondPrice(peak, t.pct, t.minPrice);
|
||||
var bad = (r.cond >= cur);
|
||||
|
||||
// 결론(손절선)을 카드 상단에 크게, 근거는 라벨/값 표로, 안내는 하단 작게.
|
||||
var hero, note;
|
||||
if(bad){
|
||||
// 서버도 TRAIL_IMMEDIATE 로 거부한다 — PIN 발급 왕복 전에 여기서 먼저 알려준다.
|
||||
hero = '<div class="cap">등록할 수 없습니다</div>' +
|
||||
'<div class="val">손절선 ' + fmt(r.cond) + '원 ≥ 현재가 ' + fmt(cur) + '원</div>' +
|
||||
'<div class="sub">조건을 이미 넘어 등록 즉시 발동됩니다</div>';
|
||||
note = r.floorApplied
|
||||
? '최저 매도가를 현재가보다 낮게 내려주세요.'
|
||||
: '트레일 폭을 넓혀주세요.';
|
||||
} else {
|
||||
var pctFromCur = cur > 0 ? ((cur - r.cond) / cur * 100) : 0;
|
||||
hero = '<div class="cap">지금 등록하면 손절선</div>' +
|
||||
'<div class="val">' + fmt(r.cond) + '원' +
|
||||
(r.floorApplied ? '<span class="trail-pv-badge">최저가 적용</span>' : '') + '</div>' +
|
||||
'<div class="sub">현재가보다 ' + pctFromCur.toFixed(1) + '% 아래 · 여기 닿으면 매도</div>';
|
||||
note = '고점이 오르면 손절선도 <b>따라 올라갑니다</b>. 내려가지는 않습니다.';
|
||||
}
|
||||
|
||||
var kv = [];
|
||||
kv.push('<dt>시작 고점</dt><dd><b>' + fmt(peak) + '원</b><br>등록 시점 현재가</dd>');
|
||||
kv.push('<dt>트레일 폭</dt><dd>−' + t.pct + '%</dd>');
|
||||
if(t.minPrice > 0) kv.push('<dt>최저 매도가</dt><dd>' + fmt(t.minPrice) + '원</dd>');
|
||||
|
||||
el.innerHTML = '<div class="trail-pv' + (bad ? ' bad' : '') + '">' +
|
||||
'<div class="trail-pv-hero">' + hero + '</div>' +
|
||||
'<dl class="trail-pv-kv">' + kv.join('') + '</dl>' +
|
||||
'<div class="trail-pv-note">' + note + '</div>' +
|
||||
'</div>';
|
||||
}
|
||||
function _resolveOrderPrice(){
|
||||
// 단가 우선, 없으면 현재가 fallback. 단가 input 비어있으면 자동 채움 (disabled 아닌 경우)
|
||||
@@ -11440,6 +11558,9 @@ function renderQtyButtons(){
|
||||
}
|
||||
function renderBook(book){
|
||||
state.lastBook = book;
|
||||
// 트레일링 미리보기는 현재가·52주 전고점을 이 응답에서 읽는다 — 호가 갱신마다 다시 그린다.
|
||||
var otNow = $('[data-order-type]');
|
||||
if(otNow && otNow.value === 'TRAILING_STOP') renderTrailPreview();
|
||||
if(book.name){ var ne = $('[data-order-name]'); if(ne) ne.textContent = book.name; state.name = book.name; }
|
||||
var ce = $('[data-order-cur-price]'); if(ce) ce.textContent = fmt(book.price)+'원';
|
||||
var che = $('[data-order-change]');
|
||||
@@ -11509,6 +11630,8 @@ function tickSize(p){
|
||||
return 1000;
|
||||
}
|
||||
function snapToTick(p){ if(!(p>0)) return p; var t = tickSize(p); return Math.round(p/t)*t; }
|
||||
// 호가단위 내림 — 트레일링 손절선은 내림이 안전(더 빨리 발동). orders/trailing.floor_to_tick 과 동일.
|
||||
function floorTick(p){ if(!(p>0)) return p; var t = tickSize(p); return p - (p % t); }
|
||||
// 기술적 권장가(매수/매도 판단 보조). code·side(·평단) 바뀔 때만 fetch, keystroke엔 캐시 재사용.
|
||||
function fetchAdvice(){
|
||||
var code = state.code; if(!code){ renderAdvice(null); return; }
|
||||
@@ -11774,7 +11897,51 @@ function loadOpenOrders(){
|
||||
list.innerHTML = rows.map(function(r){
|
||||
var sideCls = r.side === 'BUY' ? 'buy' : 'sell';
|
||||
var sideLabel = r.side === 'BUY' ? '매수' : '매도';
|
||||
var priceLabel = r.order_price ? (r.order_price.toLocaleString('ko-KR') + '원') : (r.order_type || '시장가');
|
||||
// 주문유형을 항상 붙인다 — 가격만 쓰면 스톱지정가·트레일링이 지정가처럼 보인다.
|
||||
// 트레일링은 지정가가 방아쇠로 오해되지 않게 첫 줄에서 빼고 아래 줄에 조건가와 함께 쓴다.
|
||||
var priceLabel = r.trailing
|
||||
? '매도 예약'
|
||||
: (r.order_price
|
||||
? (r.order_price.toLocaleString('ko-KR') + '원' + (r.order_type ? ' ' + r.order_type : ''))
|
||||
: (r.order_type || '시장가'));
|
||||
var condLine = '';
|
||||
if(r.trailing){
|
||||
// 서버 렌더(_pending_detail_html)와 같은 정보·같은 순서. 모달은 폭이 넓어 한 줄 요약.
|
||||
var tb = [];
|
||||
if(r.stop_price){
|
||||
var head = fmt(r.stop_price) + '원 닿으면';
|
||||
if(r.order_price){
|
||||
// 갭은 틱수로 — 서버 _stop_gap_html 과 같은 규칙(안 나눠지면 원으로 폴백).
|
||||
var gap = r.stop_price - r.order_price;
|
||||
var tk = tickSize(r.stop_price);
|
||||
var gapTxt = '';
|
||||
if(gap > 0) gapTxt = (tk > 0 && gap % tk === 0)
|
||||
? ' (−' + (gap / tk) + '틱)' : ' (−' + fmt(gap) + '원)';
|
||||
head += ' ' + fmt(r.order_price) + '원에 매도' + gapTxt;
|
||||
} else { head += ' 매도'; }
|
||||
tb.push(head);
|
||||
}
|
||||
// 고점에 기준 라벨을 붙이지 않는다 — 서버 렌더와 같은 이유(peak 는 갱신된 현재 고점).
|
||||
tb.push('고점 ' + fmt(r.trailing.peak) + '원 대비 −' + r.trailing.trail_pct + '%');
|
||||
if(r.trailing.min_sell_price) tb.push('최저 ' + fmt(r.trailing.min_sell_price) + '원');
|
||||
if(r.cur_price && r.stop_price){
|
||||
// 손절선 기준 여유폭 — 분모는 손절선(라벨과 계산 기준을 일치시킴).
|
||||
tb.push('손절선 대비 ' + ((r.cur_price - r.stop_price) / r.stop_price * 100).toFixed(1) + '%');
|
||||
}
|
||||
// 상향 횟수는 표시하지 않는다(관리자님 지시). 얼마나 올랐는지만 보여준다.
|
||||
var mc = r.trailing.modify_count || 0;
|
||||
if(r.trailing.entry_peak && r.trailing.peak > r.trailing.entry_peak){
|
||||
tb.push('고점 상승 ' + fmt(r.trailing.entry_peak) + ' → ' + fmt(r.trailing.peak) +
|
||||
'원 (+' + fmt(r.trailing.peak - r.trailing.entry_peak) + ')');
|
||||
}
|
||||
if(mc && r.trailing.entry_cond_uv && r.stop_price > r.trailing.entry_cond_uv){
|
||||
tb.push('손절선 상승 ' + fmt(r.trailing.entry_cond_uv) + ' → ' + fmt(r.stop_price) +
|
||||
'원 (+' + fmt(r.stop_price - r.trailing.entry_cond_uv) + ')');
|
||||
}
|
||||
condLine = '<div class="row-line2" style="color:#d9a84a; overflow-wrap:anywhere;">' + tb.join(' · ') + '</div>';
|
||||
} else if(r.stop_price){
|
||||
condLine = '<div class="row-line2">' + fmt(r.stop_price) + '원 도달 시 매도 (고정)</div>';
|
||||
}
|
||||
var safeOrd = String(r.ord_no || '').replace(/"/g,'"');
|
||||
var safeAcc = String(r.account || '').replace(/"/g,'"');
|
||||
return (
|
||||
@@ -11790,6 +11957,7 @@ function loadOpenOrders(){
|
||||
' · 미체결 ' + r.unfilled_qty + '주 · ' + r.status +
|
||||
' · ' + r.exchange + ' · ' + (r.order_time || '') +
|
||||
'</div>' +
|
||||
condLine +
|
||||
'</div>' +
|
||||
'<div class="row-action">' +
|
||||
'<button type="button" data-cancel-open-order>취소</button>' +
|
||||
@@ -11856,11 +12024,38 @@ function updateMarketPhaseDisplay(){
|
||||
el.textContent = label + ' ' + (phase.time || '');
|
||||
el.className = 'order-market-phase ' + cls;
|
||||
}
|
||||
var sb = $('[data-order-submit]');
|
||||
if(sb){
|
||||
sb.disabled = !canTrade;
|
||||
sb.title = canTrade ? '' : ('매매 비활성: ' + label);
|
||||
// 버튼 disabled 는 refreshSubmitGate 한 곳에서만 결정한다 — 여기서 직접 건드리면
|
||||
// 트레일링 게이트(입력값 기반)를 주기 호출이 덮어써 즉시발동 입력이 통과된다.
|
||||
state.phaseCanTrade = canTrade;
|
||||
state.phaseLabel = label;
|
||||
refreshSubmitGate();
|
||||
}
|
||||
// 트레일링 입력이 등록 불가 상태면 그 이유를 반환, 문제 없으면 빈 문자열.
|
||||
// 즉시발동(손절선 ≥ 현재가)은 서버도 TRAIL_IMMEDIATE 로 거부하지만, 매도 버튼을 누른 뒤가
|
||||
// 아니라 입력하는 시점에 막는다.
|
||||
function trailBlockReason(){
|
||||
var otSel = $('[data-order-type]');
|
||||
if(!otSel || otSel.value !== 'TRAILING_STOP') return '';
|
||||
var t = trailInputs();
|
||||
if(!(t.pct >= 0.5 && t.pct <= 30)) return '트레일 폭은 0.5~30% 범위로 입력하세요';
|
||||
var cur = (state.lastCheck && state.lastCheck.cur_price) || (state.lastBook && state.lastBook.price) || 0;
|
||||
if(!(cur > 0)) return '현재가를 받는 중입니다';
|
||||
var r = trailCondPrice(cur, t.pct, t.minPrice); // 초기 고점 = 현재가
|
||||
if(r.cond >= cur){
|
||||
return r.floorApplied
|
||||
? ('최저 매도가 ' + fmt(t.minPrice) + '원이 현재가 ' + fmt(cur) + '원보다 높아 즉시 발동됩니다')
|
||||
: ('손절선 ' + fmt(r.cond) + '원이 현재가 ' + fmt(cur) + '원 이상이라 즉시 발동됩니다');
|
||||
}
|
||||
return '';
|
||||
}
|
||||
// 매도/매수 버튼 활성 여부의 단일 결정 지점. 시장 phase·트레일링 입력 게이트를 합친다.
|
||||
function refreshSubmitGate(){
|
||||
var sb = $('[data-order-submit]'); if(!sb) return;
|
||||
if(sb.dataset.busy === '1') return; // propose 진행 중 — 끝나고 다시 계산한다
|
||||
var phaseBlocked = (state.phaseCanTrade === false);
|
||||
var trailMsg = trailBlockReason();
|
||||
sb.disabled = phaseBlocked || !!trailMsg;
|
||||
sb.title = phaseBlocked ? ('매매 비활성: ' + (state.phaseLabel || '')) : (trailMsg || '');
|
||||
}
|
||||
function populateSymbolSelect(currentCode, currentName){
|
||||
var sel = $('[data-order-symbol-select]'); if(!sel) return;
|
||||
@@ -12103,9 +12298,16 @@ function doPropose(){
|
||||
var qty = parseInt($('[data-order-qty]').value || '0', 10);
|
||||
var price = parseInt($('[data-order-price-input]').value || '0', 10);
|
||||
var stopPrice = parseInt(($('[data-order-stop-input]')||{}).value || '0', 10);
|
||||
var trail = trailInputs();
|
||||
var trailPct = trail.pct;
|
||||
if(!account){ setMsg('계좌를 선택하세요', 'error'); return; }
|
||||
if(qty <= 0){ setMsg('수량을 입력하세요', 'error'); return; }
|
||||
if(orderType === 'LIMIT' && price <= 0){ setMsg('지정가는 단가가 필요합니다', 'error'); return; }
|
||||
if(orderType === 'TRAILING_STOP'){
|
||||
if(state.side !== 'SELL'){ setMsg('트레일링 스톱은 매도만 가능합니다', 'error'); return; }
|
||||
// 트레일 폭·즉시발동 검사는 입력 시점에 trailBlockReason 이 하고, 걸리면 매도 버튼이
|
||||
// 비활성이라 여기 도달하지 않는다. 서버(TRAIL_IMMEDIATE)가 최후 방어선.
|
||||
}
|
||||
if(orderType === 'STOP_LIMIT'){
|
||||
if(state.side !== 'SELL'){ setMsg('스톱지정가는 매도만 가능합니다', 'error'); return; }
|
||||
if(price <= 0){ setMsg('스톱지정가는 매도 단가가 필요합니다', 'error'); return; }
|
||||
@@ -12128,7 +12330,9 @@ function doPropose(){
|
||||
return;
|
||||
}
|
||||
// 검증 통과 — 매수/매도 방향 최종 확인 팝업 (오타 방지). 확인 시에만 실제 매매로 진행.
|
||||
state.pendingOrder = {account: account, orderType: orderType, qty: qty, price: price, stopPrice: stopPrice};
|
||||
state.pendingOrder = {account: account, orderType: orderType, qty: qty, price: price,
|
||||
stopPrice: stopPrice, trailPct: trailPct,
|
||||
trailMinPrice: trail.minPrice};
|
||||
openOrderConfirm();
|
||||
}
|
||||
// 방향 확인 후 실제 매매 진행 — 전량매도 sell-choice 분기 포함.
|
||||
@@ -12137,8 +12341,8 @@ function doProposeConfirmed(){
|
||||
var account = po.account, orderType = po.orderType, qty = po.qty, price = po.price;
|
||||
var lc = state.lastCheck;
|
||||
// 전량매도(입력 수량 = 매도가능 전량)이고 같은 소유자 그룹의 다른 계좌에도 같은 종목 보유
|
||||
// → 선택 팝업. 스톱지정가는 단일 계좌 예약이라 2계좌 동시 매도 대상 아님.
|
||||
if(state.side === 'SELL' && orderType !== 'STOP_LIMIT'){
|
||||
// → 선택 팝업. 스톱지정가·트레일링은 단일 계좌 예약이라 2계좌 동시 매도 대상 아님.
|
||||
if(state.side === 'SELL' && orderType !== 'STOP_LIMIT' && orderType !== 'TRAILING_STOP'){
|
||||
var fullSell = lc && typeof lc.max_qty === 'number' && lc.max_qty > 0 && qty === lc.max_qty;
|
||||
var sib = siblingAccount(account);
|
||||
var sibInfo = (sib && state.accStatus && state.accStatus.byLabel) ? state.accStatus.byLabel[sib] : null;
|
||||
@@ -12148,7 +12352,7 @@ function doProposeConfirmed(){
|
||||
return;
|
||||
}
|
||||
}
|
||||
proposeSingle(account, orderType, qty, price, po.stopPrice);
|
||||
proposeSingle(account, orderType, qty, price, po.stopPrice, po.trailPct, po.trailMinPrice);
|
||||
}
|
||||
// ── 매수/매도 방향 확인 모달 ──
|
||||
// 매수·매도 버튼을 둘 다 띄우고 관리자님이 직접 맞는 방향을 누르게 함(위치 랜덤).
|
||||
@@ -12159,14 +12363,22 @@ function openOrderConfirm(){
|
||||
var po = state.pendingOrder; if(!po) return;
|
||||
var disp = {}; ACCOUNTS.forEach(function(a){ disp[a.label] = a.display; });
|
||||
var isStop = (po.orderType === 'STOP_LIMIT');
|
||||
var typeStr = (po.orderType === 'MARKET') ? '시장가' : (isStop ? '스톱지정가(예약)' : '지정가');
|
||||
var isTrail = (po.orderType === 'TRAILING_STOP');
|
||||
var typeStr = (po.orderType === 'MARKET') ? '시장가'
|
||||
: isTrail ? '트레일링 스톱(예약)'
|
||||
: isStop ? '스톱지정가(예약)' : '지정가';
|
||||
var curNow = (state.lastCheck && state.lastCheck.cur_price) || (state.lastBook && state.lastBook.price) || 0;
|
||||
// 트레일링은 단가를 서버가 계산 — 확인 팝업엔 예상 손절선을 보여준다.
|
||||
var trailPeak = isTrail ? curNow : 0; // 초기 고점 = 등록 시점 현재가
|
||||
var trailRes = isTrail ? trailCondPrice(trailPeak, po.trailPct, po.trailMinPrice) : {cond: 0, floorApplied: false};
|
||||
var trailCond = trailRes.cond;
|
||||
var priceStr = (po.orderType === 'MARKET') ? '시장가' : (fmt(po.price) + '원');
|
||||
var sum = $oc('[data-order-confirm-summary]');
|
||||
if(sum){
|
||||
// 매도 예상 수수료(수수료+증권거래세) — 표시용 근사. 요율은 sim/config.py와 동일.
|
||||
var feeLine = '';
|
||||
if(state.side === 'SELL'){
|
||||
var refPrice = (po.orderType === 'MARKET') ? ((state.lastCheck && state.lastCheck.cur_price) || 0) : po.price;
|
||||
var refPrice = (po.orderType === 'MARKET') ? curNow : (isTrail ? trailCond : po.price);
|
||||
var amount = refPrice * po.qty;
|
||||
var fee = Math.round(amount * (0.00015 + 0.0018)); // 수수료 0.015% + 거래세 0.18%
|
||||
if(amount > 0){
|
||||
@@ -12174,12 +12386,23 @@ function openOrderConfirm(){
|
||||
}
|
||||
}
|
||||
var stopLine = isStop ? ('· 조건단가: <b>' + fmt(po.stopPrice) + '원 도달 시</b> <span class="muted small">(예약)</span><br>') : '';
|
||||
var priceLine;
|
||||
if(isTrail){
|
||||
priceLine = '· 시작 고점: <b>' + fmt(trailPeak) + '원</b> <span class="muted small">(등록 시점 현재가)</span><br>' +
|
||||
'· 트레일 폭: <b>고점 대비 −' + po.trailPct + '%</b><br>' +
|
||||
(po.trailMinPrice > 0 ? ('· 최저 매도가: <b>' + fmt(po.trailMinPrice) + '원</b> <span class="muted small">(' +
|
||||
(trailRes.floorApplied ? '최저가 적용' : '트레일 적용') + ')</span><br>') : '') +
|
||||
'· 지금 손절선: <b>' + fmt(trailCond) + '원</b> <span class="muted small">(현재가 ' + fmt(curNow) + '원)</span><br>' +
|
||||
'· <span class="muted small">고점이 오르면 손절선도 따라 올라갑니다</span><br>';
|
||||
} else {
|
||||
priceLine = '· ' + (isStop ? '매도 단가' : '단가') + ': <b>' + priceStr + '</b><br>';
|
||||
}
|
||||
// 방향은 일부러 숨김 — 관리자님이 직접 고르게 해야 오타가 걸러짐.
|
||||
sum.innerHTML = '<b>' + (state.name || state.code) + '</b><br>' +
|
||||
'· 계좌: <b>' + (disp[po.account]||po.account) + '</b><br>' +
|
||||
'· 유형: <b>' + typeStr + '</b><br>' +
|
||||
stopLine +
|
||||
'· ' + (isStop ? '매도 단가' : '단가') + ': <b>' + priceStr + '</b><br>' +
|
||||
priceLine +
|
||||
'· 수량: <b>' + fmt(po.qty) + '주</b><br>' +
|
||||
feeLine + '<br>' +
|
||||
'<b>매수 / 매도</b> 중 하려던 것을 눌러주세요.';
|
||||
@@ -12207,7 +12430,7 @@ function siblingAccount(label){
|
||||
var sib = ACCOUNTS.find(function(a){ return a.owner === me.owner && a.label !== label; });
|
||||
return sib ? sib.label : null;
|
||||
}
|
||||
function proposeSingle(account, orderType, qty, price, stopPrice){
|
||||
function proposeSingle(account, orderType, qty, price, stopPrice, trailPct, trailMinPrice){
|
||||
var body = new URLSearchParams();
|
||||
body.set('account', account);
|
||||
body.set('side', state.side);
|
||||
@@ -12217,6 +12440,11 @@ function proposeSingle(account, orderType, qty, price, stopPrice){
|
||||
body.set('order_type', orderType);
|
||||
if(orderType === 'LIMIT' || orderType === 'STOP_LIMIT') body.set('price', String(price));
|
||||
if(orderType === 'STOP_LIMIT') body.set('stop_price', String(stopPrice || 0));
|
||||
// 트레일링은 폭(%)·고점 기준·최저 매도가만 보낸다 — 조건단가·지정가는 서버가 계산.
|
||||
if(orderType === 'TRAILING_STOP'){
|
||||
body.set('trail_pct', String(trailPct || 0));
|
||||
if(trailMinPrice > 0) body.set('min_sell_price', String(trailMinPrice));
|
||||
}
|
||||
proposeAndOpenPin('/api/order/propose', body);
|
||||
}
|
||||
function doProposeMulti(opts){
|
||||
@@ -12232,7 +12460,8 @@ function doProposeMulti(opts){
|
||||
}
|
||||
function proposeAndOpenPin(url, body){
|
||||
setMsg('주문 검증 중…', 'info');
|
||||
var btn = $('[data-order-submit]'); if(btn) btn.disabled = true;
|
||||
// busy 플래그로 잠근다 — 주기 호출(updateMarketPhaseDisplay)이 진행 중에 버튼을 되살리지 못하게.
|
||||
var btn = $('[data-order-submit]'); if(btn){ btn.dataset.busy = '1'; btn.disabled = true; }
|
||||
// 이전 활성 카드 자동 정리 후 새 propose — "이전 카드가 아직 활성" 거부 방지
|
||||
fetch('/api/order/cancel', {method:'POST', headers:{'Accept':'application/json'}, body:''})
|
||||
.catch(function(){})
|
||||
@@ -12245,7 +12474,8 @@ function proposeAndOpenPin(url, body){
|
||||
})
|
||||
.then(function(r){ return r.json(); })
|
||||
.then(function(d){
|
||||
if(btn) btn.disabled = false;
|
||||
if(btn) btn.dataset.busy = '0';
|
||||
refreshSubmitGate();
|
||||
if(!d.ok){ setMsg(d.message || d.error || 'PIN 발급 실패', 'error'); return; }
|
||||
setMsg('');
|
||||
// 별도 PIN 모달 띄움 (order-modal은 그대로 뒤에 남음)
|
||||
@@ -12255,7 +12485,8 @@ function proposeAndOpenPin(url, body){
|
||||
symbol_name: state.name
|
||||
});
|
||||
}).catch(function(e){
|
||||
if(btn) btn.disabled = false;
|
||||
if(btn) btn.dataset.busy = '0';
|
||||
refreshSubmitGate();
|
||||
setMsg('네트워크 오류: ' + e, 'error');
|
||||
});
|
||||
}
|
||||
@@ -12446,6 +12677,11 @@ var qtyInpEl = $('[data-order-qty]');
|
||||
if(qtyInpEl) qtyInpEl.addEventListener('input', function(){ recalcBudgetFromQty(); renderOrderInfo(); });
|
||||
var budgetInpEl = $('[data-order-budget]');
|
||||
if(budgetInpEl) budgetInpEl.addEventListener('input', recalcQtyFromBudget);
|
||||
// 트레일 폭은 select — change 로 잡는다(input 도 발생하지만 select 의 정식 이벤트는 change).
|
||||
var trailInpEl = $('[data-order-trail-input]');
|
||||
if(trailInpEl) trailInpEl.addEventListener('change', renderTrailPreview);
|
||||
var trailMinEl = $('[data-order-trail-min]');
|
||||
if(trailMinEl) trailMinEl.addEventListener('input', renderTrailPreview);
|
||||
document.addEventListener('visibilitychange', function(){
|
||||
if(document.hidden) stopPolling();
|
||||
else if(state.isOpen) startPolling();
|
||||
@@ -13283,6 +13519,9 @@ class Handler(BaseHTTPRequestHandler):
|
||||
try:
|
||||
import kiwoom_client as kc
|
||||
rows = kc.get_open_orders_all()
|
||||
# 트레일링 예약이면 그 상태를 실어 보낸다 (예약 파일 읽기, 키움 콜 0).
|
||||
for _r in rows:
|
||||
_r['trailing'] = _trailing_info_for(_r.get('ord_no', ''))
|
||||
self._send_json(200, {'rows': rows, 'count': len(rows)})
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
@@ -13415,6 +13654,9 @@ class Handler(BaseHTTPRequestHandler):
|
||||
except (ValueError, TypeError):
|
||||
book['upper_limit'] = 0
|
||||
book['lower_limit'] = 0
|
||||
# ⚠️ 52주 최고가(250hgst)는 여기 싣지 않는다 — 트레일링 '전고점 기준'
|
||||
# 미리보기용으로 추가했다가 옵션 제거와 함께 제거(2026-07-30).
|
||||
# 기업정보 모달의 '52주 최고'는 /api/stock_info(get_stock_basic) 경로다.
|
||||
book['nxt_enable'] = nxt_enable # 위에서 판정한 값 재사용
|
||||
# 종목이 속한 시장(KOSPI/KOSDAQ)의 20일 ADR 과매수/과매도 — 극단일 때만 실림.
|
||||
_mkt = (meta or {}).get('market') or ''
|
||||
@@ -14054,11 +14296,22 @@ class Handler(BaseHTTPRequestHandler):
|
||||
stop_price = int(stop_raw) if stop_raw else None
|
||||
except ValueError:
|
||||
stop_price = None
|
||||
trail_raw = (params.get('trail_pct') or [''])[0].strip()
|
||||
try:
|
||||
trail_pct = float(trail_raw) if trail_raw else None
|
||||
except ValueError:
|
||||
trail_pct = None
|
||||
min_sell_raw = (params.get('min_sell_price') or [''])[0].strip()
|
||||
try:
|
||||
min_sell_price = int(min_sell_raw) if min_sell_raw else None
|
||||
except ValueError:
|
||||
min_sell_price = None
|
||||
if not account or side not in ('BUY', 'SELL') or not symbol or qty <= 0:
|
||||
self._send_json(400, {'ok': False, 'error': 'account/side/symbol/qty required'})
|
||||
return
|
||||
if order_type not in ('LIMIT', 'MARKET', 'STOP_LIMIT'):
|
||||
self._send_json(400, {'ok': False, 'error': 'order_type must be LIMIT|MARKET|STOP_LIMIT'})
|
||||
if order_type not in ('LIMIT', 'MARKET', 'STOP_LIMIT', 'TRAILING_STOP'):
|
||||
self._send_json(400, {'ok': False,
|
||||
'error': 'order_type must be LIMIT|MARKET|STOP_LIMIT|TRAILING_STOP'})
|
||||
return
|
||||
if order_type == 'LIMIT' and (price is None or price <= 0):
|
||||
self._send_json(400, {'ok': False, 'error': 'LIMIT requires positive price'})
|
||||
@@ -14070,6 +14323,17 @@ class Handler(BaseHTTPRequestHandler):
|
||||
if price is None or price <= 0 or stop_price is None or stop_price <= 0:
|
||||
self._send_json(400, {'ok': False, 'error': '스톱지정가는 단가와 조건단가가 모두 필요'})
|
||||
return
|
||||
if order_type == 'TRAILING_STOP':
|
||||
# 조건단가·지정가는 handler 가 현재가 기준으로 계산 — 여기선 트레일 폭만 받는다.
|
||||
if side != 'SELL':
|
||||
self._send_json(400, {'ok': False, 'error': '트레일링 스톱은 매도만 지원'})
|
||||
return
|
||||
if trail_pct is None or trail_pct <= 0:
|
||||
self._send_json(400, {'ok': False, 'error': '트레일 폭(%)을 입력하세요'})
|
||||
return
|
||||
if min_sell_price is not None and min_sell_price <= 0:
|
||||
self._send_json(400, {'ok': False, 'error': '최저 매도가는 0보다 커야 합니다'})
|
||||
return
|
||||
try:
|
||||
if not symbol_name:
|
||||
import kiwoom_client as kc
|
||||
@@ -14086,6 +14350,8 @@ class Handler(BaseHTTPRequestHandler):
|
||||
qty=qty, order_type=order_type,
|
||||
price=(price if order_type in ('LIMIT', 'STOP_LIMIT') else None),
|
||||
stop_price=(stop_price if order_type == 'STOP_LIMIT' else None),
|
||||
trail_pct=(trail_pct if order_type == 'TRAILING_STOP' else None),
|
||||
min_sell_price=(min_sell_price if order_type == 'TRAILING_STOP' else None),
|
||||
)
|
||||
if res.get('ok'):
|
||||
# 매수/매도 미리보기 카드 메시지·PIN 메시지 모두 텔레그램 발송 X.
|
||||
|
||||
@@ -684,6 +684,11 @@ def get_open_orders(account_label: str, code: str = '',
|
||||
'order_price': _to_int(it.get('ord_pric')),
|
||||
'unfilled_qty': _to_int(it.get('oso_qty')),
|
||||
'order_type': (it.get('trde_tp') or '').strip(),
|
||||
# 스톱지정가(trde_tp=28) 주문의 조건단가. 일반 주문은 0.
|
||||
# 실측 확인: ka10075 응답에 stop_pric 로 실려 온다 (2026-07-30).
|
||||
'stop_price': _to_int(it.get('stop_pric')),
|
||||
# 현재가 — 조건단가까지 얼마 남았는지 계산용. 부호 포함 문자열('-4805')이라 abs.
|
||||
'cur_price': abs(_to_int(it.get('cur_prc'))),
|
||||
'exchange': (it.get('stex_tp_txt') or '').strip(),
|
||||
'exchange_code': ex_code,
|
||||
'routing_suffix': _EXCHANGE_CODE_TO_SUFFIX.get(ex_code, ''),
|
||||
|
||||
@@ -68,6 +68,8 @@ def format_card(request: dict, market_data: dict, card_id: str,
|
||||
type_marker = f' {cfg["warning_emoji"]} 공격적 지정가'
|
||||
elif request['order_type'] == 'STOP_LIMIT':
|
||||
type_marker = f' {cfg["warning_emoji"]} 스톱지정가(예약)'
|
||||
elif request['order_type'] == 'TRAILING_STOP':
|
||||
type_marker = f' {cfg["warning_emoji"]} 트레일링 스톱(예약)'
|
||||
amend_marker = ' ✏️ 수정됨' if amended else ''
|
||||
|
||||
lines = [f'{side_emoji} {_md_bold(side_word + " 미리보기")} [#{card_id}]{type_marker}{spouse_marker}{amend_marker}', '']
|
||||
@@ -91,6 +93,26 @@ def format_card(request: dict, market_data: dict, card_id: str,
|
||||
cur_part = f' (현재가 {_money(cur)})' if cur else ''
|
||||
lines.append(f'{marker} 조건: {_md_bold(_money(stop_p) + " 도달 시")}{cur_part}')
|
||||
lines.append(f'{marker} 매도가격: {_md_bold(_money(request["price"]))} (지정가)')
|
||||
elif request['order_type'] == 'TRAILING_STOP':
|
||||
# 승인 대상은 "트레일 폭" — 조건단가는 고점이 오르면 이 폭을 유지하며 따라 올라간다.
|
||||
stop_p = request.get('stop_price') or 0
|
||||
cur = market_data.get('current_price')
|
||||
cur_part = f' (현재가 {_money(cur)})' if cur else ''
|
||||
# 초기 고점은 항상 등록 시점 현재가 — 과거 고점 기준 옵션은 2026-07-30 제거됨.
|
||||
peak_v = request.get('trail_peak') or 0
|
||||
trail_pct_part = f'고점 대비 −{request.get("trail_pct")}%'
|
||||
lines.append(f'{marker} 시작 고점: {_md_bold(_money(peak_v))} (등록 시점)')
|
||||
lines.append(f'{marker} 트레일 폭: {_md_bold(trail_pct_part)}')
|
||||
min_sell = request.get('min_sell_price')
|
||||
if min_sell:
|
||||
# 최저 매도가가 손절선을 결정했는지(=트레일보다 높았는지) 명시 — 둘 중 어느 게
|
||||
# 지배했는지 안 보이면 관리자님이 값을 잘못 읽는다.
|
||||
raw_trail = int(peak_v * (1 - float(request['trail_pct']) / 100)) if peak_v else 0
|
||||
who = '최저가 적용' if stop_p >= raw_trail else '트레일 적용'
|
||||
lines.append(f'{marker} 최저 매도가: {_md_bold(_money(min_sell))} ({who})')
|
||||
lines.append(f'{marker} 현재 손절선: {_md_bold(_money(stop_p) + " 도달 시")}{cur_part}')
|
||||
lines.append(f'{marker} 매도가격: {_md_bold(_money(request["price"]))} (지정가)')
|
||||
lines.append(f'{marker} 고점이 오르면 손절선도 따라 올라갑니다 (내려가지 않음)')
|
||||
elif request['order_type'] == 'MARKET':
|
||||
lines.append(f'{marker} 가격: {_md_bold("시장가")}')
|
||||
else:
|
||||
@@ -300,6 +322,8 @@ def format_card_locked(active: Optional[dict] = None) -> str:
|
||||
price_str = '시장가'
|
||||
elif order_type == 'AGGRESSIVE_LIMIT':
|
||||
price_str = f'공격적 지정가 {_money(price)}' if price else '공격적 지정가'
|
||||
elif order_type == 'TRAILING_STOP':
|
||||
price_str = f'트레일링 −{active.get("trail_pct")}% (손절 {_money(active.get("stop_price"))})'
|
||||
else:
|
||||
price_str = _money(price) if price is not None else '지정가'
|
||||
|
||||
|
||||
@@ -503,7 +503,8 @@ def validate_request(request: dict, market_data: dict) -> Result:
|
||||
return r
|
||||
if request['side'] not in ('BUY', 'SELL'):
|
||||
return Result.REJECT('INVALID_SIDE', f'잘못된 방향: {request["side"]}')
|
||||
if request['order_type'] not in ('LIMIT', 'MARKET', 'AGGRESSIVE_LIMIT', 'STOP_LIMIT'):
|
||||
if request['order_type'] not in ('LIMIT', 'MARKET', 'AGGRESSIVE_LIMIT', 'STOP_LIMIT',
|
||||
'TRAILING_STOP'):
|
||||
return Result.REJECT('INVALID_ORDER_TYPE', f'잘못된 주문방식: {request["order_type"]}')
|
||||
r = validate_trading_hours(market_data['now'], market_data.get('is_holiday', False),
|
||||
market_data.get('nxt_eligible', False))
|
||||
@@ -525,9 +526,10 @@ def validate_request(request: dict, market_data: dict) -> Result:
|
||||
market_data['upper_limit'], market_data['lower_limit'])
|
||||
if not r.ok:
|
||||
return r
|
||||
if request['order_type'] == 'STOP_LIMIT':
|
||||
if request['order_type'] in ('STOP_LIMIT', 'TRAILING_STOP'):
|
||||
# 스톱지정가: 지정가(체결가)·조건단가(트리거) 둘 다 가격제한 이내 + 매도 전용.
|
||||
# 보호매도(하락 시 매도)라 트리거는 현재가보다 낮아야 함 — 아니면 즉시 발동돼 스톱 의미 없음.
|
||||
# 트레일링도 키움엔 스톱지정가로 나가므로 같은 검증을 받는다 (조건단가는 자동 계산값).
|
||||
if request['side'] != 'SELL':
|
||||
return Result.REJECT('STOP_SELL_ONLY', '스톱지정가는 현재 매도만 지원')
|
||||
stop_price = request.get('stop_price')
|
||||
|
||||
@@ -35,7 +35,7 @@ if str(_PARENT) not in sys.path:
|
||||
|
||||
import kiwoom_client as kc # noqa: E402
|
||||
|
||||
from . import card, datasource, fill_watcher, guards, kiwoom_order, ledger, pin, sidecar # noqa: E402
|
||||
from . import card, datasource, fill_watcher, guards, kiwoom_order, ledger, pin, sidecar, trailing # noqa: E402
|
||||
|
||||
LIMITS_FILE = Path(__file__).resolve().parent / 'limits.json'
|
||||
OPENCLAW_CONFIG = Path.home() / '.openclaw' / 'openclaw.json'
|
||||
@@ -165,11 +165,13 @@ def propose_trade(
|
||||
routing_force: Optional[str] = None,
|
||||
budget: Optional[int] = None,
|
||||
stop_price: Optional[int] = None,
|
||||
trail_pct: Optional[float] = None,
|
||||
min_sell_price: Optional[int] = None,
|
||||
) -> dict:
|
||||
sidecar.guard_or_raise()
|
||||
_sweep_expired_and_notify()
|
||||
|
||||
if order_type not in ('LIMIT', 'MARKET', 'AGGRESSIVE_LIMIT', 'STOP_LIMIT'):
|
||||
if order_type not in ('LIMIT', 'MARKET', 'AGGRESSIVE_LIMIT', 'STOP_LIMIT', 'TRAILING_STOP'):
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected('INVALID_ORDER_TYPE', f'잘못된 주문방식: {order_type}')}
|
||||
if side not in ('BUY', 'SELL'):
|
||||
@@ -183,6 +185,27 @@ def propose_trade(
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected('STOP_INPUT',
|
||||
'스톱지정가는 지정가와 조건단가(트리거)가 모두 필요')}
|
||||
if order_type == 'TRAILING_STOP':
|
||||
# 트레일링은 트레일 폭(%)만 입력받고 조건단가·지정가는 현재가 기준 자동 계산 (md 수집 후).
|
||||
if side != 'SELL':
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected('STOP_SELL_ONLY', '트레일링 스톱은 매도 전용')}
|
||||
if trail_pct is None or not (trailing.MIN_TRAIL_PCT <= trail_pct <= trailing.MAX_TRAIL_PCT):
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected(
|
||||
'TRAIL_PCT_RANGE',
|
||||
f'트레일 폭은 {trailing.MIN_TRAIL_PCT}~{trailing.MAX_TRAIL_PCT}% 범위')}
|
||||
if min_sell_price is not None and min_sell_price <= 0:
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected('TRAIL_MIN_PRICE',
|
||||
'최저 매도가는 0보다 커야 함 (제한 없으면 비우세요)')}
|
||||
dup = trailing.find_by_symbol(account, symbol)
|
||||
if dup:
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected(
|
||||
'TRAIL_DUPLICATE',
|
||||
f'{symbol_name or symbol} 트레일링 예약이 이미 있음 '
|
||||
f'({dup["id"]} · 손절 {dup["cond_uv"]:,}원) — 먼저 취소하세요')}
|
||||
if budget is not None and qty is not None:
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected('AMBIGUOUS_INPUT',
|
||||
@@ -195,6 +218,36 @@ def propose_trade(
|
||||
# collect_market_data 의 잔고/보유 조회는 qty 와 무관.
|
||||
md = datasource.collect_market_data(account, symbol, side, qty or 0)
|
||||
|
||||
trail_levels = None
|
||||
if order_type == 'TRAILING_STOP':
|
||||
# 현재가를 못 받으면 손절선을 정할 수 없어 진행 불가 (호가 fallback 금지 — 기준이 흔들림).
|
||||
cur = md.get('current_price') or 0
|
||||
if cur <= 0:
|
||||
return {'ok': False,
|
||||
'message': card.format_rejected('TRAIL_NO_PRICE',
|
||||
'현재가를 못 받아 트레일링 손절선을 정할 수 없음')}
|
||||
# 초기 고점은 등록 시점 현재가로 고정. 과거 고점(52주·매수후)을 쓰면 손절선이 현재가
|
||||
# 위로 올라가 등록 즉시 발동한다 — 손실 종목은 아예 등록 불가, 이익 종목은 현재가와
|
||||
# 결과가 같아 옵션 자체를 제거했다(2026-07-30 실측 근거로 관리자님 결정).
|
||||
peak = cur
|
||||
try:
|
||||
trail_levels = trailing.compute_levels(peak, trail_pct, min_sell_price)
|
||||
except ValueError as e:
|
||||
return {'ok': False, 'message': card.format_rejected('TRAIL_LEVEL', str(e))}
|
||||
# 손절선이 현재가 이상이면 등록하는 순간 발동한다. 고점=현재가로 고정된 뒤로는
|
||||
# 최저 매도가가 현재가보다 높은 경우만 남는다(트레일 폭은 항상 현재가 아래로 내려감).
|
||||
if trail_levels['cond_uv'] >= cur:
|
||||
if trail_levels['floor_applied']:
|
||||
msg = (f'최저 매도가 {min_sell_price:,}원이 현재가 {cur:,}원보다 높아 '
|
||||
f'등록 즉시 발동됩니다 — 현재가보다 낮게 설정하세요')
|
||||
else:
|
||||
msg = (f'손절선 {trail_levels["cond_uv"]:,}원이 현재가 {cur:,}원 이상이라 '
|
||||
f'등록 즉시 발동됩니다')
|
||||
return {'ok': False, 'message': card.format_rejected('TRAIL_IMMEDIATE', msg)}
|
||||
price = trail_levels['ord_uv']
|
||||
stop_price = trail_levels['cond_uv']
|
||||
trail_levels['peak'] = peak
|
||||
|
||||
budget_conversion = None
|
||||
if budget is not None:
|
||||
conv = guards.convert_budget_to_qty(side, budget, md.get('orderbook'),
|
||||
@@ -220,9 +273,13 @@ def propose_trade(
|
||||
}
|
||||
if order_type == 'LIMIT':
|
||||
request['price'] = price
|
||||
elif order_type == 'STOP_LIMIT':
|
||||
elif order_type in ('STOP_LIMIT', 'TRAILING_STOP'):
|
||||
request['price'] = price
|
||||
request['stop_price'] = stop_price
|
||||
if order_type == 'TRAILING_STOP':
|
||||
request['trail_pct'] = trail_pct
|
||||
request['min_sell_price'] = min_sell_price
|
||||
request['trail_peak'] = trail_levels['peak']
|
||||
|
||||
r = guards.validate_request(request, md)
|
||||
if not r.ok:
|
||||
@@ -268,6 +325,13 @@ def propose_trade(
|
||||
}
|
||||
if order_type == 'STOP_LIMIT':
|
||||
payload['stop_price'] = stop_price
|
||||
elif order_type == 'TRAILING_STOP':
|
||||
# 승인 시점에 확정되는 것: 계좌·종목·수량·트레일 폭·최저 매도가.
|
||||
# 이후 감시 루프는 조건단가만 올린다.
|
||||
payload['stop_price'] = stop_price
|
||||
payload['trail_pct'] = trail_pct
|
||||
payload['trail_peak'] = trail_levels['peak']
|
||||
payload['min_sell_price'] = min_sell_price
|
||||
|
||||
try:
|
||||
pending = _pin_store.issue(account, payload)
|
||||
@@ -453,7 +517,13 @@ def submit_with_pin(pin_input: str, dry_run: bool = True) -> dict:
|
||||
if p.get('multi'):
|
||||
return _submit_multi_legs(card_obj, dry_run)
|
||||
|
||||
submit_order_type = 'LIMIT' if p['order_type'] == 'AGGRESSIVE_LIMIT' else p['order_type']
|
||||
# 트레일링은 키움에 스톱지정가(trde_tp=28)로 나간다 — 트레일링은 우리 쪽 개념.
|
||||
if p['order_type'] == 'AGGRESSIVE_LIMIT':
|
||||
submit_order_type = 'LIMIT'
|
||||
elif p['order_type'] == 'TRAILING_STOP':
|
||||
submit_order_type = 'STOP_LIMIT'
|
||||
else:
|
||||
submit_order_type = p['order_type']
|
||||
res = kiwoom_order.submit(
|
||||
account_label=p['account'],
|
||||
side=p['side'],
|
||||
@@ -475,9 +545,32 @@ def submit_with_pin(pin_input: str, dry_run: bool = True) -> dict:
|
||||
msg = card.format_submitted(card_obj.card_id, p['side'],
|
||||
p.get('symbol_name', p['symbol']),
|
||||
p['qty'], p.get('price'), ord_no)
|
||||
# 키움에서 ord_no 받으면 백그라운드 체결 추적 시작 (kt00007 폴링).
|
||||
# 부분체결·완전체결·사후거절·30분 미체결 시 텔레그램 자동 알림.
|
||||
if ord_no:
|
||||
if p['order_type'] == 'TRAILING_STOP':
|
||||
# 트레일링은 조건 도달까지 며칠 미체결로 남는 게 정상 — fill_watcher 를 걸면
|
||||
# 30분 미체결 알림이 오탐으로 간다. 생존·체결 감시는 trailing_monitor 가 담당.
|
||||
if ord_no:
|
||||
try:
|
||||
res_trl = trailing.register(
|
||||
ord_no=ord_no, account=p['account'], symbol=p['symbol'],
|
||||
symbol_name=p.get('symbol_name', p['symbol']), qty=p['qty'],
|
||||
trail_pct=p['trail_pct'], peak=p['trail_peak'],
|
||||
cond_uv=p['stop_price'], ord_uv=p['price'],
|
||||
routing_suffix=p['routing_suffix'], card_id=card_obj.card_id,
|
||||
min_sell_price=p.get('min_sell_price'),
|
||||
)
|
||||
msg += (f'\n트레일링 감시 시작 ({res_trl["id"]}) — '
|
||||
f'고점 {p["trail_peak"]:,}원 기준 {p["trail_pct"]}% 아래 '
|
||||
f'{p["stop_price"]:,}원')
|
||||
except Exception as e:
|
||||
# 주문은 이미 접수됨 — 등록 실패를 숨기면 트레일링이 안 도는 걸 모른다.
|
||||
ledger.append('trailing_register_failed',
|
||||
{'card_id': card_obj.card_id, 'ord_no': ord_no,
|
||||
'error': repr(e), **p})
|
||||
msg += ('\n⚠️ 주문은 접수됐지만 트레일링 등록 실패 — '
|
||||
'손절선이 따라 올라가지 않습니다. 확인 필요.')
|
||||
elif ord_no:
|
||||
# 키움에서 ord_no 받으면 백그라운드 체결 추적 시작 (kt00007 폴링).
|
||||
# 부분체결·완전체결·사후거절·30분 미체결 시 텔레그램 자동 알림.
|
||||
fill_watcher.watch(
|
||||
ord_no=ord_no, account=p['account'], side=p['side'],
|
||||
symbol=p['symbol'], symbol_name=p.get('symbol_name', p['symbol']),
|
||||
|
||||
@@ -212,13 +212,18 @@ def cancel_order(account_label: str, orig_ord_no: str, symbol: str,
|
||||
def modify_order(account_label: str, orig_ord_no: str, symbol: str,
|
||||
modify_qty: int, modify_price: int,
|
||||
routing_suffix: str = '',
|
||||
dry_run: bool = True, card_id: Optional[str] = None) -> dict:
|
||||
dry_run: bool = True, card_id: Optional[str] = None,
|
||||
modify_cond_price: Optional[int] = None) -> dict:
|
||||
"""미체결 주문 정정 (kt10002).
|
||||
|
||||
modify_qty / modify_price 둘 다 필수 — 키움 명세상 mdfy_qty/mdfy_uv 모두 Required.
|
||||
수량만 바꿀 땐 기존 가격, 가격만 바꿀 땐 기존 수량을 그대로 전달.
|
||||
시장가 주문은 정정 불가 (mdfy_uv 가 가격이라 0 불가) — 호출 전에 차단.
|
||||
routing_suffix 는 원주문의 거래소와 동일해야 함.
|
||||
|
||||
modify_cond_price: 스톱지정가(trde_tp=28) 주문의 조건단가 정정용 (mdfy_cond_uv).
|
||||
트레일링 스톱이 고점 갱신 시 조건단가를 올리는 데 사용. 일반 주문은 None.
|
||||
⚠️ 정정 응답의 ord_no 는 신규 주문번호 — 다음 정정은 그 번호를 orig_ord_no 로 써야 함.
|
||||
"""
|
||||
sidecar.guard_or_raise()
|
||||
|
||||
@@ -230,6 +235,8 @@ def modify_order(account_label: str, orig_ord_no: str, symbol: str,
|
||||
raise ValueError(f'modify_qty must be > 0 (got {modify_qty})')
|
||||
if modify_price <= 0:
|
||||
raise ValueError(f'modify_price must be > 0 — 시장가 주문은 정정 불가, 취소 후 신규 발주')
|
||||
if modify_cond_price is not None and modify_cond_price <= 0:
|
||||
raise ValueError(f'modify_cond_price must be > 0 (got {modify_cond_price})')
|
||||
|
||||
exchange = _exchange_for(routing_suffix)
|
||||
body = {
|
||||
@@ -238,7 +245,7 @@ def modify_order(account_label: str, orig_ord_no: str, symbol: str,
|
||||
'stk_cd': symbol,
|
||||
'mdfy_qty': str(modify_qty),
|
||||
'mdfy_uv': str(modify_price),
|
||||
'mdfy_cond_uv': '',
|
||||
'mdfy_cond_uv': str(modify_cond_price) if modify_cond_price else '',
|
||||
}
|
||||
|
||||
payload = {
|
||||
@@ -248,6 +255,7 @@ def modify_order(account_label: str, orig_ord_no: str, symbol: str,
|
||||
'orig_ord_no': orig_ord_no,
|
||||
'modify_qty': modify_qty,
|
||||
'modify_price': modify_price,
|
||||
'modify_cond_price': modify_cond_price,
|
||||
'routing_suffix': routing_suffix,
|
||||
'exchange': exchange,
|
||||
'tr_id': TR_MODIFY,
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
"""트레일링 스톱 예약 상태 관리.
|
||||
|
||||
키움에 REST 트레일링 주문 TR 이 없어서, 스톱지정가(trde_tp=28) 주문을 실제로 걸어두고
|
||||
고점이 갱신될 때마다 조건단가를 kt10002 정정으로 올려 트레일링을 구현한다.
|
||||
|
||||
주문이 키움 서버에 있으므로 감시 루프가 죽어도 마지막 손절선은 살아있다.
|
||||
감시 루프가 하는 일은 "이미 승인된 주문의 조건단가 상향"뿐 — 신규 발주·수량 변경 없음.
|
||||
|
||||
⚠️ kt10002 정정 응답의 ord_no 는 신규 주문번호다. 정정할 때마다 ord_no 를 갱신하지 않으면
|
||||
두 번째 정정부터 orig_ord_no 가 틀려서 전부 실패한다. commit_modify 가 이걸 담당.
|
||||
|
||||
상태는 파일(state/trailing_stops.json)에 저장 — 웹·감시 루프가 각각 다른 프로세스라
|
||||
같은 예약 목록을 봐야 한다. 동시성은 fcntl flock 으로 직렬화 (pin.py 와 같은 패턴).
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import fcntl
|
||||
import json
|
||||
import os
|
||||
import secrets
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from .guards import tick_size
|
||||
|
||||
WORKSPACE_ROOT = Path(__file__).resolve().parent.parent.parent
|
||||
STATE_FILE = WORKSPACE_ROOT / 'state' / 'trailing_stops.json'
|
||||
|
||||
KST = timezone(timedelta(hours=9))
|
||||
|
||||
# 트레일 폭 허용 범위 (%). 너무 좁으면 정상 출렁임에 즉시 털리고, 너무 넓으면 스톱 의미가 없다.
|
||||
# ⚠️ 상한을 바꾸면 **세 곳**이 같이 움직여야 한다 — 여기(서버 검증) /
|
||||
# behive_web 트레일 폭 드롭다운 옵션 / behive_web `trailBlockReason` 의 범위 체크.
|
||||
# 하나만 고치면 드롭다운에서 고를 수 있는데 서버가 거부하거나 그 반대가 된다.
|
||||
MIN_TRAIL_PCT = 0.5
|
||||
MAX_TRAIL_PCT = 30.0
|
||||
|
||||
# 지정가(ord_uv) = 조건단가(cond_uv) 보다 이 틱수만큼 아래.
|
||||
# 조건단가와 같게 두면 발동 후 그 가격 아래로는 안 팔려 미체결로 남는다.
|
||||
# 반대로 너무 벌리면 급락 시 헐값 매도가 되니 2틱.
|
||||
ORD_UV_GAP_TICKS = 2
|
||||
|
||||
|
||||
def _now_iso() -> str:
|
||||
return datetime.now(KST).isoformat(timespec='seconds')
|
||||
|
||||
|
||||
def floor_to_tick(price: int) -> int:
|
||||
"""호가단위로 내림. 매도 조건단가·지정가는 내림이 안전(더 빨리 발동/체결)."""
|
||||
t = tick_size(price)
|
||||
return price - (price % t)
|
||||
|
||||
|
||||
def compute_levels(peak: int, trail_pct: float, min_sell_price: Optional[int] = None) -> dict:
|
||||
"""고점·트레일 폭(·최저 매도가) → 조건단가(트리거)·지정가(체결가).
|
||||
|
||||
cond_uv = max(peak × (1 − pct/100), min_sell_price) 를 호가단위 내림
|
||||
ord_uv = cond_uv − ORD_UV_GAP_TICKS 틱
|
||||
|
||||
min_sell_price(최저 매도가) = 손절선의 하한. 트레일 폭을 넓게 잡아도 이 가격 아래로는
|
||||
손절선이 내려가지 않는다 — 초기 구간 손실 제한용. 고점이 올라 트레일 손절선이 이 값을
|
||||
추월하면 그 뒤로는 트레일이 지배한다(최저가는 자연히 무의미해짐).
|
||||
"""
|
||||
if peak <= 0:
|
||||
raise ValueError(f'peak must be > 0 (got {peak})')
|
||||
if not (MIN_TRAIL_PCT <= trail_pct <= MAX_TRAIL_PCT):
|
||||
raise ValueError(f'trail_pct out of range: {trail_pct}')
|
||||
cond_uv = floor_to_tick(int(peak * (1 - trail_pct / 100)))
|
||||
floor_applied = False
|
||||
if min_sell_price:
|
||||
if min_sell_price <= 0:
|
||||
raise ValueError(f'min_sell_price must be > 0 (got {min_sell_price})')
|
||||
floor_uv = floor_to_tick(int(min_sell_price))
|
||||
if floor_uv > cond_uv:
|
||||
cond_uv = floor_uv
|
||||
floor_applied = True
|
||||
ord_uv = floor_to_tick(cond_uv - ORD_UV_GAP_TICKS * tick_size(cond_uv))
|
||||
if cond_uv <= 0 or ord_uv <= 0:
|
||||
raise ValueError(f'computed level <= 0 (peak={peak}, pct={trail_pct})')
|
||||
return {'cond_uv': cond_uv, 'ord_uv': ord_uv, 'floor_applied': floor_applied}
|
||||
|
||||
|
||||
def next_levels(res: dict, cur_price: int) -> Optional[dict]:
|
||||
"""현재가를 보고 올릴 값이 있으면 반환, 없으면 None (순수 함수 — 단위테스트 대상).
|
||||
|
||||
상향 전용: 고점이 갱신되고 그 결과 조건단가가 실제로 올라갈 때만 정정 대상.
|
||||
고점이 올라도 호가단위 내림 때문에 조건단가가 그대로면 정정하지 않는다(불필요한 API 콜 차단).
|
||||
최저 매도가가 아직 지배 중이면 트레일 손절선이 올라도 조건단가가 안 변해 None 이 된다.
|
||||
"""
|
||||
if cur_price <= 0:
|
||||
return None
|
||||
if cur_price <= res['peak']:
|
||||
return None
|
||||
lv = compute_levels(cur_price, res['trail_pct'], res.get('min_sell_price'))
|
||||
if lv['cond_uv'] <= res['cond_uv']:
|
||||
return None
|
||||
return {'peak': cur_price, 'cond_uv': lv['cond_uv'], 'ord_uv': lv['ord_uv']}
|
||||
|
||||
|
||||
class _FileLock:
|
||||
def __init__(self, path: Path):
|
||||
self.path = path
|
||||
self._fp = None
|
||||
|
||||
def __enter__(self):
|
||||
self.path.parent.mkdir(parents=True, exist_ok=True)
|
||||
self._fp = open(self.path, 'w')
|
||||
fcntl.flock(self._fp, fcntl.LOCK_EX)
|
||||
return self
|
||||
|
||||
def __exit__(self, *args):
|
||||
try:
|
||||
fcntl.flock(self._fp, fcntl.LOCK_UN)
|
||||
finally:
|
||||
self._fp.close()
|
||||
|
||||
|
||||
_LOCK_FILE = STATE_FILE.with_suffix(STATE_FILE.suffix + '.lock')
|
||||
|
||||
|
||||
def _read() -> list:
|
||||
if not STATE_FILE.exists():
|
||||
return []
|
||||
try:
|
||||
data = json.loads(STATE_FILE.read_text(encoding='utf-8'))
|
||||
except (OSError, ValueError):
|
||||
return []
|
||||
return data.get('reservations') or []
|
||||
|
||||
|
||||
def _write(reservations: list) -> None:
|
||||
STATE_FILE.parent.mkdir(parents=True, exist_ok=True)
|
||||
tmp = STATE_FILE.with_suffix(STATE_FILE.suffix + '.tmp')
|
||||
tmp.write_text(json.dumps({'reservations': reservations}, ensure_ascii=False, indent=2),
|
||||
encoding='utf-8')
|
||||
os.replace(tmp, STATE_FILE)
|
||||
|
||||
|
||||
def list_active() -> list:
|
||||
"""등록된 예약 전체 (락 없이 읽기 — 감시 루프의 스냅샷용)."""
|
||||
return _read()
|
||||
|
||||
|
||||
def get(res_id: str) -> Optional[dict]:
|
||||
for r in _read():
|
||||
if r['id'] == res_id:
|
||||
return r
|
||||
return None
|
||||
|
||||
|
||||
def find_by_symbol(account: str, symbol: str) -> Optional[dict]:
|
||||
"""같은 계좌·종목의 기존 예약. 중복 등록 차단용."""
|
||||
for r in _read():
|
||||
if r['account'] == account and r['symbol'] == symbol:
|
||||
return r
|
||||
return None
|
||||
|
||||
|
||||
def register(ord_no: str, account: str, symbol: str, symbol_name: str, qty: int,
|
||||
trail_pct: float, peak: int, cond_uv: int, ord_uv: int,
|
||||
routing_suffix: str = '', card_id: Optional[str] = None,
|
||||
min_sell_price: Optional[int] = None) -> dict:
|
||||
"""키움에 스톱주문이 접수된 직후 호출 — ord_no 를 받아 예약으로 등록.
|
||||
|
||||
초기 고점(peak)은 등록 시점 현재가다. 과거 고점(52주·매수후) 기준 옵션은 손절선이
|
||||
현재가 위로 올라가 즉시 발동하는 구조라 2026-07-30 제거됐다.
|
||||
"""
|
||||
if not ord_no:
|
||||
raise ValueError('ord_no required — 접수 확인된 주문만 등록')
|
||||
res = {
|
||||
'id': 'TRL-' + ''.join(secrets.choice('ABCDEFGHJKLMNPQRSTUVWXYZ23456789') for _ in range(4)),
|
||||
'ord_no': ord_no,
|
||||
'account': account,
|
||||
'symbol': symbol,
|
||||
'symbol_name': symbol_name,
|
||||
'qty': qty,
|
||||
'trail_pct': trail_pct,
|
||||
'min_sell_price': min_sell_price,
|
||||
'peak': peak,
|
||||
'cond_uv': cond_uv,
|
||||
'ord_uv': ord_uv,
|
||||
'routing_suffix': routing_suffix,
|
||||
'card_id': card_id,
|
||||
'created_at': _now_iso(),
|
||||
'updated_at': _now_iso(),
|
||||
'modify_count': 0,
|
||||
'entry_peak': peak,
|
||||
'entry_cond_uv': cond_uv,
|
||||
}
|
||||
with _FileLock(_LOCK_FILE):
|
||||
reservations = _read()
|
||||
reservations.append(res)
|
||||
_write(reservations)
|
||||
return res
|
||||
|
||||
|
||||
def commit_modify(res_id: str, new_ord_no: str, peak: int, cond_uv: int, ord_uv: int) -> Optional[dict]:
|
||||
"""정정 성공 후 상태 갱신. new_ord_no 는 kt10002 응답의 신규 주문번호.
|
||||
|
||||
⚠️ ord_no 갱신이 이 함수의 핵심 — 안 하면 다음 정정이 실패한다.
|
||||
"""
|
||||
if not new_ord_no:
|
||||
raise ValueError('new_ord_no required')
|
||||
with _FileLock(_LOCK_FILE):
|
||||
reservations = _read()
|
||||
for r in reservations:
|
||||
if r['id'] == res_id:
|
||||
r['ord_no'] = new_ord_no
|
||||
r['peak'] = peak
|
||||
r['cond_uv'] = cond_uv
|
||||
r['ord_uv'] = ord_uv
|
||||
r['modify_count'] = r.get('modify_count', 0) + 1
|
||||
r['updated_at'] = _now_iso()
|
||||
_write(reservations)
|
||||
return r
|
||||
return None
|
||||
|
||||
|
||||
def should_notify_failure(res_id: str, now_ts: float, cooldown_sec: int) -> bool:
|
||||
"""정정 실패 알림을 보낼지. 보낸다고 판단하면 그 시점을 기록한다 (락 안에서 원자적).
|
||||
|
||||
NXT 시간대에 KRX/SOR 원주문 정정이 거부되면 매 사이클 실패가 반복된다 —
|
||||
쿨다운 없이 알리면 20:00까지 매분 텔레그램이 쏟아진다.
|
||||
"""
|
||||
with _FileLock(_LOCK_FILE):
|
||||
reservations = _read()
|
||||
for r in reservations:
|
||||
if r['id'] != res_id:
|
||||
continue
|
||||
last = r.get('last_fail_notice_ts') or 0
|
||||
if now_ts - last < cooldown_sec:
|
||||
return False
|
||||
r['last_fail_notice_ts'] = now_ts
|
||||
_write(reservations)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def remove(res_id: str, reason: str = '') -> Optional[dict]:
|
||||
"""예약 종료 (체결·취소·소멸). 반환값은 제거된 예약 — 알림 메시지용."""
|
||||
with _FileLock(_LOCK_FILE):
|
||||
reservations = _read()
|
||||
for i, r in enumerate(reservations):
|
||||
if r['id'] == res_id:
|
||||
gone = reservations.pop(i)
|
||||
_write(reservations)
|
||||
gone['removed_reason'] = reason
|
||||
return gone
|
||||
return None
|
||||
@@ -0,0 +1,330 @@
|
||||
#!/usr/bin/env python3
|
||||
"""트레일링 스톱 감시 — 고점이 갱신되면 키움 스톱주문의 조건단가를 상향 정정한다.
|
||||
|
||||
LLM을 깨우지 않는다. 하는 일은 딱 두 가지:
|
||||
1. 예약이 아직 미체결로 살아있는지 확인 (ka10075) — 사라졌으면 체결·취소로 보고 정리+알림
|
||||
2. 현재가가 저장된 고점을 넘었으면 kt10002 정정으로 조건단가·지정가를 함께 올림
|
||||
|
||||
신규 발주·수량 변경·방향 변경은 하지 않는다. 사람이 PIN으로 승인한 주문의
|
||||
조건단가를 올리는 것뿐이고, 상향 전용이라 손절선이 내려가는 일은 없다.
|
||||
|
||||
⚠️ 정정하면 주문번호가 새로 발급된다 (kt10002 응답 ord_no). trailing.commit_modify 가
|
||||
상태파일의 ord_no 를 갱신하지 않으면 다음 정정부터 전부 실패한다.
|
||||
|
||||
⚠️ 고점은 '현재가' 로만 갱신한다. ka10095 가 당일 고가(high)도 주지만, 등록 시점 이전에
|
||||
찍힌 고가까지 반영되면 등록 직후 손절선이 현재가 위로 올라가 즉시 발동할 수 있다.
|
||||
(예: 오전 15,000 → 14,000 일 때 3% 등록 → 당일고가 기준이면 조건 14,550 > 현재가)
|
||||
감시 간격이 2분이라 현재가 샘플링으로 충분하다.
|
||||
|
||||
현재 launchd cadence 는 1분 1회 (`check`), 08:00~20:00 전 거래 세션.
|
||||
상시 daemon 을 띄우지 않는 이유는 매매 API 를 호출할 수 있는 프로세스를
|
||||
24시간 살려두지 않기 위함.
|
||||
|
||||
⚠️ NXT 시간대(프리 08:00~09:00 / 애프터 15:30~20:00) 감시는 2026-07-30 관리자님 요청으로 추가.
|
||||
**정규장에 등록된 주문(SOR `_AL` 또는 KRX `''`)의 정정이 NXT 단독 시간대에 받아들여지는지
|
||||
실증 안 됨.** 거부되면 고점 갱신마다 실패가 반복되므로 실패 알림에 30분 쿨다운을 걸었다
|
||||
(로그에는 매번 남으니 진단은 logs/stock-trailing-monitor.log 로).
|
||||
|
||||
⚠️ 1분보다 짧게 가려면 --repeat/--gap 을 쓴다. launchd 는 StartCalendarInterval 이
|
||||
분 단위가 최소라 30초 발화를 만들 수 없고, StartInterval=30 은 GUI 세션 idle 시
|
||||
발화가 보류돼(timer coalescing) 장중에 안 도는 문제가 있어 못 쓴다
|
||||
(sim-scan 이 같은 이유로 캘린더로 전환됨). 그래서 30초는 "1분 발화 + 한 프로세스가
|
||||
30초 간격 2회 검사" 로만 가능하다 — plist ProgramArguments 에 인자를 붙이면 된다.
|
||||
(2026-07-30 30초로 운영했다가 관리자님 지시로 1분 복귀. 옵션은 보존)
|
||||
|
||||
Usage:
|
||||
python3 trailing_monitor.py check # 1회 감시 (현재 launchd 설정)
|
||||
python3 trailing_monitor.py check --repeat 2 --gap 30 # 30초 간격 2회
|
||||
python3 trailing_monitor.py check --force # 장외에도 실행 (테스트용)
|
||||
python3 trailing_monitor.py check --dry-run # 정정 API 호출 없이 판단·body 만 출력
|
||||
python3 trailing_monitor.py list # 현재 예약 목록
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
import time
|
||||
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
|
||||
from orders import guards, kiwoom_order, trailing # noqa: E402
|
||||
from orders.handler import send_telegram # noqa: E402
|
||||
|
||||
# 정정 실패 알림 쿨다운 — NXT 시간대에 KRX/SOR 원주문 정정이 거부되면 매 사이클 반복된다.
|
||||
FAIL_NOTICE_COOLDOWN_SEC = 1800
|
||||
|
||||
|
||||
def _log(msg: str) -> None:
|
||||
print(f'[{datetime.now(KST).strftime("%Y-%m-%d %H:%M:%S")}] {msg}', flush=True)
|
||||
|
||||
|
||||
def session_now() -> tuple[bool, str]:
|
||||
"""(감시할 세션인가, 세션명). 주말·휴장일·거래시간 외는 False.
|
||||
|
||||
세션 판정은 orders/limits.json 을 단일 진실 소스로 쓰는 guards.session_at 재사용 —
|
||||
NXT 프리(08:00~09:00) / 정규(09:00~15:20) / 종가단일가(15:20~15:30) /
|
||||
NXT 애프터(15:30~20:00). 시간이 바뀌면 limits.json 만 고치면 된다.
|
||||
"""
|
||||
now = datetime.now(KST)
|
||||
if now.weekday() >= 5:
|
||||
return False, 'WEEKEND'
|
||||
if guards.is_today_holiday(now):
|
||||
return False, 'HOLIDAY'
|
||||
sess = guards.session_at(now)
|
||||
return sess != 'CLOSED', sess
|
||||
|
||||
|
||||
def _fill_check(account: str, symbol: str) -> tuple:
|
||||
"""예약이 사라진 사유 판정용 — 당일매매일지(ka10170)에서 그 종목 매도 기록을 찾는다.
|
||||
|
||||
⚠️ 미체결 조회에서 사라진 것만으로는 체결·취소·소멸을 구분할 수 없다(셋 다 목록에서 빠짐).
|
||||
당일매매일지에 매도 기록이 없으면 **체결 안 된 것이 확정**이다.
|
||||
있으면 트레일링 발동분인지 관리자님 수동 매도인지는 구분할 수 없어 '체결로 보임'까지만 말한다.
|
||||
|
||||
반환: (매도기록 dict 또는 None, 조회 성공 여부).
|
||||
조회 실패와 '기록 없음'을 반드시 구분해야 한다 — 실패를 '체결 안 됨'으로 단정하면
|
||||
실제로 팔렸는데 안 팔렸다고 알리게 된다.
|
||||
"""
|
||||
try:
|
||||
rows = kc.get_trade_journal(account)
|
||||
except Exception as e:
|
||||
_log(f'당일매매일지 조회 실패 ({account}/{symbol}): {e!r}')
|
||||
return None, False
|
||||
for row in rows:
|
||||
if row.get('code') == symbol and (row.get('sell_qty') or 0) > 0:
|
||||
return row, True
|
||||
return None, True
|
||||
|
||||
|
||||
def _notify_gone(res: dict, sold, journal_ok: bool) -> None:
|
||||
"""예약이 미체결 목록에서 사라짐 — 사유를 구분해 알린다.
|
||||
|
||||
체결 / 미체결 소멸(장 마감 취소 등)은 관리자님이 취해야 할 행동이 완전히 다르다.
|
||||
2026-07-30 실측: 스톱주문은 장 마감 후 체결 없이 소멸한다(15:30~18:21 사이).
|
||||
자동 재등록은 하지 않는다(관리자님 지시) — 다시 걸려면 자산웹에서 수동 등록.
|
||||
"""
|
||||
floor_part = ''
|
||||
if res.get('min_sell_price'):
|
||||
floor_part = f' · 최저 매도가 {res["min_sell_price"]:,}원'
|
||||
head_lines = [
|
||||
f'계좌: {res["account"]} · {res["qty"]:,}주',
|
||||
f'마지막 손절선: {res["cond_uv"]:,}원 '
|
||||
f'(고점 {res["peak"]:,}원 대비 −{res["trail_pct"]}%){floor_part}',
|
||||
f'손절선 상향 {res.get("modify_count", 0)}회',
|
||||
]
|
||||
if sold:
|
||||
title = f'✅ 트레일링 스톱 체결 — {res["symbol_name"]} ({res["symbol"]})'
|
||||
tail = [f'당일 매도 {sold["sell_qty"]:,}주 @ 평균 {sold.get("sell_avg", 0):,}원',
|
||||
f'실현손익 {sold.get("pl_amt", 0):,}원 (수수료·세금 차감)',
|
||||
'※ 같은 종목을 직접 매도하신 경우 그 기록일 수도 있습니다.']
|
||||
elif journal_ok:
|
||||
title = f'⚠️ 트레일링 스톱 소멸 — {res["symbol_name"]} ({res["symbol"]})'
|
||||
tail = ['체결되지 않았습니다 — 당일 매도 기록 없음, 보유수량 그대로입니다.',
|
||||
'장 마감으로 스톱주문이 취소된 것으로 보입니다.',
|
||||
'계속 쓰시려면 자산웹에서 다시 등록해주세요 (자동 재등록 안 함).']
|
||||
else:
|
||||
title = f'🎯 트레일링 스톱 종료 — {res["symbol_name"]} ({res["symbol"]})'
|
||||
tail = ['미체결 목록에서 사라졌습니다.',
|
||||
'당일매매일지 조회가 안 돼 체결 여부를 판정하지 못했습니다 — 확인해주세요.']
|
||||
send_telegram('\n'.join([title] + head_lines + tail), parse_mode=None)
|
||||
|
||||
|
||||
def _notify_modify_failed(res: dict, reason: str) -> None:
|
||||
send_telegram(
|
||||
f'⚠️ 트레일링 손절선 상향 실패 — {res["symbol_name"]} ({res["symbol"]})\n'
|
||||
f'계좌: {res["account"]} · 주문번호 {res["ord_no"]}\n'
|
||||
f'현재 손절선 {res["cond_uv"]:,}원은 그대로 유지됩니다.\n'
|
||||
f'사유: {reason}',
|
||||
parse_mode=None)
|
||||
|
||||
|
||||
def _worth_running(force: bool) -> bool:
|
||||
"""예약이 있고 거래 세션인가. 루프 제어와 단발 실행이 같은 기준을 쓰게 분리."""
|
||||
if not trailing.list_active():
|
||||
return False
|
||||
return force or session_now()[0]
|
||||
|
||||
|
||||
def check(force: bool = False, dry_run: bool = False) -> int:
|
||||
reservations = trailing.list_active()
|
||||
if not reservations:
|
||||
return 0
|
||||
ok_sess, sess = session_now()
|
||||
if not force and not ok_sess:
|
||||
_log(f'{sess} — skip ({len(reservations)}건 예약 대기)')
|
||||
return 0
|
||||
# NXT 단독 시간대엔 KRX 호가가 15:30 종가로 고정돼 현재가와 갭이 생긴다 → NXT 시세로 조회.
|
||||
quote_exchange = 'NX' if sess in ('NXT_PRE', 'NXT_AFTER') else 'AL'
|
||||
|
||||
# 계좌별 미체결 스냅샷 (계좌당 1콜). 스톱주문도 조건 도달 전까지 미체결로 잡힌다.
|
||||
open_by_acct: dict[str, list] = {}
|
||||
for acct in sorted({r['account'] for r in reservations}):
|
||||
try:
|
||||
open_by_acct[acct] = kc.get_open_orders(acct, side='sell')
|
||||
except Exception as e:
|
||||
# 한 계좌 조회 실패로 다른 계좌 감시를 멈추지 않는다. 생존 판정은 건너뛴다
|
||||
# (없다고 단정하면 살아있는 예약을 지워버린다).
|
||||
_log(f'미체결 조회 실패 [{acct}]: {e!r}')
|
||||
open_by_acct[acct] = None
|
||||
|
||||
alive = []
|
||||
for r in reservations:
|
||||
rows = open_by_acct.get(r['account'])
|
||||
if rows is None:
|
||||
continue # 조회 실패 계좌 — 이번 사이클 판단 보류
|
||||
row = next((x for x in rows if x['ord_no'] == r['ord_no']), None)
|
||||
if row is None:
|
||||
gone = trailing.remove(r['id'], 'not_in_open_orders')
|
||||
# 사유 판정 — 예약이 사라질 때만 ka10170 1콜 추가(평시엔 호출 안 함).
|
||||
sold, journal_ok = _fill_check(r['account'], r['symbol'])
|
||||
if sold:
|
||||
why = f'체결 (당일 매도 {sold["sell_qty"]:,}주 @ {sold.get("sell_avg", 0):,})'
|
||||
elif journal_ok:
|
||||
why = '미체결 소멸 (당일 매도 기록 없음 — 장 마감 취소 추정)'
|
||||
else:
|
||||
why = '사유 판정 불가 (당일매매일지 조회 실패)'
|
||||
_log(f'예약 종료 {r["id"]} {r["symbol_name"]} — {why}')
|
||||
if gone and not dry_run:
|
||||
try:
|
||||
_notify_gone(gone, sold, journal_ok)
|
||||
except Exception as e:
|
||||
_log(f'알림 실패: {e!r}')
|
||||
continue
|
||||
alive.append((r, row))
|
||||
|
||||
if not alive:
|
||||
return 0
|
||||
|
||||
try:
|
||||
quotes = kc.get_watchlist_quotes([r['symbol'] for r, _ in alive], exchange=quote_exchange)
|
||||
except Exception as e:
|
||||
_log(f'시세 조회 실패 ({quote_exchange}): {e!r}')
|
||||
return 1
|
||||
|
||||
raised = 0
|
||||
for r, row in alive:
|
||||
cur = (quotes.get(r['symbol']) or {}).get('price') or 0
|
||||
levels = trailing.next_levels(r, cur)
|
||||
if not levels:
|
||||
continue
|
||||
# 미체결 잔량으로 정정 — 부분체결됐으면 잔량만 남는다 (저장된 qty 는 최초 주문수량).
|
||||
qty = row.get('unfilled_qty') or r['qty']
|
||||
try:
|
||||
res = kiwoom_order.modify_order(
|
||||
account_label=r['account'],
|
||||
orig_ord_no=r['ord_no'],
|
||||
symbol=r['symbol'],
|
||||
modify_qty=qty,
|
||||
modify_price=levels['ord_uv'],
|
||||
routing_suffix=row.get('routing_suffix', ''),
|
||||
dry_run=dry_run,
|
||||
card_id=r.get('card_id'),
|
||||
modify_cond_price=levels['cond_uv'],
|
||||
)
|
||||
except Exception as e:
|
||||
# sidecar 비활성(매매 차단) 포함. 손절선은 기존 값이 그대로 살아있다.
|
||||
_log(f'정정 예외 {r["id"]} {r["symbol_name"]}: {e!r}')
|
||||
continue
|
||||
|
||||
if dry_run:
|
||||
_log(f'[dry-run] {r["id"]} {r["symbol_name"]} '
|
||||
f'고점 {r["peak"]:,}→{levels["peak"]:,} · '
|
||||
f'손절 {r["cond_uv"]:,}→{levels["cond_uv"]:,} / 지정 {levels["ord_uv"]:,} · '
|
||||
f'body={res.get("body")}')
|
||||
continue
|
||||
|
||||
if res.get('ok'):
|
||||
new_ord_no = res.get('new_ord_no') or ''
|
||||
updated = trailing.commit_modify(r['id'], new_ord_no, levels['peak'],
|
||||
levels['cond_uv'], levels['ord_uv'])
|
||||
raised += 1
|
||||
_log(f'손절선 상향 {r["id"]} {r["symbol_name"]} '
|
||||
f'{r["cond_uv"]:,}→{levels["cond_uv"]:,}원 (고점 {levels["peak"]:,}) '
|
||||
f'ord_no {r["ord_no"]}→{new_ord_no}')
|
||||
if not updated:
|
||||
# 상태 갱신 실패 = 다음 정정이 옛 ord_no 로 나가 실패한다. 반드시 알린다.
|
||||
_log(f'⚠️ 상태 갱신 실패 {r["id"]} — ord_no 불일치 위험')
|
||||
try:
|
||||
_notify_modify_failed(r, f'정정은 성공했지만 상태 갱신 실패 (새 주문번호 {new_ord_no})')
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
reason = res.get('reason', 'UNKNOWN')
|
||||
detail = (res.get('response') or {}).get('return_msg') or res.get('error') or ''
|
||||
_log(f'정정 실패 {r["id"]} {r["symbol_name"]}: {reason} {detail} (세션 {sess})')
|
||||
# NXT 시간대에 KRX/SOR 원주문 정정이 거부되면 매 사이클 반복된다 — 쿨다운으로 스팸 차단.
|
||||
# 로그에는 매번 남으니 진단은 로그로 한다.
|
||||
if trailing.should_notify_failure(r['id'], time.time(), FAIL_NOTICE_COOLDOWN_SEC):
|
||||
try:
|
||||
_notify_modify_failed(r, f'{reason} {detail}'.strip() + f' · 세션 {sess}')
|
||||
except Exception as e:
|
||||
_log(f'알림 실패: {e!r}')
|
||||
else:
|
||||
_log(f' 알림 생략 (쿨다운 {FAIL_NOTICE_COOLDOWN_SEC}초 내 이미 발송)')
|
||||
|
||||
if raised:
|
||||
_log(f'완료 — {raised}건 상향 / 예약 {len(alive)}건')
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_list() -> int:
|
||||
reservations = trailing.list_active()
|
||||
if not reservations:
|
||||
print('트레일링 예약 없음')
|
||||
return 0
|
||||
for r in reservations:
|
||||
floor_part = f' · 최저 {r["min_sell_price"]:,}' if r.get('min_sell_price') else ''
|
||||
entry_peak = r.get('entry_peak') or 0
|
||||
peak_part = f'고점 {r["peak"]:,}'
|
||||
if entry_peak and r['peak'] > entry_peak:
|
||||
peak_part += f' (등록 시 {entry_peak:,})'
|
||||
print(f'{r["id"]} · {r["symbol_name"]}({r["symbol"]}) · {r["account"]} · {r["qty"]:,}주')
|
||||
print(f' 트레일 −{r["trail_pct"]}%{floor_part} · {peak_part} · '
|
||||
f'손절 {r["cond_uv"]:,} / 지정 {r["ord_uv"]:,}')
|
||||
print(f' ord_no {r["ord_no"]} · 상향 {r.get("modify_count", 0)}회 · '
|
||||
f'등록 {r["created_at"]} · 갱신 {r["updated_at"]}')
|
||||
return 0
|
||||
|
||||
|
||||
def _int_opt(argv: list[str], name: str, default: int) -> int:
|
||||
if name not in argv:
|
||||
return default
|
||||
i = argv.index(name)
|
||||
if i + 1 >= len(argv):
|
||||
return default
|
||||
try:
|
||||
return int(argv[i + 1])
|
||||
except ValueError:
|
||||
return default
|
||||
|
||||
|
||||
def main(argv: list[str]) -> int:
|
||||
cmd = argv[1] if len(argv) > 1 else 'check'
|
||||
if cmd == 'list':
|
||||
return cmd_list()
|
||||
if cmd == 'check':
|
||||
force = '--force' in argv
|
||||
dry_run = '--dry-run' in argv
|
||||
repeat = max(1, _int_opt(argv, '--repeat', 1))
|
||||
gap = max(1, _int_opt(argv, '--gap', 30))
|
||||
rc = 0
|
||||
for i in range(repeat):
|
||||
rc = check(force=force, dry_run=dry_run) or rc
|
||||
if i >= repeat - 1:
|
||||
break
|
||||
# 예약 0건이거나 장 마감이면 남은 sweep 을 버린다 — 빈 sleep 으로 프로세스가
|
||||
# 살아있을 이유가 없다. sleep '전에' 확인해야 한다.
|
||||
if not _worth_running(force):
|
||||
break
|
||||
time.sleep(gap)
|
||||
return rc
|
||||
print(__doc__, file=sys.stderr)
|
||||
return 2
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@@ -94,3 +94,5 @@
|
||||
{"date": "2026-07-28", "market": "KOSPI", "market_label": "코스피", "rise": 36, "upper": 3, "fall": 878, "lower": 2, "steady": 3, "adr": 4.43, "personal": 43152, "foreign": -45009, "institutional": 1830, "captured_at": "2026-07-28T21:00:02.094342+09:00"}
|
||||
{"date": "2026-07-29", "market": "KOSDAQ", "market_label": "코스닥", "rise": 141, "upper": 4, "fall": 1554, "lower": 3, "steady": 35, "adr": 9.31, "personal": -4579, "foreign": 3082, "institutional": 1474, "captured_at": "2026-07-29T21:00:04.833116+09:00"}
|
||||
{"date": "2026-07-29", "market": "KOSPI", "market_label": "코스피", "rise": 91, "upper": 1, "fall": 805, "lower": 1, "steady": 21, "adr": 11.41, "personal": -19701, "foreign": -12502, "institutional": 31769, "captured_at": "2026-07-29T21:00:04.833116+09:00"}
|
||||
{"date": "2026-07-30", "market": "KOSDAQ", "market_label": "코스닥", "rise": 733, "upper": 5, "fall": 938, "lower": 0, "steady": 57, "adr": 78.68, "personal": -1108, "foreign": 2483, "institutional": -1435, "captured_at": "2026-07-30T21:00:02.501493+09:00"}
|
||||
{"date": "2026-07-30", "market": "KOSPI", "market_label": "코스피", "rise": 609, "upper": 4, "fall": 277, "lower": 0, "steady": 30, "adr": 221.3, "personal": -14309, "foreign": 13280, "institutional": 805, "captured_at": "2026-07-30T21:00:02.501493+09:00"}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 23499630.964999992,
|
||||
"cash": 9942727.734499987,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"010950": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 126900,
|
||||
"cur_price": 129000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5572914.42378125,
|
||||
"last_add_price": 130800
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 5980,
|
||||
"cur_price": 6130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5505297.51634375,
|
||||
"last_add_price": 6030
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5640114.3750312505,
|
||||
"last_add_price": 353000
|
||||
@@ -81,7 +81,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5411911.7463125,
|
||||
"last_add_price": 91400
|
||||
@@ -102,10 +102,52 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,643 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5547990.7530625,
|
||||
"last_add_price": 18950
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 589,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:05.277095+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3612125.2394573665,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 79,
|
||||
"entry_price": 125877.21518987342,
|
||||
"entry_at": "2026-07-30T09:16:09.704305+09:00",
|
||||
"stop": 114936,
|
||||
"target": 158700,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5035879.961218749,
|
||||
"last_add_price": 127700
|
||||
}
|
||||
},
|
||||
"realized_pnl": -21837800.879500017,
|
||||
@@ -128,5 +170,5 @@
|
||||
"252990": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-11T09:00:01.943184+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.415294+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.297781+09:00"
|
||||
}
|
||||
@@ -60,3 +60,6 @@
|
||||
{"ts": "2026-07-29T10:52:02.292514+09:00", "side": "SELL", "code": "252990", "name": "샘씨엔에스", "price": 10340, "qty": 623, "proceeds": 6429258, "entry_price": 12214, "pnl": -1181053, "pnl_pct": -15.34, "hold_from": "2026-07-27T09:12:01.035446+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "10,340 (현재 10,340)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 17,835"}, {"label": "추세(10일선)", "ok": false, "detail": "12,607"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +239 · 기 -181"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T12:04:01.628867+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 83, "proceeds": 9874307, "entry_price": 132580, "pnl": -1131443, "pnl_pct": -10.09, "hold_from": "2026-07-10T09:26:06.360780+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,709 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,192"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.383429+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 1291, "proceeds": 7189733, "entry_price": 6624, "pnl": -1362980, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:01.303420+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(10일선)", "ok": true, "detail": "5,204"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:05.277102+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 589, "cost": 3611112, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:09.704313+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 124100, "qty": 40, "cost": 4964745, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113673, "target": 155380, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "124,000 vs 117,010"}, {"label": "정배열(5>10)", "ok": true, "detail": "118,260 / 117,010"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,260 / 110,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+54.4%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +9 · 기 +389 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "518,220 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.31% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T10:10:06.142998+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 127700, "qty": 39, "cost": 4981047, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113673, "target": 155380, "signals": [{"label": "손절선", "ok": true, "detail": "113,673 (현재 127,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 155,380"}, {"label": "추세(10일선)", "ok": true, "detail": "117,370"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +35 · 기 +392"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,835"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 67379374.54150002,
|
||||
"cash": 45394687.33300002,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3936003.3225085386,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3844545.2388675264,
|
||||
"last_add_price": 90900
|
||||
@@ -50,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 42,
|
||||
"entry_price": 123400,
|
||||
"qty": 83,
|
||||
"entry_price": 124881.92771084337,
|
||||
"entry_at": "2026-07-29T10:24:01.432671+09:00",
|
||||
"stop": 113016,
|
||||
"target": 138976,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 140972,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5296043.025056097,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 288,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:06.858549+09:00",
|
||||
"stop": 17760,
|
||||
"target": 21085,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,653 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5514104.658843751,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 329,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:06.859145+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2020237.3208749255,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:06.912150+09:00",
|
||||
"stop": 116987,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3949543.523644232,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 867,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:06.863452+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7067,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5464347.78131507,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -12184860.553500012,
|
||||
"closed_trades": 22,
|
||||
"wins": 1,
|
||||
"peak_equity": 100172467.23000002,
|
||||
"max_drawdown": 0.12578399072042104,
|
||||
"max_drawdown": 0.13191928143946544,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-29",
|
||||
"086790": "2026-07-28",
|
||||
@@ -87,5 +171,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-11T09:00:01.944232+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.457829+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.357487+09:00"
|
||||
}
|
||||
@@ -57,3 +57,8 @@
|
||||
{"ts": "2026-07-29T10:24:01.432673+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 42, "cost": 5183577, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 138976, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "123,400 vs 116,950"}, {"label": "정배열(5>10)", "ok": true, "detail": "118,140 / 116,950"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T10:52:02.342370+09:00", "side": "SELL", "code": "252990", "name": "샘씨엔에스", "price": 10340, "qty": 355, "proceeds": 3663542, "entry_price": 12160, "pnl": -653915, "pnl_pct": -14.97, "hold_from": "2026-07-27T09:12:01.497849+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "10,340 (현재 10,340)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,890"}, {"label": "추세(10일선)", "ok": false, "detail": "12,607"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +239 · 기 -181"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.579933+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 848, "proceeds": 4959590, "entry_price": 6390, "pnl": -459943, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.375104+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:06.858551+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 288, "cost": 5498745, "path": "pullback", "reason": "눌림목 지정가 19,653 도달", "stop": 17760, "target": 21085, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "19,100 vs 18,958"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,606 / 18,958"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 19,653 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:06.859148+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 329, "cost": 2017073, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:24:06.912152+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 29, "cost": 3822773, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 154020, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:06.863454+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 867, "cost": 5462919, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7067, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
{"ts": "2026-07-30T09:50:06.667546+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 41, "cost": 5183177, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 138976, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,976"}, {"label": "추세(10일선)", "ok": true, "detail": "117,230"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 60476093.16450006,
|
||||
"cash": 33514429.521500062,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3962363.617644489,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3892203.318086031,
|
||||
"last_add_price": 90900
|
||||
@@ -55,22 +55,127 @@
|
||||
"entry_at": "2026-07-29T09:02:02.218181+09:00",
|
||||
"stop": 111200,
|
||||
"target": 131165,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5549046.703468754,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 83,
|
||||
"entry_price": 123226.50602409638,
|
||||
"entry_at": "2026-07-30T09:04:06.862578+09:00",
|
||||
"stop": 111000,
|
||||
"target": 141566,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5150762.675171776,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 286,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:06.862754+09:00",
|
||||
"stop": 17760,
|
||||
"target": 21085,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,019 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5467064.310906254,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 326,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:06.863063+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2002983.4606684945,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:06.914859+09:00",
|
||||
"stop": 116987,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3940896.531574532,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 865,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:06.866300+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7067,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5453229.880263703,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -13097543.475500017,
|
||||
"closed_trades": 27,
|
||||
"wins": 2,
|
||||
"peak_equity": 101529111.72700004,
|
||||
"max_drawdown": 0.1463739641735473,
|
||||
"max_drawdown": 0.14680816124520618,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-29",
|
||||
"086790": "2026-07-29",
|
||||
@@ -88,5 +193,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-11T09:00:01.944251+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.459421+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.359449+09:00"
|
||||
}
|
||||
@@ -74,3 +74,9 @@
|
||||
{"ts": "2026-07-29T12:04:01.681905+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 85, "proceeds": 10112243, "entry_price": 124176, "pnl": -444341, "pnl_pct": -4.01, "hold_from": "2026-07-02T10:18:03.827419+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,006 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 143,933"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:06:06.472442+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5690, "qty": 770, "proceeds": 4372756, "entry_price": 6936, "pnl": -968965, "pnl_pct": -17.97, "hold_from": "2026-07-28T09:00:15.725812+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,741 (현재 5,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(10일선)", "ok": true, "detail": "5,214"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.581955+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 850, "proceeds": 4971287, "entry_price": 6390, "pnl": -461028, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.377043+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:06.862580+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 42, "cost": 5095364, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 136750, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "121,200 vs 119,680"}, {"label": "정배열(5>10)", "ok": true, "detail": "120,840 / 119,680"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:06.862756+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 286, "cost": 5460559, "path": "pullback", "reason": "눌림목 지정가 20,019 도달", "stop": 17760, "target": 21085, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "19,100 vs 18,958"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,606 / 18,958"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 20,019 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:06.863066+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 326, "cost": 1998680, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.313716+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 41, "cost": 5133970, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 136750, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,750"}, {"label": "추세(10일선)", "ok": true, "detail": "120,100"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:06.914861+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 29, "cost": 3822773, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 154020, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:06.866302+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 865, "cost": 5450317, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7067, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 26011542.238000043,
|
||||
"cash": 28681733.183500044,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4980582.661409654,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 110,
|
||||
"entry_price": 101114.54545454546,
|
||||
"entry_at": "2026-07-22T09:04:01.813457+09:00",
|
||||
"stop": 92100,
|
||||
"target": 119144,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5575262.741000003,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4849662.714601921,
|
||||
"last_add_price": 90900
|
||||
@@ -81,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5535494.525500003,
|
||||
"last_add_price": 18950
|
||||
@@ -102,7 +81,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 2,135 도달",
|
||||
"cur_price": 1805,
|
||||
"cur_price": 1846,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2595536.5029300014,
|
||||
"last_add_price": 1951
|
||||
@@ -118,22 +97,64 @@
|
||||
"entry_at": "2026-07-29T09:02:02.221426+09:00",
|
||||
"stop": 111408,
|
||||
"target": 134739,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5213821.568625003,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 411,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:06.866644+09:00",
|
||||
"stop": 5127,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2521548.49371356,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 37,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:06.917508+09:00",
|
||||
"stop": 120690,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4970364.152582046,
|
||||
"last_add_price": 131800
|
||||
}
|
||||
},
|
||||
"realized_pnl": -17214272.911500026,
|
||||
"closed_trades": 38,
|
||||
"realized_pnl": -18271210.95150003,
|
||||
"closed_trades": 39,
|
||||
"wins": 3,
|
||||
"peak_equity": 101695667.93550003,
|
||||
"max_drawdown": 0.19995099211499182,
|
||||
"max_drawdown": 0.20390639220887885,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"035420": "2026-06-23",
|
||||
@@ -151,8 +172,9 @@
|
||||
"003680": "2026-07-29",
|
||||
"252990": "2026-07-28",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-11T09:00:01.944270+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.461183+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.945088+09:00"
|
||||
}
|
||||
@@ -107,3 +107,6 @@
|
||||
{"ts": "2026-07-29T09:28:01.378937+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6390, "qty": 819, "cost": 5234195, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5998, "target": 7174, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,380 vs 5,358"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,742 / 5,358"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,742 / 5,622"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +73 · 기 -3 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.62% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "134,413 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.62% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
|
||||
{"ts": "2026-07-29T10:42:05.407176+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 819, "proceeds": 4888070, "entry_price": 6390, "pnl": -346125, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.378936+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(20일선)", "ok": true, "detail": "5,338"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T11:18:04.419939+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 6000, "qty": 968, "proceeds": 5796674, "entry_price": 6936, "pnl": -918733, "pnl_pct": -13.5, "hold_from": "2026-07-28T09:00:15.829228+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,040 (현재 6,020)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(20일선)", "ok": true, "detail": "4,803"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:06.866646+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 411, "cost": 2519808, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 5127, "target": 8135, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:24:06.917510+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 37, "cost": 4877331, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 120690, "target": 154020, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "132,000 vs 108,925"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,580 / 108,925"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T11:58:07.822065+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 110, "proceeds": 10067330, "entry_price": 101115, "pnl": -1056938, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.813457+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 119,144"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 42397561.0635,
|
||||
"cash": 19178388.71,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5156172.079657566,
|
||||
"last_add_price": 356000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5078672.507755172,
|
||||
"last_add_price": 90900
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,012 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5806232.125812501,
|
||||
"last_add_price": 18950
|
||||
@@ -76,15 +76,99 @@
|
||||
"entry_at": "2026-07-29T09:02:02.224637+09:00",
|
||||
"stop": 111408,
|
||||
"target": 134740,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5368293.320125001,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 83,
|
||||
"entry_price": 123226.50602409638,
|
||||
"entry_at": "2026-07-30T09:04:07.455785+09:00",
|
||||
"stop": 113273,
|
||||
"target": 143133,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5180051.180047499,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 423,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.457322+09:00",
|
||||
"stop": 5127,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2599049.62031184,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.511679+09:00",
|
||||
"stop": 120690,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5127095.802498201,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 855,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.458674+09:00",
|
||||
"stop": 5917,
|
||||
"target": 7067,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5392894.7928125,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -15557333.116500024,
|
||||
@@ -109,5 +193,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-11T09:00:01.944290+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.462794+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.956556+09:00"
|
||||
}
|
||||
@@ -85,3 +85,8 @@
|
||||
{"ts": "2026-07-29T10:42:05.409278+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 843, "proceeds": 5031310, "entry_price": 6390, "pnl": -356268, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.380943+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,551"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T11:18:04.421952+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 6000, "qty": 997, "proceeds": 5970335, "entry_price": 6936, "pnl": -946202, "pnl_pct": -13.5, "hold_from": "2026-07-28T09:00:15.935337+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,040 (현재 6,020)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(10일선)", "ok": true, "detail": "5,246"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T12:04:01.685681+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 89, "proceeds": 10588113, "entry_price": 124178, "pnl": -465345, "pnl_pct": -4.01, "hold_from": "2026-07-02T10:18:03.834926+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "114,299 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 143,934"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:07.455793+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 42, "cost": 5095364, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111347, "target": 141206, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "121,200 vs 119,680"}, {"label": "정배열(5>10)", "ok": true, "detail": "120,840 / 119,680"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.457329+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 423, "cost": 2593379, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 5127, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.909415+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 41, "cost": 5133970, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111347, "target": 141206, "signals": [{"label": "손절선", "ok": true, "detail": "111,347 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,206"}, {"label": "추세(10일선)", "ok": true, "detail": "120,100"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.511684+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 38, "cost": 5009151, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 120690, "target": 154020, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.458683+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 855, "cost": 5387308, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5917, "target": 7067, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 38672694.80499996,
|
||||
"cash": 22078706.885999955,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5184250.1290937485,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 102,
|
||||
"entry_price": 101111.76470588235,
|
||||
"entry_at": "2026-07-22T09:04:01.817053+09:00",
|
||||
"stop": 92100,
|
||||
"target": 128147,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5241897.148781248,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5024795.592812498,
|
||||
"last_add_price": 18950
|
||||
@@ -76,22 +55,127 @@
|
||||
"entry_at": "2026-07-29T09:02:02.227528+09:00",
|
||||
"stop": 111200,
|
||||
"target": 142435,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4675255.455593748,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 73,
|
||||
"entry_price": 123223.28767123287,
|
||||
"entry_at": "2026-07-30T09:04:07.465577+09:00",
|
||||
"stop": 111000,
|
||||
"target": 159893,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4550435.925312498,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 545,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.466771+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3342107.250162302,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 35,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.918383+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4604300.898906248,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 731,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.149796+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4614360.447343747,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 50,
|
||||
"entry_price": 87900,
|
||||
"entry_at": "2026-07-30T12:04:07.816765+09:00",
|
||||
"stop": 76706,
|
||||
"target": 121481,
|
||||
"peak": 89200,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4476061.633499997,
|
||||
"last_add_price": 87900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -27627751.02000002,
|
||||
"closed_trades": 31,
|
||||
"realized_pnl": -28607537.16000002,
|
||||
"closed_trades": 32,
|
||||
"wins": 1,
|
||||
"peak_equity": 103066363.367,
|
||||
"max_drawdown": 0.2973110459024045,
|
||||
"max_drawdown": 0.3103753294088034,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"086790": "2026-07-29",
|
||||
@@ -111,8 +195,9 @@
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"003680": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582771+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.464455+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.963749+09:00"
|
||||
}
|
||||
@@ -86,3 +86,10 @@
|
||||
{"ts": "2026-07-29T13:06:06.514247+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5690, "qty": 1323, "proceeds": 7513191, "entry_price": 6936, "pnl": -1664846, "pnl_pct": -17.97, "hold_from": "2026-07-28T09:00:16.050865+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,741 (현재 5,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 10,522"}, {"label": "추세(20일선)", "ok": true, "detail": "4,787"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:30:01.445481+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 118000, "qty": 106, "proceeds": 12483609, "entry_price": 120162, "pnl": -255501, "pnl_pct": -1.8, "hold_from": "2026-07-01T09:46:03.059028+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 118,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 147,649"}, {"label": "추세(20일선)", "ok": false, "detail": "118,145"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.587859+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 736, "proceeds": 4304550, "entry_price": 6390, "pnl": -399196, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.382782+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(20일선)", "ok": true, "detail": "5,332"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.465582+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 37, "cost": 4488773, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 152200, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.466775+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 545, "cost": 3341351, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.917652+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 36, "cost": 4507876, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 152200, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 152,200"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:16:11.918388+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 35, "cost": 4582187, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "130,900 vs 108,870"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,360 / 108,870"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.149807+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 731, "cost": 4613302, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,300 vs 5,354"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,726 / 5,354"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T11:58:08.423544+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 102, "proceeds": 9335161, "entry_price": 101112, "pnl": -979786, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.817053+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 128,147"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T12:04:07.816772+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 87900, "qty": 50, "cost": 4395659, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 76706, "target": 121481, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "87,900 vs 75,055"}, {"label": "정배열(5>20)", "ok": true, "detail": "82,940 / 75,055"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "82,940 / 75,053"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+61.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +280 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+17%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.79% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "728,608 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.79% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 38090320.14199995,
|
||||
"cash": 19291226.259999953,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5435113.820843748,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 108,
|
||||
"entry_price": 101113.88888888889,
|
||||
"entry_at": "2026-07-22T09:04:01.818826+09:00",
|
||||
"stop": 92100,
|
||||
"target": 114635,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5477452.925531248,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5357608.233093748,
|
||||
"last_add_price": 18950
|
||||
@@ -76,22 +55,127 @@
|
||||
"entry_at": "2026-07-29T09:02:02.230500+09:00",
|
||||
"stop": 111200,
|
||||
"target": 131161,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5057738.410843747,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 81,
|
||||
"entry_price": 123225.92592592593,
|
||||
"entry_at": "2026-07-30T09:04:07.472633+09:00",
|
||||
"stop": 111000,
|
||||
"target": 141565,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5030428.7588749975,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 603,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.473311+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3698158.582805608,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.924631+09:00",
|
||||
"stop": 116144,
|
||||
"target": 153035,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5098537.405531247,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 809,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.159696+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7077,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5110875.1474062465,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 56,
|
||||
"entry_price": 87900,
|
||||
"entry_at": "2026-07-30T12:04:07.823150+09:00",
|
||||
"stop": 76706,
|
||||
"target": 104690,
|
||||
"peak": 89200,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4964432.788749997,
|
||||
"last_add_price": 87900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19891378.058000024,
|
||||
"closed_trades": 35,
|
||||
"realized_pnl": -20929028.123000026,
|
||||
"closed_trades": 36,
|
||||
"wins": 5,
|
||||
"peak_equity": 103066363.367,
|
||||
"max_drawdown": 0.2238488817622051,
|
||||
"max_drawdown": 0.23564969514366776,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"086790": "2026-07-29",
|
||||
@@ -111,8 +195,9 @@
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"003680": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582787+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.466086+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.969242+09:00"
|
||||
}
|
||||
@@ -93,3 +93,10 @@
|
||||
{"ts": "2026-07-29T09:28:01.384508+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6390, "qty": 794, "cost": 5074421, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5867, "target": 7174, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,380 vs 5,358"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,742 / 5,358"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,742 / 5,622"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +73 · 기 -3 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.62% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "134,413 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.62% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
|
||||
{"ts": "2026-07-29T11:54:01.475203+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 120100, "qty": 40, "proceeds": 4794632, "entry_price": 133100, "pnl": -530166, "pnl_pct": -9.77, "hold_from": "2026-07-21T10:08:04.172929+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,243 (현재 120,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 152,385"}, {"label": "추세(20일선)", "ok": true, "detail": "118,250"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -13 · 기 -68"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,414"}]}
|
||||
{"ts": "2026-07-29T13:34:03.589780+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 794, "proceeds": 4643767, "entry_price": 6390, "pnl": -430654, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.384507+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(20일선)", "ok": true, "detail": "5,332"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.472638+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 41, "cost": 4974046, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 136750, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.473315+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 603, "cost": 3696944, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.924015+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 40, "cost": 5008751, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 136750, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,750"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:16:11.924634+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 38, "cost": 4974946, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 153035, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "130,900 vs 108,870"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,360 / 108,870"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.159701+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 809, "cost": 5105556, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7077, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,300 vs 5,354"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,726 / 5,354"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T11:58:08.429556+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 108, "proceeds": 9884288, "entry_price": 101114, "pnl": -1037650, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.818826+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 114,635"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T12:04:07.823153+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 87900, "qty": 56, "cost": 4923138, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 76706, "target": 104690, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "87,900 vs 75,055"}, {"label": "정배열(5>20)", "ok": true, "detail": "82,940 / 75,055"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "82,940 / 75,053"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+61.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +280 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+17%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.79% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "728,608 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.79% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 34460901.99899996,
|
||||
"cash": 17228543.256499957,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5274205.950343749,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 104,
|
||||
"entry_price": 101112.5,
|
||||
"entry_at": "2026-07-22T09:04:01.820564+09:00",
|
||||
"stop": 92100,
|
||||
"target": 119138,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5328934.220031248,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5136044.188124998,
|
||||
"last_add_price": 18950
|
||||
@@ -76,22 +55,127 @@
|
||||
"entry_at": "2026-07-29T09:02:02.233197+09:00",
|
||||
"stop": 111200,
|
||||
"target": 135151,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4798325.220406247,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 75,
|
||||
"entry_price": 123224.0,
|
||||
"entry_at": "2026-07-30T09:04:07.478234+09:00",
|
||||
"stop": 111000,
|
||||
"target": 147672,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4697478.874937497,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 563,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.479053+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8804,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3453556.2895330573,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.930358+09:00",
|
||||
"stop": 116144,
|
||||
"target": 160413,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4762406.753156248,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 756,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.166021+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7332,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4773756.949406248,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 52,
|
||||
"entry_price": 87900,
|
||||
"entry_at": "2026-07-30T12:04:07.828076+09:00",
|
||||
"stop": 76706,
|
||||
"target": 110287,
|
||||
"peak": 89200,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4633215.554781247,
|
||||
"last_add_price": 87900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -25215050.30100003,
|
||||
"closed_trades": 32,
|
||||
"realized_pnl": -26214124.41600003,
|
||||
"closed_trades": 33,
|
||||
"wins": 2,
|
||||
"peak_equity": 103066363.367,
|
||||
"max_drawdown": 0.2753482754499373,
|
||||
"max_drawdown": 0.286701685643846,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"086790": "2026-07-29",
|
||||
@@ -111,8 +195,9 @@
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"003680": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582803+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.467725+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.974282+09:00"
|
||||
}
|
||||
@@ -87,3 +87,10 @@
|
||||
{"ts": "2026-07-29T11:54:01.477218+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 120100, "qty": 39, "proceeds": 4674766, "entry_price": 133100, "pnl": -516912, "pnl_pct": -9.77, "hold_from": "2026-07-21T10:08:04.174962+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,243 (현재 120,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 158,813"}, {"label": "추세(20일선)", "ok": true, "detail": "118,250"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -13 · 기 -68"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 136,414"}]}
|
||||
{"ts": "2026-07-29T13:06:06.518446+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5690, "qty": 1351, "proceeds": 7672200, "entry_price": 6936, "pnl": -1700186, "pnl_pct": -17.97, "hold_from": "2026-07-28T09:00:16.264480+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,741 (현재 5,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,327"}, {"label": "추세(20일선)", "ok": true, "detail": "4,787"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.591638+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 754, "proceeds": 4409824, "entry_price": 6390, "pnl": -408959, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.386229+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,435"}, {"label": "추세(20일선)", "ok": true, "detail": "5,332"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.478237+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 38, "cost": 4610091, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 141900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.479057+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 563, "cost": 3451708, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8804, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.929896+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 37, "cost": 4633095, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 141900, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,900"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:16:11.930362+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 36, "cost": 4713107, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 160413, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "130,900 vs 108,870"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,360 / 108,870"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.166025+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 756, "cost": 4771076, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7332, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,300 vs 5,354"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,726 / 5,354"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T11:58:08.434750+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 104, "proceeds": 9518203, "entry_price": 101112, "pnl": -999074, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.820564+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 119,138"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T12:04:07.828079+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 87900, "qty": 52, "cost": 4571486, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 76706, "target": 110287, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "87,900 vs 75,055"}, {"label": "정배열(5>20)", "ok": true, "detail": "82,940 / 75,055"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "82,940 / 75,053"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+61.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +280 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+17%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.79% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "728,608 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.79% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 39467772.84450003,
|
||||
"cash": 23032163.43200002,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4947379.149752503,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 108,
|
||||
"entry_price": 101113.88888888889,
|
||||
"entry_at": "2026-07-22T09:04:01.822292+09:00",
|
||||
"stop": 92100,
|
||||
"target": 119142,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5540629.633968752,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5342833.247656252,
|
||||
"last_add_price": 18950
|
||||
@@ -76,22 +55,127 @@
|
||||
"entry_at": "2026-07-29T09:02:02.235827+09:00",
|
||||
"stop": 111408,
|
||||
"target": 134739,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5120146.001656252,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 79,
|
||||
"entry_price": 123225.3164556962,
|
||||
"entry_at": "2026-07-30T09:04:07.484187+09:00",
|
||||
"stop": 113272,
|
||||
"target": 143132,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4929642.288776176,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 404,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.484676+09:00",
|
||||
"stop": 5127,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2477780.379475499,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 37,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.935111+09:00",
|
||||
"stop": 119833,
|
||||
"target": 153035,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4848771.68070699,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 813,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.171043+09:00",
|
||||
"stop": 5927,
|
||||
"target": 7077,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5134489.040718751,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 47,
|
||||
"entry_price": 87900,
|
||||
"entry_at": "2026-07-30T12:04:07.833673+09:00",
|
||||
"stop": 79505,
|
||||
"target": 104690,
|
||||
"peak": 89200,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4187644.1160591436,
|
||||
"last_add_price": 87900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19369843.72400003,
|
||||
"closed_trades": 44,
|
||||
"realized_pnl": -20407493.78900003,
|
||||
"closed_trades": 45,
|
||||
"wins": 4,
|
||||
"peak_equity": 101291892.54300004,
|
||||
"max_drawdown": 0.20613604084488943,
|
||||
"max_drawdown": 0.2164632189263529,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-28",
|
||||
"030000": "2026-07-24",
|
||||
@@ -112,8 +196,9 @@
|
||||
"078930": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29",
|
||||
"003680": "2026-07-29"
|
||||
"003680": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582834+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.469359+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.979847+09:00"
|
||||
}
|
||||
@@ -117,3 +117,10 @@
|
||||
{"ts": "2026-07-29T09:28:01.387952+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6390, "qty": 801, "cost": 5119158, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5998, "target": 7174, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,380 vs 5,358"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,742 / 5,358"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,742 / 5,622"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +73 · 기 -3 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.62% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "134,413 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.62% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
|
||||
{"ts": "2026-07-29T10:42:05.416427+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 801, "proceeds": 4780640, "entry_price": 6390, "pnl": -338518, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.387951+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(20일선)", "ok": true, "detail": "5,338"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T11:18:04.428660+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 6000, "qty": 950, "proceeds": 5688885, "entry_price": 6936, "pnl": -901583, "pnl_pct": -13.5, "hold_from": "2026-07-28T09:00:16.371383+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,040 (현재 6,020)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(20일선)", "ok": true, "detail": "4,803"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:07.484190+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 40, "cost": 4852728, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111347, "target": 141206, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.484679+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 404, "cost": 2476891, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 5127, "target": 8135, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.934766+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 39, "cost": 4883532, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111347, "target": 141206, "signals": [{"label": "손절선", "ok": true, "detail": "111,347 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,206"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:16:11.935114+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 37, "cost": 4844026, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 119833, "target": 153035, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "130,900 vs 108,870"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,360 / 108,870"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.171049+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 813, "cost": 5130800, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5927, "target": 7077, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,300 vs 5,354"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,726 / 5,354"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T11:58:08.439672+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 108, "proceeds": 9884288, "entry_price": 101114, "pnl": -1037650, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.822292+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 119,142"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T12:04:07.833676+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 87900, "qty": 47, "cost": 4131920, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79505, "target": 104690, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "87,900 vs 75,055"}, {"label": "정배열(5>20)", "ok": true, "detail": "82,940 / 75,055"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "82,940 / 75,053"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+61.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +280 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+17%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.79% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "728,608 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.79% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 60973443.65049994,
|
||||
"cash": 36817750.839999944,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5132330.379099764,
|
||||
"last_add_price": 356000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5067979.388839712,
|
||||
"last_add_price": 91400
|
||||
@@ -60,17 +60,101 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 126900,
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5079550.709806033,
|
||||
"last_add_price": 131400
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 282,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:07.489076+09:00",
|
||||
"stop": 17993,
|
||||
"target": 20736,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,653 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5395527.728156246,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 429,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.489609+09:00",
|
||||
"stop": 5127,
|
||||
"target": 7634,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2634409.858223602,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 85,
|
||||
"entry_price": 125878.82352941176,
|
||||
"entry_at": "2026-07-30T09:16:11.939699+09:00",
|
||||
"stop": 117673,
|
||||
"target": 138187,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5443355.1048749965,
|
||||
"last_add_price": 127700
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 862,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.176753+09:00",
|
||||
"stop": 5927,
|
||||
"target": 6885,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5443877.577062497,
|
||||
"last_add_price": 6310
|
||||
}
|
||||
},
|
||||
"realized_pnl": -14156826.44950002,
|
||||
"closed_trades": 39,
|
||||
"wins": 5,
|
||||
"peak_equity": 100161893.89500001,
|
||||
"max_drawdown": 0.1461807457419789,
|
||||
"max_drawdown": 0.15501926382579276,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-28",
|
||||
"030000": "2026-07-29",
|
||||
@@ -93,5 +177,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582849+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.470981+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.984326+09:00"
|
||||
}
|
||||
@@ -96,3 +96,8 @@
|
||||
{"ts": "2026-07-29T10:42:05.418375+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 851, "proceeds": 5079056, "entry_price": 6390, "pnl": -359649, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.389677+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 6,978"}, {"label": "추세(20일선)", "ok": true, "detail": "5,338"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T12:50:05.475589+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 108000, "qty": 32, "proceeds": 3449261, "entry_price": 130288, "pnl": -720565, "pnl_pct": -17.11, "hold_from": "2026-07-27T09:02:06.237125+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "108,775 (현재 108,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,878"}, {"label": "추세(20일선)", "ok": false, "detail": "133,815"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +449 · 기 -685"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T14:20:01.512752+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 115500, "qty": 44, "proceeds": 5072090, "entry_price": 123400, "pnl": -358324, "pnl_pct": -6.4, "hold_from": "2026-07-29T10:24:01.448638+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "115,612 (현재 115,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 135,082"}, {"label": "추세(20일선)", "ok": true, "detail": "113,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +44 · 기 +333"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,053"}]}
|
||||
{"ts": "2026-07-30T09:04:07.489079+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 282, "cost": 5384188, "path": "pullback", "reason": "눌림목 지정가 19,653 도달", "stop": 17993, "target": 20736, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "19,100 vs 18,860"}, {"label": "정배열(5>20)", "ok": true, "detail": "19,606 / 18,860"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 19,653 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.489612+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 429, "cost": 2630164, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 5127, "target": 7634, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.939702+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 124100, "qty": 43, "cost": 5337100, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116280, "target": 135830, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "124,000 vs 113,755"}, {"label": "정배열(5>20)", "ok": true, "detail": "118,260 / 113,755"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,260 / 110,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+54.4%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +9 · 기 +389 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "518,220 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.31% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.176757+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 862, "cost": 5440036, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5927, "target": 6885, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,300 vs 5,354"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,726 / 5,354"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T10:10:07.436089+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 127700, "qty": 42, "cost": 5364205, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 116280, "target": 135830, "signals": [{"label": "손절선", "ok": true, "detail": "116,280 (현재 127,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 135,830"}, {"label": "추세(20일선)", "ok": true, "detail": "113,935"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +35 · 기 +392"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,835"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 49558634.24599998,
|
||||
"cash": 27224364.607999973,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4992940.599795671,
|
||||
"last_add_price": 356000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4910846.127133424,
|
||||
"last_add_price": 91400
|
||||
@@ -60,17 +60,101 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,673 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5527839.1075312495,
|
||||
"last_add_price": 18950
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 402,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.493859+09:00",
|
||||
"stop": 5127,
|
||||
"target": 9138,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2465159.461256131,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.943255+09:00",
|
||||
"stop": 119833,
|
||||
"target": 164102,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4808410.164930106,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 80,
|
||||
"entry_price": 125855.0,
|
||||
"entry_at": "2026-07-30T09:16:11.943674+09:00",
|
||||
"stop": 117649,
|
||||
"target": 150472,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5091414.859187499,
|
||||
"last_add_price": 127700
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 806,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.181130+09:00",
|
||||
"stop": 5927,
|
||||
"target": 7460,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5091812.158249998,
|
||||
"last_add_price": 6310
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19889233.621500026,
|
||||
"closed_trades": 36,
|
||||
"wins": 1,
|
||||
"peak_equity": 100161893.89500001,
|
||||
"max_drawdown": 0.2023783637742489,
|
||||
"max_drawdown": 0.21116662699262181,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-29",
|
||||
"030000": "2026-07-24",
|
||||
@@ -93,5 +177,5 @@
|
||||
"138040": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582864+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.472635+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.988430+09:00"
|
||||
}
|
||||
@@ -93,3 +93,8 @@
|
||||
{"ts": "2026-07-29T12:50:05.477470+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 108000, "qty": 30, "proceeds": 3233682, "entry_price": 130253, "pnl": -674504, "pnl_pct": -17.08, "hold_from": "2026-07-27T09:02:06.239540+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "108,775 (현재 108,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 213,434"}, {"label": "추세(20일선)", "ok": false, "detail": "133,815"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +449 · 기 -685"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:30:01.454446+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 118000, "qty": 103, "proceeds": 12130300, "entry_price": 120181, "pnl": -250157, "pnl_pct": -1.81, "hold_from": "2026-07-01T09:46:03.099480+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 118,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 147,722"}, {"label": "추세(20일선)", "ok": false, "detail": "118,145"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T14:20:01.514442+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 115500, "qty": 42, "proceeds": 4841541, "entry_price": 123400, "pnl": -342037, "pnl_pct": -6.4, "hold_from": "2026-07-29T10:24:01.450515+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "115,612 (현재 115,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 146,764"}, {"label": "추세(20일선)", "ok": true, "detail": "113,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +44 · 기 +333"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,053"}]}
|
||||
{"ts": "2026-07-30T09:04:07.493862+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 402, "cost": 2464630, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 5127, "target": 9138, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.943258+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 36, "cost": 4713107, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 119833, "target": 164102, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "130,900 vs 108,870"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,360 / 108,870"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:16:11.943676+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 124100, "qty": 41, "cost": 5088863, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116280, "target": 147560, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "124,000 vs 113,755"}, {"label": "정배열(5>20)", "ok": true, "detail": "118,260 / 113,755"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,260 / 110,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+54.4%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +9 · 기 +389 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.31% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "518,220 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.31% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.181133+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 806, "cost": 5086623, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5927, "target": 7460, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,300 vs 5,354"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,726 / 5,354"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T10:10:07.440123+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 127700, "qty": 39, "cost": 4981047, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 116280, "target": 147560, "signals": [{"label": "손절선", "ok": true, "detail": "116,280 (현재 127,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 147,560"}, {"label": "추세(20일선)", "ok": true, "detail": "113,935"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +35 · 기 +392"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,835"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 52676110.36350004,
|
||||
"cash": 36790407.86550004,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3813943.0504600187,
|
||||
"last_add_price": 350000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3727885.349520808,
|
||||
"last_add_price": 91400
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,643 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5685594.862062503,
|
||||
"last_add_price": 18950
|
||||
@@ -71,27 +71,90 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 41,
|
||||
"entry_price": 123400,
|
||||
"qty": 81,
|
||||
"entry_price": 124881.48148148147,
|
||||
"entry_at": "2026-07-29T10:24:01.452555+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 157062,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5142605.848996199,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 314,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.497844+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1927621.6063135946,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 28,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.947135+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3759463.8630866953,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 830,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.185459+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5243949.076709934,
|
||||
"last_add_price": 6310
|
||||
}
|
||||
},
|
||||
"realized_pnl": -16335442.066500016,
|
||||
"closed_trades": 24,
|
||||
"wins": 0,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.1668320963649997,
|
||||
"max_drawdown": 0.17023552134499967,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-15",
|
||||
"086790": "2026-07-29",
|
||||
@@ -111,5 +174,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582879+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.474236+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.992160+09:00"
|
||||
}
|
||||
@@ -68,3 +68,7 @@
|
||||
{"ts": "2026-07-29T12:04:01.697397+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 68, "proceeds": 8089794, "entry_price": 132600, "pnl": -928358, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.450599+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.449804+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 679, "proceeds": 3781432, "entry_price": 6624, "pnl": -716853, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.242654+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(10일선)", "ok": true, "detail": "5,204"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.598735+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 820, "proceeds": 4795830, "entry_price": 6390, "pnl": -444756, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.393232+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.497847+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 314, "cost": 1925109, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.947137+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 28, "cost": 3665750, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "130,900 vs 108,560"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,360 / 108,560"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.185462+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 830, "cost": 5238086, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,300 vs 5,583"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,726 / 5,583"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:50:07.301109+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 40, "cost": 5056758, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(10일선)", "ok": true, "detail": "117,230"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 52676110.36350004,
|
||||
"cash": 36790407.86550004,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3813943.0504600187,
|
||||
"last_add_price": 350000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3727885.349520808,
|
||||
"last_add_price": 91400
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,643 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5685594.862062503,
|
||||
"last_add_price": 18950
|
||||
@@ -71,27 +71,90 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 41,
|
||||
"entry_price": 123400,
|
||||
"qty": 81,
|
||||
"entry_price": 124881.48148148147,
|
||||
"entry_at": "2026-07-29T10:24:01.454311+09:00",
|
||||
"stop": 113016,
|
||||
"target": 144168,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 146335,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5142605.848996199,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 314,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.501481+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8804,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1927621.6063135946,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 28,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.950700+09:00",
|
||||
"stop": 116144,
|
||||
"target": 160413,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3759463.8630866953,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 830,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.189164+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7332,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5243949.076709934,
|
||||
"last_add_price": 6310
|
||||
}
|
||||
},
|
||||
"realized_pnl": -16335442.066500016,
|
||||
"closed_trades": 24,
|
||||
"wins": 0,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.1668320963649997,
|
||||
"max_drawdown": 0.17023552134499967,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-15",
|
||||
"086790": "2026-07-29",
|
||||
@@ -111,5 +174,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582910+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.475852+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.995516+09:00"
|
||||
}
|
||||
@@ -68,3 +68,7 @@
|
||||
{"ts": "2026-07-29T12:04:01.699059+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 68, "proceeds": 8089794, "entry_price": 132600, "pnl": -928358, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.452585+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 158,342"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.451456+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 679, "proceeds": 3781432, "entry_price": 6624, "pnl": -716853, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.245058+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,672"}, {"label": "추세(10일선)", "ok": true, "detail": "5,204"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.600416+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 820, "proceeds": 4795830, "entry_price": 6390, "pnl": -444756, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.394948+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,435"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.501484+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 314, "cost": 1925109, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 8804, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.950702+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 28, "cost": 3665750, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 160413, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "130,900 vs 108,560"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,360 / 108,560"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.189166+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 830, "cost": 5238086, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7332, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,300 vs 5,583"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,726 / 5,583"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:50:07.304413+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 40, "cost": 5056758, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 144168, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 144,168"}, {"label": "추세(10일선)", "ok": true, "detail": "117,230"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 65269300.0365,
|
||||
"cash": 43819383.0315,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3841906.161963773,
|
||||
"last_add_price": 350000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3755996.4301575036,
|
||||
"last_add_price": 91400
|
||||
@@ -50,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 41,
|
||||
"entry_price": 123400,
|
||||
"qty": 81,
|
||||
"entry_price": 124881.48148148147,
|
||||
"entry_at": "2026-07-29T10:24:01.456083+09:00",
|
||||
"stop": 113016,
|
||||
"target": 138976,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 140972,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5164071.483514108,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 279,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:07.505210+09:00",
|
||||
"stop": 17760,
|
||||
"target": 21085,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,653 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5339950.00228125,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 319,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.505690+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1956462.6546955872,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:11.953984+09:00",
|
||||
"stop": 116144,
|
||||
"target": 153035,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3812991.5556229833,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 842,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.192452+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7077,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5318486.508866878,
|
||||
"last_add_price": 6310
|
||||
}
|
||||
},
|
||||
"realized_pnl": -14984638.498500016,
|
||||
"closed_trades": 25,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.15195799963499992,
|
||||
"max_drawdown": 0.15764136968500003,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-29",
|
||||
"086790": "2026-07-29",
|
||||
@@ -90,5 +174,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.582926+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.477451+09:00"
|
||||
"updated_at": "2026-07-30T15:28:06.998572+09:00"
|
||||
}
|
||||
@@ -66,3 +66,8 @@
|
||||
{"ts": "2026-07-29T10:52:02.362763+09:00", "side": "SELL", "code": "252990", "name": "샘씨엔에스", "price": 10340, "qty": 346, "proceeds": 3570664, "entry_price": 12161, "pnl": -637628, "pnl_pct": -14.97, "hold_from": "2026-07-27T09:12:01.531679+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "10,340 (현재 10,340)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,892"}, {"label": "추세(10일선)", "ok": false, "detail": "12,607"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +239 · 기 -181"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T12:04:01.700752+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 69, "proceeds": 8208762, "entry_price": 132575, "pnl": -940311, "pnl_pct": -10.09, "hold_from": "2026-07-10T09:26:06.454294+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,704 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 151,882"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.602105+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 826, "proceeds": 4830921, "entry_price": 6390, "pnl": -448010, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.396682+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.505212+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 279, "cost": 5326909, "path": "pullback", "reason": "눌림목 지정가 19,653 도달", "stop": 17760, "target": 21085, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "19,100 vs 18,958"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,606 / 18,958"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 19,653 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.505693+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 319, "cost": 1955763, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.953986+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 29, "cost": 3796669, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 153035, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "130,900 vs 108,560"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,360 / 108,560"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.192454+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 842, "cost": 5313817, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7077, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,300 vs 5,583"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,726 / 5,583"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:50:07.307619+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 40, "cost": 5056758, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 138976, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,976"}, {"label": "추세(10일선)", "ok": true, "detail": "117,230"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 50766727.339499995,
|
||||
"cash": 27999012.694499996,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5085796.90859035,
|
||||
"last_add_price": 356000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4982054.533958632,
|
||||
"last_add_price": 90900
|
||||
@@ -60,17 +60,101 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,673 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5636180.5746875,
|
||||
"last_add_price": 18950
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 410,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.509224+09:00",
|
||||
"stop": 5127,
|
||||
"target": 9138,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2514428.437642747,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 81,
|
||||
"entry_price": 126029.62962962964,
|
||||
"entry_at": "2026-07-30T09:22:07.824432+09:00",
|
||||
"stop": 117824,
|
||||
"target": 150647,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5174714.39653125,
|
||||
"last_add_price": 127700
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 37,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.557097+09:00",
|
||||
"stop": 120690,
|
||||
"target": 165130,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4916855.663590054,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 820,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.504700+09:00",
|
||||
"stop": 5917,
|
||||
"target": 7450,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5170254.61215625,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -18311185.043000016,
|
||||
"closed_trades": 33,
|
||||
"wins": 1,
|
||||
"peak_equity": 100344662.275,
|
||||
"max_drawdown": 0.18790466610796128,
|
||||
"max_drawdown": 0.19705571908059924,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-29",
|
||||
"030000": "2026-07-24",
|
||||
@@ -91,5 +175,5 @@
|
||||
"138040": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583136+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.479045+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.001653+09:00"
|
||||
}
|
||||
@@ -87,3 +87,8 @@
|
||||
{"ts": "2026-07-29T12:50:05.483924+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 108000, "qty": 32, "proceeds": 3449261, "entry_price": 130288, "pnl": -720565, "pnl_pct": -17.11, "hold_from": "2026-07-27T09:02:06.248329+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "108,775 (현재 108,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 213,468"}, {"label": "추세(20일선)", "ok": false, "detail": "133,815"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +449 · 기 -685"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:30:01.461196+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 118000, "qty": 103, "proceeds": 12130300, "entry_price": 120181, "pnl": -250157, "pnl_pct": -1.81, "hold_from": "2026-07-01T09:46:03.114406+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 118,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 147,722"}, {"label": "추세(20일선)", "ok": false, "detail": "118,145"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T14:20:01.520902+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 115500, "qty": 43, "proceeds": 4956815, "entry_price": 123400, "pnl": -350181, "pnl_pct": -6.4, "hold_from": "2026-07-29T10:24:01.457803+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "115,612 (현재 115,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 146,764"}, {"label": "추세(20일선)", "ok": true, "detail": "113,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +44 · 기 +333"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,053"}]}
|
||||
{"ts": "2026-07-30T09:04:07.509226+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 410, "cost": 2513677, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 5127, "target": 9138, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:22:07.824435+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 124400, "qty": 41, "cost": 5101165, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116537, "target": 147989, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "124,300 vs 113,770"}, {"label": "정배열(5>20)", "ok": true, "detail": "118,320 / 113,770"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,320 / 110,090"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +9 · 기 +389 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+19%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.37% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "615,133 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.37% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:24:07.557100+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 37, "cost": 4877331, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 120690, "target": 165130, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "132,000 vs 108,925"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,580 / 108,925"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.504703+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 820, "cost": 5166775, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5917, "target": 7450, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,280 vs 5,353"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,722 / 5,353"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
{"ts": "2026-07-30T10:10:07.453421+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 127700, "qty": 40, "cost": 5108766, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 116537, "target": 147989, "signals": [{"label": "손절선", "ok": true, "detail": "116,537 (현재 127,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 147,989"}, {"label": "추세(20일선)", "ok": true, "detail": "113,935"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +35 · 기 +392"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 127,135"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 46349207.48200001,
|
||||
"cash": 25760629.65850001,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3889733.683715179,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3742230.636714602,
|
||||
"last_add_price": 90900
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,012 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5696942.092812501,
|
||||
"last_add_price": 18950
|
||||
@@ -76,15 +76,99 @@
|
||||
"entry_at": "2026-07-29T09:02:02.251620+09:00",
|
||||
"stop": 111200,
|
||||
"target": 143142,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5327150.576000001,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 79,
|
||||
"entry_price": 123225.3164556962,
|
||||
"entry_at": "2026-07-30T09:04:07.512389+09:00",
|
||||
"stop": 111000,
|
||||
"target": 159901,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4940372.790080874,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 313,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.512664+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1924945.6187384445,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 28,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.560095+09:00",
|
||||
"stop": 116987,
|
||||
"target": 176240,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3791237.2526261737,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 832,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.507663+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7833,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5246390.706071919,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -16596935.273000015,
|
||||
@@ -112,5 +196,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583184+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.480642+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.004503+09:00"
|
||||
}
|
||||
@@ -77,3 +77,8 @@
|
||||
{"ts": "2026-07-29T12:04:01.704033+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 85, "proceeds": 10112243, "entry_price": 124176, "pnl": -444341, "pnl_pct": -4.01, "hold_from": "2026-07-02T10:18:03.868150+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,006 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 163,689"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:06:06.533240+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5690, "qty": 741, "proceeds": 4208068, "entry_price": 6936, "pnl": -932523, "pnl_pct": -17.97, "hold_from": "2026-07-28T09:00:18.003009+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,741 (현재 5,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 10,522"}, {"label": "추세(10일선)", "ok": true, "detail": "5,214"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.605461+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 817, "proceeds": 4778284, "entry_price": 6390, "pnl": -443129, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.400109+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.512391+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 40, "cost": 4852728, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 152200, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "121,200 vs 119,680"}, {"label": "정배열(5>10)", "ok": true, "detail": "120,840 / 119,680"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.512666+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 313, "cost": 1918978, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.959636+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 39, "cost": 4883532, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 152200, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 152,200"}, {"label": "추세(10일선)", "ok": true, "detail": "120,100"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.560097+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 28, "cost": 3690954, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 176240, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.507665+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 832, "cost": 5242386, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7833, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 37738549.5725,
|
||||
"cash": 32386107.138999995,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3891157.6622701483,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 114,
|
||||
"entry_price": 101115.78947368421,
|
||||
"entry_at": "2026-07-22T09:04:01.835859+09:00",
|
||||
"stop": 92100,
|
||||
"target": 119147,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5814522.042968751,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3778918.748885343,
|
||||
"last_add_price": 90900
|
||||
@@ -81,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5719122.209000001,
|
||||
"last_add_price": 18950
|
||||
@@ -97,22 +76,85 @@
|
||||
"entry_at": "2026-07-29T09:02:02.253867+09:00",
|
||||
"stop": 111200,
|
||||
"target": 135157,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5467080.19828125,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 81,
|
||||
"entry_price": 123225.92592592593,
|
||||
"entry_at": "2026-07-30T09:04:07.515413+09:00",
|
||||
"stop": 111000,
|
||||
"target": 147678,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5075960.404438956,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 323,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.515982+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8804,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1981493.926440071,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.563027+09:00",
|
||||
"stop": 116987,
|
||||
"target": 161427,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3902843.990735232,
|
||||
"last_add_price": 131800
|
||||
}
|
||||
},
|
||||
"realized_pnl": -13685415.115000019,
|
||||
"closed_trades": 29,
|
||||
"realized_pnl": -14780929.105000021,
|
||||
"closed_trades": 30,
|
||||
"wins": 2,
|
||||
"peak_equity": 101368884.75700004,
|
||||
"max_drawdown": 0.15757813057519107,
|
||||
"max_drawdown": 0.1603872594334459,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"086790": "2026-07-20",
|
||||
@@ -129,8 +171,9 @@
|
||||
"252990": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583198+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.482277+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.007268+09:00"
|
||||
}
|
||||
@@ -83,3 +83,8 @@
|
||||
{"ts": "2026-07-29T09:28:01.401823+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6390, "qty": 838, "cost": 5355623, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5867, "target": 7435, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,380 vs 5,358"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,742 / 5,358"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,742 / 5,622"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +73 · 기 -3 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.62% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "134,413 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.62% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
|
||||
{"ts": "2026-07-29T13:14:05.457905+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 694, "proceeds": 3864969, "entry_price": 6624, "pnl": -732791, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.253533+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,672"}, {"label": "추세(20일선)", "ok": true, "detail": "4,782"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.607125+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 838, "proceeds": 4901104, "entry_price": 6390, "pnl": -454519, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.401822+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,435"}, {"label": "추세(20일선)", "ok": true, "detail": "5,332"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.515415+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 41, "cost": 4974046, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 141900, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.515984+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 323, "cost": 1980287, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8804, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.962505+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 40, "cost": 5008751, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 141900, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,900"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.563029+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 29, "cost": 3822773, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 161427, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "132,000 vs 108,925"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,580 / 108,925"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T11:58:08.466564+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 114, "proceeds": 10433415, "entry_price": 101116, "pnl": -1095514, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.835859+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 119,147"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 53750178.10300002,
|
||||
"cash": 37489369.347500026,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3848025.874946516,
|
||||
"last_add_price": 356000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3774325.11581779,
|
||||
"last_add_price": 90900
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,673 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5721714.462968752,
|
||||
"last_add_price": 18950
|
||||
@@ -71,27 +71,90 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 42,
|
||||
"entry_price": 123400,
|
||||
"qty": 83,
|
||||
"entry_price": 124881.92771084337,
|
||||
"entry_at": "2026-07-29T10:24:01.463012+09:00",
|
||||
"stop": 113016,
|
||||
"target": 144168,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 146335,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5187375.1457318,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 319,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.518900+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8804,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1957851.3491824612,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.565720+09:00",
|
||||
"stop": 116987,
|
||||
"target": 161427,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3832048.06532556,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 841,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.513013+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7322,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5302210.774469179,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -14866665.129500018,
|
||||
"closed_trades": 30,
|
||||
"wins": 2,
|
||||
"peak_equity": 100182695.41500005,
|
||||
"max_drawdown": 0.1552724973865191,
|
||||
"max_drawdown": 0.15883827043764528,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"086790": "2026-07-20",
|
||||
@@ -112,5 +175,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583212+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.483940+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.009784+09:00"
|
||||
}
|
||||
@@ -82,3 +82,7 @@
|
||||
{"ts": "2026-07-29T10:52:02.369415+09:00", "side": "SELL", "code": "252990", "name": "샘씨엔에스", "price": 10340, "qty": 347, "proceeds": 3580983, "entry_price": 12158, "pnl": -638619, "pnl_pct": -14.96, "hold_from": "2026-07-27T09:12:01.540221+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "10,340 (현재 10,340)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,795"}, {"label": "추세(20일선)", "ok": false, "detail": "12,592"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +239 · 기 -181"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.459920+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 687, "proceeds": 3825985, "entry_price": 6624, "pnl": -725308, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.255677+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,672"}, {"label": "추세(20일선)", "ok": true, "detail": "4,782"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.608819+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 828, "proceeds": 4842618, "entry_price": 6390, "pnl": -449095, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.403529+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,435"}, {"label": "추세(20일선)", "ok": true, "detail": "5,332"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.518903+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 319, "cost": 1955763, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 8804, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:24:07.565722+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 29, "cost": 3822773, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 161427, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "132,000 vs 108,925"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,580 / 108,925"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.513015+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 841, "cost": 5299095, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7322, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,280 vs 5,353"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,722 / 5,353"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
{"ts": "2026-07-30T09:50:07.318850+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 41, "cost": 5183177, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 144168, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 144,168"}, {"label": "추세(20일선)", "ok": true, "detail": "113,865"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 46349207.48200001,
|
||||
"cash": 25760629.65850001,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3889733.683715179,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3742230.636714602,
|
||||
"last_add_price": 90900
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,012 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5696942.092812501,
|
||||
"last_add_price": 18950
|
||||
@@ -76,15 +76,99 @@
|
||||
"entry_at": "2026-07-29T09:02:02.257865+09:00",
|
||||
"stop": 111200,
|
||||
"target": 135156,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5327150.576000001,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 79,
|
||||
"entry_price": 123225.3164556962,
|
||||
"entry_at": "2026-07-30T09:04:07.521823+09:00",
|
||||
"stop": 111000,
|
||||
"target": 147676,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4940372.790080874,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 313,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.522091+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8804,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1924945.6187384445,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 28,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.568342+09:00",
|
||||
"stop": 116987,
|
||||
"target": 161427,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3791237.2526261737,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 832,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.515657+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7322,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5246390.706071919,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -16596935.273000015,
|
||||
@@ -112,5 +196,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583227+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.485537+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.012342+09:00"
|
||||
}
|
||||
@@ -77,3 +77,8 @@
|
||||
{"ts": "2026-07-29T12:04:01.708942+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 85, "proceeds": 10112243, "entry_price": 124176, "pnl": -444341, "pnl_pct": -4.01, "hold_from": "2026-07-02T10:18:03.875113+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,006 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 150,518"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:06:06.538231+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5690, "qty": 741, "proceeds": 4208068, "entry_price": 6936, "pnl": -932523, "pnl_pct": -17.97, "hold_from": "2026-07-28T09:00:18.311548+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,741 (현재 5,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,327"}, {"label": "추세(10일선)", "ok": true, "detail": "5,214"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.610479+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 817, "proceeds": 4778284, "entry_price": 6390, "pnl": -443129, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.405240+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,435"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.521825+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 40, "cost": 4852728, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 141900, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "121,200 vs 119,680"}, {"label": "정배열(5>10)", "ok": true, "detail": "120,840 / 119,680"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.522093+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 313, "cost": 1918978, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8804, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.967598+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 39, "cost": 4883532, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 141900, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,900"}, {"label": "추세(10일선)", "ok": true, "detail": "120,100"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.568344+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 28, "cost": 3690954, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 161427, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.515659+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 832, "cost": 5242386, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7322, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 67495423.53049996,
|
||||
"cash": 37496014.29399997,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5225929.659467572,
|
||||
"last_add_price": 356000
|
||||
@@ -39,17 +39,122 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5138975.321289769,
|
||||
"last_add_price": 90900
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 289,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:07.524830+09:00",
|
||||
"stop": 17993,
|
||||
"target": 20736,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,653 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5535182.720656248,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 440,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.525083+09:00",
|
||||
"stop": 5127,
|
||||
"target": 7634,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2702321.452399152,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 87,
|
||||
"entry_price": 126031.03448275862,
|
||||
"entry_at": "2026-07-30T09:22:07.837498+09:00",
|
||||
"stop": 117825,
|
||||
"target": 138340,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5554493.212437497,
|
||||
"last_add_price": 127700
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 40,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.570830+09:00",
|
||||
"stop": 120690,
|
||||
"target": 148465,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5277490.897081996,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 880,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.518276+09:00",
|
||||
"stop": 5917,
|
||||
"target": 6875,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5549416.222437498,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -12144022.844500024,
|
||||
"closed_trades": 36,
|
||||
"wins": 5,
|
||||
"peak_equity": 100344662.275,
|
||||
"max_drawdown": 0.12451886663644701,
|
||||
"max_drawdown": 0.13657655195890225,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-20",
|
||||
"030000": "2026-07-29",
|
||||
@@ -70,5 +175,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583241+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.487154+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.014868+09:00"
|
||||
}
|
||||
@@ -89,3 +89,9 @@
|
||||
{"ts": "2026-07-29T10:42:05.435654+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 871, "proceeds": 5198423, "entry_price": 6390, "pnl": -368102, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.406971+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 6,978"}, {"label": "추세(20일선)", "ok": true, "detail": "5,338"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T12:50:05.492063+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 108000, "qty": 32, "proceeds": 3449261, "entry_price": 130288, "pnl": -720565, "pnl_pct": -17.11, "hold_from": "2026-07-27T09:02:06.258350+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "108,775 (현재 108,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,878"}, {"label": "추세(20일선)", "ok": false, "detail": "133,815"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +449 · 기 -685"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T14:20:01.529112+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 115500, "qty": 45, "proceeds": 5187365, "entry_price": 123400, "pnl": -366468, "pnl_pct": -6.4, "hold_from": "2026-07-29T10:24:01.466401+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "115,612 (현재 115,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 135,082"}, {"label": "추세(20일선)", "ok": true, "detail": "113,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +44 · 기 +333"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,053"}]}
|
||||
{"ts": "2026-07-30T09:04:07.524832+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 289, "cost": 5517838, "path": "pullback", "reason": "눌림목 지정가 19,653 도달", "stop": 17993, "target": 20736, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "19,100 vs 18,860"}, {"label": "정배열(5>20)", "ok": true, "detail": "19,606 / 18,860"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 19,653 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.525085+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 440, "cost": 2697605, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 5127, "target": 7634, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:22:07.837500+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 124400, "qty": 44, "cost": 5474421, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116537, "target": 136194, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "124,300 vs 113,770"}, {"label": "정배열(5>20)", "ok": true, "detail": "118,320 / 113,770"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,320 / 110,090"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +9 · 기 +389 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+19%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.37% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "615,133 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.37% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:24:07.570832+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 40, "cost": 5272791, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 120690, "target": 148465, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "132,000 vs 108,925"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,580 / 108,925"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.518278+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 880, "cost": 5544832, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5917, "target": 6875, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,280 vs 5,353"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,722 / 5,353"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
{"ts": "2026-07-30T10:10:07.466772+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 127700, "qty": 43, "cost": 5491924, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 116537, "target": 136194, "signals": [{"label": "손절선", "ok": true, "detail": "116,537 (현재 127,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,194"}, {"label": "추세(20일선)", "ok": true, "detail": "113,935"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +35 · 기 +392"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 127,135"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 38950713.03150001,
|
||||
"cash": 33226459.752500013,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3939968.9939820534,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 116,
|
||||
"entry_price": 101116.37931034483,
|
||||
"entry_at": "2026-07-22T09:04:01.842571+09:00",
|
||||
"stop": 92100,
|
||||
"target": 114641,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5880825.494625002,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3836617.5002028025,
|
||||
"last_add_price": 90900
|
||||
@@ -81,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5821568.917468751,
|
||||
"last_add_price": 18950
|
||||
@@ -97,22 +76,85 @@
|
||||
"entry_at": "2026-07-29T09:02:02.261876+09:00",
|
||||
"stop": 111200,
|
||||
"target": 131165,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5570614.761375001,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 84,
|
||||
"entry_price": 123203.57142857143,
|
||||
"entry_at": "2026-07-30T09:04:07.527580+09:00",
|
||||
"stop": 111000,
|
||||
"target": 141509,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5217780.328505317,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 332,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.528031+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2036737.90524699,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 30,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.573212+09:00",
|
||||
"stop": 116987,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4011548.961969723,
|
||||
"last_add_price": 131800
|
||||
}
|
||||
},
|
||||
"realized_pnl": -11288073.90600002,
|
||||
"closed_trades": 32,
|
||||
"realized_pnl": -12402875.871000022,
|
||||
"closed_trades": 33,
|
||||
"wins": 5,
|
||||
"peak_equity": 101368884.75700004,
|
||||
"max_drawdown": 0.1340342561730886,
|
||||
"max_drawdown": 0.13703657722781418,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-24",
|
||||
"086790": "2026-07-20",
|
||||
@@ -129,8 +171,9 @@
|
||||
"252990": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583273+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.488746+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.017283+09:00"
|
||||
}
|
||||
@@ -88,3 +88,8 @@
|
||||
{"ts": "2026-07-29T09:26:01.927146+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 6610, "qty": 358, "proceeds": 2361766, "entry_price": 6540, "pnl": 20094, "pnl_pct": 1.07, "hold_from": "2026-07-29T09:02:02.261522+09:00", "reason": "트레일링 익절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "7,526 (현재 6,610)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(20일선)", "ok": true, "detail": "4,833"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +188 · 기 +0"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T09:28:01.408657+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6390, "qty": 854, "cost": 5457879, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5867, "target": 7174, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,380 vs 5,358"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,742 / 5,358"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,742 / 5,622"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +73 · 기 -3 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.62% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "134,413 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.62% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
|
||||
{"ts": "2026-07-29T13:34:03.613777+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 854, "proceeds": 4994681, "entry_price": 6390, "pnl": -463197, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.408655+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(20일선)", "ok": true, "detail": "5,332"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.527582+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 43, "cost": 5216682, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 136750, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.528033+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 332, "cost": 2035465, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.972281+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 41, "cost": 5133970, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 136750, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,750"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.573214+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 30, "cost": 3954593, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 154020, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "132,000 vs 108,925"}, {"label": "정배열(5>20)", "ok": true, "detail": "115,580 / 108,925"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T11:58:08.476701+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 116, "proceeds": 10616457, "entry_price": 101116, "pnl": -1114802, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.842571+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 114,641"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 53381301.820000045,
|
||||
"cash": 37416197.41350004,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3869967.7922643563,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3737129.4618013836,
|
||||
"last_add_price": 90900
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,643 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5724944.494593753,
|
||||
"last_add_price": 18950
|
||||
@@ -71,27 +71,90 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 41,
|
||||
"entry_price": 123400,
|
||||
"qty": 81,
|
||||
"entry_price": 124881.48148148147,
|
||||
"entry_at": "2026-07-29T10:24:01.469724+09:00",
|
||||
"stop": 113016,
|
||||
"target": 144168,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 146335,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5162533.383709267,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 317,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.530698+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8804,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1948420.7709670917,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 28,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.575535+09:00",
|
||||
"stop": 116987,
|
||||
"target": 161427,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3813556.4512976124,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 837,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.522975+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7322,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5276594.3904554825,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -15391014.730000013,
|
||||
"closed_trades": 23,
|
||||
"wins": 0,
|
||||
"peak_equity": 100024962.38500004,
|
||||
"max_drawdown": 0.1580397551578642,
|
||||
"max_drawdown": 0.16156951810984665,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-15",
|
||||
"086790": "2026-07-28",
|
||||
@@ -110,5 +173,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583289+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.490354+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.019610+09:00"
|
||||
}
|
||||
@@ -65,3 +65,7 @@
|
||||
{"ts": "2026-07-29T10:52:02.376027+09:00", "side": "SELL", "code": "252990", "name": "샘씨엔에스", "price": 10340, "qty": 346, "proceeds": 3570664, "entry_price": 12161, "pnl": -637628, "pnl_pct": -14.97, "hold_from": "2026-07-27T09:12:01.548027+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "10,340 (현재 10,340)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,803"}, {"label": "추세(10일선)", "ok": false, "detail": "12,607"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +239 · 기 -181"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.466408+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 685, "proceeds": 3814847, "entry_price": 6624, "pnl": -723194, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.263571+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,672"}, {"label": "추세(10일선)", "ok": true, "detail": "5,204"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.615477+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 824, "proceeds": 4819224, "entry_price": 6390, "pnl": -446926, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.410419+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,435"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.530700+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 317, "cost": 1943501, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 8804, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:24:07.575537+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 28, "cost": 3690954, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 161427, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.522976+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 837, "cost": 5273891, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7322, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
{"ts": "2026-07-30T09:50:07.328694+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 40, "cost": 5056758, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 144168, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 144,168"}, {"label": "추세(10일선)", "ok": true, "detail": "117,230"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 65766270.82200003,
|
||||
"cash": 44185194.14600003,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3898349.7986140535,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3762093.1541708363,
|
||||
"last_add_price": 90900
|
||||
@@ -50,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 41,
|
||||
"entry_price": 123400,
|
||||
"qty": 81,
|
||||
"entry_price": 124881.48148148147,
|
||||
"entry_at": "2026-07-29T10:24:01.471456+09:00",
|
||||
"stop": 113016,
|
||||
"target": 138976,
|
||||
"peak": 123600,
|
||||
"stop": 114155,
|
||||
"target": 140972,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5181824.996564139,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 282,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:07.533504+09:00",
|
||||
"stop": 17760,
|
||||
"target": 21085,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,653 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5394916.926375002,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 322,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.533744+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1976520.6885600227,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.577833+09:00",
|
||||
"stop": 116987,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3863996.750727336,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 848,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.525241+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7067,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5345936.747630138,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -14100509.648000013,
|
||||
"closed_trades": 24,
|
||||
"wins": 1,
|
||||
"peak_equity": 100024962.38500004,
|
||||
"max_drawdown": 0.1434371103062925,
|
||||
"max_drawdown": 0.14963632959330708,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-29",
|
||||
"086790": "2026-07-28",
|
||||
@@ -89,5 +173,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583304+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.491957+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.021844+09:00"
|
||||
}
|
||||
@@ -63,3 +63,8 @@
|
||||
{"ts": "2026-07-29T10:24:01.471457+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 41, "cost": 5060159, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 138976, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "123,400 vs 116,950"}, {"label": "정배열(5>10)", "ok": true, "detail": "118,140 / 116,950"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T10:52:02.377740+09:00", "side": "SELL", "code": "252990", "name": "샘씨엔에스", "price": 10340, "qty": 348, "proceeds": 3591303, "entry_price": 12161, "pnl": -641452, "pnl_pct": -14.98, "hold_from": "2026-07-27T09:12:01.549891+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "10,340 (현재 10,340)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,893"}, {"label": "추세(10일선)", "ok": false, "detail": "12,607"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +239 · 기 -181"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.617123+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 830, "proceeds": 4854316, "entry_price": 6390, "pnl": -450180, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.412115+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.533506+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 282, "cost": 5384188, "path": "pullback", "reason": "눌림목 지정가 19,653 도달", "stop": 17760, "target": 21085, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "19,100 vs 18,958"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,606 / 18,958"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 19,653 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.533746+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 322, "cost": 1974156, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:24:07.577835+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 29, "cost": 3822773, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 154020, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.525243+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 848, "cost": 5343201, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7067, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
{"ts": "2026-07-30T09:50:07.330983+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 40, "cost": 5056758, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 138976, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,976"}, {"label": "추세(10일선)", "ok": true, "detail": "117,230"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 59106467.79900003,
|
||||
"cash": 32656100.83900003,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3913399.394880189,
|
||||
"last_add_price": 353000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3814573.88062613,
|
||||
"last_add_price": 90900
|
||||
@@ -55,22 +55,127 @@
|
||||
"entry_at": "2026-07-29T09:02:02.267342+09:00",
|
||||
"stop": 111200,
|
||||
"target": 131164,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5436300.471625002,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 81,
|
||||
"entry_price": 123225.92592592593,
|
||||
"entry_at": "2026-07-30T09:04:07.536116+09:00",
|
||||
"stop": 111000,
|
||||
"target": 141565,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5045807.2398149045,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 280,
|
||||
"entry_price": 19090,
|
||||
"entry_at": "2026-07-30T09:04:07.536230+09:00",
|
||||
"stop": 17760,
|
||||
"target": 21085,
|
||||
"peak": 19430,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,019 도달",
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5355663.862750002,
|
||||
"last_add_price": 19090
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 320,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.536435+09:00",
|
||||
"stop": 4793,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1962123.1366758423,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 29,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.580162+09:00",
|
||||
"stop": 116987,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3860356.183815298,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 847,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.527447+09:00",
|
||||
"stop": 5789,
|
||||
"target": 7067,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5341728.159493153,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -14884731.466000017,
|
||||
"closed_trades": 31,
|
||||
"wins": 2,
|
||||
"peak_equity": 101140808.32700005,
|
||||
"max_drawdown": 0.16056961375564408,
|
||||
"max_drawdown": 0.16118367805893888,
|
||||
"last_exit": {
|
||||
"030000": "2026-07-29",
|
||||
"086790": "2026-07-29",
|
||||
@@ -91,5 +196,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583318+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.493544+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.024000+09:00"
|
||||
}
|
||||
@@ -84,3 +84,9 @@
|
||||
{"ts": "2026-07-29T12:04:01.716987+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 85, "proceeds": 10112243, "entry_price": 124176, "pnl": -444341, "pnl_pct": -4.01, "hold_from": "2026-07-02T10:18:03.885656+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "111,006 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 143,933"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:06:06.546415+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5690, "qty": 755, "proceeds": 4287573, "entry_price": 6936, "pnl": -950193, "pnl_pct": -17.97, "hold_from": "2026-07-28T09:00:18.830154+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,741 (현재 5,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(10일선)", "ok": true, "detail": "5,214"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.618813+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 833, "proceeds": 4871861, "entry_price": 6390, "pnl": -451807, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.413801+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,539"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:07.536118+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 41, "cost": 4974046, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111000, "target": 136750, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "121,200 vs 119,680"}, {"label": "정배열(5>10)", "ok": true, "detail": "120,840 / 119,680"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.536232+09:00", "side": "BUY", "code": "030000", "name": "제일기획", "price": 19090, "qty": 280, "cost": 5346002, "path": "pullback", "reason": "눌림목 지정가 20,019 도달", "stop": 17760, "target": 21085, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "19,100 vs 18,958"}, {"label": "정배열(5>10)", "ok": true, "detail": "19,606 / 18,958"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "19,606 / 19,360"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+29.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +2 · 기 +327 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+32%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.14% (환산) vs 평균 0.62% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 21,150"}, {"label": "거래량 급증", "ok": false, "detail": "160,727 (환산) vs 평균 711,709"}, {"label": "회전율 급증", "ok": false, "detail": "0.14% (환산) vs 평균 0.62%"}, {"label": "RSI", "ok": true, "detail": "50"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 20,019 (현재 19,100)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.536436+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 320, "cost": 1961894, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 4793, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.978788+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 40, "cost": 5008751, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 136750, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 136,750"}, {"label": "추세(10일선)", "ok": true, "detail": "120,100"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.580164+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 29, "cost": 3822773, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116987, "target": 154020, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.527449+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 847, "cost": 5336900, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5789, "target": 7067, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 26388097.34059999,
|
||||
"cash": 23922167.98359999,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5038910.050638685,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 110,
|
||||
"entry_price": 101114.54545454546,
|
||||
"entry_at": "2026-07-22T09:04:01.849191+09:00",
|
||||
"stop": 92100,
|
||||
"target": 119144,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 98,848 도달",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5640212.3774375,
|
||||
"last_add_price": 103100
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4907020.835552651,
|
||||
"last_add_price": 90900
|
||||
@@ -81,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,032 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5601008.3746875,
|
||||
"last_add_price": 18950
|
||||
@@ -102,7 +81,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 2,135 도달",
|
||||
"cur_price": 1805,
|
||||
"cur_price": 1846,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2627079.6319200005,
|
||||
"last_add_price": 1951
|
||||
@@ -118,22 +97,64 @@
|
||||
"entry_at": "2026-07-29T09:02:02.269059+09:00",
|
||||
"stop": 111408,
|
||||
"target": 134739,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5278498.658468749,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 81,
|
||||
"entry_price": 123225.92592592593,
|
||||
"entry_at": "2026-07-30T09:04:07.538758+09:00",
|
||||
"stop": 113273,
|
||||
"target": 143132,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5079406.382253983,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 416,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.538973+09:00",
|
||||
"stop": 5127,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2553079.5546287536,
|
||||
"last_add_price": 6130
|
||||
}
|
||||
},
|
||||
"realized_pnl": -16197005.716500018,
|
||||
"closed_trades": 39,
|
||||
"realized_pnl": -17253943.75650002,
|
||||
"closed_trades": 40,
|
||||
"wins": 4,
|
||||
"peak_equity": 101501376.42350003,
|
||||
"max_drawdown": 0.18836080609517294,
|
||||
"max_drawdown": 0.19049332256565776,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-20",
|
||||
"030000": "2026-07-24",
|
||||
@@ -150,8 +171,9 @@
|
||||
"003680": "2026-07-29",
|
||||
"252990": "2026-07-28",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583333+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.495153+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.026155+09:00"
|
||||
}
|
||||
@@ -110,3 +110,7 @@
|
||||
{"ts": "2026-07-29T09:28:01.415512+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6390, "qty": 829, "cost": 5298105, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5998, "target": 7174, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,380 vs 5,358"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,742 / 5,358"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,742 / 5,622"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +73 · 기 -3 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.62% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "134,413 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.62% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
|
||||
{"ts": "2026-07-29T10:42:05.443994+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 829, "proceeds": 4947753, "entry_price": 6390, "pnl": -350352, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.415511+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(20일선)", "ok": true, "detail": "5,338"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T11:18:04.454862+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 6000, "qty": 979, "proceeds": 5862546, "entry_price": 6936, "pnl": -929053, "pnl_pct": -13.5, "hold_from": "2026-07-28T09:00:18.935354+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,040 (현재 6,020)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(20일선)", "ok": true, "detail": "4,803"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:07.538760+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 41, "cost": 4974046, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111347, "target": 141206, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "121,200 vs 118,305"}, {"label": "정배열(5>20)", "ok": true, "detail": "120,840 / 118,305"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.538974+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 416, "cost": 2550463, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 5127, "target": 8135, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 4,808"}, {"label": "정배열(5>20)", "ok": true, "detail": "6,182 / 4,808"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.980919+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 40, "cost": 5008751, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111347, "target": 141206, "signals": [{"label": "손절선", "ok": true, "detail": "111,347 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,206"}, {"label": "추세(20일선)", "ok": true, "detail": "118,515"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T11:58:08.485485+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 110, "proceeds": 10067330, "entry_price": 101115, "pnl": -1056938, "pnl_pct": -9.31, "hold_from": "2026-07-22T09:04:01.849191+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 119,144"}, {"label": "추세(20일선)", "ok": false, "detail": "98,155"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 40998358.9225,
|
||||
"cash": 18351172.354000002,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5033450.427529937,
|
||||
"last_add_price": 356000
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4951509.819030465,
|
||||
"last_add_price": 90900
|
||||
@@ -60,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,012 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5662520.118343751,
|
||||
"last_add_price": 18950
|
||||
@@ -76,15 +76,99 @@
|
||||
"entry_at": "2026-07-29T09:02:02.270985+09:00",
|
||||
"stop": 111408,
|
||||
"target": 134739,
|
||||
"peak": 123600,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 118,115 도달",
|
||||
"cur_price": 116500,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5234858.44571875,
|
||||
"last_add_price": 120500
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 81,
|
||||
"entry_price": 123225.92592592593,
|
||||
"entry_at": "2026-07-30T09:04:07.541158+09:00",
|
||||
"stop": 113273,
|
||||
"target": 143132,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 122,665 도달",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 5051285.121721717,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 413,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:07.541375+09:00",
|
||||
"stop": 5127,
|
||||
"target": 8135,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,792 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 2534339.801822408,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 37,
|
||||
"entry_price": 131800,
|
||||
"entry_at": "2026-07-30T09:24:07.584368+09:00",
|
||||
"stop": 120690,
|
||||
"target": 154020,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4999655.762454186,
|
||||
"last_add_price": 131800
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 834,
|
||||
"entry_price": 6300,
|
||||
"entry_at": "2026-07-30T09:26:07.531672+09:00",
|
||||
"stop": 5917,
|
||||
"target": 7067,
|
||||
"peak": 6300,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5258695.03025,
|
||||
"last_add_price": 6300
|
||||
}
|
||||
},
|
||||
"realized_pnl": -17677343.36250002,
|
||||
@@ -112,5 +196,5 @@
|
||||
"090850": "2026-07-29"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583347+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.496779+09:00"
|
||||
"updated_at": "2026-07-30T15:28:07.028244+09:00"
|
||||
}
|
||||
@@ -97,3 +97,8 @@
|
||||
{"ts": "2026-07-29T10:42:05.445723+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5980, "qty": 822, "proceeds": 4905975, "entry_price": 6390, "pnl": -347393, "pnl_pct": -6.42, "hold_from": "2026-07-29T09:28:01.417216+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,998 (현재 5,980)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,174"}, {"label": "추세(10일선)", "ok": true, "detail": "5,551"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +77 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,521"}]}
|
||||
{"ts": "2026-07-29T11:18:04.456547+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 6000, "qty": 973, "proceeds": 5826616, "entry_price": 6936, "pnl": -923336, "pnl_pct": -13.5, "hold_from": "2026-07-28T09:00:19.039792+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "6,040 (현재 6,020)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 8,729"}, {"label": "추세(10일선)", "ok": true, "detail": "5,246"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T12:04:01.720263+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 89, "proceeds": 10588113, "entry_price": 124178, "pnl": -465345, "pnl_pct": -4.01, "hold_from": "2026-07-02T10:18:03.889699+09:00", "reason": "추세·수급 이탈", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "114,299 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 143,934"}, {"label": "추세(10일선)", "ok": false, "detail": "119,490"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:07.541159+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 41, "cost": 4974046, "path": "pullback", "reason": "눌림목 지정가 122,665 도달", "stop": 111347, "target": 141206, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "121,200 vs 119,680"}, {"label": "정배열(5>10)", "ok": true, "detail": "120,840 / 119,680"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 122,665 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:07.541376+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 413, "cost": 2532070, "path": "pullback", "reason": "눌림목 지정가 7,792 도달", "stop": 5127, "target": 8135, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,120 vs 5,256"}, {"label": "정배열(5>10)", "ok": true, "detail": "6,182 / 5,256"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,792 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:11.983033+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 40, "cost": 5008751, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111347, "target": 141206, "signals": [{"label": "손절선", "ok": true, "detail": "111,347 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 141,206"}, {"label": "추세(10일선)", "ok": true, "detail": "120,100"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T09:24:07.584370+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 131800, "qty": 37, "cost": 4877331, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 120690, "target": 154020, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "132,000 vs 108,670"}, {"label": "정배열(5>10)", "ok": true, "detail": "115,580 / 108,670"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,580 / 113,230"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.66% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "738,813 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.66% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
{"ts": "2026-07-30T09:26:07.531673+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6300, "qty": 834, "cost": 5254988, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5917, "target": 7067, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "6,280 vs 5,581"}, {"label": "정배열(5>10)", "ok": true, "detail": "5,722 / 5,581"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,722 / 5,620"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "109,080 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "71"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56500758.92050001,
|
||||
"cash": 49729888.414000005,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3627364.7637924887,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559940.05276684,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.560863+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2259605.2304230183,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.482559+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4841528.853832099,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 297,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.134813+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1821085.8869957556,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.157701+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3547525.853504033,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -20238352.469500042,
|
||||
"closed_trades": 85,
|
||||
"realized_pnl": -21269252.109500043,
|
||||
"closed_trades": 88,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.2130664107949999,
|
||||
"max_drawdown": 0.22011142445999995,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-29",
|
||||
"005930": "2026-06-23",
|
||||
@@ -106,7 +127,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -116,11 +137,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621011+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.503198+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.183337+09:00"
|
||||
}
|
||||
@@ -191,3 +191,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.482560+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.724599+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.479634+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.478291+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 642, "proceeds": 3575374, "entry_price": 6624, "pnl": -677833, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.833239+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.134822+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 297, "cost": 1820883, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.370987+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.349649+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.370967+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.157710+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.933639+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.106315+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.080909+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.106299+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:07.867097+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.560863+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56918920.823500015,
|
||||
"cash": 42616576.14,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3627364.7637924887,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.846251+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2230375.77623366,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5013998.744343751,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 75,
|
||||
"entry_price": 124880.0,
|
||||
"entry_at": "2026-07-29T10:24:01.484865+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114153,
|
||||
"target": 157060,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4760241.173848085,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 291,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.152605+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1786459.912670363,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.172576+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3470885.263866936,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 766,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.823641+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4834735.918983269,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 34,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.456357+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3206592.870573522,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -21967252.577500045,
|
||||
"closed_trades": 87,
|
||||
"realized_pnl": -22861096.287500046,
|
||||
"closed_trades": 90,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.2253959180249998,
|
||||
"max_drawdown": 0.23670020299999997,
|
||||
"last_exit": {
|
||||
"086790": "2026-07-29",
|
||||
"005930": "2026-06-23",
|
||||
@@ -106,7 +169,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,12 +180,13 @@
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"089970": "2026-07-28",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583395+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.504880+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.192156+09:00"
|
||||
}
|
||||
@@ -196,3 +196,13 @@
|
||||
{"ts": "2026-07-29T12:04:01.728248+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.484444+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.481087+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 633, "proceeds": 3525252, "entry_price": 6624, "pnl": -668237, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.847470+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,696"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.630159+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 762, "proceeds": 4456613, "entry_price": 6390, "pnl": -413298, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.425652+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(60일선)", "ok": true, "detail": "5,613"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:08.152609+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 291, "cost": 1784098, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.390869+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 42, "cost": 4776116, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.368210+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 42, "proceeds": 4699019, "entry_price": 113700, "pnl": -77097, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.390865+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.172579+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.823645+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 766, "cost": 4834185, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.456362+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 34, "cost": 3128469, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.942921+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 37, "cost": 4677502, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.470811+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.846251+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.513874+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.116228+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.513862+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57589786.01599998,
|
||||
"cash": 50302299.84549998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 31,
|
||||
"entry_price": 124922.58064516129,
|
||||
"entry_at": "2026-07-28T09:00:22.236421+09:00",
|
||||
"stop": 100700,
|
||||
"target": 197590,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 145,639 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2001993.4324754681,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.486776+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4871303.908250191,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 299,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.158176+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1833305.2441214651,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.178166+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3570553.5376633056,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19695807.33400004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -20684578.839000043,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.20743113984000028,
|
||||
"max_drawdown": 0.21431412839500025,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621059+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.506483+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.198278+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.486777+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.729949+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.486327+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.482773+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 644, "proceeds": 3586513, "entry_price": 6624, "pnl": -679947, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.853694+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.158180+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 299, "cost": 1833145, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.396406+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 44, "cost": 5003550, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.374299+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 44, "proceeds": 4922782, "entry_price": 113700, "pnl": -80769, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.396403+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.178169+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.948200+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.127031+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.100450+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.127028+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.526275+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 31, "proceeds": 3115613, "entry_price": 124923, "pnl": -757568, "pnl_pct": -19.39, "hold_from": "2026-07-28T09:00:22.236421+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 197,590"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57785184.154499985,
|
||||
"cash": 43187379.78399998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.858523+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2241144.287326385,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5059022.326624999,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 76,
|
||||
"entry_price": 124900.0,
|
||||
"entry_at": "2026-07-29T10:24:01.488774+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114173,
|
||||
"target": 157080,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4804885.651525278,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 294,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.164091+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1807632.1012232043,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.183754+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3511790.845106854,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 775,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.834349+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4891717.004707093,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 35,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.466995+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3244481.6990387705,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -21042870.53000004,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -21938549.890000038,
|
||||
"closed_trades": 91,
|
||||
"wins": 2,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21633495845500023,
|
||||
"max_drawdown": 0.2275985665600002,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,13 +180,14 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"089970": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29",
|
||||
"078930": "2026-07-29"
|
||||
"078930": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583512+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.508171+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.203526+09:00"
|
||||
}
|
||||
@@ -199,3 +199,13 @@
|
||||
{"ts": "2026-07-29T10:24:01.488775+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 38, "cost": 4689903, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.731619+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.488191+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.484421+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 636, "proceeds": 3541960, "entry_price": 6624, "pnl": -671492, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.859292+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.164095+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 294, "cost": 1802490, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.402030+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.379064+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.402026+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.183759+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.834353+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 775, "cost": 4890984, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.466998+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 35, "cost": 3220483, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.953439+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.533345+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.858523+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.534022+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.135701+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.534018+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56486509.805499986,
|
||||
"cash": 49721770.21849997,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.864085+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2259210.8123524096,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.490553+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4840682.195130728,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 296,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.168790+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1820759.233761088,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.188366+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3546894.320639113,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -20252601.58450004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -21283501.22450004,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21320890194500014,
|
||||
"max_drawdown": 0.22025160641500027,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621103+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.509777+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.208139+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.490554+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.733300+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.490106+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.486092+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 642, "proceeds": 3575374, "entry_price": 6624, "pnl": -677833, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.864927+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.168792+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 296, "cost": 1814752, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.406646+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.383379+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.406640+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.188369+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.958076+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.136931+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.110478+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.136928+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.539547+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.864085+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56858178.75599999,
|
||||
"cash": 42562145.01899998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.869049+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2228652.5102171055,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5010126.595875,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 75,
|
||||
"entry_price": 124880.0,
|
||||
"entry_at": "2026-07-29T10:24:01.492475+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114153,
|
||||
"target": 157060,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4756556.382853909,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 291,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.173280+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1785067.433710845,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.192221+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3468191.0592600796,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 765,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.842850+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4830985.601508463,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 34,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.476907+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3204099.6853260673,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -22027994.645000044,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -22921838.35500005,
|
||||
"closed_trades": 91,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.22600355297000022,
|
||||
"max_drawdown": 0.23730531421000017,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -118,12 +181,13 @@
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"089970": "2026-07-28",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583628+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.511434+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.212257+09:00"
|
||||
}
|
||||
@@ -198,3 +198,13 @@
|
||||
{"ts": "2026-07-29T12:04:01.734950+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.491941+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.487757+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 632, "proceeds": 3519683, "entry_price": 6624, "pnl": -667265, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.869638+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.636752+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 761, "proceeds": 4450764, "entry_price": 6390, "pnl": -412755, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.432390+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(60일선)", "ok": true, "detail": "5,613"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:08.173283+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 291, "cost": 1784098, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.410998+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 42, "cost": 4776116, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.387334+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 42, "proceeds": 4699019, "entry_price": 113700, "pnl": -77097, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.410995+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.192224+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.842852+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 765, "cost": 4827874, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.476910+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 34, "cost": 3128469, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.962375+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 37, "cost": 4677502, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.544147+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.869049+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.544554+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.146821+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.544552+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57589786.01599998,
|
||||
"cash": 50302299.84549998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 31,
|
||||
"entry_price": 124922.58064516129,
|
||||
"entry_at": "2026-07-28T09:00:22.654170+09:00",
|
||||
"stop": 100700,
|
||||
"target": 197590,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 145,639 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2001993.4324754681,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.494208+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4871303.908250191,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 299,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.177640+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1833305.2441214651,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.195975+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3570553.5376633056,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19695807.33400004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -20684578.839000043,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.20743113984000028,
|
||||
"max_drawdown": 0.21431412839500025,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621148+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.513048+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.216191+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.494210+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.736617+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.493778+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.489432+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 644, "proceeds": 3586513, "entry_price": 6624, "pnl": -679947, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.874058+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.177643+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 299, "cost": 1833145, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.414798+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 44, "cost": 5003550, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.390965+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 44, "proceeds": 4922782, "entry_price": 113700, "pnl": -80769, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.414795+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.195977+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.966300+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.145344+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.118312+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.145341+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.548002+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 31, "proceeds": 3115613, "entry_price": 124923, "pnl": -757568, "pnl_pct": -19.39, "hold_from": "2026-07-28T09:00:22.654170+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 197,590"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57785184.154499985,
|
||||
"cash": 43187379.78399998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.877598+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2241144.287326385,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5059022.326624999,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 76,
|
||||
"entry_price": 124900.0,
|
||||
"entry_at": "2026-07-29T10:24:01.496122+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114173,
|
||||
"target": 157080,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4804885.651525278,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 294,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.181805+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1807632.1012232043,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.199494+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3511790.845106854,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 775,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.850059+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4891717.004707093,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 35,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.484228+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3244481.6990387705,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -21042870.53000004,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -21938549.890000038,
|
||||
"closed_trades": 91,
|
||||
"wins": 2,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21633495845500023,
|
||||
"max_drawdown": 0.2275985665600002,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,13 +180,14 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"089970": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29",
|
||||
"078930": "2026-07-29"
|
||||
"078930": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.583751+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.514690+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.219742+09:00"
|
||||
}
|
||||
@@ -199,3 +199,13 @@
|
||||
{"ts": "2026-07-29T10:24:01.496123+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 38, "cost": 4689903, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.738264+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.495609+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.491085+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 636, "proceeds": 3541960, "entry_price": 6624, "pnl": -671492, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.878331+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.181807+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 294, "cost": 1802490, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.418473+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.394565+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.418470+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.199496+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.850061+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 775, "cost": 4890984, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.484230+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 35, "cost": 3220483, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.969734+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.551656+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.877598+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.552024+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.155246+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.552022+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57589786.01599998,
|
||||
"cash": 50302299.84549998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 31,
|
||||
"entry_price": 124922.58064516129,
|
||||
"entry_at": "2026-07-28T09:00:22.865306+09:00",
|
||||
"stop": 100700,
|
||||
"target": 197590,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 145,639 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2001993.4324754681,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.497839+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4871303.908250191,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 299,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.185692+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1833305.2441214651,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.202813+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3570553.5376633056,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19695807.33400004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -20684578.839000043,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.20743113984000028,
|
||||
"max_drawdown": 0.21431412839500025,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621367+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.516298+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.223308+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.497840+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.739932+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.497447+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.492765+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 644, "proceeds": 3586513, "entry_price": 6624, "pnl": -679947, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.882675+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.185695+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 299, "cost": 1833145, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.421897+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 44, "cost": 5003550, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.397807+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 44, "proceeds": 4922782, "entry_price": 113700, "pnl": -80769, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.421895+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.202815+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.972934+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.152216+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.125170+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.152214+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.555218+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 31, "proceeds": 3115613, "entry_price": 124923, "pnl": -757568, "pnl_pct": -19.39, "hold_from": "2026-07-28T09:00:22.865306+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 197,590"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57785184.154499985,
|
||||
"cash": 43187379.78399998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.886191+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2241144.287326385,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5059022.326624999,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 76,
|
||||
"entry_price": 124900.0,
|
||||
"entry_at": "2026-07-29T10:24:01.499758+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114173,
|
||||
"target": 157080,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4804885.651525278,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 294,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.189515+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1807632.1012232043,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.206106+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3511790.845106854,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 775,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.856246+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4891717.004707093,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 35,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.490882+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3244481.6990387705,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -21042870.53000004,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -21938549.890000038,
|
||||
"closed_trades": 91,
|
||||
"wins": 2,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21633495845500023,
|
||||
"max_drawdown": 0.2275985665600002,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,13 +180,14 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"089970": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29",
|
||||
"078930": "2026-07-29"
|
||||
"078930": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.584337+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.517970+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.226495+09:00"
|
||||
}
|
||||
@@ -199,3 +199,13 @@
|
||||
{"ts": "2026-07-29T10:24:01.499759+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 38, "cost": 4689903, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.741599+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.499281+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.494436+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 636, "proceeds": 3541960, "entry_price": 6624, "pnl": -671492, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.886709+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.189517+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 294, "cost": 1802490, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.425115+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.400873+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.425113+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.206108+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.856248+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 775, "cost": 4890984, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.490885+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 35, "cost": 3220483, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.976163+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.558426+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.886191+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.558735+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.162472+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.558733+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57589786.01599998,
|
||||
"cash": 50302299.84549998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 31,
|
||||
"entry_price": 124922.58064516129,
|
||||
"entry_at": "2026-07-28T09:00:23.083067+09:00",
|
||||
"stop": 100700,
|
||||
"target": 197590,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 145,639 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2001993.4324754681,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.501484+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4871303.908250191,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 299,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.192841+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1833305.2441214651,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.209160+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3570553.5376633056,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -19695807.33400004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -20684578.839000043,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.20743113984000028,
|
||||
"max_drawdown": 0.21431412839500025,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621411+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.519575+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.229484+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.501485+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.743276+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.501109+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.496111+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 644, "proceeds": 3586513, "entry_price": 6624, "pnl": -679947, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.890818+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.192843+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 299, "cost": 1833145, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.428065+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 44, "cost": 5003550, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.403829+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 44, "proceeds": 4922782, "entry_price": 113700, "pnl": -80769, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.428063+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.209162+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.979201+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.158629+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.131100+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.158627+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.561778+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 31, "proceeds": 3115613, "entry_price": 124923, "pnl": -757568, "pnl_pct": -19.39, "hold_from": "2026-07-28T09:00:23.083067+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 197,590"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 57785184.154499985,
|
||||
"cash": 43187379.78399998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.894214+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2241144.287326385,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5059022.326624999,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 76,
|
||||
"entry_price": 124900.0,
|
||||
"entry_at": "2026-07-29T10:24:01.503402+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114173,
|
||||
"target": 157080,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4804885.651525278,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 294,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.196316+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1807632.1012232043,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.212042+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3511790.845106854,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 775,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.861971+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4891717.004707093,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 35,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.497001+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3244481.6990387705,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -21042870.53000004,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -21938549.890000038,
|
||||
"closed_trades": 91,
|
||||
"wins": 2,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21633495845500023,
|
||||
"max_drawdown": 0.2275985665600002,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,13 +180,14 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"095610": "2026-07-27",
|
||||
"095610": "2026-07-30",
|
||||
"089970": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"090850": "2026-07-29",
|
||||
"078930": "2026-07-29"
|
||||
"078930": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.584451+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.521221+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.232327+09:00"
|
||||
}
|
||||
@@ -199,3 +199,13 @@
|
||||
{"ts": "2026-07-29T10:24:01.503403+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 38, "cost": 4689903, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.744951+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.502941+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.497779+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 636, "proceeds": 3541960, "entry_price": 6624, "pnl": -671492, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.894692+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.196318+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 294, "cost": 1802490, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.430837+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.406709+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.430835+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.212044+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.861973+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 775, "cost": 4890984, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.497003+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 35, "cost": 3220483, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.982026+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.564699+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.894214+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.564981+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.169075+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.564979+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56486509.805499986,
|
||||
"cash": 49721770.21849997,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.897785+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2259210.8123524096,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.505138+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4840682.195130728,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 296,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.199417+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1820759.233761088,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.214746+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3546894.320639113,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -20252601.58450004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -21283501.22450004,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21320890194500014,
|
||||
"max_drawdown": 0.22025160641500027,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621453+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.522836+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.235152+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.505139+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.746642+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.504788+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.499492+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 642, "proceeds": 3575374, "entry_price": 6624, "pnl": -677833, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.898397+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.199419+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 296, "cost": 1814752, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.433551+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.409492+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.433549+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.214748+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.984644+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.164212+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.136768+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.164210+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.567616+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.897785+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56858178.75599999,
|
||||
"cash": 42562145.01899998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.901179+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2228652.5102171055,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5010126.595875,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 75,
|
||||
"entry_price": 124880.0,
|
||||
"entry_at": "2026-07-29T10:24:01.507058+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114153,
|
||||
"target": 157060,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4756556.382853909,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 291,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.202607+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1785067.433710845,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.217304+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3468191.0592600796,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 765,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.867217+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4830985.601508463,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 34,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.502413+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3204099.6853260673,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -22027994.645000044,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -22921838.35500005,
|
||||
"closed_trades": 91,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.22600355297000022,
|
||||
"max_drawdown": 0.23730531421000017,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -118,12 +181,13 @@
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"089970": "2026-07-28",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.584565+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.524546+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.237889+09:00"
|
||||
}
|
||||
@@ -198,3 +198,13 @@
|
||||
{"ts": "2026-07-29T12:04:01.748392+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.506650+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.501159+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 632, "proceeds": 3519683, "entry_price": 6624, "pnl": -667265, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.901612+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.649726+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 761, "proceeds": 4450764, "entry_price": 6390, "pnl": -412755, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.445604+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(60일선)", "ok": true, "detail": "5,613"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:08.202609+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 291, "cost": 1784098, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.436251+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 42, "cost": 4776116, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.412136+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 42, "proceeds": 4699019, "entry_price": 113700, "pnl": -77097, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.436249+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.217305+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.867219+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 765, "cost": 4827874, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.502414+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 34, "cost": 3128469, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.987279+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 37, "cost": 4677502, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.570244+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.901179+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.570496+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.174854+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.570494+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56486509.805499986,
|
||||
"cash": 49721770.21849997,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
@@ -39,59 +39,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3559349.4158756477,
|
||||
"last_add_price": 92800
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.904456+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2259210.8123524096,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 39,
|
||||
"entry_price": 123400,
|
||||
"qty": 77,
|
||||
"entry_price": 124880.51948051948,
|
||||
"entry_at": "2026-07-29T10:24:01.508786+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114154,
|
||||
"target": 157061,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4840682.195130728,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 296,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.205546+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1820759.233761088,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 27,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.219804+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3546894.320639113,
|
||||
"last_add_price": 130900
|
||||
}
|
||||
},
|
||||
"realized_pnl": -20252601.58450004,
|
||||
"closed_trades": 86,
|
||||
"realized_pnl": -21283501.22450004,
|
||||
"closed_trades": 89,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.21320890194500014,
|
||||
"max_drawdown": 0.22025160641500027,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +128,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -117,11 +138,12 @@
|
||||
"105560": "2026-07-20",
|
||||
"222800": "2026-07-21",
|
||||
"089970": "2026-07-27",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"138040": "2026-07-28",
|
||||
"010950": "2026-07-29"
|
||||
"010950": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:40:00.621497+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.526150+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.240441+09:00"
|
||||
}
|
||||
@@ -193,3 +193,11 @@
|
||||
{"ts": "2026-07-29T10:24:01.508787+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 123400, "qty": 39, "cost": 4813322, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113016, "target": 154552, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "123,400 vs 110,075"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,140 / 110,075"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+51.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +47 · 기 +310 (천주)"}, {"label": "투자의견", "ok": true, "detail": "3.8/5"}, {"label": "상승여력", "ok": true, "detail": "+20%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.38% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "644,676 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.38% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "67"}]}
|
||||
{"ts": "2026-07-29T12:04:01.750126+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.508514+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.502828+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 642, "proceeds": 3575374, "entry_price": 6624, "pnl": -677833, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.905011+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.205548+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 296, "cost": 1814752, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.438869+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 43, "cost": 4889833, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.414638+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 43, "proceeds": 4810900, "entry_price": 113700, "pnl": -78933, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.438867+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.219805+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 27, "cost": 3534830, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:50:07.989874+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 38, "cost": 4803920, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T11:14:10.169477+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94400, "qty": 52, "cost": 4909536, "path": "pullback", "reason": "눌림목 지정가 94,648 도달", "stop": 92100, "target": 101300, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "94,300 vs 91,838"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,160 / 91,838"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -7 · 기 +40 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.61% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "615,364 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.61% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,648 (현재 94,300)"}]}
|
||||
{"ts": "2026-07-30T11:58:09.141824+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 94400, "pnl": -150435, "pnl_pct": -2.86, "hold_from": "2026-07-30T11:14:10.169475+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 101,300"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 98,436"}]}
|
||||
{"ts": "2026-07-30T13:08:08.572854+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.904456+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 56858178.75599999,
|
||||
"cash": 42562145.01899998,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"214450": {
|
||||
@@ -18,32 +18,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3624744.3180141365,
|
||||
"last_add_price": 356000
|
||||
},
|
||||
"095610": {
|
||||
"code": "095610",
|
||||
"name": "테스",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 36,
|
||||
"entry_price": 122750.0,
|
||||
"entry_at": "2026-07-29T09:02:02.907686+09:00",
|
||||
"stop": 100700,
|
||||
"target": 188900,
|
||||
"peak": 177000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 144,225 도달",
|
||||
"cur_price": 113300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 2228652.5102171055,
|
||||
"last_add_price": 122600
|
||||
},
|
||||
"030000": {
|
||||
"code": "030000",
|
||||
"name": "제일기획",
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 19,645 도달",
|
||||
"cur_price": 18800,
|
||||
"cur_price": 19130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5010126.595875,
|
||||
"last_add_price": 19370
|
||||
@@ -71,27 +50,111 @@
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 38,
|
||||
"entry_price": 123400,
|
||||
"qty": 75,
|
||||
"entry_price": 124880.0,
|
||||
"entry_at": "2026-07-29T10:24:01.510715+09:00",
|
||||
"stop": 113016,
|
||||
"target": 154552,
|
||||
"peak": 123600,
|
||||
"stop": 114153,
|
||||
"target": 157060,
|
||||
"peak": 127600,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 116500,
|
||||
"tranches": 1,
|
||||
"cur_price": 123100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4756556.382853909,
|
||||
"last_add_price": 123400
|
||||
"last_add_price": 126400
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 291,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.208371+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1785067.433710845,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"010950": {
|
||||
"code": "010950",
|
||||
"name": "S-Oil",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 26,
|
||||
"entry_price": 130900,
|
||||
"entry_at": "2026-07-30T09:16:13.222270+09:00",
|
||||
"stop": 116144,
|
||||
"target": 175169,
|
||||
"peak": 132700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 129000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3468191.0592600796,
|
||||
"last_add_price": 130900
|
||||
},
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 765,
|
||||
"entry_price": 6310,
|
||||
"entry_at": "2026-07-30T09:18:10.872227+09:00",
|
||||
"stop": 5799,
|
||||
"target": 7843,
|
||||
"peak": 6310,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6130,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4830985.601508463,
|
||||
"last_add_price": 6310
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 34,
|
||||
"entry_price": 92000,
|
||||
"entry_at": "2026-07-30T09:22:08.507277+09:00",
|
||||
"stop": 80806,
|
||||
"target": 125581,
|
||||
"peak": 92000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3204099.6853260673,
|
||||
"last_add_price": 92000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -22027994.645000044,
|
||||
"closed_trades": 88,
|
||||
"realized_pnl": -22921838.35500005,
|
||||
"closed_trades": 91,
|
||||
"wins": 1,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.22600355297000022,
|
||||
"max_drawdown": 0.23730531421000017,
|
||||
"last_exit": {
|
||||
"017670": "2026-06-19",
|
||||
"086790": "2026-07-29",
|
||||
@@ -107,7 +170,7 @@
|
||||
"093370": "2026-07-20",
|
||||
"034730": "2026-07-28",
|
||||
"032830": "2026-07-27",
|
||||
"319660": "2026-07-29",
|
||||
"319660": "2026-07-30",
|
||||
"011070": "2026-07-24",
|
||||
"003490": "2026-07-09",
|
||||
"402340": "2026-07-22",
|
||||
@@ -118,12 +181,13 @@
|
||||
"222800": "2026-07-21",
|
||||
"024060": "2026-07-27",
|
||||
"089970": "2026-07-28",
|
||||
"095610": "2026-07-28",
|
||||
"095610": "2026-07-30",
|
||||
"003680": "2026-07-29",
|
||||
"010950": "2026-07-29",
|
||||
"078930": "2026-07-29",
|
||||
"090850": "2026-07-29"
|
||||
"090850": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-15T14:55:00.584680+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.527830+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.242886+09:00"
|
||||
}
|
||||
@@ -198,3 +198,13 @@
|
||||
{"ts": "2026-07-29T12:04:01.751805+09:00", "side": "SELL", "code": "086790", "name": "하나금융지주", "price": 119200, "qty": 66, "proceeds": 7851859, "entry_price": 132600, "pnl": -901054, "pnl_pct": -10.11, "hold_from": "2026-07-10T09:26:06.510349+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,729 (현재 119,300)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 171,213"}, {"label": "추세(60일선)", "ok": true, "detail": "118,387"}, {"label": "수급(외/기)", "ok": false, "detail": "외 -11 · 기 -51"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:14:05.504496+09:00", "side": "SELL", "code": "003680", "name": "한성기업", "price": 5580, "qty": 632, "proceeds": 3519683, "entry_price": 6624, "pnl": -667265, "pnl_pct": -15.76, "hold_from": "2026-07-29T09:02:02.908063+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,600 (현재 5,590)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 9,697"}, {"label": "추세(60일선)", "ok": true, "detail": "4,858"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +185 · 기 +0"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T13:34:03.653021+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5860, "qty": 761, "proceeds": 4450764, "entry_price": 6390, "pnl": -412755, "pnl_pct": -8.29, "hold_from": "2026-07-29T09:28:01.448950+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,867 (현재 5,860)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,958"}, {"label": "추세(60일선)", "ok": true, "detail": "5,613"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +73 · 기 -3"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,525"}]}
|
||||
{"ts": "2026-07-30T09:04:08.208373+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 291, "cost": 1784098, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:08:12.441362+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 113700, "qty": 42, "cost": 4776116, "path": "pullback", "reason": "눌림목 지정가 154,382 도달", "stop": 113699, "target": 113703, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "113,400 vs 112,448"}, {"label": "정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "160,320 / 112,448"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+43.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +663 · 기 -505 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+61%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.46% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "423,533 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.46% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "42"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 154,382 (현재 113,400)"}]}
|
||||
{"ts": "2026-07-30T09:12:08.417014+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 112100, "qty": 42, "proceeds": 4699019, "entry_price": 113700, "pnl": -77097, "pnl_pct": -1.41, "hold_from": "2026-07-30T09:08:12.441360+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "113,699 (현재 112,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "112,432"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +663 · 기 -505"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:16:13.222272+09:00", "side": "BUY", "code": "010950", "name": "S-Oil", "price": 130900, "qty": 26, "cost": 3403911, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 116144, "target": 175169, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "130,900 vs 113,212"}, {"label": "정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "115,360 / 113,212"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+49.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -6 · 기 +178 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+21%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.51% (환산) vs 평균 0.32% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 116,900"}, {"label": "거래량 급증", "ok": true, "detail": "571,193 (환산) vs 평균 359,705"}, {"label": "회전율 급증", "ok": true, "detail": "0.51% (환산) vs 평균 0.32%"}, {"label": "RSI", "ok": true, "detail": "68"}]}
|
||||
{"ts": "2026-07-30T09:18:10.872229+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6310, "qty": 765, "cost": 4827874, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5799, "target": 7843, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,300 vs 5,621"}, {"label": "정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,726 / 5,621"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+46.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +87 · 기 +6 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.41% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "87,813 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.41% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
|
||||
{"ts": "2026-07-30T09:22:08.507278+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 92000, "qty": 34, "cost": 3128469, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 80806, "target": 125581, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,800 vs 75,118"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,720 / 75,118"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -49 · 기 +276 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+12%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "593,600 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "70"}]}
|
||||
{"ts": "2026-07-30T09:50:07.992279+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 126400, "qty": 37, "cost": 4677502, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 113016, "target": 154552, "signals": [{"label": "손절선", "ok": true, "detail": "113,016 (현재 126,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,552"}, {"label": "추세(60일선)", "ok": true, "detail": "110,122"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +9 · 기 +389"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 126,082"}]}
|
||||
{"ts": "2026-07-30T13:08:08.575309+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 100700, "qty": 36, "proceeds": 3618131, "entry_price": 122750, "pnl": -801532, "pnl_pct": -17.96, "hold_from": "2026-07-29T09:02:02.907686+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "100,700 (현재 100,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 188,900"}, {"label": "추세(60일선)", "ok": true, "detail": "98,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +331 · 기 -349"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T13:08:08.575548+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 91800, "qty": 52, "cost": 4774316, "path": "pullback", "reason": "눌림목 지정가 94,208 도달", "stop": 91799, "target": 91803, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "91,900 vs 91,798"}, {"label": "정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "추세 기울기(60일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "105,680 / 91,798"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+37.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -23 · 기 +38 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.37% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "557,141 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.37% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "44"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 94,208 (현재 91,900)"}]}
|
||||
{"ts": "2026-07-30T13:20:09.180299+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 52, "proceeds": 4759102, "entry_price": 91800, "pnl": -15214, "pnl_pct": -0.11, "hold_from": "2026-07-30T13:08:08.575546+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "91,799 (현재 91,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": false, "detail": "91,795"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -23 · 기 +38"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"cash": 37411808.638000004,
|
||||
"cash": 30020166.7685,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"055550": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "immediate",
|
||||
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
|
||||
"cur_price": 98500,
|
||||
"cur_price": 100200,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4371332.168068898,
|
||||
"last_add_price": 105800
|
||||
@@ -39,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 126900,
|
||||
"cur_price": 129000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3448434.606240806,
|
||||
"last_add_price": 130800
|
||||
@@ -60,32 +60,11 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "immediate",
|
||||
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
|
||||
"cur_price": 390500,
|
||||
"cur_price": 349000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3417673.0117698065,
|
||||
"last_add_price": 338000
|
||||
},
|
||||
"161890": {
|
||||
"code": "161890",
|
||||
"name": "한국콜마",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 80,
|
||||
"entry_price": 103750.0,
|
||||
"entry_at": "2026-07-21T11:08:01.673418+09:00",
|
||||
"stop": 92100,
|
||||
"target": 138700,
|
||||
"peak": 106700,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "immediate",
|
||||
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
|
||||
"cur_price": 96500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4194789.767858763,
|
||||
"last_add_price": 105800
|
||||
},
|
||||
"078930": {
|
||||
"code": "078930",
|
||||
"name": "GS",
|
||||
@@ -102,7 +81,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 83400,
|
||||
"cur_price": 85700,
|
||||
"tranches": 1,
|
||||
"tranche_value": 3055813.2324855765,
|
||||
"last_add_price": 92800
|
||||
@@ -123,17 +102,80 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "immediate",
|
||||
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
|
||||
"cur_price": 24650,
|
||||
"cur_price": 24600,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4829886.125812501,
|
||||
"last_add_price": 25650
|
||||
},
|
||||
"086790": {
|
||||
"code": "086790",
|
||||
"name": "하나금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 71,
|
||||
"entry_price": 123222.5352112676,
|
||||
"entry_at": "2026-07-30T09:04:08.796564+09:00",
|
||||
"stop": 111000,
|
||||
"target": 159890,
|
||||
"peak": 129950,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "immediate",
|
||||
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
|
||||
"cur_price": 124500,
|
||||
"tranches": 2,
|
||||
"tranche_value": 4425860.654266699,
|
||||
"last_add_price": 125200
|
||||
},
|
||||
"003680": {
|
||||
"code": "003680",
|
||||
"name": "한성기업",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 281,
|
||||
"entry_price": 6130,
|
||||
"entry_at": "2026-07-30T09:04:08.798504+09:00",
|
||||
"stop": 4793,
|
||||
"target": 10140,
|
||||
"peak": 6330,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 7,457 도달",
|
||||
"cur_price": 5800,
|
||||
"tranches": 1,
|
||||
"tranche_value": 1723803.5365682123,
|
||||
"last_add_price": 6130
|
||||
},
|
||||
"138040": {
|
||||
"code": "138040",
|
||||
"name": "메리츠금융지주",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 34,
|
||||
"entry_price": 124700,
|
||||
"entry_at": "2026-07-30T11:58:09.775094+09:00",
|
||||
"stop": 113759,
|
||||
"target": 157523,
|
||||
"peak": 124800,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 123100,
|
||||
"tranches": 1,
|
||||
"tranche_value": 4248451.425139817,
|
||||
"last_add_price": 124700
|
||||
}
|
||||
},
|
||||
"realized_pnl": -24366358.94700003,
|
||||
"closed_trades": 65,
|
||||
"realized_pnl": -25345909.14700003,
|
||||
"closed_trades": 66,
|
||||
"wins": 0,
|
||||
"peak_equity": 100000000,
|
||||
"max_drawdown": 0.2557259136199999,
|
||||
"max_drawdown": 0.259921332315,
|
||||
"last_exit": {
|
||||
"083450": "2026-07-06",
|
||||
"278470": "2026-07-14",
|
||||
@@ -172,8 +214,9 @@
|
||||
"252990": "2026-07-27",
|
||||
"086790": "2026-07-28",
|
||||
"475150": "2026-07-29",
|
||||
"095610": "2026-07-29"
|
||||
"095610": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
},
|
||||
"created_at": "2026-06-16T09:00:03.113416+09:00",
|
||||
"updated_at": "2026-07-29T15:28:01.529580+09:00"
|
||||
"updated_at": "2026-07-30T15:28:08.830005+09:00"
|
||||
}
|
||||
@@ -154,3 +154,8 @@
|
||||
{"ts": "2026-07-29T09:24:16.512599+09:00", "side": "BUY", "code": "475150", "name": "SK이터닉스", "price": 49500, "qty": 63, "cost": 3118968, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 43550, "target": 67750, "signals": [{"label": "손절선", "ok": true, "detail": "43,550 (현재 57,100)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 67,750"}, {"label": "추세(60일선)", "ok": true, "detail": "48,021"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +832 · 기 -202"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 54,378"}]}
|
||||
{"ts": "2026-07-29T10:50:06.436555+09:00", "side": "SELL", "code": "475150", "name": "SK이터닉스", "price": 43500, "qty": 126, "proceeds": 5470312, "entry_price": 49550, "pnl": -773924, "pnl_pct": -12.21, "hold_from": "2026-07-29T09:02:03.251105+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "43,550 (현재 43,550)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 70,700"}, {"label": "추세(60일선)", "ok": false, "detail": "47,830"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +596 · 기 -203"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-29T12:00:06.317119+09:00", "side": "SELL", "code": "095610", "name": "테스", "price": 110400, "qty": 19, "proceeds": 2093510, "entry_price": 149158, "pnl": -740915, "pnl_pct": -25.98, "hold_from": "2026-07-09T11:44:04.836352+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "110,758 (현재 110,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 264,357"}, {"label": "추세(60일선)", "ok": true, "detail": "98,957"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +449 · 기 -685"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T09:04:08.796573+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 121300, "qty": 36, "cost": 4367455, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 111000, "target": 152200, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "121,200 vs 118,418"}, {"label": "정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "120,840 / 118,418"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+34.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -214 · 기 +182 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 ➕"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.18% (환산) vs 평균 0.37% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 130,700"}, {"label": "거래량 급증", "ok": false, "detail": "494,880 (환산) vs 평균 1,026,357"}, {"label": "회전율 급증", "ok": false, "detail": "0.18% (환산) vs 평균 0.37%"}, {"label": "RSI", "ok": true, "detail": "51"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 119,347 (현재 121,200)"}]}
|
||||
{"ts": "2026-07-30T09:04:08.798512+09:00", "side": "BUY", "code": "003680", "name": "한성기업", "price": 6130, "qty": 281, "cost": 1722788, "path": "pullback", "reason": "눌림목 지정가 7,457 도달", "stop": 4793, "target": 10140, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "6,120 vs 4,866"}, {"label": "정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "6,182 / 4,866"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+65.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +234 · 기 +0 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 5.69% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 8,460"}, {"label": "거래량 급증", "ok": false, "detail": "267,687 (환산) vs 평균 353,452"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 5.69%"}, {"label": "RSI", "ok": true, "detail": "59"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 7,457 (현재 6,120)"}]}
|
||||
{"ts": "2026-07-30T09:16:13.761907+09:00", "side": "BUY", "code": "086790", "name": "하나금융지주", "price": 125200, "qty": 35, "cost": 4382657, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 111000, "target": 152200, "signals": [{"label": "손절선", "ok": true, "detail": "111,000 (현재 125,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 152,200"}, {"label": "추세(60일선)", "ok": true, "detail": "118,488"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -214 · 기 +182"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 124,618"}]}
|
||||
{"ts": "2026-07-30T11:58:09.726796+09:00", "side": "SELL", "code": "161890", "name": "한국콜마", "price": 91700, "qty": 80, "proceeds": 7321695, "entry_price": 103750, "pnl": -979550, "pnl_pct": -11.61, "hold_from": "2026-07-21T11:08:01.673418+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "92,100 (현재 91,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,700"}, {"label": "추세(60일선)", "ok": true, "detail": "91,797"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -7 · 기 +40"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
|
||||
{"ts": "2026-07-30T11:58:09.775106+09:00", "side": "BUY", "code": "138040", "name": "메리츠금융지주", "price": 124700, "qty": 34, "cost": 4240436, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 113759, "target": 157523, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "125,000 vs 110,102"}, {"label": "정배열(5>60)", "ok": true, "detail": "118,460 / 110,102"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "118,460 / 110,102"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +35 · 기 +392 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+19%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.44% (환산) vs 평균 0.17% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 123,300"}, {"label": "거래량 급증", "ok": true, "detail": "743,769 (환산) vs 평균 289,522"}, {"label": "회전율 급증", "ok": true, "detail": "0.44% (환산) vs 평균 0.17%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user