auto: 일일 백업 2026-08-05 02:00

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hyowons
2026-08-05 02:00:06 +09:00
parent 7e7d759b34
commit c03b3f2659
148 changed files with 3428 additions and 1380 deletions
+4
View File
File diff suppressed because one or more lines are too long
@@ -154,7 +154,16 @@ node@22 가 2026-07-20 에 `22.22.2` → `22.23.1` 로 올라가며 **바이너
- 사람 이름 송금(예: "박영춘", "이지윤")은 exact 룰로 등록하지 말고 default fallback 에 맡긴다. merchant_map 비대화 방지.
- `deposit` 은 default fallback 없음 — rule 없으면 raw 폴백 (수익/이체/환급 구분 위험 때문).
- `card_cancel` 은 **승인의 역분개**로 좌우를 뒤집어 POST 한다 (2026-08-03). 승인이 `{비용 ← 카드}` 이므로 취소는 `{카드 ← 비용}`. 부분취소도 취소 문자 금액 그대로 상쇄되어 맞는다. 이전엔 raw 폴백으로 후잉 자체 파서에 맡겼는데, 결과는 맞았지만 파싱을 외부에 의존하고 raw 폴백 알림이 매번 울렸다. 현대카드·신한카드(`매입취소`/`승인취소`) 공통.
- ⚠️ **후잉은 계정 그룹별로 쓸 수 있는 변이 정해져 있다**`비용(expenses)`**차변(left) 전용**, `수익(income)`은 **대변(right) 전용**이고 `자산·부채`만 양쪽 자유다. 위반하면 `[r_account] => 잘못된 값입니다`(비용을 우측에) 또는 `[l_account] => 잘못된 값입니다`(수익을 좌측에)로 **HTTP 200 + 실패 본문**이 온다. 이 제약을 몰라서 2026-08-03~04 회귀가 났다. 새 분개 방향을 만들 때 반드시 확인할 것.
- ⚠️ **후잉은 취소·환불 문자를 자동 처리하지 않는다.** 공식 FAQ(`/help/faqs/inserting/refund`)가 "기존의 구입 거래를 **찾아서 지워주거나**, 금액을 마이너스로..." 라고 **사용자에게 수동 안내**한다. raw 로 취소 원문을 보내도 원본 승인은 그대로 남는다. 2026-08-04 에 과거 3건(07-04 카카오 월드킹·06-09 현대 쿠팡·06-13 현대 네이버페이)에서 원본이 사라진 걸 보고 "후잉 파서가 지운다"고 판단했는데, **관리자님이 그동안 수동 삭제해 오신 것**이었다. 두 설명 모두 "건수 −1, 순액 일치"라 검산으로는 구분되지 않는다 — 같은 착각을 반복하지 말 것.
- `card_cancel`**원본 승인 거래를 찾아 PUT 으로 감액**한다 (2026-08-04, 관리자님 결정 — 수동 삭제를 없애는 게 목적). `_handle_card_cancel` → `whooing_balance.find_card_entries` 로 같은 카드·같은 상호(memo 토큰 매칭)·금액이 취소액 이상인 거래를 30일 창에서 찾고, **정확히 1건일 때만** `set_entry_money``원금액 취소액` 으로 줄인다. 전액취소면 0원 줄이 남지만 잔액·합계에 영향은 없다.
- ⚠️ **좌우를 뒤집은 역분개로 바꾸지 말 것** — 비용이 대변으로 가서 후잉이 거부한다(위 제약). 2026-08-03 에 이 방식으로 바꿨다가 **첫 취소 문자에서 동기화가 통째로 멈췄다**(`blocked_at` 이 커서를 잠가 뒤의 정상 결제까지 전부 대기).
- ⚠️ **거래 삭제는 API 로 불가능하다** — 후잉 OpenAPI 의 DELETE 는 `section_id` 를 쿼리·본문(urlencoded/JSON)·쿠키·경로 어디에서도 읽지 못한다(2026-08-04 전수 실측, 같은 본문을 PUT 으로 보내면 정상). 0원 줄을 지우려면 후잉 UI 에서 수동으로. 마이너스 분개(후잉 공식 안내안)도 가능하지만 ± 두 줄이 남아 채택하지 않았다.
- **후보가 0건이거나 2건 이상이면 감액하지 않고 raw 폴백**(오감액보다 안전). 이때는 **후잉이 알아서 처리해주지 않으므로 관리자님 수동 작업이 필요하다** — 그래서 폴백 건은 `new_raw` 에 그대로 실어 raw 폴백 텔레그램 알림이 울리게 둔다. 알림을 끄면 수동 작업이 필요한 걸 모르고 지나친다.
- ⚠️ **매칭은 `item` 이 아니라 `memo` 로 한다**`merchant_map` contains 룰이 `item` 을 재작성해서(동행복권→`복권`) item 은 상호와 다를 수 있지만 memo 는 항상 승인 SMS 원문이다.
- ⚠️ **memo 매칭은 토큰 단위**(`_memo_has_merchant`) — 단순 substring 이면 `쿠팡``쿠팡페이주` 승인까지 잡는다. 2026-08-04 에 두 상호가 같은 날 같은 금액(22,700원)으로 실제로 있었다.
- ⚠️ **`card_cancel` 을 내는 파서는 현대카드·신한카드(`매입취소`/`승인취소`) 둘뿐이다.** 카카오뱅크 `카드결제취소``KAKAOBANK_CARD_RE``카드결제\s+` 가 안 맞아 **파싱 자체가 실패**(`kind=None`)하고, 하나·신한은행은 입금/출금만 있다. **이들은 감액 대상이 아니라 raw 로 가고, 후잉도 처리하지 않으므로 관리자님 수동 삭제가 계속 필요하다.** 자동화하려면 `parsers.py` 보강 + 2026-08-03 픽스처 회귀 재실행이 필요하다 — **2026-08-04 관리자님 지시로 "실제 취소 문자가 올 때 처리"로 보류**. 판단 근거는 파싱이 실패해도 `_infer_raw_details` 가 정규식으로 금액·상호를 뽑아 raw 폴백 알림에 실어주기 때문(실측: 카카오 취소 문자 → `2,000원 · (주)월드킹`). 알림을 보고 그때 대응하면 된다.
- **삼성카드는 아예 동기화 대상이 아니다** — 발신번호 `+8215888700``whooing_account_map.json` 에서 `confirmed=False` 라 수집조차 안 되고, 실제 오는 문자는 전부 `(광고)` 이며 후잉 `삼성신용(효원)`(x77) 은 최근 90일 거래 0건이다(2026-08-04 확인). 취소를 기다릴 대상이 아니라, **다시 사용하기 시작하면 승인 문자부터 누락**되니 그때 `confirmed` 등록이 먼저다.
- 기존 contains(예: "스타벅스 → 식비") / exact(예: "방효원 → 기초잔액(효원)") 는 계속 유효. fallback 은 둘 다 miss 일 때만 탄다.
- ⚠️ **주유소는 두 곳을 함께 손대야 한다**`whooing_sync.py``FUEL_KEYWORDS`(150,000원 선승인/취소 스킵)와 `whooing_merchant_map.json` contains 룰(실제 결제 → `차량유지비/주유비`)이 한 쌍이다. 한쪽만 넣으면 선승인이 후잉에 남거나 실제 주유가 기타비용으로 샌다. 상호에 주유/석유가 없는 충전소(현대가스·한경에너)는 상호 자체를 등록. 한경에너는 선승인이 149,900원이라 `FUEL_PREAUTH_AMOUNT`(150,000 정확일치) 스킵엔 안 걸리고 분류만 적용된다.
- 결과적으로 자잘한 인명 송금·가맹점 미등록 건은 전부 기타비용으로 자동 분류되고, 분류가 필요한 것만 후잉 UI 에서 사후 조정하거나 merchant_map 에 규칙 추가한다.
@@ -267,7 +276,7 @@ python3 .../whooing_manual.py --dry-run --item ... --money ...
원칙:
- 차트에 없는 계정명으로 절대 추측 POST 금지. 모르면 반드시 재질문.
- 사용자가 이미 한 문장에 "스타벅스 5800원 신한카드로" 다 말했다면, 카테고리만 확인하고 바로 실행.
- 카드 취소/환불이면 structured 대신 `--message` raw 모드로 원문 보내 후잉이 상쇄하게 한다.
- 카드 취소/환불은 원본 승인 거래를 찾아 감액하는 게 원칙(위 `card_cancel` 항목). 후잉은 취소 문자를 자동 처리해주지 않으니 raw 로 보내고 끝내면 안 된다 — 원본이 그대로 남는다.
## 잔액 조회 (whooing_balance.py)
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
"""후잉 OpenAPI 잔액(bs.json) 조회.
"""후잉 OpenAPI 클라이언트 — 잔액(bs.json) 조회 + 거래(entries.json) 조회·감액.
Usage:
whooing_balance.py # 모든 섹션의 현재 잔액
@@ -11,11 +11,13 @@ from __future__ import annotations
import argparse
import json
import re
import secrets
import sys
import time
import urllib.parse
import urllib.request
from datetime import datetime, timedelta
from pathlib import Path
CRED_PATH = Path("/Users/snowoyh/.openclaw/credentials/whooing.json")
@@ -41,6 +43,130 @@ def api_get(endpoint: str, api_key: str, params: dict | None = None) -> dict:
return data["results"]
def api_key_from_cred() -> str:
"""credentials 에서 API 키 문자열 1회 생성."""
api_cfg = json.loads(CRED_PATH.read_text())["api"]
return build_api_key(api_cfg["app_id"], api_cfg["token"], api_cfg["signature"])
def api_request(method: str, endpoint: str, api_key: str,
params: dict | None = None, body: dict | None = None) -> dict:
"""후잉 OpenAPI 호출. GET 은 쿼리스트링, PUT 은 본문으로 파라미터를 보낸다.
⚠️ DELETE 는 쓸 수 없다. 후잉 서버가 DELETE 요청의 파라미터를 쿼리·본문(urlencoded/JSON)·
쿠키·경로 어디에서도 읽지 못해 항상 `section_id parameter is required` 로 실패한다
(2026-08-04 전수 실측. 같은 본문을 PUT 으로 보내면 정상이라 후잉 쪽 문제다).
거래를 지우는 대신 PUT 으로 금액을 줄이는 이유가 이것이다.
"""
url = f"{BASE}/{endpoint}"
if params:
url += "?" + urllib.parse.urlencode(params)
data = None
if body:
# 후잉은 '+' 를 공백으로 디코드하지 않는다. quote_via=quote 로 공백을 %20 으로 보낸다.
data = urllib.parse.urlencode(body, quote_via=urllib.parse.quote).encode()
req = urllib.request.Request(url, data=data, method=method, headers={"X-API-KEY": api_key})
if data:
req.add_header("Content-Type", "application/x-www-form-urlencoded")
with urllib.request.urlopen(req, timeout=15) as resp:
parsed = json.loads(resp.read().decode("utf-8"))
if parsed.get("code") != 200:
raise RuntimeError(
f"후잉 API error {parsed.get('code')}: {parsed.get('message')} "
f"{parsed.get('error_parameters') or ''} ({method} {endpoint})"
)
return parsed["results"]
def _section_list(api_key: str) -> list:
sections = api_request("GET", "sections.json", api_key)
if isinstance(sections, dict):
return sections.get("sections") or sections.get("rows") or list(sections.values())
return sections
def _name_to_account_id(api_key: str, section_id) -> dict[str, str]:
raw = api_request("GET", "accounts.json", api_key, {"section_id": section_id})
out: dict[str, str] = {}
for acc_list in raw.values():
if not isinstance(acc_list, list):
continue
for a in acc_list:
aid = str(a.get("account_id"))
out[a.get("title") or aid] = aid
return out
def _memo_has_merchant(memo: str, merchant: str) -> bool:
"""memo 에 merchant 가 토큰 단위로 들어있는지.
단순 substring 이면 '쿠팡''쿠팡페이주' 승인까지 잡아 엉뚱한 거래를 감액한다
(2026-08-04 실제로 두 상호가 같은 날 같은 금액으로 있었다). 카드 SMS 는 상호를
줄바꿈·공백으로 구분하므로 앞뒤가 공백이거나 문자열 끝일 때만 인정한다.
"""
if not memo or not merchant:
return False
for m in re.finditer(re.escape(merchant), memo):
before = memo[m.start() - 1] if m.start() > 0 else " "
after = memo[m.end()] if m.end() < len(memo) else " "
if before.isspace() and after.isspace():
return True
return False
def find_card_entries(card_account: str, money: int, merchant: str,
on_date: str, window_days: int = 30) -> list[dict]:
"""카드 취소의 원본 승인 거래 후보를 찾는다.
card_account 로 결제된 거래 중 memo 에 merchant 가 들어있고 금액이 취소액 이상인 것을
[on_date - window_days, on_date] 구간에서 찾는다. 금액 일치(전액취소)를 우선 반환하고,
없으면 초과분(부분취소 후보)을 반환한다.
⚠️ item 이 아니라 memo 로 매칭한다 — merchant_map 의 contains 룰이 item 을 재작성해서
(동행복권→'복권') item 은 상호와 다를 수 있지만, memo 는 항상 승인 SMS 원문이다.
⚠️ 판단은 호출측이 한다. 정확히 1건일 때만 손대는 게 안전하다.
"""
api_key = api_key_from_cred()
start = (datetime.strptime(on_date, "%Y%m%d") - timedelta(days=window_days)).strftime("%Y%m%d")
exact, over = [], []
for sec in _section_list(api_key):
sid = sec.get("section_id") or sec.get("id")
card_id = _name_to_account_id(api_key, sid).get(card_account)
if not card_id:
continue
rows = api_request("GET", "entries.json", api_key, {
"section_id": sid, "start_date": start, "end_date": on_date,
})
for row in (rows.get("rows") or []):
if str(row.get("r_account_id")) != card_id:
continue
if not _memo_has_merchant(row.get("memo") or "", merchant):
continue
row_money = row.get("money") or 0
if row_money == money:
exact.append({**row, "section_id": sid})
elif row_money > money:
over.append({**row, "section_id": sid})
return exact or over
def set_entry_money(entry: dict, money: int) -> None:
"""거래 금액을 money 로 바꾼다(PUT). money=0 도 후잉이 받는다(2026-08-04 실측).
조회한 나머지 필드를 그대로 되돌려보내 보존한다 — 부분 PUT 의 필드 보존 동작에
기대지 않는 편이 안전하다. entry_date 는 조회 시 '20260804.0000' 형태라 소수부를 뗀다.
"""
api_request("PUT", f"entries/{entry['entry_id']}.json", api_key_from_cred(), body={
"section_id": entry["section_id"],
"entry_date": str(entry.get("entry_date") or "").split(".")[0],
"l_account_id": entry.get("l_account_id"),
"r_account_id": entry.get("r_account_id"),
"item": entry.get("item") or "",
"money": str(money),
"memo": entry.get("memo") or "",
})
def fmt_won(n: int) -> str:
return f"{n:,}"
@@ -515,20 +515,9 @@ def build_structured(parsed, sender_info, accounts, merchant_map):
return {**base, "left": cat, "right": carrier_acct}
return {**base, "left": "기타비용", "right": carrier_acct}
if kind == "card_cancel":
# 승인의 역분개. 승인이 {left: 비용, right: 카드} 이므로 좌우를 뒤집는다.
# 부분취소(취소액 != 승인액)도 취소 문자 금액 그대로 상쇄되어 맞는다.
if rule:
left = rule.get("left")
if left:
out = {**base, "left": rule.get("right") or carrier_acct, "right": left}
if rule.get("item"):
out["item"] = rule["item"]
return out
return None
if cat:
return {**base, "left": carrier_acct, "right": cat}
return {**base, "left": carrier_acct, "right": "기타비용"}
# card_cancel 은 여기서 payload 를 만들지 않는다 — 처리 루프의 _handle_card_cancel 이
# 원본 승인 거래를 찾아 PUT 으로 감액한다. 좌우를 뒤집은 역분개는 후잉이 거부한다
# (비용 계정은 차변 전용 → `r_account 잘못된 값입니다`) — 2026-08-03 회귀의 원인.
if kind == "withdrawal":
if rule:
@@ -559,6 +548,38 @@ def build_structured(parsed, sender_info, accounts, merchant_map):
return None
def _handle_card_cancel(parsed, sender_info, accounts, dry_run=False):
"""카드 취소 → 원본 승인 거래를 찾아 취소액만큼 감액.
반환 (ok, detail). ok=False 면 원본을 특정하지 못한 것이니 호출측이 raw 폴백으로 넘긴다.
⚠️ 폴백은 자동 처리가 아니다 — 후잉은 취소 문자를 받아도 원본을 지워주지 않으므로
(공식 FAQ 도 환불은 수동 처리하라고 안내한다) 관리자님이 후잉 UI 에서 손봐야 한다.
그래서 폴백 건은 raw 폴백 알림에 그대로 실어 보낸다.
전액취소면 금액이 0 이 되어 줄은 남는다. 후잉 API 로는 거래를 지울 수 없기 때문이다
(whooing_balance.api_request 주석 참고). 잔액·합계에는 영향이 없다.
"""
carrier_acct = accounts.get("carrier_to_account", {}).get(sender_info.get("carrier"), "")
if not carrier_acct:
return False, "카드 계정 매핑 없음"
money = parsed["amount"]
cands = whooing_balance.find_card_entries(
carrier_acct, money, parsed["merchant"], parsed["entry_date"]
)
if len(cands) != 1:
return False, f"원본 승인 후보 {len(cands)}건 — 1건일 때만 감액"
orig = cands[0]
new_money = (orig.get("money") or 0) - money
detail = (f"{orig.get('item')} {orig.get('money'):,}원 → {new_money:,}"
f"(취소 {money:,}원, entry {orig['entry_id']})")
if dry_run:
return True, f"(dry-run) {detail}"
whooing_balance.set_entry_money(orig, new_money)
return True, detail
def _parse_iso_utc(iso: str) -> datetime:
return datetime.fromisoformat(iso.replace("Z", "+00:00"))
@@ -754,6 +775,7 @@ def main():
sent_transfer = 0
sent_structured = 0
sent_raw = 0
sent_cancel = 0
failed = 0
new_failures = []
new_raw = [] # raw 폴백으로 성공 처리된 건 (구조화 실패 신호) — 텔레그램 알림용
@@ -811,8 +833,42 @@ def main():
blocked_at = c["created_at"]
break
# 카드 취소는 상쇄 줄을 더하지 않고 원본 승인 거래를 감액한다.
# 원본을 못 찾으면 아래 raw 폴백으로 흘러간다(build_structured 가 None 을 준다).
if parsed and parsed.get("kind") == "card_cancel":
try:
cancel_ok, cancel_detail = _handle_card_cancel(
parsed, c["info"], accounts, args.dry_run
)
except Exception as e:
failed += 1
detail = f"{type(e).__name__}: {e}"
new_failures.append({
"sender": c["sender"], "label": c["info"]["label"],
"created_at": c["created_at"], "text": c["text"],
"mode": "cancel_reduce", "payload": {},
"status": 0, "response": detail[:500],
"failed_at": datetime.now(KST).isoformat(),
})
print(f" ❌ [cancel] {c['info']['label']} {c['created_at']} | {detail[:120]}")
blocked_at = c["created_at"]
break
if cancel_ok:
sent_cancel += 1
carrier_key = c["info"].get("carrier")
if carrier_key:
recovery_hints[carrier_key] = cancel_detail
print(f" [cancel] {c['info']['label']} {c['created_at']} | {cancel_detail}")
if c["created_at"] > (latest or ""):
latest = c["created_at"]
continue
print(f" ↩︎ [cancel→raw] {c['info']['label']} {c['created_at']} | {cancel_detail}")
# card_cancel 이 여기까지 오면 감액 실패 → raw 폴백만 남았다.
# apply_overrides 는 match 에 kind 가 없는 룰을 모든 kind 에 적용하므로, 그런 룰이
# 추가되면 취소가 좌우 뒤집힌 payload 로 새어나갈 수 있어 여기서 끊는다.
structured = None
if parsed:
if parsed and parsed.get("kind") != "card_cancel":
structured = apply_overrides(overrides, parsed, c["info"], accounts, merchant_map, c["created_at"])
if structured is None:
structured = build_structured(parsed, c["info"], accounts, merchant_map)
@@ -1138,9 +1194,9 @@ def main():
save_json(SYNC_STATE_FILE, sync_state)
if blocked_at:
print(f"⚠️ 후잉 동기화: transfer {sent_transfer}건, structured {sent_structured}건, raw {sent_raw}건, 실패 {failed}건 — {blocked_at} 에서 중단(다음 cron 재시도)")
print(f"⚠️ 후잉 동기화: transfer {sent_transfer}건, structured {sent_structured}건, raw {sent_raw}건, 취소감액 {sent_cancel}건, 실패 {failed}건 — {blocked_at} 에서 중단(다음 cron 재시도)")
else:
print(f"✅ 후잉 동기화: transfer {sent_transfer}건, structured {sent_structured}건, raw {sent_raw}건, 실패 {failed}건 (last={final_latest or latest})")
print(f"✅ 후잉 동기화: transfer {sent_transfer}건, structured {sent_structured}건, raw {sent_raw}건, 취소감액 {sent_cancel}건, 실패 {failed}건 (last={final_latest or latest})")
# 가희 잔액 리마인더 & 답신 자동 분개 (격리 — 실패해도 결제 sync 결과는 위에서 이미 출력됨)
run_gahee_reminder()
+1
View File
@@ -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회 축소 (관리자님 요청) |
| `surge-monitor` | 평일 09:0015:35 **매 1분** (`StartCalendarInterval` 396엔트리, 스크립트 self-skip) | `surge_monitor.py check` | **급등락 알림** (2026-08-04 도입). 자산웹 🔔 토글 켜진 종목만(`state/behive_surge_toggles.json`). 조회·알림 전용이라 `feedback_no_trade_auto_triggers` 예외 아님(주문 API 경로 없음). **두 기준 병행**: 거래소 **VI 발동**(급등락 여부를 거래소가 판정 → 문턱 불필요) + **자기 이력 분위수**(장중 이탈폭 ≥ 그 종목 과거 이탈폭 `SURGE_PCTL` p90, 확대는 p98). ⚠️ **고정 %를 쓰자는 제안은 거절할 근거가 있다** — 실측(관심·감시 65종목 × 280거래일, 2026-08-04) 장중 이탈폭 중간값 3.8%라 ±3%가 평범한 날이고, 종목별 변동성이 **22배 차**(ATR14 1.0~22.3%)라 ±5% 문턱이면 KODEX 미국S&P500 발생 0회 / SK이터닉스 75회다. 같은 5%가 한쪽엔 도달 불가·한쪽엔 노이즈. ⚠️ **ATR 배수도 폐기됐다 — 2026-08-04 관리자님 지적**("하루 최대 폭이 30%~+30%인데"). 국내 가격제한폭이 ±30%인데 ATR 배수는 상한이 없어 문턱이 제한폭 밖으로 밀려난다: 1차(ATR×1.5) 5/65종목, 확대(ATR×3.0) **31/65(48%)**가 발동 불가였다. 분위수는 실제 관측값이라 구조적으로 제한폭을 못 넘고(p90~p99 전부 30% 초과 0종목) 알림량이 정의상 (1−p)로 확정된다(p90 = 종목당 연 25회). **ATR 배수 재제안 금지.** ⚠️ 평시 사이클 **키움 콜 0** — behive_web `/api/realtime/quotes` 1콜이 현재가와 VI를 함께 준다(VI 1h는 시장 전역 broadcast라 구독 무관). 구독 상한에 걸려 빠진 종목만 ka10095 배치 1콜 폴백. ⚠️ **문턱은 하루 1회만 계산**(`state/surge_thresholds.json`) — `daily_candles_cache.get_candles`가 stale 캐시에 ka10081을 때리므로 매분 × 종목수면 폭주. ⚠️ **ka10081 유량 초당 5건** — 70종목 일괄 산출 시 26종목이 429로 실패(실측). 사이클당 12개·0.35s 간격으로 나눠 계산하고(70종목 ≈ 6분) **조회 실패는 캐시하지 않는다**(이력부족과 같이 `{}`로 굳히면 429 한 번에 그 종목이 하루 내내 VI만 감시). ⚠️ **VI 레그는 behive_web 프로세스 의존** — 죽으면 VI 알림이 조용히 사라지고 stderr 경고만(백업 트리거는 `feedback_no_unsanctioned_failover`대로 의도적 부재). dedup `state/surge_alerts.json` = 날짜·종목·방향 1회 + 확대 1회 = 종목당 하루 최대 2통. 로그 `logs/stock-surge-monitor.{log,err.log}` |
| `trailing-monitor` | 평일 09:0015: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 재실행. 알림 없음 |
+180 -2
View File
@@ -45,6 +45,7 @@ STOCK_NOTES = WORKSPACE / 'state' / 'behive_stock_notes.json'
CHART_HLINES = WORKSPACE / 'state' / 'behive_chart_hlines.json'
INTEREST_GROUPS = WORKSPACE / 'state' / 'behive_interest_groups.json'
HOLDEVAL_SAVED = WORKSPACE / 'state' / 'behive_holdeval_saved.json'
SURGE_TOGGLES = WORKSPACE / 'state' / 'behive_surge_toggles.json'
ALERTS_STATE = WORKSPACE / 'state' / 'watchlist_alerts.json'
HOLIDAYS_FILE = WORKSPACE / 'state' / 'market_holidays.json'
SNAPSHOT_FILE = WORKSPACE / 'state' / 'portfolio_daily_snapshot.json'
@@ -2209,6 +2210,93 @@ def _note_button_html(code: str, name: str) -> str:
)
def _surge_toggles_lock():
"""SURGE_TOGGLES 파일 직렬화 — _stock_notes_lock 과 동일 패턴, 별도 lock 파일."""
import fcntl as _fcntl
from contextlib import contextmanager as _cm
@_cm
def _ctx():
lock_path = SURGE_TOGGLES.with_suffix(SURGE_TOGGLES.suffix + '.lock')
lock_path.parent.mkdir(parents=True, exist_ok=True)
f = open(lock_path, 'a')
try:
_fcntl.flock(f.fileno(), _fcntl.LOCK_EX)
yield
finally:
try:
_fcntl.flock(f.fileno(), _fcntl.LOCK_UN)
finally:
f.close()
return _ctx()
def _load_surge_toggles() -> dict:
"""{'by_code': {code: {'name': str}}}. 급등락 알림 감시 대상 (surge_monitor.py 가 읽는다).
키는 종목코드 전용 메모(by_name fallback 있음) 달리 코드 없는 종목은 감시할 없다
(모니터가 시세 조회에 코드를 써야 하므로).
"""
if not SURGE_TOGGLES.exists():
return {'by_code': {}}
try:
d = json.loads(SURGE_TOGGLES.read_text())
if not isinstance(d.get('by_code'), dict):
d['by_code'] = {}
return d
except Exception:
return {'by_code': {}}
def _is_surge_on(code: str | None) -> bool:
code = (code or '').strip()
if not code:
return False
return bool(_load_surge_toggles().get('by_code', {}).get(code))
def _set_surge_toggle(code: str, name: str, on: bool) -> bool:
"""급등락 알림 on/off. 반환값은 적용 후 상태."""
code = ''.join(ch for ch in (code or '').strip() if ch.isalnum())
name = (name or '').strip()[:40]
if not code:
raise ValueError('종목코드가 필요합니다 (급등락 감시는 코드 기준)')
SURGE_TOGGLES.parent.mkdir(parents=True, exist_ok=True)
with _surge_toggles_lock():
d = _load_surge_toggles()
if on:
d['by_code'][code] = {'name': name}
else:
d['by_code'].pop(code, None)
tmp = SURGE_TOGGLES.with_suffix('.json.tmp')
tmp.write_text(json.dumps(d, ensure_ascii=False, indent=2))
tmp.replace(SURGE_TOGGLES)
return on
def _surge_toggle_button_html(code: str, name: str) -> str:
"""detail-name 줄(종목명 옆, `+ 태그` 왼쪽)의 급등락 알림 토글. 켜짐이면 🔔 + has-surge 강조.
문턱은 종목별 ATR14 × K surge_monitor 계산한다 (고정 % 아님) 여기선 on/off만.
아이콘 하나뿐이라(관리자님 요청, 2026-08-04) 무슨 버튼인지는 title 툴팁이 유일한 설명이다.
"""
code_s = (code or '').strip()
if not code_s:
return ''
name_s = (name or '').strip()
on = _is_surge_on(code_s)
cls = 'btn-surge has-surge' if on else 'btn-surge'
label = '🔔' if on else '🔕'
title = '급등락 알림 켜짐 — 누르면 끕니다' if on else '급등락 알림 꺼짐 — 누르면 켭니다'
return (
f'<button type="button" class="{cls}" data-surge-toggle="1"'
f' data-surge-code="{html.escape(code_s, quote=True)}"'
f' data-surge-name="{html.escape(name_s, quote=True)}"'
f' data-surge-on="{"1" if on else "0"}"'
f' aria-label="급등락 알림" title="{title}">{label}</button>'
)
def _chart_hlines_lock():
"""CHART_HLINES 파일 직렬화 — _stock_notes_lock 과 동일 패턴, 별도 lock 파일."""
import fcntl as _fcntl
@@ -2918,10 +3006,12 @@ def _render_row(c: dict, source: str = 'watchlist') -> str:
tag_add_btn = _tag_add_button_html(c.get('code') or '', c.get('stock') or '')
# 관심종목은 그룹 버튼도 +태그 옆에 (actions 아님).
group_add_btn = _interest_group_button_html(c.get('stock') or '') if source == 'interests' else ''
# 급등락 알림 토글은 +태그 왼쪽 (관리자님 지정 위치).
surge_btn = _surge_toggle_button_html(c.get('code') or '', c.get('stock') or '')
detail_name_html = ''
if not is_pending:
code_span = f'<span class="detail-code">{code}</span>' if code else ''
detail_name_html = f'<div class="detail-name">{stock}{code_span}{tag_add_btn}{group_add_btn}</div>'
detail_name_html = f'<div class="detail-name">{stock}{code_span}{surge_btn}{tag_add_btn}{group_add_btn}</div>'
# 현재가 아래 메타 라인 — 관심·감시는 비중·계좌 없어 시장(KOSPI/KOSDAQ)만.
_mkt_label = _market_label_html(code)
market_meta_html = f'<div class="detail-meta">{_mkt_label}</div>' if _mkt_label else ''
@@ -4056,6 +4146,8 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
row_key = (code or stock) + key_suffix
tag_add_btn = _tag_add_button_html(r.get('code') or '', r.get('stock') or '')
# 급등락 알림 토글 — +태그 왼쪽 (관심·감시 행과 같은 위치).
surge_btn = _surge_toggle_button_html(r.get('code') or '', r.get('stock') or '')
note_btn = _note_button_html(r.get('code') or '', r.get('stock') or '')
trade_btn = (
f'<div class="actions">'
@@ -4081,7 +4173,7 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
{candle_summary}
</summary>
<div class="detail">
<div class="detail-name">{stock}{f'<span class="detail-code">{code}</span>' if code else ''}<span class="detail-owner owner-{owner_cls}">{owner_disp}</span>{tag_add_btn}</div>
<div class="detail-name">{stock}{f'<span class="detail-code">{code}</span>' if code else ''}<span class="detail-owner owner-{owner_cls}">{owner_disp}</span>{surge_btn}{tag_add_btn}</div>
{f'<div class="detail-tag">{tag_chip}</div>' if tag_chip else ''}
{f'<div class="detail-simple"><span class="ds-lbl">현재가</span><span class="ds-val">{price_html}</span></div>' if price else ''}
<div class="detail-meta"><span class="dm-item">비중 {weight:.2f}%</span><span class="dm-item">{acct_label}</span>{_market_label_html(code)}</div>
@@ -5835,6 +5927,12 @@ details.row[open] > .detail {
.actions .btn-note:hover { background: rgba(201,178,125,0.14); border-color: #c9b27d; }
.actions .btn-note:active { transform: translateY(1px); }
.actions .btn-note.has-note { color: #f0c95a; border-color: rgba(240,201,90,0.5); background: rgba(240,201,90,0.12); }
/* 급등락 알림 토글 detail-name (종목명 , +태그 왼쪽). 아이콘 하나뿐이라 테두리 없이 둔다.
꺼짐은 흐리게(opacity), 켜짐은 선명 + 초록 배경으로 한눈에 구분. 터치 타깃은 24px 확보. */
.detail-name .btn-surge { align-self: center; flex: none; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 6px; background: transparent; font-size: 13px; line-height: 1; cursor: pointer; font-family: inherit; opacity: 0.45; filter: grayscale(1); transition: opacity .12s, background .12s; }
.detail-name .btn-surge:hover { opacity: 0.8; background: rgba(143,168,201,0.12); }
.detail-name .btn-surge:active { transform: translateY(1px); }
.detail-name .btn-surge.has-surge { opacity: 1; filter: none; background: rgba(111,211,163,0.16); }
.note-head-left { display: flex; align-items: center; gap: 8px; min-width: 0; }
.note-del-wrap { position: relative; display: inline-flex; }
.note-confirm { position: absolute; top: calc(100% + 6px); left: 0; display: flex; align-items: center; gap: 6px; background: #1b1f2a; border: 1px solid #3a2030; border-radius: 8px; padding: 6px 8px; box-shadow: 0 6px 18px rgba(0,0,0,0.4); white-space: nowrap; z-index: 5; }
@@ -10894,6 +10992,16 @@ def render_html() -> str:
'if(curLeader)b.classList.add("active");else b.classList.remove("active");'
'});'
'}'
# 급등락 토글 아이콘 즉시 반영. 같은 종목이 여러 패널에 중복 노출되므로 code로 전 인스턴스를 칠한다.
'function paintSurge(code,on){'
'if(!code)return;'
'document.querySelectorAll(\'[data-surge-toggle][data-surge-code="\'+code+\'"]\').forEach(function(b){'
'b.dataset.surgeOn=on?"1":"0";'
'b.classList.toggle("has-surge",!!on);'
'b.textContent=on?"\\uD83D\\uDD14":"\\uD83D\\uDD15";'
'b.title=on?"급등락 알림 켜짐 — 누르면 끕니다":"급등락 알림 꺼짐 — 누르면 켭니다";'
'});'
'}'
'function populateNoteForm(trigger){'
'var nm=document.getElementById("note-modal");if(!nm)return;'
'var name=trigger.getAttribute("data-note-stock")||"";'
@@ -11100,6 +11208,38 @@ def render_html() -> str:
'openModal("note-modal");'
'return;'
'}'
# 급등락 알림 토글 — 낙관적 갱신(즉시 반영) 후 POST. 실패하면 되돌린다.
# ⚠️ 패널 전체 새로고침(__behive_load)을 부르지 않는다 — 키움 조회까지 다시 돌아
# 버튼이 몇 초 뒤에야 바뀐다. 토글 말고 달라지는 게 없어서 DOM만 고치면 충분하고,
# 서버는 이미 _invalidate_panels_cache 했으니 다음 자동 새로고침이 알아서 일치시킨다.
'var surgeBtn=t.closest&&t.closest("[data-surge-toggle]");'
'if(surgeBtn){'
'e.preventDefault();e.stopPropagation();'
'if(surgeBtn.dataset.busy==="1")return;'
'surgeBtn.dataset.busy="1";'
'var sCode=surgeBtn.dataset.surgeCode||"";'
'var sName=surgeBtn.dataset.surgeName||"";'
'var wasOn=surgeBtn.dataset.surgeOn==="1";'
'paintSurge(sCode,!wasOn);'
'var body=new URLSearchParams();'
'body.append("code",sCode);'
'body.append("stock",sName);'
'body.append("on",wasOn?"0":"1");'
'fetch("/surge/toggle",{method:"POST",headers:{"Accept":"application/json","Content-Type":"application/x-www-form-urlencoded"},body:body.toString(),credentials:"same-origin"})'
'.then(function(r){return r.json().catch(function(){return {ok:false,error:"HTTP "+r.status};});})'
'.then(function(j){'
'if(j&&j.ok){'
'paintSurge(sCode,!!j.on);'
'showToast((sName||"종목")+" 급등락 알림 "+(j.on?"켰습니다":"껐습니다"));'
'}else{'
'paintSurge(sCode,wasOn);'
'showToast("급등락 알림 변경 실패: "+((j&&j.error)||"오류"));'
'}'
'})'
'.catch(function(){paintSurge(sCode,wasOn);showToast("네트워크 오류");})'
'.finally(function(){surgeBtn.dataset.busy="";});'
'return;'
'}'
'var gAssign=t.closest&&t.closest("[data-group-assign]");'
'if(gAssign){'
'e.preventDefault();e.stopPropagation();'
@@ -15090,6 +15230,44 @@ class Handler(BaseHTTPRequestHandler):
self.end_headers()
return
if self.path == '/surge/toggle':
# 급등락 알림 on/off. code 필수 (모니터가 코드로 시세를 조회하므로 name fallback 없음).
# on 파라미터 없으면 현재 상태를 뒤집는다.
code = (params.get('code') or [''])[0].strip()
on_raw = (params.get('on') or [''])[0].strip()
if not code:
if wants_json:
self._send_json(400, {'ok': False, 'error': '종목코드 없음'})
else:
self.send_error(400, 'Bad Request', explain='종목코드 없음')
return
try:
on = (on_raw in ('1', 'true', 'on')) if on_raw else (not _is_surge_on(code))
on = _set_surge_toggle(code, stock, on)
_invalidate_panels_cache()
except ValueError as e:
if wants_json:
self._send_json(400, {'ok': False, 'error': str(e)})
else:
self.send_error(400, 'Bad Request', explain=str(e))
return
except Exception as e:
traceback.print_exc()
if wants_json:
self._send_json(500, {'ok': False, 'error': str(e)})
else:
self.send_error(500, 'Internal Error', explain=str(e))
return
sys.stdout.write(f'[{self.log_date_time_string()}] {self.address_string()} POST {self.path} code={code} stock={stock} on={on} → ok\n')
sys.stdout.flush()
if wants_json:
self._send_json(200, {'ok': True, 'on': on})
else:
self.send_response(303)
self.send_header('Location', '/')
self.end_headers()
return
# /stock/<code>/generate — 새 보고서 큐 등록
if self.path.startswith('/stock/') and self.path.endswith('/generate'):
tail = self.path[len('/stock/'):-len('/generate')]
@@ -0,0 +1,455 @@
#!/usr/bin/env python3
"""토글 켜진 종목의 급등락 감시 → 레이 텔레그램 알림.
LLM을 깨우지 않음. 두 기준을 병행한다:
1. 거래소 VI 발동 — "이건 급등락이다"를 거래소가 공식 판정. 문턱을 우리가 정할 필요가 없다.
2. 자기 이력 분위수 — 장중 이탈폭(전일종가 대비)이 그 종목 과거 이탈폭의 p90 을 넘으면 알림.
고정 %를 쓰지 않는 이유 (실측 관심·감시 65종목 × 280거래일, 2026-08-04):
- 장중 이탈폭 중간값이 3.8% → ±3%는 급등락이 아니라 평범한 날
- 종목별 변동성이 22배 차(ATR14 1.0%~22.3%). ±5% 문턱이면 KODEX 미국S&P500 은 발생 0회,
SK이터닉스는 75회. 같은 5%가 한쪽엔 도달 불가, 한쪽엔 노이즈다.
⚠️ ATR 배수(ATR% × K)를 쓰지 않는 이유 — 2026-08-04 관리자님 지적으로 교체:
국내 주식 하루 가격제한폭이 ±30% 인데 ATR 배수는 상한이 없어 변동성 큰 종목의 문턱이
제한폭 밖으로 밀려난다. 실측: 1차(ATR×1.5)가 5/65 종목, 확대(ATR×3.0)가 31/65 종목(48%)에서
30% 초과 = **영원히 발동 불가**였다(ATR% 중간값이 10%라 확대는 절반이 죽는다).
분위수는 실제로 관측된 이탈폭이라 구조적으로 제한폭을 넘을 수 없다(p90~p99 전부 30% 초과 0종목).
덤으로 알림량이 정의상 (1-p) 비율로 확정된다 — p90 = 종목당 연 25회.
⚠️ 신규상장 첫날·정리매매는 제한폭 예외지만, 그런 종목은 이력이 없어 애초에 VI만 감시한다.
데이터원은 behive_web 의 /api/realtime/quotes — 현재가와 VI를 한 번에 주고 키움 호출이 0이다.
VI(1h)는 시장 전역 broadcast라 구독이 필요 없고, 현재가(0B)는 구독이 필요한데 behive_web 의
_rt_gather_codes() 가 이미 보유+관심+감시를 구독하므로 토글 종목은 그 부분집합이다.
구독 상한에 걸려 빠진 종목만 ka10095 배치 1콜로 폴백한다.
state:
behive_surge_toggles.json — 감시 대상 (behive_web 의 🔔 토글이 씀)
surge_thresholds.json — {date, by_code: {code: {thr, thr_big, prev_close, n}}}. 하루 1회만 계산
surge_alerts.json — {date: {code: [트리거키]}}. 방향별 1회 + 확대단계 1회
Usage:
python3 surge_monitor.py check # 1회 감시 (launchd 용)
python3 surge_monitor.py check --force # 장외에도 실행 (테스트용)
python3 surge_monitor.py dry-run # 판정만 출력, 텔레그램 발송 없음
python3 surge_monitor.py list # 토글 종목의 문턱(%)·발동가 출력
"""
from __future__ import annotations
import fcntl
import json
import sys
import time
import urllib.parse
import urllib.request
from contextlib import contextmanager
from datetime import datetime, timezone, timedelta
from pathlib import Path
KST = timezone(timedelta(hours=9))
WORKSPACE = Path('/Users/snowoyh/.openclaw/agents/stock/workspace')
sys.path.insert(0, str(WORKSPACE / 'scripts'))
sys.path.insert(0, str(WORKSPACE))
import kiwoom_client as kc # noqa: E402
STATE_DIR = WORKSPACE / 'state'
TOGGLES = STATE_DIR / 'behive_surge_toggles.json'
THR_CACHE = STATE_DIR / 'surge_thresholds.json'
ALERTS_STATE = STATE_DIR / 'surge_alerts.json'
CONFIG_PATH = Path('/Users/snowoyh/.openclaw/openclaw.json')
TELEGRAM_ACCOUNT = 'stock' # 레이 봇
# 1차 문턱 = 그 종목 과거 장중 이탈폭의 이 분위수. 통수를 정하는 유일한 손잡이 —
# 분위수라 알림량이 정의상 (1-p) 비율로 확정된다. 0.90 = 종목당 연 25회(≈2주 1번).
SURGE_PCTL = 0.90
# 확대 단계 — 1차 알림 후 여기까지 더 벌어지면 한 번 더. 종목당 하루 최대 2통.
SURGE_PCTL_BIG = 0.98
# 분위수 산출에 필요한 최소 관측일. 미달(신규상장 등)이면 VI만 감시한다.
MIN_HISTORY = 60
# 이력 조회 봉 수 — sqlite 캐시에서 읽는 양만 늘린다(추가 API 콜 없음).
HISTORY_COUNT = 400
# 문턱 산출 페이싱 — ka10081 유량이 초당 5건이라 캐시가 stale 한 종목이 많으면 429가 쏟아진다.
MAX_COMPUTE_PER_CYCLE = 12
COMPUTE_PACE_SEC = 0.35
# behive_web 실시간 엔드포인트. BIND_HOST='' 라 localhost 로 도달한다.
RT_URL = 'http://127.0.0.1:18790/api/realtime/quotes'
RT_TIMEOUT = 5
MARKET_OPEN = (9, 0)
MARKET_CLOSE = (15, 35) # 15:30 마감 + 최종 체결 버퍼
def load_json(path: Path, default):
if path.exists():
try:
return json.loads(path.read_text())
except Exception:
return default
return default
def save_json(path: Path, data):
path.parent.mkdir(parents=True, exist_ok=True)
tmp = path.with_suffix(path.suffix + '.tmp')
tmp.write_text(json.dumps(data, ensure_ascii=False, indent=2))
tmp.replace(path)
@contextmanager
def alerts_lock():
"""surge_alerts.json 동시 쓰기 직렬화. watchlist_monitor 와 동일 패턴, 별도 lock 파일."""
lock_path = ALERTS_STATE.with_suffix(ALERTS_STATE.suffix + '.lock')
lock_path.parent.mkdir(parents=True, exist_ok=True)
f = open(lock_path, 'a')
try:
fcntl.flock(f.fileno(), fcntl.LOCK_EX)
yield
finally:
try:
fcntl.flock(f.fileno(), fcntl.LOCK_UN)
finally:
f.close()
def is_market_hours() -> bool:
now = datetime.now(KST)
if now.weekday() >= 5:
return False
# KRX 휴장일도 거래 없음. 데이터 파일 누락이나 import 실패 시엔 평소대로 진행.
try:
from holiday_sync import is_holiday_today
if is_holiday_today():
return False
except Exception:
pass
mins = now.hour * 60 + now.minute
return (MARKET_OPEN[0] * 60 + MARKET_OPEN[1]) <= mins <= (MARKET_CLOSE[0] * 60 + MARKET_CLOSE[1])
def send_telegram(text: str) -> bool:
cfg = json.loads(CONFIG_PATH.read_text())
acct = cfg['channels']['telegram']['accounts'][TELEGRAM_ACCOUNT]
token = acct['botToken']
chat_ids = acct.get('allowFrom') or []
if not chat_ids:
print('no telegram chat_ids', file=sys.stderr)
return False
url = f'https://api.telegram.org/bot{token}/sendMessage'
ok = True
for chat_id in chat_ids:
data = urllib.parse.urlencode({
'chat_id': chat_id,
'text': text[:4000],
'disable_web_page_preview': 'true',
}).encode()
try:
req = urllib.request.Request(url, data=data, method='POST')
with urllib.request.urlopen(req, timeout=15) as r:
if r.status != 200:
ok = False
print(f'telegram HTTP {r.status}', file=sys.stderr)
except Exception as e:
print(f'telegram error: {e}', file=sys.stderr)
ok = False
return ok
# ---------------- 감시 대상 ----------------
def load_toggles() -> dict[str, str]:
"""{code: name} — behive_web 의 🔔 토글이 켠 종목만."""
raw = load_json(TOGGLES, {})
by_code = raw.get('by_code') if isinstance(raw, dict) else None
if not isinstance(by_code, dict):
return {}
out: dict[str, str] = {}
for code, v in by_code.items():
cc = kc._clean_code(code)
if not cc or not v:
continue
# v 는 True(레거시) 또는 {'name': ...}
out[cc] = (v.get('name') or '') if isinstance(v, dict) else ''
return out
# ---------------- 데이터원 ----------------
def fetch_realtime(codes: list[str]) -> tuple[dict, dict, bool]:
"""behive_web 실시간 허브에서 (quotes, vi, ok). 키움 호출 0.
허브가 콜드하거나 behive_web 이 죽어 있으면 ok=False — 호출측이 폴백/경고를 결정한다.
"""
if not codes:
return {}, {}, False
url = f'{RT_URL}?codes={",".join(codes)}'
try:
with urllib.request.urlopen(url, timeout=RT_TIMEOUT) as r:
d = json.loads(r.read().decode())
except Exception as e:
print(f'[warn] behive_web 실시간 조회 실패 ({e}) — VI 감시 불가, ATR만 진행', file=sys.stderr)
return {}, {}, False
return (d.get('quotes') or {}), (d.get('vi') or {}), bool(d.get('connected'))
def fetch_quotes_fallback(codes: list[str]) -> dict:
"""구독 상한에 걸려 허브에 없는 종목만 ka10095 배치 1콜로 보충."""
if not codes:
return {}
try:
return kc.get_watchlist_quotes(codes) or {}
except Exception as e:
print(f'[warn] ka10095 배치 실패: {e}', file=sys.stderr)
return {}
# ---------------- 문턱 (자기 이력 분위수) ----------------
def _quantile(sorted_vals: list[float], p: float) -> float:
"""오름차순 리스트의 p 분위수. 실측 스크립트와 같은 식(nearest-rank)을 써야 값이 일치한다."""
return sorted_vals[min(len(sorted_vals) - 1, int(len(sorted_vals) * p))]
def _compute_thresholds(code: str) -> tuple[dict | None, bool]:
"""(문턱 dict 또는 None, 재시도해야 하는가).
장중 이탈폭 = max(|고가−전일종가|, |저가−전일종가|) / 전일종가 × 100.
종가 대비가 아니라 **전일종가 대비 장중 최대 이탈폭**을 쓰는 이유 — 실시간 감시가 보는 값이
`현재가 vs 전일종가`(키움 pct)라서 같은 축으로 비교해야 한다. 종가기준은 장중 움직임을
과소평가해(중간값 3.8% vs 종가기준 1.x%) 문턱이 너무 낮게 잡힌다.
⚠️ 두 번째 반환값이 필요한 이유 — 조회 실패(429·네트워크)를 이력부족과 같이 취급해
빈 dict 로 캐시하면 그 종목이 **하루 내내 조용히 VI만 감시**하게 된다. 실패는 재시도 대상.
"""
try:
import daily_candles_cache as dcc
candles = dcc.get_candles(code, HISTORY_COUNT)
except Exception as e:
print(f'[{code}] 일봉 조회 실패 (다음 사이클 재시도): {e}', file=sys.stderr)
return None, True
if not candles or len(candles) < MIN_HISTORY:
return None, False
exc: list[float] = []
for i in range(1, len(candles)):
pc = candles[i - 1]['close']
if not pc:
continue
exc.append(max(abs(candles[i]['high'] - pc), abs(candles[i]['low'] - pc)) / pc * 100)
if len(exc) < MIN_HISTORY:
return None
exc.sort()
prev_close = candles[-1]['close']
if not prev_close:
return None, False
return {
'thr': round(_quantile(exc, SURGE_PCTL), 2),
'thr_big': round(_quantile(exc, SURGE_PCTL_BIG), 2),
'prev_close': prev_close,
'n': len(exc),
}, False
def get_threshold_map(codes: list[str]) -> dict[str, dict]:
"""종목별 문턱 맵. 하루 1회만 계산하고 캐시한다.
⚠️ daily_candles_cache.get_candles 는 캐시 최신봉이 어제보다 오래되면 ka10081 을 때린다.
매 사이클(1분) × 종목수만큼 호출하면 폭주하므로 날짜가 바뀔 때와 새 토글이 생길 때만 계산.
⚠️ 분위수 파라미터를 바꿨으면 캐시가 옛 값을 들고 있으니 `pctl` 서명이 다르면 재계산한다.
⚠️ **ka10081 유량 제한이 초당 5건**이라 종목을 한꺼번에 돌리면 429가 쏟아진다(2026-08-04 실측:
70종목 일괄 산출 시 26종목 실패). 그래서 사이클당 `MAX_COMPUTE_PER_CYCLE` 개까지만,
`COMPUTE_PACE_SEC` 간격으로 계산한다. 남은 종목은 다음 사이클이 이어받는다(1분 간격 × 396회라
장 시작 몇 분 안에 전부 채워진다). 조회 실패는 캐시하지 않아 다음 사이클에 재시도된다.
"""
today = datetime.now(KST).strftime('%Y-%m-%d')
sig = f'{SURGE_PCTL}/{SURGE_PCTL_BIG}'
cache = load_json(THR_CACHE, {})
fresh = cache.get('date') == today and cache.get('pctl') == sig
by_code = cache.get('by_code') if fresh else {}
if not isinstance(by_code, dict):
by_code = {}
missing = [c for c in codes if c not in by_code][:MAX_COMPUTE_PER_CYCLE]
if missing:
for i, c in enumerate(missing):
if i:
time.sleep(COMPUTE_PACE_SEC)
r, retry = _compute_thresholds(c)
if retry:
continue # 실패는 기록하지 않는다 — 다음 사이클에 다시 시도
by_code[c] = r if r else {}
save_json(THR_CACHE, {'date': today, 'pctl': sig, 'by_code': by_code})
return {c: v for c, v in by_code.items() if v.get('thr')}
# ---------------- 판정 ----------------
def evaluate(pct: float, thr: dict | None, vi: dict | None) -> list[tuple[str, str]]:
"""충족된 (트리거키, 사유라벨) 목록.
VI 발동 중이면 분위수 트리거는 생략한다 — 같은 사건을 두 번 알리지 않기 위해서.
"""
out: list[tuple[str, str]] = []
if vi and vi.get('active'):
t = (vi.get('trigger_time') or '').strip() or 'na'
kind = (vi.get('apply_kind') or '').strip() or 'VI'
out.append((f'vi:{t}', f'거래소 VI 발동 ({kind})'))
return out
if not thr or not thr.get('thr'):
return out
direction = 'up' if pct > 0 else 'down'
t1, t2 = thr['thr'], thr.get('thr_big') or 0
top1 = round((1 - SURGE_PCTL) * 100)
top2 = round((1 - SURGE_PCTL_BIG) * 100)
if t2 and abs(pct) >= t2:
out.append((f'{direction}2', f'{thr["n"]}일 중 상위 {top2}% 움직임 (문턱 {t2:.1f}%)'))
if abs(pct) >= t1:
out.append((f'{direction}', f'{thr["n"]}일 중 상위 {top1}% 움직임 (문턱 {t1:.1f}%)'))
return out
def build_message(records: list[dict]) -> str:
ts = datetime.now(KST).strftime('%m/%d %H:%M')
lines = [f'[급등락] {ts}', f'{len(records)}건 감지']
for r in records:
pct = r['pct']
icon = '🚀' if pct > 0 else '🔻'
word = '급등' if pct > 0 else '급락'
label = r['name'] or r['code']
lines.append('')
lines.append(f'{icon} #{label} {word} ({pct:+.2f}%)')
lines.append(f'• 현재가: {r["price"]:,}')
lines.append(f'• 사유: {r["reason"]}')
if r.get('vi_price'):
lines.append(f'• VI 발동가: {r["vi_price"]:,}')
return '\n'.join(lines)
# ---------------- 실행 ----------------
def _prune(state: dict, today: str) -> dict:
"""오늘·어제만 남긴다 (무한 증식 방지)."""
keep = {today, (datetime.now(KST) - timedelta(days=1)).strftime('%Y-%m-%d')}
return {k: v for k, v in state.items() if k in keep}
def run(dry: bool = False, force: bool = False) -> int:
if not force and not is_market_hours():
print(f'장외 시간 — skip ({datetime.now(KST).strftime("%Y-%m-%d %H:%M")})')
return 0
toggles = load_toggles()
if not toggles:
print('감시 대상 없음 — 자산웹에서 🔔 토글을 켜주세요')
return 0
codes = sorted(toggles)
quotes, vi_map, connected = fetch_realtime(codes)
missing = [c for c in codes if not (quotes.get(c) or {}).get('price')]
if missing:
for c, q in fetch_quotes_fallback(missing).items():
quotes[kc._clean_code(c)] = {'price': q.get('price'), 'pct': q.get('change_pct'), 'change': q.get('change')}
thr_map = get_threshold_map(codes)
today = datetime.now(KST).strftime('%Y-%m-%d')
day_state = load_json(ALERTS_STATE, {}).get(today) or {}
already = {f'{c}:{k}' for c, ks in day_state.items() if isinstance(ks, list) for k in ks}
pending: list[dict] = []
for code in codes:
q = quotes.get(code) or {}
price = q.get('price')
pct = q.get('pct')
if not price or pct is None:
continue
vi = vi_map.get(code)
for key, reason in evaluate(float(pct), thr_map.get(code), vi):
if f'{code}:{key}' in already:
continue
rec = {
'code': code,
'name': toggles.get(code) or '',
'price': int(price),
'pct': float(pct),
'key': key,
'reason': reason,
}
if vi and vi.get('active'):
rec['vi_price'] = vi.get('trigger_price') or 0
pending.append(rec)
already.add(f'{code}:{key}')
if dry:
print(f'감시 {len(codes)}종목 / 허브연결 {connected} / 문턱 산출 {len(thr_map)}종목')
for code in codes:
q = quotes.get(code) or {}
t = thr_map.get(code) or {}
thr = f'{t["thr"]:.1f}% / 확대 {t["thr_big"]:.1f}%' if t.get('thr') else '— (이력부족, VI만)'
print(f' {code} {toggles.get(code) or "":<12} 등락 {q.get("pct")}% / 문턱 {thr}'
f'{" / VI" if (vi_map.get(code) or {}).get("active") else ""}')
if pending:
print('--- DRY ---')
print(build_message(pending))
print(f'done. watched={len(codes)} triggered={len(pending)}')
return 0
if not pending:
print(f'done. watched={len(codes)} triggered=0')
return 0
if send_telegram(build_message(pending)):
with alerts_lock():
latest = _prune(load_json(ALERTS_STATE, {}), today)
day = latest.setdefault(today, {})
for r in pending:
bucket = day.setdefault(r['code'], [])
if r['key'] not in bucket:
bucket.append(r['key'])
print(f'alerted {r["code"]} {r["name"]}:{r["key"]} {r["pct"]:+.2f}% @ {r["price"]:,}')
save_json(ALERTS_STATE, latest)
print(f'done. watched={len(codes)} triggered={len(pending)}')
return 0
def cmd_list() -> int:
toggles = load_toggles()
if not toggles:
print('감시 대상 없음 — 자산웹에서 🔔 토글을 켜주세요')
return 0
codes = sorted(toggles)
thr_map = get_threshold_map(codes)
top1 = round((1 - SURGE_PCTL) * 100)
top2 = round((1 - SURGE_PCTL_BIG) * 100)
print(f'감시 {len(codes)}종목 — 1차=자기이력 상위 {top1}% / 확대=상위 {top2}%')
print(f'{"종목":<16}{"전일종가":>10}{"1차":>7}{"급등가":>10}{"급락가":>10}{"확대":>7}')
for c in codes:
t = thr_map.get(c) or {}
name = (toggles[c] or c)[:15]
if not t.get('thr'):
print(f'{name:<16}{"이력 부족 — VI만 감시":>30}')
continue
pv, t1, t2 = t['prev_close'], t['thr'], t['thr_big']
print(f'{name:<16}{pv:>10,}{t1:>6.1f}%{round(pv * (1 + t1 / 100)):>10,}'
f'{round(pv * (1 - t1 / 100)):>10,}{t2:>6.1f}%')
print(f'\n※ VI 발동은 이 문턱과 별개로 먼저 알림 (정적VI 전일종가 ±10% 부근)')
print(f'※ 문턱은 하루 가격제한폭 ±30% 안에 있음이 보장됨 (실제 관측된 이탈폭의 분위수)')
return 0
def main():
cmd = sys.argv[1] if len(sys.argv) > 1 else 'help'
force = '--force' in sys.argv[2:]
try:
if cmd == 'check':
return run(dry=False, force=force)
if cmd == 'dry-run':
return run(dry=True, force=True)
if cmd == 'list':
return cmd_list()
print(__doc__, file=sys.stderr)
return 2
except Exception as e:
import traceback
tb = traceback.format_exc()
print(f'[fatal] {e}\n{tb}', file=sys.stderr)
try:
send_telegram(f'⚠️ [surge_monitor] 실행 실패\n{type(e).__name__}: {e}')
except Exception:
pass
return 1
if __name__ == '__main__':
sys.exit(main())
@@ -100,3 +100,5 @@
{"date": "2026-07-31", "market": "KOSPI", "market_label": "코스피", "rise": 775, "upper": 12, "fall": 127, "lower": 0, "steady": 15, "adr": 619.69, "personal": -82840, "foreign": 72410, "institutional": 11503, "captured_at": "2026-07-31T21:00:02.143730+09:00"}
{"date": "2026-08-03", "market": "KOSDAQ", "market_label": "코스닥", "rise": 1170, "upper": 11, "fall": 468, "lower": 0, "steady": 89, "adr": 252.35, "personal": 302, "foreign": -2092, "institutional": 1669, "captured_at": "2026-08-03T21:00:05.036019+09:00"}
{"date": "2026-08-03", "market": "KOSPI", "market_label": "코스피", "rise": 455, "upper": 3, "fall": 419, "lower": 0, "steady": 43, "adr": 109.31, "personal": 46523, "foreign": -28220, "institutional": -19516, "captured_at": "2026-08-03T21:00:05.036019+09:00"}
{"date": "2026-08-04", "market": "KOSDAQ", "market_label": "코스닥", "rise": 1505, "upper": 11, "fall": 175, "lower": 0, "steady": 47, "adr": 866.29, "personal": -2587, "foreign": -2775, "institutional": 5438, "captured_at": "2026-08-04T21:00:01.937958+09:00"}
{"date": "2026-08-04", "market": "KOSPI", "market_label": "코스피", "rise": 788, "upper": 1, "fall": 96, "lower": 0, "steady": 31, "adr": 821.88, "personal": 8187, "foreign": -3716, "institutional": -5385, "captured_at": "2026-08-04T21:00:01.937958+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": 6056967.494499985,
"cash": 70569.66949998494,
"initial": 100000000,
"positions": {
"010950": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 5572914.42378125,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 2,
"tranche_value": 5505297.51634375,
"last_add_price": 6030
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5640114.3750312505,
"last_add_price": 353000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,643 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5547990.7530625,
"last_add_price": 18950
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:05.277095+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3612125.2394573665,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5035879.961218749,
"last_add_price": 127700
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4803063.4110624995,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 66,
"entry_price": 90689.39393939394,
"entry_at": "2026-08-04T09:34:08.150378+09:00",
"stop": 79324,
"target": 124784,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4797930.468406249,
"last_add_price": 93500
}
},
"realized_pnl": -23318600.42950002,
@@ -171,5 +192,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-11T09:00:01.943184+09:00",
"updated_at": "2026-08-03T15:28:07.820881+09:00"
"updated_at": "2026-08-04T15:28:07.542222+09:00"
}
@@ -67,3 +67,5 @@
{"ts": "2026-07-31T09:06:06.330737+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 120, "proceeds": 9305818, "entry_price": 89875, "pnl": -1480800, "pnl_pct": -13.55, "hold_from": "2026-07-23T09:46:06.299578+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,839 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,984"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:10.581416+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 371, "cost": 4790328, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 17699, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:08.464738+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 357, "cost": 4791659, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 17699, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 17,699"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:34:08.150391+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 53, "cost": 4770716, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "89,800 vs 81,060"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,320 / 81,060"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:11.011486+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 13, "cost": 1215682, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 42966325.76350002,
"cash": 35886663.97350001,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3936003.3225085386,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5296043.025056097,
"last_add_price": 126400
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,653 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5514104.658843751,
"last_add_price": 19090
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:06.859145+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2020237.3208749255,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3949543.523644232,
"last_add_price": 131800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5464347.78131507,
"last_add_price": 6300
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3504336.4241500003,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 77,
"entry_price": 91929.87012987013,
"entry_at": "2026-08-04T09:50:08.969520+09:00",
"stop": 80565,
"target": 108977,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3560762.7001641323,
"last_add_price": 93500
}
},
"realized_pnl": -13204780.888500012,
@@ -172,5 +193,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-11T09:00:01.944232+09:00",
"updated_at": "2026-08-03T15:28:08.496243+09:00"
"updated_at": "2026-08-04T15:28:08.764738+09:00"
}
@@ -66,3 +66,5 @@
{"ts": "2026-07-31T09:06:06.408934+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 85, "proceeds": 6591621, "entry_price": 89534, "pnl": -1019920, "pnl_pct": -13.22, "hold_from": "2026-07-23T09:50:01.505016+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,555 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,003"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:11.186394+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 271, "cost": 3499135, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 15304, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:09.141957+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 261, "cost": 3503145, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:50:08.969522+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 39, "cost": 3526129, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79421, "target": 106869, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "90,300 vs 81,110"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,420 / 81,110"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,420 / 75,093"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.87% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "805,693 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.87% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:12.149555+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 38, "cost": 3553533, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79421, "target": 106869, "signals": [{"label": "손절선", "ok": true, "detail": "79,421 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,869"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3962363.617644489,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5549046.703468754,
"last_add_price": 120500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5150762.675171776,
"last_add_price": 125200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,019 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5467064.310906254,
"last_add_price": 19090
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:06.863063+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2002983.4606684945,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3940896.531574532,
"last_add_price": 131800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5453229.880263703,
"last_add_price": 6300
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3497500.5799993444,
"last_add_price": 13420
@@ -194,5 +194,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-11T09:00:01.944251+09:00",
"updated_at": "2026-08-03T15:28:08.498657+09:00"
"updated_at": "2026-08-04T15:28:08.766974+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 24471921.457000043,
"cash": 22840876.837000042,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4980582.661409654,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5535494.525500003,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 2,135 도달",
"cur_price": 1905,
"cur_price": 1960,
"tranches": 2,
"tranche_value": 2595536.5029300014,
"last_add_price": 1951
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5213821.568625003,
"last_add_price": 120500
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:06.866644+09:00",
"stop": 5362,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2521548.49371356,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4926883.783968752,
"last_add_price": 6120
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4300842.818074627,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:08.850905+09:00",
"stop": 104818,
"target": 198064,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,279 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1735775.3707943999,
"last_add_price": 135900
}
},
"realized_pnl": -20908776.87650003,
@@ -177,5 +198,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-11T09:00:01.944270+09:00",
"updated_at": "2026-08-03T15:28:09.080297+09:00"
"updated_at": "2026-08-04T15:28:09.347718+09:00"
}
@@ -116,3 +116,4 @@
{"ts": "2026-08-03T09:44:09.371424+09:00", "side": "BUY", "code": "090850", "name": "현대이지웰", "price": 6120, "qty": 804, "cost": 4921218, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 5752, "target": 6857, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "6,120 vs 5,345"}, {"label": "정배열(5>20)", "ok": true, "detail": "5,690 / 5,345"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "5,690 / 5,618"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+31.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +80 · 기 +5 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.61% (환산) vs 평균 0.22% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 5,700"}, {"label": "거래량 급증", "ok": true, "detail": "132,260 (환산) vs 평균 49,512"}, {"label": "회전율 급증", "ok": true, "detail": "0.61% (환산) vs 평균 0.22%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-03T12:00:11.776427+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 333, "cost": 4299675, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 15304, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:09.723448+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 320, "cost": 4295044, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:08.850906+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 12, "cost": 1631045, "path": "pullback", "reason": "눌림목 지정가 156,279 도달", "stop": 104818, "target": 198064, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,279 (현재 135,700)"}]}
@@ -1,5 +1,5 @@
{
"cash": 19960067.561499998,
"cash": 15993912.913999999,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5156172.079657566,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,012 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5806232.125812501,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5368293.320125001,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5180051.180047499,
"last_add_price": 125200
@@ -97,37 +97,16 @@
"entry_at": "2026-07-30T09:04:07.457322+09:00",
"stop": 5363,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2599049.62031184,
"last_add_price": 6550
},
"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": 6020,
"tranches": 1,
"tranche_value": 5392894.7928125,
"last_add_price": 6300
},
"194370": {
"code": "194370",
"name": "제이에스코퍼레이션",
@@ -144,14 +123,35 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4464385.527789056,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 98,
"entry_price": 91918.36734693877,
"entry_at": "2026-08-04T09:50:09.564914+09:00",
"stop": 83395,
"target": 108966,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4532723.825333739,
"last_add_price": 93500
}
},
"realized_pnl": -18308294.081500027,
"closed_trades": 33,
"realized_pnl": -18652405.504000027,
"closed_trades": 34,
"wins": 2,
"peak_equity": 101690998.13850003,
"max_drawdown": 0.2049465569225206,
@@ -169,9 +169,9 @@
"003680": "2026-07-29",
"252990": "2026-07-28",
"010950": "2026-08-03",
"090850": "2026-07-29",
"090850": "2026-08-04",
"078930": "2026-07-31"
},
"created_at": "2026-06-11T09:00:01.944290+09:00",
"updated_at": "2026-08-03T15:28:09.092028+09:00"
"updated_at": "2026-08-04T15:28:09.359273+09:00"
}
@@ -95,3 +95,6 @@
{"ts": "2026-08-03T09:34:08.538141+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 120300, "qty": 38, "proceeds": 4562486, "entry_price": 131800, "pnl": -446665, "pnl_pct": -8.73, "hold_from": "2026-07-30T09:24:07.511679+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,690 (현재 120,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,020"}, {"label": "추세(10일선)", "ok": true, "detail": "107,510"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 135,311"}]}
{"ts": "2026-08-03T12:00:11.789230+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 345, "cost": 4454618, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 15304, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:09.735696+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 332, "cost": 4456108, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:50:09.564920+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 50, "cost": 4520678, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 82166, "target": 106869, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "90,300 vs 81,110"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,420 / 81,110"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,420 / 75,093"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.87% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "805,693 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.87% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:12.762882+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 48, "cost": 4488673, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 82166, "target": 106869, "signals": [{"label": "손절선", "ok": true, "detail": "82,166 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,869"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
{"ts": "2026-08-04T13:26:12.235766+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 855, "proceeds": 5043197, "entry_price": 6300, "pnl": -344111, "pnl_pct": -6.19, "hold_from": "2026-07-30T09:26:07.458674+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,917 (현재 5,910)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,067"}, {"label": "추세(10일선)", "ok": true, "detail": "5,544"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +36 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,419"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5184250.1290937485,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5024795.592812498,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4675255.455593748,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4550435.925312498,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.466771+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3342107.250162302,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 4604300.898906248,
"last_add_price": 130900
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4614360.447343747,
"last_add_price": 6310
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4446388.7381874975,
"last_add_price": 13420
@@ -199,5 +199,5 @@
"161890": "2026-07-30"
},
"created_at": "2026-06-15T14:55:00.582771+09:00",
"updated_at": "2026-08-03T15:28:09.100012+09:00"
"updated_at": "2026-08-04T15:28:09.366318+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5435113.820843748,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5357608.233093748,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5057738.410843747,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5030428.7588749975,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.473311+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3698158.582805608,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 5098537.405531247,
"last_add_price": 130900
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5110875.1474062465,
"last_add_price": 6310
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4920739.488124997,
"last_add_price": 13420
@@ -199,5 +199,5 @@
"161890": "2026-07-30"
},
"created_at": "2026-06-15T14:55:00.582787+09:00",
"updated_at": "2026-08-03T15:28:09.105445+09:00"
"updated_at": "2026-08-04T15:28:09.372387+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5274205.950343749,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5136044.188124998,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4798325.220406247,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4697478.874937497,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.479053+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3453556.2895330573,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 4762406.753156248,
"last_add_price": 130900
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4773756.949406248,
"last_add_price": 6310
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4594021.1274374975,
"last_add_price": 13420
@@ -199,5 +199,5 @@
"161890": "2026-07-30"
},
"created_at": "2026-06-15T14:55:00.582803+09:00",
"updated_at": "2026-08-03T15:28:09.109956+09:00"
"updated_at": "2026-08-04T15:28:09.377662+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 20039127.409000013,
"cash": 14570161.487000009,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4947379.149752503,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5342833.247656252,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5120146.001656252,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4929642.288776176,
"last_add_price": 125200
@@ -97,37 +97,16 @@
"entry_at": "2026-07-30T09:04:07.484676+09:00",
"stop": 5363,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2477780.379475499,
"last_add_price": 6550
},
"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": 6020,
"tranches": 1,
"tranche_value": 5134489.040718751,
"last_add_price": 6310
},
"194370": {
"code": "194370",
"name": "제이에스코퍼레이션",
@@ -144,14 +123,56 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4296364.655919675,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:09.467464+09:00",
"stop": 104818,
"target": 198064,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,279 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1735357.9457375815,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 94,
"entry_price": 91917.02127659574,
"entry_at": "2026-08-04T09:48:09.782722+09:00",
"stop": 83393,
"target": 108965,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4361392.052247569,
"last_add_price": 93500
}
},
"realized_pnl": -21318397.539000034,
"closed_trades": 47,
"realized_pnl": -21645622.315500036,
"closed_trades": 48,
"wins": 4,
"peak_equity": 101291892.54300004,
"max_drawdown": 0.2315722523502305,
@@ -174,10 +195,10 @@
"252990": "2026-07-28",
"078930": "2026-07-31",
"010950": "2026-08-03",
"090850": "2026-07-29",
"090850": "2026-08-04",
"003680": "2026-07-29",
"161890": "2026-07-30"
},
"created_at": "2026-06-15T14:55:00.582834+09:00",
"updated_at": "2026-08-03T15:28:09.115508+09:00"
"updated_at": "2026-08-04T15:28:09.382331+09:00"
}
@@ -129,3 +129,7 @@
{"ts": "2026-08-03T09:36:12.036330+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 119700, "qty": 37, "proceeds": 4420264, "entry_price": 130900, "pnl": -423763, "pnl_pct": -8.56, "hold_from": "2026-07-30T09:16:11.935111+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,833 (현재 119,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 153,035"}, {"label": "추세(20일선)", "ok": true, "detail": "108,315"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 134,411"}]}
{"ts": "2026-08-03T12:00:11.814098+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 332, "cost": 4286763, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 15304, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:09.760295+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 320, "cost": 4295044, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:09.467468+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 12, "cost": 1631045, "path": "pullback", "reason": "눌림목 지정가 156,279 도달", "stop": 104818, "target": 198064, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,279 (현재 135,700)"}]}
{"ts": "2026-08-04T09:48:09.380105+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5920, "qty": 813, "proceeds": 4803575, "entry_price": 6310, "pnl": -327225, "pnl_pct": -6.18, "hold_from": "2026-07-30T09:18:10.171043+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,927 (현재 5,925)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,077"}, {"label": "추세(20일선)", "ok": true, "detail": "5,336"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +34 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,429"}]}
{"ts": "2026-08-04T09:48:09.782738+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 48, "cost": 4339851, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 82176, "target": 106848, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "90,400 vs 75,180"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,440 / 75,180"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,440 / 75,095"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+57.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.85% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "783,140 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.85% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:12.784971+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 46, "cost": 4301645, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 82176, "target": 106848, "signals": [{"label": "손절선", "ok": true, "detail": "82,176 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,848"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
@@ -1,5 +1,5 @@
{
"cash": 37484700.357499935,
"cash": 39613327.76449993,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5132330.379099764,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,653 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5395527.728156246,
"last_add_price": 19090
@@ -55,58 +55,16 @@
"entry_at": "2026-07-30T09:04:07.489609+09:00",
"stop": 5363,
"target": 7789,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2634409.858223602,
"last_add_price": 6550
},
"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": 119700,
"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": 6020,
"tranches": 1,
"tranche_value": 5443877.577062497,
"last_add_price": 6310
},
"194370": {
"code": "194370",
"name": "제이에스코퍼레이션",
@@ -123,14 +81,77 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4489026.732352336,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 13,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:09.472084+09:00",
"stop": 104818,
"target": 182523,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 145,918 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1812315.6154018787,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 98,
"entry_price": 91714.28571428571,
"entry_at": "2026-08-04T09:34:09.331555+09:00",
"stop": 83191,
"target": 104500,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4576294.319379674,
"last_add_price": 93500
},
"252990": {
"code": "252990",
"name": "샘씨엔에스",
"sources": [
"auto"
],
"qty": 168,
"entry_price": 12800,
"entry_at": "2026-08-04T11:00:12.174914+09:00",
"stop": 10340,
"target": 16490,
"peak": 12810,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,033 도달",
"cur_price": 12700,
"tranches": 1,
"tranche_value": 2154436.3245398356,
"last_add_price": 12800
}
},
"realized_pnl": -16954246.509500023,
"closed_trades": 41,
"realized_pnl": -18059924.175500028,
"closed_trades": 43,
"wins": 5,
"peak_equity": 100161893.89500001,
"max_drawdown": 0.18418431144422467,
@@ -151,11 +172,11 @@
"010950": "2026-08-03",
"024060": "2026-07-27",
"003680": "2026-07-29",
"138040": "2026-07-29",
"138040": "2026-08-04",
"252990": "2026-07-28",
"090850": "2026-07-29",
"090850": "2026-08-04",
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.582849+09:00",
"updated_at": "2026-08-03T15:28:09.119728+09:00"
"updated_at": "2026-08-04T15:28:09.973871+09:00"
}
@@ -106,3 +106,9 @@
{"ts": "2026-08-03T09:36:12.040975+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 119700, "qty": 38, "proceeds": 4539730, "entry_price": 131400, "pnl": -454219, "pnl_pct": -8.9, "hold_from": "2026-07-29T09:52:02.378116+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,086 (현재 119,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 148,371"}, {"label": "추세(20일선)", "ok": true, "detail": "108,315"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 134,911"}]}
{"ts": "2026-08-03T12:00:11.819206+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 347, "cost": 4480442, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 14706, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:09.764716+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 334, "cost": 4482952, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 14706, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,706"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:09.472087+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 13, "cost": 1766965, "path": "pullback", "reason": "눌림목 지정가 145,918 도달", "stop": 104818, "target": 182523, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 145,918 (현재 135,700)"}]}
{"ts": "2026-08-04T09:34:09.331557+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 50, "cost": 4500675, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 81851, "target": 102223, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "89,800 vs 75,150"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,320 / 75,150"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T09:48:09.794132+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5920, "qty": 862, "proceeds": 5093089, "entry_price": 6310, "pnl": -346947, "pnl_pct": -6.18, "hold_from": "2026-07-30T09:18:10.176753+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,927 (현재 5,925)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 6,885"}, {"label": "추세(20일선)", "ok": true, "detail": "5,336"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +34 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,429"}]}
{"ts": "2026-08-04T10:32:12.790021+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 48, "cost": 4488673, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 81851, "target": 102223, "signals": [{"label": "손절선", "ok": true, "detail": "81,851 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 102,223"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
{"ts": "2026-08-04T11:00:12.174925+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 12800, "qty": 168, "cost": 2150723, "path": "pullback", "reason": "눌림목 지정가 13,033 도달", "stop": 10340, "target": 16490, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,800 vs 12,715"}, {"label": "정배열(5>20)", "ok": true, "detail": "14,308 / 12,715"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "14,308 / 13,263"}, {"label": "상대강도(시장대비)", "ok": false, "detail": "-4.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -35 · 기 +49 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.75% (환산) vs 평균 1.47% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 15,870"}, {"label": "거래량 급증", "ok": true, "detail": "1,655,930 (환산) vs 평균 882,736"}, {"label": "회전율 급증", "ok": true, "detail": "2.75% (환산) vs 평균 1.47%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 13,033 (현재 12,800)"}]}
{"ts": "2026-08-04T13:26:12.846870+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 117200, "qty": 85, "proceeds": 9942574, "entry_price": 125879, "pnl": -758731, "pnl_pct": -6.89, "hold_from": "2026-07-30T09:16:11.939699+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "117,673 (현재 117,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,187"}, {"label": "추세(20일선)", "ok": true, "detail": "113,415"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -24 · 기 +268"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -1,5 +1,5 @@
{
"cash": 28139104.305999972,
"cash": 30192126.876999974,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4992940.599795671,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,673 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5527839.1075312495,
"last_add_price": 18950
@@ -55,58 +55,16 @@
"entry_at": "2026-07-30T09:04:07.493859+09:00",
"stop": 5363,
"target": 9244,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2465159.461256131,
"last_add_price": 6550
},
"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": 119700,
"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": 6020,
"tranches": 1,
"tranche_value": 5091812.158249998,
"last_add_price": 6310
},
"194370": {
"code": "194370",
"name": "제이에스코퍼레이션",
@@ -123,14 +81,77 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4188989.7646745183,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:09.476523+09:00",
"stop": 104818,
"target": 229146,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 145,918 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1689991.4917291994,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 92,
"entry_price": 91711.95652173914,
"entry_at": "2026-08-04T09:34:09.335258+09:00",
"stop": 83188,
"target": 117283,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4268719.0892993,
"last_add_price": 93500
},
"252990": {
"code": "252990",
"name": "샘씨엔에스",
"sources": [
"auto"
],
"qty": 156,
"entry_price": 12800,
"entry_at": "2026-08-04T11:00:12.182010+09:00",
"stop": 10340,
"target": 20180,
"peak": 12810,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 13,033 도달",
"cur_price": 12700,
"tranches": 1,
"tranche_value": 2008681.3553691048,
"last_add_price": 12800
}
},
"realized_pnl": -22560951.811500028,
"closed_trades": 38,
"realized_pnl": -23597552.61450003,
"closed_trades": 40,
"wins": 1,
"peak_equity": 100161893.89500001,
"max_drawdown": 0.24013794300070365,
@@ -152,10 +173,10 @@
"003680": "2026-07-29",
"252990": "2026-07-28",
"010950": "2026-08-03",
"090850": "2026-07-29",
"138040": "2026-07-29",
"090850": "2026-08-04",
"138040": "2026-08-04",
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.582864+09:00",
"updated_at": "2026-08-03T15:28:09.123270+09:00"
"updated_at": "2026-08-04T15:28:09.984680+09:00"
}
@@ -103,3 +103,9 @@
{"ts": "2026-08-03T09:36:12.045515+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 119700, "qty": 36, "proceeds": 4300797, "entry_price": 130900, "pnl": -412310, "pnl_pct": -8.56, "hold_from": "2026-07-30T09:16:11.943255+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "119,833 (현재 119,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 164,102"}, {"label": "추세(20일선)", "ok": true, "detail": "108,315"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 134,411"}]}
{"ts": "2026-08-03T12:00:11.823818+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 324, "cost": 4183467, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 16502, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:09.768951+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 312, "cost": 4187668, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 16502, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,502"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:09.476526+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 12, "cost": 1631045, "path": "pullback", "reason": "눌림목 지정가 145,918 도달", "stop": 104818, "target": 229146, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 145,918 (현재 135,700)"}]}
{"ts": "2026-08-04T09:34:09.335260+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 47, "cost": 4230634, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 81851, "target": 114446, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "89,800 vs 75,150"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,320 / 75,150"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T09:48:09.800491+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5920, "qty": 806, "proceeds": 4762216, "entry_price": 6310, "pnl": -324407, "pnl_pct": -6.18, "hold_from": "2026-07-30T09:18:10.181130+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,927 (현재 5,925)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,460"}, {"label": "추세(20일선)", "ok": true, "detail": "5,336"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +34 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,429"}]}
{"ts": "2026-08-04T10:32:12.794318+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 45, "cost": 4208131, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 81851, "target": 114446, "signals": [{"label": "손절선", "ok": true, "detail": "81,851 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 114,446"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
{"ts": "2026-08-04T11:00:12.182013+09:00", "side": "BUY", "code": "252990", "name": "샘씨엔에스", "price": 12800, "qty": 156, "cost": 1997100, "path": "pullback", "reason": "눌림목 지정가 13,033 도달", "stop": 10340, "target": 20180, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,800 vs 12,715"}, {"label": "정배열(5>20)", "ok": true, "detail": "14,308 / 12,715"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 하향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "14,308 / 13,263"}, {"label": "상대강도(시장대비)", "ok": false, "detail": "-4.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -35 · 기 +49 (천주)"}, {"label": "애널", "ok": null, "detail": "데이터 없음(통과)"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.75% (환산) vs 평균 1.47% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 15,870"}, {"label": "거래량 급증", "ok": true, "detail": "1,655,930 (환산) vs 평균 882,736"}, {"label": "회전율 급증", "ok": true, "detail": "2.75% (환산) vs 평균 1.47%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 13,033 (현재 12,800)"}]}
{"ts": "2026-08-04T13:26:12.859117+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 117200, "qty": 80, "proceeds": 9357717, "entry_price": 125855, "pnl": -712193, "pnl_pct": -6.88, "hold_from": "2026-07-30T09:16:11.943674+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "117,649 (현재 117,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 150,472"}, {"label": "추세(20일선)", "ok": true, "detail": "113,415"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -24 · 기 +268"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -1,5 +1,5 @@
{
"cash": 34563455.93950004,
"cash": 27866451.539500043,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3813943.0504600187,
"last_add_price": 350000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,643 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5685594.862062503,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5142605.848996199,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:07.497844+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1927621.6063135946,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3759463.8630866953,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5243949.076709934,
"last_add_price": 6310
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3342042.065213833,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 73,
"entry_price": 91726.02739726027,
"entry_at": "2026-08-04T09:34:09.921371+09:00",
"stop": 80361,
"target": 125821,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3414906.320549933,
"last_add_price": 93500
}
},
"realized_pnl": -17346371.616500016,
@@ -175,5 +196,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.582879+09:00",
"updated_at": "2026-08-03T15:28:09.718905+09:00"
"updated_at": "2026-08-04T15:28:10.585126+09:00"
}
@@ -76,3 +76,5 @@
{"ts": "2026-07-31T09:06:07.631046+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 82, "proceeds": 6358976, "entry_price": 89863, "pnl": -1010930, "pnl_pct": -13.54, "hold_from": "2026-07-23T09:46:06.370394+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,827 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,973"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:12.417029+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 258, "cost": 3331280, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 17699, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.358546+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 248, "cost": 3328659, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 17699, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 17,699"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:34:09.921381+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 37, "cost": 3330500, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "89,800 vs 81,060"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,320 / 81,060"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.380611+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 36, "cost": 3366505, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 34563455.93950004,
"cash": 27866451.539500043,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3813943.0504600187,
"last_add_price": 350000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,643 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5685594.862062503,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5142605.848996199,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:07.501481+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1927621.6063135946,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3759463.8630866953,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5243949.076709934,
"last_add_price": 6310
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3342042.065213833,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 73,
"entry_price": 91726.02739726027,
"entry_at": "2026-08-04T09:34:09.933331+09:00",
"stop": 80361,
"target": 114456,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3414906.320549933,
"last_add_price": 93500
}
},
"realized_pnl": -17346371.616500016,
@@ -175,5 +196,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.582910+09:00",
"updated_at": "2026-08-03T15:28:09.730562+09:00"
"updated_at": "2026-08-04T15:28:10.596204+09:00"
}
@@ -76,3 +76,5 @@
{"ts": "2026-07-31T09:06:07.640655+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 82, "proceeds": 6358976, "entry_price": 89863, "pnl": -1010930, "pnl_pct": -13.54, "hold_from": "2026-07-23T09:46:06.372102+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,827 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 111,936"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:12.428952+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 258, "cost": 3331280, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 16103, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.370265+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 248, "cost": 3328659, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 16103, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,103"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:34:09.933337+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 37, "cost": 3330500, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 111730, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "89,800 vs 81,060"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,320 / 81,060"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.392266+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 36, "cost": 3366505, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 111730, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 111,730"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 41538439.862500004,
"cash": 34657907.93750001,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3841906.161963773,
"last_add_price": 350000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5164071.483514108,
"last_add_price": 126400
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,653 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5339950.00228125,
"last_add_price": 19090
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:07.505690+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1956462.6546955872,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3812991.5556229833,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5318486.508866878,
"last_add_price": 6310
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3393650.506937234,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 75,
"entry_price": 91726.66666666667,
"entry_at": "2026-08-04T09:34:09.942366+09:00",
"stop": 80362,
"target": 108774,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3469610.992924529,
"last_add_price": 93500
}
},
"realized_pnl": -16009433.273500016,
@@ -175,5 +196,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.582926+09:00",
"updated_at": "2026-08-03T15:28:09.737465+09:00"
"updated_at": "2026-08-04T15:28:10.602903+09:00"
}
@@ -75,3 +75,5 @@
{"ts": "2026-07-31T09:06:07.648789+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 83, "proceeds": 6436524, "entry_price": 89882, "pnl": -1024795, "pnl_pct": -13.55, "hold_from": "2026-07-23T09:46:06.373868+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,845 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,437"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:12.437993+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 262, "cost": 3382927, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 15304, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.377561+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 252, "cost": 3382347, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:34:09.942370+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 38, "cost": 3420513, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 106298, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "89,800 vs 81,060"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,320 / 81,060"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.399942+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 37, "cost": 3460019, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 106298, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,298"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 28989445.622999992,
"cash": 33167261.932999995,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5085796.90859035,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,673 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5636180.5746875,
"last_add_price": 18950
@@ -55,58 +55,16 @@
"entry_at": "2026-07-30T09:04:07.509224+09:00",
"stop": 5362,
"target": 9244,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2514428.437642747,
"last_add_price": 6550
},
"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": 119700,
"tranches": 2,
"tranche_value": 5174714.39653125,
"last_add_price": 127700
},
"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": 6020,
"tranches": 1,
"tranche_value": 5170254.61215625,
"last_add_price": 6300
},
"194370": {
"code": "194370",
"name": "제이에스코퍼레이션",
@@ -123,14 +81,56 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4271897.688361821,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 12,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:10.089202+09:00",
"stop": 104818,
"target": 229146,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 145,918 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1723507.428441815,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 93,
"entry_price": 91933.33333333333,
"entry_at": "2026-08-04T09:50:10.213035+09:00",
"stop": 83410,
"target": 117505,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4327959.889890211,
"last_add_price": 93500
}
},
"realized_pnl": -21009195.29800002,
"closed_trades": 35,
"realized_pnl": -22025958.05800002,
"closed_trades": 37,
"wins": 1,
"peak_equity": 100344662.275,
"max_drawdown": 0.22639747160382784,
@@ -150,10 +150,10 @@
"003680": "2026-07-29",
"252990": "2026-07-28",
"010950": "2026-08-03",
"090850": "2026-07-29",
"138040": "2026-07-29",
"090850": "2026-08-04",
"138040": "2026-08-04",
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583136+09:00",
"updated_at": "2026-08-03T15:28:09.742944+09:00"
"updated_at": "2026-08-04T15:28:10.609404+09:00"
}
@@ -97,3 +97,8 @@
{"ts": "2026-08-03T09:34:09.186164+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 120300, "qty": 37, "proceeds": 4442420, "entry_price": 131800, "pnl": -434911, "pnl_pct": -8.73, "hold_from": "2026-07-30T09:24:07.557097+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,690 (현재 120,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 165,130"}, {"label": "추세(20일선)", "ok": true, "detail": "108,345"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 135,311"}]}
{"ts": "2026-08-03T12:00:12.444889+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 330, "cost": 4260939, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 16502, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.384620+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 318, "cost": 4268200, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 16502, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,502"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:10.089206+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 12, "cost": 1631045, "path": "pullback", "reason": "눌림목 지정가 145,918 도달", "stop": 104818, "target": 229146, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 145,918 (현재 135,700)"}]}
{"ts": "2026-08-04T09:50:10.213039+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 47, "cost": 4249437, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 82166, "target": 115103, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "90,300 vs 75,175"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,420 / 75,175"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,420 / 75,093"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.87% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "805,693 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.87% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.405182+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 46, "cost": 4301645, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 82166, "target": 115103, "signals": [{"label": "손절선", "ok": true, "detail": "82,166 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 115,103"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
{"ts": "2026-08-04T12:16:10.446121+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 117800, "qty": 81, "proceeds": 9523193, "entry_price": 126030, "pnl": -686738, "pnl_pct": -6.53, "hold_from": "2026-07-30T09:22:07.824432+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "117,824 (현재 117,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 150,647"}, {"label": "추세(20일선)", "ok": true, "detail": "113,445"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -24 · 기 +268"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T13:26:13.440776+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 820, "proceeds": 4836750, "entry_price": 6300, "pnl": -330025, "pnl_pct": -6.19, "hold_from": "2026-07-30T09:26:07.504700+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,917 (현재 5,910)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,450"}, {"label": "추세(20일선)", "ok": true, "detail": "5,335"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +36 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,419"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3889733.683715179,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,012 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5696942.092812501,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5327150.576000001,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4940372.790080874,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.512664+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1924945.6187384445,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3791237.2526261737,
"last_add_price": 131800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5246390.706071919,
"last_add_price": 6300
@@ -197,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583184+09:00",
"updated_at": "2026-08-03T15:28:09.747956+09:00"
"updated_at": "2026-08-04T15:28:10.614860+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3891157.6622701483,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5719122.209000001,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5467080.19828125,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5075960.404438956,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.515982+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1981493.926440071,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3902843.990735232,
"last_add_price": 131800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5233970.124597555,
"last_add_price": 6120
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3433240.983007488,
"last_add_price": 13420
@@ -197,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583198+09:00",
"updated_at": "2026-08-03T15:28:09.752104+09:00"
"updated_at": "2026-08-04T15:28:10.619140+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 35208426.178500034,
"cash": 33713301.943500035,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3848025.874946516,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,673 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5721714.462968752,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5187375.1457318,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:07.518900+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1957851.3491824612,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3832048.06532556,
"last_add_price": 131800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5302210.774469179,
"last_add_price": 6300
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3393597.375168939,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 11,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:10.104323+09:00",
"stop": 100700,
"target": 206300,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 145,918 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1613823.6225366697,
"last_add_price": 135900
}
},
"realized_pnl": -15862555.569500018,
@@ -176,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583212+09:00",
"updated_at": "2026-08-03T15:28:09.756115+09:00"
"updated_at": "2026-08-04T15:28:10.623247+09:00"
}
@@ -90,3 +90,4 @@
{"ts": "2026-07-31T09:06:07.669454+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 83, "proceeds": 6436524, "entry_price": 89534, "pnl": -995890, "pnl_pct": -13.22, "hold_from": "2026-07-23T09:50:01.533917+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,554 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 111,492"}, {"label": "추세(20일선)", "ok": true, "detail": "74,560"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:12.460555+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 262, "cost": 3382927, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 16103, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.398435+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 252, "cost": 3382347, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 16103, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,103"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:10.104326+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 11, "cost": 1495124, "path": "pullback", "reason": "눌림목 지정가 145,918 도달", "stop": 100700, "target": 206300, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 145,918 (현재 135,700)"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3889733.683715179,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,012 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5696942.092812501,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5327150.576000001,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4940372.790080874,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.522091+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1924945.6187384445,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3791237.2526261737,
"last_add_price": 131800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5246390.706071919,
"last_add_price": 6300
@@ -197,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583227+09:00",
"updated_at": "2026-08-03T15:28:09.759674+09:00"
"updated_at": "2026-08-04T15:28:10.626880+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 38274687.33399997,
"cash": 42733717.21399996,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5225929.659467572,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,653 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5535182.720656248,
"last_add_price": 19090
@@ -55,58 +55,16 @@
"entry_at": "2026-07-30T09:04:07.525083+09:00",
"stop": 5363,
"target": 7789,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2702321.452399152,
"last_add_price": 6550
},
"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": 119700,
"tranches": 2,
"tranche_value": 5554493.212437497,
"last_add_price": 127700
},
"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": 6020,
"tranches": 1,
"tranche_value": 5549416.222437498,
"last_add_price": 6300
},
"194370": {
"code": "194370",
"name": "제이에스코퍼레이션",
@@ -123,14 +81,56 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4597484.241421635,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 13,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:10.112981+09:00",
"stop": 104818,
"target": 182523,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 145,918 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1856071.8339699174,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 100,
"entry_price": 91919.0,
"entry_at": "2026-08-04T09:50:10.235258+09:00",
"stop": 83395,
"target": 104705,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 4659757.825201359,
"last_add_price": 93500
}
},
"realized_pnl": -14959688.874500025,
"closed_trades": 38,
"realized_pnl": -16051591.509500027,
"closed_trades": 40,
"wins": 5,
"peak_equity": 100344662.275,
"max_drawdown": 0.16636733158011952,
@@ -149,11 +149,11 @@
"010950": "2026-08-03",
"024060": "2026-07-27",
"003680": "2026-07-29",
"138040": "2026-07-29",
"138040": "2026-08-04",
"252990": "2026-07-28",
"090850": "2026-07-29",
"090850": "2026-08-04",
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583241+09:00",
"updated_at": "2026-08-03T15:28:09.763257+09:00"
"updated_at": "2026-08-04T15:28:10.630468+09:00"
}
@@ -100,3 +100,8 @@
{"ts": "2026-08-03T09:34:09.209896+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 120300, "qty": 40, "proceeds": 4802617, "entry_price": 131800, "pnl": -470174, "pnl_pct": -8.73, "hold_from": "2026-07-30T09:24:07.570830+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,690 (현재 120,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 148,465"}, {"label": "추세(20일선)", "ok": true, "detail": "108,345"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 135,311"}]}
{"ts": "2026-08-03T12:00:12.468908+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 356, "cost": 4596649, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 14706, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.405836+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 342, "cost": 4590328, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 14706, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 14,706"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:10.112983+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 13, "cost": 1766965, "path": "pullback", "reason": "눌림목 지정가 145,918 도달", "stop": 104818, "target": 182523, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 145,918 (현재 135,700)"}]}
{"ts": "2026-08-04T09:50:10.235261+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 51, "cost": 4611092, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 82166, "target": 102752, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "90,300 vs 75,175"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,420 / 75,175"}, {"label": "추세 기울기(20일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,420 / 75,093"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.87% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "805,693 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.87% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.426775+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 49, "cost": 4582187, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 82166, "target": 102752, "signals": [{"label": "손절선", "ok": true, "detail": "82,166 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 102,752"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
{"ts": "2026-08-04T12:16:10.467115+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 117800, "qty": 87, "proceeds": 10228615, "entry_price": 126031, "pnl": -737729, "pnl_pct": -6.53, "hold_from": "2026-07-30T09:22:07.837498+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "117,825 (현재 117,800)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 138,340"}, {"label": "추세(20일선)", "ok": true, "detail": "113,445"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -24 · 기 +268"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T13:26:13.462956+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 880, "proceeds": 5190658, "entry_price": 6300, "pnl": -354173, "pnl_pct": -6.19, "hold_from": "2026-07-30T09:26:07.518276+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,917 (현재 5,910)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 6,875"}, {"label": "추세(20일선)", "ok": true, "detail": "5,335"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +36 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,419"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3939968.9939820534,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5821568.917468751,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5570614.761375001,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5217780.328505317,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.528031+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2036737.90524699,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 4011548.961969723,
"last_add_price": 131800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5380111.718770876,
"last_add_price": 6120
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3529514.3397388323,
"last_add_price": 13420
@@ -197,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583273+09:00",
"updated_at": "2026-08-03T15:28:09.766470+09:00"
"updated_at": "2026-08-04T15:28:10.633804+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 35168139.17650004,
"cash": 28456332.55650004,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3869967.7922643563,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,643 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5724944.494593753,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5162533.383709267,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:07.530698+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1948420.7709670917,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3813556.4512976124,
"last_add_price": 131800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5276594.3904554825,
"last_add_price": 6300
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3377559.3310465557,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 73,
"entry_price": 91928.76712328767,
"entry_at": "2026-08-04T09:50:10.241980+09:00",
"stop": 80564,
"target": 114659,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3429919.977026871,
"last_add_price": 93500
}
},
"realized_pnl": -16386905.170000013,
@@ -174,5 +195,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583289+09:00",
"updated_at": "2026-08-03T15:28:09.769578+09:00"
"updated_at": "2026-08-04T15:28:10.636959+09:00"
}
@@ -73,3 +73,5 @@
{"ts": "2026-07-31T09:06:07.684470+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 83, "proceeds": 6436524, "entry_price": 89534, "pnl": -995890, "pnl_pct": -13.22, "hold_from": "2026-07-23T09:50:01.540887+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,554 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 111,492"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:12.476390+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 261, "cost": 3370015, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 16103, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.412388+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 251, "cost": 3368925, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 16103, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,103"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:50:10.241982+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 37, "cost": 3345302, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79421, "target": 112359, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "90,300 vs 81,110"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,420 / 81,110"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,420 / 75,093"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.87% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "805,693 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.87% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.433241+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 36, "cost": 3366505, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79421, "target": 112359, "signals": [{"label": "손절선", "ok": true, "detail": "79,421 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 112,359"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
@@ -1,5 +1,5 @@
{
"cash": 41805596.18100003,
"cash": 34909861.97600003,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3898349.7986140535,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5181824.996564139,
"last_add_price": 126400
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,653 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5394916.926375002,
"last_add_price": 19090
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:07.533744+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1976520.6885600227,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3863996.750727336,
"last_add_price": 131800
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5345936.747630138,
"last_add_price": 6300
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3428336.7554835076,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 75,
"entry_price": 91929.33333333333,
"entry_at": "2026-08-04T09:50:10.245606+09:00",
"stop": 80564,
"target": 108977,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3483887.723272795,
"last_add_price": 93500
}
},
"realized_pnl": -15096400.088000013,
@@ -174,5 +195,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583304+09:00",
"updated_at": "2026-08-03T15:28:09.772450+09:00"
"updated_at": "2026-08-04T15:28:10.639793+09:00"
}
@@ -72,3 +72,5 @@
{"ts": "2026-07-31T09:06:07.687761+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 83, "proceeds": 6436524, "entry_price": 89534, "pnl": -995890, "pnl_pct": -13.22, "hold_from": "2026-07-23T09:50:01.542608+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,554 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,003"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:12.479929+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 265, "cost": 3421663, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 15304, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.415408+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 255, "cost": 3422613, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:50:10.245609+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90400, "qty": 38, "cost": 3435715, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79421, "target": 106869, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "90,300 vs 81,110"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,420 / 81,110"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,420 / 75,093"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+56.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+14%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.87% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "805,693 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.87% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:13.436375+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 37, "cost": 3460019, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79421, "target": 106869, "signals": [{"label": "손절선", "ok": true, "detail": "79,421 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 106,869"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 93,241"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3913399.394880189,
"last_add_price": 353000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5436300.471625002,
"last_add_price": 120500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5045807.2398149045,
"last_add_price": 125200
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,019 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5355663.862750002,
"last_add_price": 19090
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:07.536435+09:00",
"stop": 5039,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1962123.1366758423,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3860356.183815298,
"last_add_price": 131800
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5341728.159493153,
"last_add_price": 6300
@@ -197,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583318+09:00",
"updated_at": "2026-08-03T15:28:09.775309+09:00"
"updated_at": "2026-08-04T15:28:10.642592+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5038910.050638685,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5601008.3746875,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 2,135 도달",
"cur_price": 1905,
"cur_price": 1960,
"tranches": 2,
"tranche_value": 2627079.6319200005,
"last_add_price": 1951
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5278498.658468749,
"last_add_price": 120500
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5079406.382253983,
"last_add_price": 125200
@@ -118,12 +118,12 @@
"entry_at": "2026-07-30T09:04:07.538973+09:00",
"stop": 5363,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2553079.5546287536,
"last_add_price": 6550
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 4531819.457811181,
"last_add_price": 125700
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5006732.221943749,
"last_add_price": 6120
@@ -197,5 +197,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583333+09:00",
"updated_at": "2026-08-03T15:28:09.778078+09:00"
"updated_at": "2026-08-04T15:28:10.645436+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 9202874.701000001,
"cash": 9844761.748,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 5033450.427529937,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,012 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5662520.118343751,
"last_add_price": 18950
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5234858.44571875,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 5051285.121721717,
"last_add_price": 125200
@@ -97,37 +97,16 @@
"entry_at": "2026-07-30T09:04:07.541375+09:00",
"stop": 5362,
"target": 8274,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2534339.801822408,
"last_add_price": 6550
},
"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": 6020,
"tranches": 1,
"tranche_value": 5258695.03025,
"last_add_price": 6300
},
"003490": {
"code": "003490",
"name": "대한항공",
@@ -165,14 +144,35 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 4362596.463271157,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 44,
"entry_price": 97200,
"entry_at": "2026-08-04T14:12:15.953832+09:00",
"stop": 88269,
"target": 115062,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 1,
"tranche_value": 4360412.203364462,
"last_add_price": 97200
}
},
"realized_pnl": -20375353.617500022,
"closed_trades": 38,
"realized_pnl": -20711013.180500023,
"closed_trades": 39,
"wins": 2,
"peak_equity": 101258161.16350003,
"max_drawdown": 0.2221436364588878,
@@ -193,9 +193,9 @@
"003680": "2026-07-29",
"252990": "2026-07-28",
"010950": "2026-08-03",
"090850": "2026-07-29",
"090850": "2026-08-04",
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583347+09:00",
"updated_at": "2026-08-03T15:28:09.780675+09:00"
"updated_at": "2026-08-04T15:28:10.648067+09:00"
}
@@ -109,3 +109,5 @@
{"ts": "2026-08-03T09:34:09.229145+09:00", "side": "SELL", "code": "010950", "name": "S-Oil", "price": 120300, "qty": 37, "proceeds": 4442420, "entry_price": 131800, "pnl": -434911, "pnl_pct": -8.73, "hold_from": "2026-07-30T09:24:07.584368+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "120,690 (현재 120,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 154,020"}, {"label": "추세(10일선)", "ok": true, "detail": "107,510"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -35 · 기 +48"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 135,311"}]}
{"ts": "2026-08-03T12:00:12.488919+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 337, "cost": 4351323, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 15304, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:10.423786+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 325, "cost": 4362154, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 15304, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,304"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T13:26:13.480594+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5910, "qty": 834, "proceeds": 4919329, "entry_price": 6300, "pnl": -335660, "pnl_pct": -6.19, "hold_from": "2026-07-30T09:26:07.531672+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "5,917 (현재 5,910)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 7,067"}, {"label": "추세(10일선)", "ok": true, "detail": "5,544"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +36 · 기 +9"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 6,419"}]}
{"ts": "2026-08-04T14:12:15.953835+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 97200, "qty": 44, "cost": 4277442, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 88269, "target": 115062, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "97,100 vs 81,790"}, {"label": "정배열(5>10)", "ok": true, "detail": "84,780 / 81,790"}, {"label": "추세 기울기(10일선↑)", "ok": null, "detail": "게이트 끔(완화) · 실제 우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "84,780 / 75,207"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+67.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +48 · 기 +176 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+6%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.85% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "788,366 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.85% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "74"}]}
@@ -1,5 +1,5 @@
{
"cash": 51145315.711500004,
"cash": 44720270.3265,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3627364.7637924887,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4841528.853832099,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.134813+09:00",
"stop": 5039,
"target": 10214,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1821085.8869957556,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3547525.853504033,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1688085.214726109,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 68,
"entry_price": 91698.5294117647,
"entry_at": "2026-08-04T09:34:11.170806+09:00",
"stop": 80334,
"target": 125794,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3165003.2713460657,
"last_add_price": 93500
}
},
"realized_pnl": -23500821.779500045,
"closed_trades": 96,
"realized_pnl": -23689431.839500047,
"closed_trades": 98,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.243873965035,
@@ -127,7 +148,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -136,7 +157,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -145,5 +166,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621011+09:00",
"updated_at": "2026-08-03T15:28:10.966700+09:00"
"updated_at": "2026-08-04T15:28:11.242345+09:00"
}
@@ -216,3 +216,9 @@
{"ts": "2026-08-03T09:00:19.374894+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:14.400982+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:18.591679+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:10.520783+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:19.374881+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:27.601786+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:11.436620+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:27.601770+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.237063+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 68, "cost": 4706306, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:13.433240+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 68, "proceeds": 4574263, "entry_price": 69200, "pnl": -132043, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.237043+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.170816+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.040096+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 33, "cost": 3085963, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3627364.7637924887,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5013998.744343751,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4760241.173848085,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.152605+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1786459.912670363,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3470885.263866936,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4834735.918983269,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1668794.556510239,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3062184.227151159,
"last_add_price": 13420
@@ -209,5 +209,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583395+09:00",
"updated_at": "2026-08-03T15:28:10.974399+09:00"
"updated_at": "2026-08-04T15:28:11.250795+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51568747.48799999,
"cash": 45048246.26799999,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4871303.908250191,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.158176+09:00",
"stop": 5039,
"target": 10214,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1833305.2441214651,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3570553.5376633056,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1700911.5399726962,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 69,
"entry_price": 91724.63768115942,
"entry_at": "2026-08-04T09:34:11.191529+09:00",
"stop": 80360,
"target": 125820,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3188827.7982604695,
"last_add_price": 93500
}
},
"realized_pnl": -22922006.69900004,
"closed_trades": 97,
"realized_pnl": -23112558.56900004,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.23808745227000014,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621059+09:00",
"updated_at": "2026-08-03T15:28:10.981227+09:00"
"updated_at": "2026-08-04T15:28:11.256598+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:20.347768+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.496433+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:20.345714+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:10.998993+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:20.347758+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:28.713382+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.005007+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:28.713375+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.709464+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 69, "cost": 4775516, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.052662+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 69, "proceeds": 4641531, "entry_price": 69200, "pnl": -133985, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.709459+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.191533+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.061833+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 34, "cost": 3179477, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5059022.326624999,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4804885.651525278,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.164091+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1807632.1012232043,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3511790.845106854,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4891717.004707093,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1688285.922413822,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3097763.2003571894,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583512+09:00",
"updated_at": "2026-08-03T15:28:10.986512+09:00"
"updated_at": "2026-08-04T15:28:11.261501+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51137197.51599997,
"cash": 44712152.13099997,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4840682.195130728,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.168790+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1820759.233761088,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3546894.320639113,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1687768.019262798,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 68,
"entry_price": 91698.5294117647,
"entry_at": "2026-08-04T09:34:11.202398+09:00",
"stop": 80334,
"target": 125794,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3164409.8348090188,
"last_add_price": 93500
}
},
"realized_pnl": -23515070.89450004,
"closed_trades": 97,
"realized_pnl": -23703680.954500042,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.2440181469900003,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621103+09:00",
"updated_at": "2026-08-03T15:28:10.990920+09:00"
"updated_at": "2026-08-04T15:28:11.267028+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:20.559413+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.506740+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:20.557798+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.009950+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:20.559407+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:28.938428+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.016835+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:28.938421+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.720896+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 68, "cost": 4706306, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.063536+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 68, "proceeds": 4574263, "entry_price": 69200, "pnl": -132043, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.720893+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.202401+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.072020+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 33, "cost": 3085963, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5010126.595875,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4756556.382853909,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.173280+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1785067.433710845,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3468191.0592600796,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4830985.601508463,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1667469.2912320814,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3059768.9052410396,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583628+09:00",
"updated_at": "2026-08-03T15:28:10.994611+09:00"
"updated_at": "2026-08-04T15:28:11.271677+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51568747.48799999,
"cash": 45048246.26799999,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4871303.908250191,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.177640+09:00",
"stop": 5039,
"target": 10214,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1833305.2441214651,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3570553.5376633056,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1700911.5399726962,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 69,
"entry_price": 91724.63768115942,
"entry_at": "2026-08-04T09:34:11.210973+09:00",
"stop": 80360,
"target": 125820,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3188827.7982604695,
"last_add_price": 93500
}
},
"realized_pnl": -22922006.69900004,
"closed_trades": 97,
"realized_pnl": -23112558.56900004,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.23808745227000014,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621148+09:00",
"updated_at": "2026-08-03T15:28:10.997999+09:00"
"updated_at": "2026-08-04T15:28:11.275727+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:20.772557+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.514781+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:20.768109+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.018441+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:20.772547+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:29.145547+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.025625+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:29.145541+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.729537+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 69, "cost": 4775516, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.072019+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 69, "proceeds": 4641531, "entry_price": 69200, "pnl": -133985, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.729535+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.210976+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.080423+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 34, "cost": 3179477, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5059022.326624999,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4804885.651525278,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.181805+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1807632.1012232043,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3511790.845106854,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4891717.004707093,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1688285.922413822,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3097763.2003571894,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.583751+09:00",
"updated_at": "2026-08-03T15:28:11.001181+09:00"
"updated_at": "2026-08-04T15:28:11.279352+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51568747.48799999,
"cash": 45048246.26799999,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4871303.908250191,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.185692+09:00",
"stop": 5039,
"target": 10214,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1833305.2441214651,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3570553.5376633056,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1700911.5399726962,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 69,
"entry_price": 91724.63768115942,
"entry_at": "2026-08-04T09:34:11.218304+09:00",
"stop": 80360,
"target": 125820,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3188827.7982604695,
"last_add_price": 93500
}
},
"realized_pnl": -22922006.69900004,
"closed_trades": 97,
"realized_pnl": -23112558.56900004,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.23808745227000014,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621367+09:00",
"updated_at": "2026-08-03T15:28:11.004116+09:00"
"updated_at": "2026-08-04T15:28:11.282873+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:20.980679+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.521968+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:20.978808+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.025738+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:20.980671+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:29.366710+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.032836+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:29.366700+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.736432+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 69, "cost": 4775516, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.079334+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 69, "proceeds": 4641531, "entry_price": 69200, "pnl": -133985, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.736429+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.218307+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.087302+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 34, "cost": 3179477, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5059022.326624999,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4804885.651525278,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.189515+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1807632.1012232043,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3511790.845106854,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4891717.004707093,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1688285.922413822,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3097763.2003571894,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.584337+09:00",
"updated_at": "2026-08-03T15:28:11.007730+09:00"
"updated_at": "2026-08-04T15:28:11.286127+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51568747.48799999,
"cash": 45048246.26799999,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4871303.908250191,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.192841+09:00",
"stop": 5039,
"target": 10214,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1833305.2441214651,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3570553.5376633056,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1700911.5399726962,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 69,
"entry_price": 91724.63768115942,
"entry_at": "2026-08-04T09:34:11.224674+09:00",
"stop": 80360,
"target": 125820,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3188827.7982604695,
"last_add_price": 93500
}
},
"realized_pnl": -22922006.69900004,
"closed_trades": 97,
"realized_pnl": -23112558.56900004,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.23808745227000014,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621411+09:00",
"updated_at": "2026-08-03T15:28:11.011063+09:00"
"updated_at": "2026-08-04T15:28:11.289094+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:21.196799+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.528098+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:21.195291+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.031972+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:21.196794+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:29.576962+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.039163+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:29.576951+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.742860+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 69, "cost": 4775516, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.085802+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 69, "proceeds": 4641531, "entry_price": 69200, "pnl": -133985, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.742858+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.224677+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.093597+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 34, "cost": 3179477, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5059022.326624999,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4804885.651525278,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.196316+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1807632.1012232043,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3511790.845106854,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4891717.004707093,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1688285.922413822,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3097763.2003571894,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.584451+09:00",
"updated_at": "2026-08-03T15:28:11.014208+09:00"
"updated_at": "2026-08-04T15:28:11.291939+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51137197.51599997,
"cash": 44712152.13099997,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4840682.195130728,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.199417+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1820759.233761088,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3546894.320639113,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1687768.019262798,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 68,
"entry_price": 91698.5294117647,
"entry_at": "2026-08-04T09:34:11.230485+09:00",
"stop": 80334,
"target": 125794,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3164409.8348090188,
"last_add_price": 93500
}
},
"realized_pnl": -23515070.89450004,
"closed_trades": 97,
"realized_pnl": -23703680.954500042,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.2440181469900003,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621453+09:00",
"updated_at": "2026-08-03T15:28:11.017072+09:00"
"updated_at": "2026-08-04T15:28:11.294699+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:21.408624+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.533906+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:21.406880+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.037830+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:21.408615+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:29.784151+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.044832+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:29.784145+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.748558+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 68, "cost": 4706306, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.091627+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 68, "proceeds": 4574263, "entry_price": 69200, "pnl": -132043, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.748556+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.230488+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.099176+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 33, "cost": 3085963, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5010126.595875,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4756556.382853909,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.202607+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1785067.433710845,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3468191.0592600796,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4830985.601508463,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1667469.2912320814,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3059768.9052410396,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.584565+09:00",
"updated_at": "2026-08-03T15:28:11.019985+09:00"
"updated_at": "2026-08-04T15:28:11.297480+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 51137197.51599997,
"cash": 44712152.13099997,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4840682.195130728,
"last_add_price": 126400
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:08.205546+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1820759.233761088,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3546894.320639113,
"last_add_price": 130900
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1687768.019262798,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 68,
"entry_price": 91698.5294117647,
"entry_at": "2026-08-04T09:34:11.235950+09:00",
"stop": 80334,
"target": 125794,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3164409.8348090188,
"last_add_price": 93500
}
},
"realized_pnl": -23515070.89450004,
"closed_trades": 97,
"realized_pnl": -23703680.954500042,
"closed_trades": 99,
"wins": 1,
"peak_equity": 100000000,
"max_drawdown": 0.2440181469900003,
@@ -128,7 +149,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -137,7 +158,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-15T14:40:00.621497+09:00",
"updated_at": "2026-08-03T15:28:11.022773+09:00"
"updated_at": "2026-08-04T15:28:11.299998+09:00"
}
@@ -218,3 +218,9 @@
{"ts": "2026-08-03T09:00:21.629095+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 38, "cost": 4750712, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.539104+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 8, "proceeds": 4199794, "entry_price": 534000, "pnl": -72846, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:21.627523+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.043132+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 38, "proceeds": 4687641, "entry_price": 125000, "pnl": -63071, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:21.629089+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:30.001775+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 36, "cost": 4695104, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.049980+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 36, "proceeds": 4638537, "entry_price": 130400, "pnl": -56567, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:30.001768+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.753823+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 68, "cost": 4706306, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.097041+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 68, "proceeds": 4574263, "entry_price": 69200, "pnl": -132043, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.753821+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.235952+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.104445+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 33, "cost": 3085963, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3624744.3180141365,
"last_add_price": 356000
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 5010126.595875,
"last_add_price": 19370
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4756556.382853909,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.208371+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1785067.433710845,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3468191.0592600796,
"last_add_price": 130900
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 4830985.601508463,
"last_add_price": 6310
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1667469.2912320814,
"last_add_price": 130000
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3059768.9052410396,
"last_add_price": 13420
@@ -210,5 +210,5 @@
"161890": "2026-07-31"
},
"created_at": "2026-06-15T14:55:00.584680+09:00",
"updated_at": "2026-08-03T15:28:11.025437+09:00"
"updated_at": "2026-08-04T15:28:11.302487+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 21100469.825999998,
"cash": 16582592.245999997,
"initial": 100000000,
"positions": {
"055550": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 101800,
"cur_price": 102100,
"tranches": 2,
"tranche_value": 4371332.168068898,
"last_add_price": 105800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 3448434.606240806,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3417673.0117698065,
"last_add_price": 338000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4425860.654266699,
"last_add_price": 125200
@@ -118,12 +118,12 @@
"entry_at": "2026-07-30T09:04:08.798504+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1723803.5365682123,
"last_add_price": 6550
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 1,
"tranche_value": 4248451.425139817,
"last_add_price": 124700
@@ -155,20 +155,20 @@
"sources": [
"auto"
],
"qty": 48,
"entry_price": 94100,
"qty": 94,
"entry_price": 96106.3829787234,
"entry_at": "2026-07-31T11:20:11.598540+09:00",
"stop": 92100,
"target": 100100,
"peak": 98000,
"target": 108126,
"peak": 103800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 96700,
"tranches": 1,
"cur_price": 101200,
"tranches": 2,
"tranche_value": 4596386.934125,
"last_add_price": 94100
"last_add_price": 98200
}
},
"realized_pnl": -26170542.01200003,
@@ -219,5 +219,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-16T09:00:03.113416+09:00",
"updated_at": "2026-08-03T15:28:11.027901+09:00"
"updated_at": "2026-08-04T15:28:11.304813+09:00"
}
@@ -167,3 +167,4 @@
{"ts": "2026-07-31T11:20:11.164902+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 121600, "qty": 37, "proceeds": 4490427, "entry_price": 121900, "pnl": -20550, "pnl_pct": -0.25, "hold_from": "2026-07-31T09:08:10.756233+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "121,899 (현재 121,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,582"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +662 · 기 -449"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-07-31T11:20:11.598557+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 94100, "qty": 48, "cost": 4517478, "path": "immediate", "reason": "조건 충족 — 즉시매수(눌림 안 기다림)", "stop": 92100, "target": 100100, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "93,900 vs 91,832"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,080 / 91,832"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,080 / 91,832"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+25.5%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +82 · 기 -28 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+41%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "2.60% (환산) vs 평균 1.76% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": true, "detail": "612,615 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "2.60% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": false, "detail": "지정가 93,866 (현재 93,900)"}]}
{"ts": "2026-08-03T09:02:15.579360+09:00", "side": "BUY", "code": "003490", "name": "대한항공", "price": 26800, "qty": 180, "cost": 4824724, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 23650, "target": 31650, "signals": [{"label": "손절선", "ok": true, "detail": "23,650 (현재 26,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 31,650"}, {"label": "추세(60일선)", "ok": true, "detail": "25,178"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -228 · 기 +494"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 26,263"}]}
{"ts": "2026-08-04T09:08:11.572726+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 98200, "qty": 46, "cost": 4517878, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 92100, "target": 100100, "signals": [{"label": "손절선", "ok": true, "detail": "92,100 (현재 98,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 100,100"}, {"label": "추세(60일선)", "ok": true, "detail": "91,903"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +134 · 기 -68"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 97,994"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 101800,
"cur_price": 102100,
"tranches": 2,
"tranche_value": 5402457.352781249,
"last_add_price": 104900
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 4939827.041843749,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 2,
"tranche_value": 5291435.503531248,
"last_add_price": 6020
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4843602.718718749,
"last_add_price": 338000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,645 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 1,
"tranche_value": 4682248.774874998,
"last_add_price": 19370
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 4504266.321593748,
"last_add_price": 125200
@@ -139,12 +139,12 @@
"entry_at": "2026-07-30T09:04:08.809546+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3302234.573028907,
"last_add_price": 6550
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4268049.827468748,
"last_add_price": 122900
@@ -201,5 +201,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-16T09:00:03.113433+09:00",
"updated_at": "2026-08-03T15:28:11.030368+09:00"
"updated_at": "2026-08-04T15:28:11.307070+09:00"
}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 101800,
"cur_price": 102100,
"tranches": 2,
"tranche_value": 5666061.52171875,
"last_add_price": 99700
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 4789675.2297187485,
"last_add_price": 130800
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 2,
"tranche_value": 4852421.820656248,
"last_add_price": 6030
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4623660.577343748,
"last_add_price": 338000
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,014 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 4465513.872843748,
"last_add_price": 18950
@@ -118,12 +118,12 @@
"entry_at": "2026-07-30T09:04:08.817092+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3191383.0634775604,
"last_add_price": 6550
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 1,
"tranche_value": 4300292.172812498,
"last_add_price": 124700
@@ -165,7 +165,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 284000,
"cur_price": 291000,
"tranches": 1,
"tranche_value": 4236521.005156248,
"last_add_price": 288000
@@ -207,5 +207,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-16T09:00:03.113489+09:00",
"updated_at": "2026-08-03T15:28:11.032662+09:00"
"updated_at": "2026-08-04T15:28:11.309342+09:00"
}
@@ -1,5 +1,5 @@
{
"cash": 18165691.863500014,
"cash": 14552849.008500014,
"initial": 100000000,
"positions": {
"030000": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,673 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 4306811.880937502,
"last_add_price": 18950
@@ -34,37 +34,16 @@
"entry_at": "2026-07-30T09:00:24.268702+09:00",
"stop": 5014,
"target": 9024,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,467 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3583967.506937563,
"last_add_price": 6250
},
"138040": {
"code": "138040",
"name": "메리츠금융지주",
"sources": [
"auto"
],
"qty": 61,
"entry_price": 125870.4918032787,
"entry_at": "2026-07-30T09:16:13.801616+09:00",
"stop": 117665,
"target": 150488,
"peak": 127600,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"tranches": 2,
"tranche_value": 3911926.8573750006,
"last_add_price": 127700
},
"095610": {
"code": "095610",
"name": "테스",
@@ -81,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 2602335.520457338,
"last_add_price": 130000
@@ -97,12 +76,12 @@
"entry_at": "2026-08-03T09:14:15.948558+09:00",
"stop": 92100,
"target": 106289,
"peak": 98000,
"peak": 103800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 94,562 도달",
"cur_price": 96700,
"cur_price": 101200,
"tranches": 2,
"tranche_value": 3668025.9817500007,
"last_add_price": 97700
@@ -123,17 +102,59 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3682720.3330000006,
"last_add_price": 13420
},
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 9,
"entry_price": 384000,
"entry_at": "2026-08-04T09:08:12.002085+09:00",
"stop": 349665,
"target": 487005,
"peak": 393500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 384000,
"tranches": 1,
"tranche_value": 3672451.582718751,
"last_add_price": 384000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 79,
"entry_price": 91727.84810126582,
"entry_at": "2026-08-04T09:34:11.251794+09:00",
"stop": 83204,
"target": 117299,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3663769.807718751,
"last_add_price": 93500
}
},
"realized_pnl": -41172459.77400004,
"closed_trades": 63,
"realized_pnl": -41760448.96900004,
"closed_trades": 65,
"wins": 1,
"peak_equity": 100401992.91950001,
"max_drawdown": 0.41923969666367866,
"max_drawdown": 0.4196704146080393,
"last_exit": {
"204320": "2026-06-19",
"003490": "2026-07-09",
@@ -152,17 +173,17 @@
"055550": "2026-07-20",
"034730": "2026-07-28",
"032830": "2026-07-09",
"319660": "2026-08-03",
"319660": "2026-08-04",
"105560": "2026-07-20",
"095610": "2026-07-30",
"003680": "2026-07-29",
"252990": "2026-07-28",
"086790": "2026-07-28",
"475150": "2026-07-29",
"138040": "2026-07-29",
"138040": "2026-08-04",
"161890": "2026-07-31",
"078930": "2026-07-31"
},
"created_at": "2026-06-16T10:45:02.136776+09:00",
"updated_at": "2026-08-03T15:28:11.041080+09:00"
"updated_at": "2026-08-04T15:28:11.316907+09:00"
}
@@ -160,3 +160,9 @@
{"ts": "2026-08-03T10:40:14.102200+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 97700, "qty": 37, "cost": 3615442, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 92100, "target": 98500, "signals": [{"label": "손절선", "ok": true, "detail": "92,100 (현재 97,700)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 98,500"}, {"label": "추세(40일선)", "ok": true, "detail": "92,658"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +186 · 기 -126"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 97,679"}]}
{"ts": "2026-08-03T12:00:14.273087+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 285, "cost": 3679902, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11713, "target": 16502, "signals": [{"label": "추세(40일선 위)", "ok": true, "detail": "12,930 vs 11,714"}, {"label": "정배열(5>40)", "ok": true, "detail": "12,138 / 11,714"}, {"label": "추세 기울기(40일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:12.248962+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 274, "cost": 3677632, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11713, "target": 16502, "signals": [{"label": "손절선", "ok": true, "detail": "11,713 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,502"}, {"label": "추세(40일선)", "ok": true, "detail": "11,726"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:00:30.531187+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 28, "cost": 3651748, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(40일선 위)", "ok": true, "detail": "131,500 vs 126,820"}, {"label": "정배열(5>40)", "ok": true, "detail": "163,940 / 126,820"}, {"label": "추세 기울기(40일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.065631+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 28, "proceeds": 3607751, "entry_price": 130400, "pnl": -43997, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:30.531182+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(40일선)", "ok": true, "detail": "126,762"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:08:12.002101+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 384000, "qty": 9, "cost": 3456518, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 349665, "target": 487005, "signals": [{"label": "추세(40일선 위)", "ok": true, "detail": "384,000 vs 307,350"}, {"label": "정배열(5>40)", "ok": true, "detail": "323,000 / 307,350"}, {"label": "추세 기울기(40일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "323,000 / 306,150"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+40.2%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -36 · 기 +184 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+29%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.69% (환산) vs 평균 0.93% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 334,500"}, {"label": "거래량 급증", "ok": true, "detail": "175,860 (환산) vs 평균 96,436"}, {"label": "회전율 급증", "ok": true, "detail": "1.69% (환산) vs 평균 0.93%"}, {"label": "RSI", "ok": true, "detail": "73"}]}
{"ts": "2026-08-04T09:34:11.251795+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 40, "cost": 3600540, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 81851, "target": 114446, "signals": [{"label": "추세(40일선 위)", "ok": true, "detail": "89,800 vs 74,290"}, {"label": "정배열(5>40)", "ok": true, "detail": "83,320 / 74,290"}, {"label": "추세 기울기(40일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.120568+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 39, "cost": 3647047, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 81851, "target": 114446, "signals": [{"label": "손절선", "ok": true, "detail": "81,851 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 114,446"}, {"label": "추세(40일선)", "ok": true, "detail": "74,380"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
{"ts": "2026-08-04T13:26:14.161227+09:00", "side": "SELL", "code": "138040", "name": "메리츠금융지주", "price": 117200, "qty": 61, "proceeds": 7135259, "entry_price": 125870, "pnl": -543993, "pnl_pct": -6.89, "hold_from": "2026-07-30T09:16:13.801616+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "117,665 (현재 117,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 150,488"}, {"label": "추세(40일선)", "ok": true, "detail": "110,232"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -24 · 기 +268"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
@@ -1,5 +1,5 @@
{
"cash": 19610824.2705,
"cash": 11906168.7455,
"initial": 100000000,
"positions": {
"010950": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 4497110.087925,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 2,
"tranche_value": 4441317.796325,
"last_add_price": 6030
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4537990.22125,
"last_add_price": 353000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,643 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 4438631.677600001,
"last_add_price": 18950
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4163511.5199,
"last_add_price": 126400
@@ -118,12 +118,12 @@
"entry_at": "2026-07-30T09:04:08.840088+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3652700.7210219903,
"last_add_price": 6550
@@ -144,10 +144,31 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3916421.3406499997,
"last_add_price": 13420
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 84,
"entry_price": 91708.33333333333,
"entry_at": "2026-08-04T09:34:11.254802+09:00",
"stop": 80343,
"target": 125803,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3911396.213525,
"last_add_price": 93500
}
},
"realized_pnl": -21869459.08850001,
@@ -172,5 +193,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-16T14:30:00.114884+09:00",
"updated_at": "2026-08-03T15:28:11.043150+09:00"
"updated_at": "2026-08-04T15:28:11.318913+09:00"
}
@@ -70,3 +70,5 @@
{"ts": "2026-07-31T09:06:09.979659+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 96, "proceeds": 7444655, "entry_price": 89869, "pnl": -1184040, "pnl_pct": -13.54, "hold_from": "2026-07-23T09:46:06.441344+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,832 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,978"}, {"label": "추세(10일선)", "ok": false, "detail": "79,880"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:14.277906+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 303, "cost": 3912317, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 17699, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "12,930 vs 12,003"}, {"label": "정배열(5>10)", "ok": true, "detail": "12,138 / 12,003"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:12.251087+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 291, "cost": 3905806, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 17699, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 17,699"}, {"label": "추세(10일선)", "ok": true, "detail": "12,055"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:34:11.254803+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 43, "cost": 3870581, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(10일선 위)", "ok": true, "detail": "89,800 vs 81,060"}, {"label": "정배열(5>10)", "ok": true, "detail": "83,320 / 81,060"}, {"label": "추세 기울기(10일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.123555+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 41, "cost": 3834075, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(10일선)", "ok": true, "detail": "81,420"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 18232922.479000017,
"cash": 7947479.894000016,
"initial": 100000000,
"positions": {
"010950": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 4360729.7882,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 2,
"tranche_value": 4412981.9396750005,
"last_add_price": 6030
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4542977.951950001,
"last_add_price": 353000
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 19,673 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 4191774.1235750006,
"last_add_price": 18950
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 3948679.1633750005,
"last_add_price": 126400
@@ -118,12 +118,12 @@
"entry_at": "2026-07-30T09:04:08.844002+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3503317.5815307787,
"last_add_price": 6550
@@ -144,10 +144,52 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3756374.284550001,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 21,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:12.774884+09:00",
"stop": 100700,
"target": 241500,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 145,918 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 2886875.1496863924,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 81,
"entry_price": 91728.3950617284,
"entry_at": "2026-08-04T09:34:11.256819+09:00",
"stop": 80363,
"target": 125823,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3744525.219700001,
"last_add_price": 93500
}
},
"realized_pnl": -25061823.008500025,
@@ -175,5 +217,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-16T14:30:00.114893+09:00",
"updated_at": "2026-08-03T15:28:11.045151+09:00"
"updated_at": "2026-08-04T15:28:11.320836+09:00"
}
@@ -88,3 +88,6 @@
{"ts": "2026-07-31T09:06:09.983644+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 92, "proceeds": 7134461, "entry_price": 89867, "pnl": -1134580, "pnl_pct": -13.54, "hold_from": "2026-07-23T09:46:06.443281+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,831 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,977"}, {"label": "추세(20일선)", "ok": true, "detail": "74,560"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:14.283067+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 290, "cost": 3744462, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 17699, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:12.253046+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 279, "cost": 3744742, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 17699, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 17,699"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:12.774886+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 21, "cost": 2854328, "path": "pullback", "reason": "눌림목 지정가 145,918 도달", "stop": 100700, "target": 241500, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 145,918 (현재 135,700)"}]}
{"ts": "2026-08-04T09:34:11.256821+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 41, "cost": 3690554, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "89,800 vs 75,150"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,320 / 75,150"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.125498+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 40, "cost": 3740561, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 49274639.39100003,
"cash": 42792322.646000035,
"initial": 100000000,
"positions": {
"010950": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 3561275.575471075,
"last_add_price": 130800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3616873.7658032966,
"last_add_price": 349500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4093622.4514750005,
"last_add_price": 126400
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T09:04:08.847875+09:00",
"stop": 5039,
"target": 10215,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1824297.0321790394,
"last_add_price": 6550
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1695866.1189129704,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 69,
"entry_price": 91724.63768115942,
"entry_at": "2026-08-04T09:34:11.258847+09:00",
"stop": 80360,
"target": 125820,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3179643.340837553,
"last_add_price": 93500
}
},
"realized_pnl": -23330341.97250004,
"closed_trades": 100,
"realized_pnl": -23482709.36750004,
"closed_trades": 102,
"wins": 2,
"peak_equity": 100085511.5725,
"max_drawdown": 0.2419355229448935,
@@ -129,7 +150,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"402340": "2026-07-23",
"004170": "2026-07-23",
@@ -138,7 +159,7 @@
"055550": "2026-07-20",
"105560": "2026-07-20",
"222800": "2026-07-21",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"003680": "2026-07-29",
"138040": "2026-07-28",
@@ -146,5 +167,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-16T14:30:00.114901+09:00",
"updated_at": "2026-08-03T15:28:11.047171+09:00"
"updated_at": "2026-08-04T15:28:11.322766+09:00"
}
@@ -225,3 +225,9 @@
{"ts": "2026-08-03T09:00:22.464059+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 30, "cost": 3750563, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125003, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.600654+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 7, "proceeds": 3674820, "entry_price": 534000, "pnl": -63741, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:22.462405+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,003"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.066294+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 30, "proceeds": 3700769, "entry_price": 125000, "pnl": -49793, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:22.464052+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:30.835947+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 29, "cost": 3782167, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130403, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.073097+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 29, "proceeds": 3736599, "entry_price": 130400, "pnl": -45568, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:30.835940+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,403"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.777165+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 55, "cost": 3806571, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69203, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.119763+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 55, "proceeds": 3699771, "entry_price": 69200, "pnl": -106800, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.777164+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,203"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.258849+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 35, "cost": 3150473, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 122595, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"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": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.127473+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 34, "cost": 3179477, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 122595, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 122,595"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 55939225.873499975,
"cash": 49519826.778499976,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 1541443.3087531894,
"last_add_price": 358500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 3651482.705770833,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 2548075.876504235,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:08.851553+09:00",
"stop": 4716,
"target": 8759,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 794256.6057127393,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 1528849.7285459202,
"last_add_price": 129300
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 155,086 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 946615.6637162968,
"last_add_price": 130000
@@ -155,24 +155,45 @@
"sources": [
"auto"
],
"qty": 36,
"entry_price": 96700,
"qty": 71,
"entry_price": 98671.8309859155,
"entry_at": "2026-08-03T09:00:22.619143+09:00",
"stop": 92100,
"target": 103600,
"peak": 98000,
"target": 108530,
"peak": 103800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 98,656 도달",
"cur_price": 96700,
"tranches": 1,
"cur_price": 101200,
"tranches": 2,
"tranche_value": 3558666.7005624995,
"last_add_price": 96700
"last_add_price": 100700
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 30,
"entry_price": 91750.0,
"entry_at": "2026-08-04T09:30:13.781769+09:00",
"stop": 77544,
"target": 113059,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 1416927.904713386,
"last_add_price": 93500
}
},
"realized_pnl": -14894229.801000046,
"closed_trades": 145,
"realized_pnl": -15035687.346000047,
"closed_trades": 147,
"wins": 2,
"peak_equity": 100036582.48,
"max_drawdown": 0.15270831167742246,
@@ -197,13 +218,13 @@
"402340": "2026-07-23",
"034730": "2026-08-03",
"004170": "2026-07-23",
"319660": "2026-08-03",
"319660": "2026-08-04",
"032830": "2026-07-31",
"028260": "2026-07-31",
"003490": "2026-07-23",
"214450": "2026-07-15",
"095610": "2026-07-30",
"089970": "2026-07-28",
"089970": "2026-08-04",
"010950": "2026-07-29",
"105560": "2026-07-29",
"252990": "2026-07-29",
@@ -213,5 +234,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-22T09:00:04.885275+09:00",
"updated_at": "2026-08-03T15:28:11.049084+09:00"
"updated_at": "2026-08-04T15:28:11.324604+09:00"
}
@@ -320,3 +320,10 @@
{"ts": "2026-08-03T09:00:22.619160+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 96700, "qty": 36, "cost": 3481722, "path": "pullback", "reason": "눌림목 지정가 98,656 도달", "stop": 92100, "target": 103600, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "97,100 vs 91,885"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,720 / 91,885"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,720 / 91,885"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+25.4%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +174 · 기 -127 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.78% (환산) vs 평균 1.76% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": false, "detail": "183,280 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "0.78% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 98,656 (현재 97,100)"}]}
{"ts": "2026-08-03T09:02:15.602702+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 6, "proceeds": 3149846, "entry_price": 534000, "pnl": -54635, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:22.566870+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,002"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.068203+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 28, "proceeds": 3454051, "entry_price": 125000, "pnl": -46474, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:22.568701+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:30.944191+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 27, "cost": 3521328, "path": "pullback", "reason": "눌림목 지정가 166,919 도달", "stop": 130399, "target": 130402, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 166,919 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.075027+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 27, "proceeds": 3478903, "entry_price": 130400, "pnl": -42425, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:30.944184+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,402"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.779137+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 51, "cost": 3529729, "path": "pullback", "reason": "눌림목 지정가 83,780 도달", "stop": 69199, "target": 69202, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 83,780 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.121714+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 51, "proceeds": 3430697, "entry_price": 69200, "pnl": -99032, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.779136+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,202"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:30:13.781771+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 15, "cost": 1350203, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 76419, "target": 110372, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,900 vs 75,087"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,340 / 75,087"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,340 / 75,087"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.1%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.57% (환산) vs 평균 0.42% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "528,687 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.57% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.129394+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 15, "cost": 1402710, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 76419, "target": 110372, "signals": [{"label": "손절선", "ok": true, "detail": "76,419 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 110,372"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
{"ts": "2026-08-04T13:38:12.127819+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 100700, "qty": 35, "cost": 3525029, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 92100, "target": 103600, "signals": [{"label": "손절선", "ok": true, "detail": "92,100 (현재 100,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 103,600"}, {"label": "추세(60일선)", "ok": true, "detail": "91,943"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +130 · 기 -66"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 100,594"}]}
@@ -1,5 +1,5 @@
{
"cash": 41604415.86299998,
"cash": 32917860.317999985,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 2518293.2056913,
"last_add_price": 349500
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 4205999.225949999,
"last_add_price": 120500
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 2510568.839116163,
"last_add_price": 131400
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 122,665 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 3659057.0257337983,
"last_add_price": 125200
@@ -118,12 +118,12 @@
"entry_at": "2026-07-30T09:04:08.855001+09:00",
"stop": 4909,
"target": 9179,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1296579.7110485965,
"last_add_price": 6550
@@ -144,7 +144,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 155,086 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1353927.9817436007,
"last_add_price": 130000
@@ -155,24 +155,45 @@
"sources": [
"auto"
],
"qty": 42,
"entry_price": 96700,
"qty": 82,
"entry_price": 98651.21951219512,
"entry_at": "2026-08-03T09:00:22.725478+09:00",
"stop": 92100,
"target": 105900,
"peak": 98000,
"target": 111754,
"peak": 103800,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 98,656 도달",
"cur_price": 96700,
"tranches": 1,
"cur_price": 101200,
"tranches": 2,
"tranche_value": 4073215.380649999,
"last_add_price": 96700
"last_add_price": 100700
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 49,
"entry_price": 91714.28571428571,
"entry_at": "2026-08-04T09:34:11.262542+09:00",
"stop": 79213,
"target": 116717,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 2307538.176336596,
"last_add_price": 93500
}
},
"realized_pnl": -18918133.40750006,
"closed_trades": 135,
"realized_pnl": -19081410.65250006,
"closed_trades": 137,
"wins": 2,
"peak_equity": 100139236.48850003,
"max_drawdown": 0.19573051570800562,
@@ -196,7 +217,7 @@
"034730": "2026-08-03",
"402340": "2026-07-23",
"084370": "2026-07-09",
"319660": "2026-08-03",
"319660": "2026-08-04",
"032830": "2026-07-31",
"004170": "2026-07-23",
"028260": "2026-07-31",
@@ -209,8 +230,9 @@
"010950": "2026-07-28",
"003680": "2026-07-29",
"161890": "2026-07-31",
"078930": "2026-07-31"
"078930": "2026-07-31",
"089970": "2026-08-04"
},
"created_at": "2026-06-22T09:00:04.885286+09:00",
"updated_at": "2026-08-03T15:28:11.051000+09:00"
"updated_at": "2026-08-04T15:28:11.326416+09:00"
}
@@ -302,3 +302,10 @@
{"ts": "2026-08-03T09:00:22.725484+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 96700, "qty": 42, "cost": 4062009, "path": "pullback", "reason": "눌림목 지정가 98,656 도달", "stop": 92100, "target": 105900, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "97,100 vs 91,885"}, {"label": "정배열(5>60)", "ok": true, "detail": "106,720 / 91,885"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "106,720 / 91,885"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+25.4%p"}, {"label": "수급(7일 외/기)", "ok": true, "detail": "외 +174 · 기 -127 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+36%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.78% (환산) vs 평균 1.76% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 124,600"}, {"label": "거래량 급증", "ok": false, "detail": "183,280 (환산) vs 평균 415,172"}, {"label": "회전율 급증", "ok": false, "detail": "0.78% (환산) vs 평균 1.76%"}, {"label": "RSI", "ok": true, "detail": "49"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 98,656 (현재 97,100)"}]}
{"ts": "2026-08-03T09:02:15.604753+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 7, "proceeds": 3674820, "entry_price": 534000, "pnl": -63741, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:22.723976+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,002"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.070077+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 32, "proceeds": 3947487, "entry_price": 125000, "pnl": -53113, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:22.724819+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:31.050758+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 31, "cost": 4043006, "path": "pullback", "reason": "눌림목 지정가 166,919 도달", "stop": 130399, "target": 130402, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(7일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 166,919 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.076875+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 31, "proceeds": 3994296, "entry_price": 130400, "pnl": -48710, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:31.050753+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,402"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.781104+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 59, "cost": 4083412, "path": "pullback", "reason": "눌림목 지정가 83,780 도달", "stop": 69199, "target": 69202, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(7일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 83,780 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.123630+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 59, "proceeds": 3968846, "entry_price": 69200, "pnl": -114567, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.781102+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,202"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:34:11.262544+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 25, "cost": 2250338, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 78048, "target": 113903, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,800 vs 75,085"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(7일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.131297+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 24, "cost": 2244337, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 78048, "target": 113903, "signals": [{"label": "손절선", "ok": true, "detail": "78,048 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 113,903"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
{"ts": "2026-08-04T13:38:12.130066+09:00", "side": "BUY", "code": "161890", "name": "한국콜마", "price": 100700, "qty": 40, "cost": 4028604, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 92100, "target": 105900, "signals": [{"label": "손절선", "ok": true, "detail": "92,100 (현재 100,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 105,900"}, {"label": "추세(60일선)", "ok": true, "detail": "91,943"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +130 · 기 -66"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 100,594"}]}
@@ -1,28 +1,7 @@
{
"cash": 27834515.96099998,
"cash": 30965917.19799998,
"initial": 100000000,
"positions": {
"090850": {
"code": "090850",
"name": "현대이지웰",
"sources": [
"auto"
],
"qty": 1941,
"entry_price": 5969.412673879444,
"entry_at": "2026-07-14T09:40:05.124984+09:00",
"stop": 5498,
"target": 6912,
"peak": 6380,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"tranches": 2,
"tranche_value": 5795785.200968751,
"last_add_price": 6030
},
"214450": {
"code": "214450",
"name": "파마리서치",
@@ -39,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 4001941.6430547875,
"last_add_price": 353000
@@ -60,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5568373.021031249,
"last_add_price": 18950
@@ -81,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5455736.499937499,
"last_add_price": 120500
@@ -102,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 3831166.3013964198,
"last_add_price": 131400
@@ -118,12 +97,12 @@
"entry_at": "2026-07-30T09:04:08.858054+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1966668.8608710542,
"last_add_price": 6550
@@ -144,14 +123,56 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3410257.3290165723,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 11,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:12.782952+09:00",
"stop": 100700,
"target": 206300,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,279 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1620567.0767187355,
"last_add_price": 135900
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 75,
"entry_price": 91726.66666666667,
"entry_at": "2026-08-04T09:34:11.264396+09:00",
"stop": 80362,
"target": 114457,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 3473418.0492728935,
"last_add_price": 93500
}
},
"realized_pnl": -16419323.369000018,
"closed_trades": 29,
"realized_pnl": -16500633.96650002,
"closed_trades": 30,
"wins": 1,
"peak_equity": 102728958.65750001,
"max_drawdown": 0.19124198682866445,
@@ -174,8 +195,9 @@
"010950": "2026-07-28",
"003680": "2026-07-29",
"161890": "2026-07-30",
"078930": "2026-07-31"
"078930": "2026-07-31",
"090850": "2026-08-04"
},
"created_at": "2026-06-22T09:00:04.885297+09:00",
"updated_at": "2026-08-03T15:28:11.052896+09:00"
"updated_at": "2026-08-04T15:28:11.328234+09:00"
}
@@ -87,3 +87,7 @@
{"ts": "2026-07-31T09:06:09.996769+09:00", "side": "SELL", "code": "078930", "name": "GS", "price": 77700, "qty": 79, "proceeds": 6126330, "entry_price": 89977, "pnl": -982936, "pnl_pct": -13.64, "hold_from": "2026-07-29T10:10:03.570762+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "78,812 (현재 78,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 112,307"}, {"label": "추세(20일선)", "ok": true, "detail": "74,560"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -179 · 기 +325"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:14.298361+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 264, "cost": 3408751, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11314, "target": 16103, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:12.260532+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 254, "cost": 3409191, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11314, "target": 16103, "signals": [{"label": "손절선", "ok": true, "detail": "11,314 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 16,103"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:12.782954+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 11, "cost": 1495124, "path": "pullback", "reason": "눌림목 지정가 156,279 도달", "stop": 100700, "target": 206300, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,279 (현재 135,700)"}]}
{"ts": "2026-08-04T09:10:12.800833+09:00", "side": "SELL", "code": "090850", "name": "현대이지웰", "price": 5940, "qty": 1941, "proceeds": 11507057, "entry_price": 5969, "pnl": -81311, "pnl_pct": -0.49, "hold_from": "2026-07-14T09:40:05.124984+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "5,498 (현재 5,950)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 6,912"}, {"label": "추세(20일선)", "ok": true, "detail": "5,337"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +34 · 기 +9"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:34:11.264398+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 38, "cost": 3420513, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 111730, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "89,800 vs 75,150"}, {"label": "정배열(5>20)", "ok": true, "detail": "83,320 / 75,150"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,320 / 75,085"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.64% (환산) vs 평균 0.42% (보류 4배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "595,733 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.64% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.133172+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 37, "cost": 3460019, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 111730, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 111,730"}, {"label": "추세(20일선)", "ok": true, "detail": "75,330"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 69224709.39099991,
"cash": 64886660.58099991,
"initial": 100000000,
"positions": {
"214450": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 372000,
"cur_price": 384000,
"tranches": 2,
"tranche_value": 2312659.7890401366,
"last_add_price": 356000
@@ -34,12 +34,12 @@
"entry_at": "2026-07-30T09:04:09.441073+09:00",
"stop": 5039,
"target": 8921,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,457 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1203208.5458201522,
"last_add_price": 6550
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 2306480.448467309,
"last_add_price": 129300
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 3136055.5079668667,
"last_add_price": 127700
@@ -102,14 +102,35 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 144,129 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1132336.3051976096,
"last_add_price": 130000
},
"078930": {
"code": "078930",
"name": "GS",
"sources": [
"auto"
],
"qty": 45,
"entry_price": 91711.11111111111,
"entry_at": "2026-08-04T09:30:13.788259+09:00",
"stop": 80346,
"target": 114441,
"peak": 98200,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 96900,
"tranches": 2,
"tranche_value": 2113971.514069947,
"last_add_price": 93500
}
},
"realized_pnl": -14764359.329500057,
"closed_trades": 95,
"realized_pnl": -14974789.089500057,
"closed_trades": 97,
"wins": 1,
"peak_equity": 100266527.41749999,
"max_drawdown": 0.1540124858139334,
@@ -125,7 +146,7 @@
"093370": "2026-07-20",
"034730": "2026-08-03",
"032830": "2026-07-31",
"319660": "2026-08-03",
"319660": "2026-08-04",
"011070": "2026-07-24",
"003490": "2026-07-09",
"402340": "2026-07-22",
@@ -133,7 +154,7 @@
"028260": "2026-07-31",
"055550": "2026-07-20",
"105560": "2026-07-20",
"089970": "2026-07-27",
"089970": "2026-08-04",
"095610": "2026-07-30",
"086790": "2026-07-27",
"003680": "2026-07-29",
@@ -144,5 +165,5 @@
"475150": "2026-08-03"
},
"created_at": "2026-06-22T09:00:04.885305+09:00",
"updated_at": "2026-08-03T15:28:11.056173+09:00"
"updated_at": "2026-08-04T15:28:11.330029+09:00"
}
@@ -215,3 +215,9 @@
{"ts": "2026-08-03T09:00:23.810551+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 125000, "qty": 42, "cost": 5250788, "path": "pullback", "reason": "눌림목 지정가 156,225 도달", "stop": 124999, "target": 125002, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "127,000 vs 112,675"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,040 / 112,675"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+45.9%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +385 · 기 -227 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+44%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.29% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "373,687 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.29% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "45"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,225 (현재 127,000)"}]}
{"ts": "2026-08-03T09:02:15.610235+09:00", "side": "SELL", "code": "034730", "name": "SK", "price": 526000, "qty": 9, "proceeds": 4724769, "entry_price": 534000, "pnl": -81952, "pnl_pct": -1.5, "hold_from": "2026-08-03T09:00:23.809740+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "533,999 (현재 528,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 534,002"}, {"label": "추세(60일선)", "ok": true, "detail": "527,000"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +85 · 기 -41"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 573,900"}]}
{"ts": "2026-08-03T09:08:11.075059+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 123600, "qty": 42, "proceeds": 5181077, "entry_price": 125000, "pnl": -69710, "pnl_pct": -1.12, "hold_from": "2026-08-03T09:00:23.810544+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "124,999 (현재 123,600)"}, {"label": "목표/트레일링", "ok": null, "detail": "트레일링 ON"}, {"label": "추세(60일선)", "ok": true, "detail": "112,618"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +385 · 기 -227"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-04T09:00:31.249690+09:00", "side": "BUY", "code": "319660", "name": "피에스케이", "price": 130400, "qty": 40, "cost": 5216782, "path": "pullback", "reason": "눌림목 지정가 156,278 도달", "stop": 130399, "target": 130402, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "131,500 vs 112,750"}, {"label": "정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "163,940 / 112,750"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+48.6%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +69 · 기 +19 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+39%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.42% (환산) vs 평균 2.68% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 196,500"}, {"label": "거래량 급증", "ok": false, "detail": "410,487 (환산) vs 평균 777,376"}, {"label": "회전율 급증", "ok": false, "detail": "1.42% (환산) vs 평균 2.68%"}, {"label": "RSI", "ok": true, "detail": "46"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,278 (현재 131,500)"}]}
{"ts": "2026-08-04T09:02:12.080470+09:00", "side": "SELL", "code": "319660", "name": "피에스케이", "price": 129100, "qty": 40, "proceeds": 5153930, "entry_price": 130400, "pnl": -62852, "pnl_pct": -1.0, "hold_from": "2026-08-04T09:00:31.249685+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "130,399 (현재 129,200)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 130,402"}, {"label": "추세(60일선)", "ok": true, "detail": "112,712"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +69 · 기 +19"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 141,041"}]}
{"ts": "2026-08-04T09:04:12.784919+09:00", "side": "BUY", "code": "089970", "name": "브이엠", "price": 69200, "qty": 76, "cost": 5259989, "path": "pullback", "reason": "눌림목 지정가 77,020 도달", "stop": 69199, "target": 69202, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "69,900 vs 69,834"}, {"label": "정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "97,660 / 69,834"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+1.1%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 -109 · 기 +238 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+76%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "4.31% (환산) vs 평균 3.65% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 122,100"}, {"label": "거래량 급증", "ok": false, "detail": "1,070,900 (환산) vs 평균 902,898"}, {"label": "회전율 급증", "ok": false, "detail": "4.31% (환산) vs 평균 3.65%"}, {"label": "RSI", "ok": true, "detail": "41"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 77,020 (현재 69,900)"}]}
{"ts": "2026-08-04T09:06:14.127238+09:00", "side": "SELL", "code": "089970", "name": "브이엠", "price": 67400, "qty": 76, "proceeds": 5112411, "entry_price": 69200, "pnl": -147578, "pnl_pct": -2.6, "hold_from": "2026-08-04T09:04:12.784918+09:00", "reason": "손절", "partial": false, "signals": [{"label": "손절선", "ok": false, "detail": "69,199 (현재 67,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 69,202"}, {"label": "추세(60일선)", "ok": false, "detail": "69,794"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -109 · 기 +238"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 75,960"}]}
{"ts": "2026-08-04T09:30:13.788261+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 90000, "qty": 23, "cost": 2070311, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 79135, "target": 111730, "signals": [{"label": "추세(60일선 위)", "ok": true, "detail": "89,900 vs 75,087"}, {"label": "정배열(5>60)", "ok": true, "detail": "83,340 / 75,087"}, {"label": "추세 기울기(60일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "83,340 / 75,087"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+55.1%p"}, {"label": "수급(10일 외/기)", "ok": true, "detail": "외 +68 · 기 +117 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+15%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.57% (환산) vs 평균 0.42% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 87,600"}, {"label": "거래량 급증", "ok": true, "detail": "528,687 (환산) vs 평균 392,182"}, {"label": "회전율 급증", "ok": true, "detail": "0.57% (환산) vs 평균 0.42%"}, {"label": "RSI", "ok": true, "detail": "69"}]}
{"ts": "2026-08-04T10:32:14.135059+09:00", "side": "BUY", "code": "078930", "name": "GS", "price": 93500, "qty": 22, "cost": 2057309, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 79135, "target": 111730, "signals": [{"label": "손절선", "ok": true, "detail": "79,135 (현재 93,400)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 111,730"}, {"label": "추세(60일선)", "ok": true, "detail": "75,145"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +57 · 기 +117"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 92,841"}]}
@@ -1,5 +1,5 @@
{
"cash": 39187200.511499934,
"cash": 30788040.82649993,
"initial": 100000000,
"positions": {
"030000": {
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,032 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 5436948.876062496,
"last_add_price": 18950
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 118,115 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 2,
"tranche_value": 5277899.060343745,
"last_add_price": 120500
@@ -55,12 +55,12 @@
"entry_at": "2026-07-30T09:04:09.454453+09:00",
"stop": 5169,
"target": 8662,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,792 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 2136566.0520882774,
"last_add_price": 6550
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 1,
"tranche_value": 4119469.484194937,
"last_add_price": 129300
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 6020,
"cur_price": 5970,
"tranches": 1,
"tranche_value": 5291635.3098124955,
"last_add_price": 6280
@@ -123,17 +123,59 @@
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 13170,
"cur_price": 13300,
"tranches": 2,
"tranche_value": 3633870.24313841,
"last_add_price": 13420
},
"095610": {
"code": "095610",
"name": "테스",
"sources": [
"auto"
],
"qty": 11,
"entry_price": 135900,
"entry_at": "2026-08-04T09:04:12.786687+09:00",
"stop": 100700,
"target": 206300,
"peak": 135900,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 156,279 도달",
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1557708.3955273924,
"last_add_price": 135900
},
"214450": {
"code": "214450",
"name": "파마리서치",
"sources": [
"auto"
],
"qty": 18,
"entry_price": 383500.0,
"entry_at": "2026-08-04T09:04:12.829258+09:00",
"stop": 341591,
"target": 467318,
"peak": 393500,
"trailing_on": false,
"scaled_out": false,
"entry_path": "breakout",
"entry_reason": "거래량·회전율 동반 전고점 돌파",
"cur_price": 384000,
"tranches": 2,
"tranche_value": 3761610.082144947,
"last_add_price": 390000
}
},
"realized_pnl": -18776875.04550002,
"closed_trades": 43,
"wins": 5,
"peak_equity": 103214817.49949999,
"max_drawdown": 0.22080702693787602,
"max_drawdown": 0.22368509902284037,
"last_exit": {
"403870": "2026-07-07",
"000660": "2026-06-29",
@@ -160,5 +202,5 @@
"161890": "2026-07-30"
},
"created_at": "2026-06-22T09:00:04.885314+09:00",
"updated_at": "2026-08-03T15:28:11.057890+09:00"
"updated_at": "2026-08-04T15:28:11.331778+09:00"
}
@@ -119,3 +119,6 @@
{"ts": "2026-08-03T09:04:11.911660+09:00", "side": "SELL", "code": "214450", "name": "파마리서치", "price": 339000, "qty": 23, "proceeds": 7781796, "entry_price": 340500, "pnl": -50879, "pnl_pct": -0.44, "hold_from": "2026-07-13T14:36:02.694098+09:00", "reason": "시간손절 — 20일 보유·진전 없음(자본 회전)", "partial": false, "signals": [{"label": "손절선", "ok": true, "detail": "303,669 (현재 338,000)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 414,161"}, {"label": "추세(20일선)", "ok": true, "detail": "296,025"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -190 · 기 +383"}, {"label": "분할(2/2)", "ok": null, "detail": "추가 종료"}]}
{"ts": "2026-08-03T12:00:14.310105+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 12910, "qty": 281, "cost": 3628254, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 11473, "target": 15783, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "12,930 vs 11,922"}, {"label": "정배열(5>20)", "ok": true, "detail": "12,138 / 11,922"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "12,138 / 11,924"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+27.3%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +7 · 기 +10 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+74%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "어닝 서프라이즈", "ok": true, "detail": "+ "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "0.72% (환산) vs 평균 0.34% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 12,870"}, {"label": "거래량 급증", "ok": true, "detail": "208,994 (환산) vs 평균 99,303"}, {"label": "회전율 급증", "ok": true, "detail": "0.72% (환산) vs 평균 0.34%"}, {"label": "RSI", "ok": true, "detail": "63"}]}
{"ts": "2026-08-03T12:02:12.265361+09:00", "side": "BUY", "code": "194370", "name": "제이에스코퍼레이션", "price": 13420, "qty": 270, "cost": 3623944, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 11473, "target": 15783, "signals": [{"label": "손절선", "ok": true, "detail": "11,473 (현재 13,450)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 15,783"}, {"label": "추세(20일선)", "ok": true, "detail": "11,948"}, {"label": "수급(외/기)", "ok": true, "detail": "외 +7 · 기 +10"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 13,339"}]}
{"ts": "2026-08-04T09:04:12.786688+09:00", "side": "BUY", "code": "095610", "name": "테스", "price": 135900, "qty": 11, "cost": 1495124, "path": "pullback", "reason": "눌림목 지정가 156,279 도달", "stop": 100700, "target": 206300, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "135,700 vs 135,200"}, {"label": "정배열(5>20)", "ok": true, "detail": "167,780 / 135,200"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "167,780 / 99,378"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+24.8%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 +23 · 기 +54 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+45%"}, {"label": "목표가 리비전", "ok": true, "detail": "상향 "}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "6.62% (환산) vs 평균 3.06% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": false, "detail": "고점 202,500"}, {"label": "거래량 급증", "ok": true, "detail": "1,281,140 (환산) vs 평균 591,925"}, {"label": "회전율 급증", "ok": true, "detail": "6.62% (환산) vs 평균 3.06%"}, {"label": "RSI", "ok": true, "detail": "52"}, {"label": "눌림목 도달", "ok": true, "detail": "지정가 156,279 (현재 135,700)"}]}
{"ts": "2026-08-04T09:04:12.829260+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 377000, "qty": 9, "cost": 3393509, "path": "breakout", "reason": "거래량·회전율 동반 전고점 돌파", "stop": 336569, "target": 457861, "signals": [{"label": "추세(20일선 위)", "ok": true, "detail": "378,000 vs 298,025"}, {"label": "정배열(5>20)", "ok": true, "detail": "321,800 / 298,025"}, {"label": "추세 기울기(20일선↑)", "ok": true, "detail": "우상향"}, {"label": "중기 정배열(5>60)", "ok": true, "detail": "321,800 / 306,050"}, {"label": "상대강도(시장대비)", "ok": true, "detail": "+38.0%p"}, {"label": "수급(5일 외/기)", "ok": true, "detail": "외 -36 · 기 +184 (천주)"}, {"label": "상승여력", "ok": true, "detail": "+31%"}, {"label": "시장 강세", "ok": true, "detail": "강세"}, {"label": "과열 아님(회전율)", "ok": true, "detail": "1.26% (환산) vs 평균 0.93% (보류 3배↑)"}, {"label": "돌파(전고점)", "ok": true, "detail": "고점 334,500"}, {"label": "거래량 급증", "ok": true, "detail": "131,287 (환산) vs 평균 96,436"}, {"label": "회전율 급증", "ok": true, "detail": "1.26% (환산) vs 평균 0.93%"}, {"label": "RSI", "ok": true, "detail": "72"}]}
{"ts": "2026-08-04T09:20:13.880337+09:00", "side": "BUY", "code": "214450", "name": "파마리서치", "price": 390000, "qty": 9, "cost": 3510527, "path": "add", "reason": "추격매수 — 2/2차 (추세 지속)", "stop": 336569, "target": 457861, "signals": [{"label": "손절선", "ok": true, "detail": "336,569 (현재 389,500)"}, {"label": "목표/트레일링", "ok": null, "detail": "목표 457,861"}, {"label": "추세(20일선)", "ok": true, "detail": "298,600"}, {"label": "수급(외/기)", "ok": true, "detail": "외 -36 · 기 +184"}, {"label": "분할(1/2)", "ok": null, "detail": "추가 트리거 388,641"}]}
@@ -18,7 +18,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 101800,
"cur_price": 102100,
"tranches": 2,
"tranche_value": 6938801.472958329,
"last_add_price": 102800
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 120600,
"cur_price": 125700,
"tranches": 2,
"tranche_value": 5861557.685734485,
"last_add_price": 132000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 20,161 도달",
"cur_price": 18820,
"cur_price": 18740,
"tranches": 2,
"tranche_value": 6690702.074333329,
"last_add_price": 19320
@@ -81,7 +81,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 123,992 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 6165364.773487983,
"last_add_price": 125200
@@ -97,12 +97,12 @@
"entry_at": "2026-07-30T09:04:09.464575+09:00",
"stop": 5363,
"target": 8759,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 7,925 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 3093906.011390296,
"last_add_price": 6550
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "immediate",
"entry_reason": "조건 충족 — 즉시매수(눌림 안 기다림)",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 1,
"tranche_value": 6612916.885208328,
"last_add_price": 123300
@@ -159,5 +159,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-22T09:00:04.885323+09:00",
"updated_at": "2026-08-03T15:28:11.059611+09:00"
"updated_at": "2026-08-04T15:28:11.333442+09:00"
}
@@ -39,7 +39,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 99,600 도달",
"cur_price": 101800,
"cur_price": 102100,
"tranches": 2,
"tranche_value": 3798555.0123003162,
"last_add_price": 101000
@@ -60,7 +60,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 129,300 도달",
"cur_price": 126900,
"cur_price": 127100,
"tranches": 2,
"tranche_value": 3001414.640453794,
"last_add_price": 125200
@@ -76,12 +76,12 @@
"entry_at": "2026-07-30T11:58:10.485849+09:00",
"stop": 5195,
"target": 9595,
"peak": 6640,
"peak": 6840,
"trailing_on": false,
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 8,460 도달",
"cur_price": 6150,
"cur_price": 6430,
"tranches": 2,
"tranche_value": 1348446.2744731682,
"last_add_price": 6550
@@ -102,7 +102,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 123,300 도달",
"cur_price": 119700,
"cur_price": 119300,
"tranches": 1,
"tranche_value": 3339227.3986436105,
"last_add_price": 123200
@@ -123,7 +123,7 @@
"scaled_out": false,
"entry_path": "pullback",
"entry_reason": "눌림목 지정가 177,000 도달",
"cur_price": 127200,
"cur_price": 132400,
"tranches": 1,
"tranche_value": 1011663.4892730853,
"last_add_price": 133900
@@ -175,5 +175,5 @@
"078930": "2026-07-31"
},
"created_at": "2026-06-22T09:00:04.885332+09:00",
"updated_at": "2026-08-03T15:28:11.065929+09:00"
"updated_at": "2026-08-04T15:28:11.339231+09:00"
}

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