auto: 일일 백업 2026-08-05 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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:00–15: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:00–15:30 **매 1분** (`StartCalendarInterval` 391엔트리, 스크립트 self-skip) | `trailing_monitor.py check` | **트레일링 스톱 감시** (2026-07-30 도입). ⚠️ **매매 API를 자동 호출하는 유일한 트리거** — `feedback_no_trade_auto_triggers` 예외로 관리자님이 명시 승인. 허용 근거: 호출하는 건 `kiwoom_order.modify_order` **하나뿐**이고 신규 발주·수량·방향 변경 경로가 없음. PIN 승인 시 계좌·종목·수량·트레일 폭이 확정되고, 감시는 이미 승인된 스톱주문의 조건단가를 **상향만** 정정. 예약 0건이면 즉시 종료(API 콜 0). 상태 `state/trailing_stops.json`, 로그 `logs/stock-trailing-monitor.{log,err.log}`. ⚠️ **cadence 이력 2분→30초→1분**(전부 2026-07-30 관리자님 지시). launchd 최소 단위가 1분이라 30초는 프로세스 내부 `--repeat 2 --gap 30`(1분 발화 × 30초 간격 2회)으로 구현했고 **CLI 옵션은 살아있다** — 다시 30초로 갈 땐 plist ProgramArguments에 인자만 추가. `StartInterval=30`은 GUI idle 시 발화 보류라 사용 금지(sim-scan이 같은 이유로 캘린더 전환). ⚠️ **스톱주문은 장 마감 후 소멸한다 — 2026-07-30 실증 완료**(가정이 틀렸음). 첫 실주문 TRL-A2Z4(제닉스로보틱스 1주, 14:35 등록, 손절선 4,370→4,455 3회 상향)가 **체결 없이** 사라졌다: 당일매매일지 매도 기록 0건 · 보유수량 3,338주 불변 · 미체결 0건. 감지 시각 **18:21**(15:30 장 마감 즉시가 아니라 몇 시간 뒤 — 감시는 그 사이 매분 정상 발화했고 로그가 조용했으니 주문은 18:20까지 조회에 살아있었다. NXT 시간대엔 손절선이 실제로 유효했던 셈. 1회 관측이라 매일 같은 시각인지는 미확인). ⚠️ **자동 재등록 안 한다**(관리자님 결정) — 알림만 보내고 재등록은 자산웹에서 수동. 소멸 알림에 사유 구분 있음(아래). ⚠️ **예약 종료 알림 3갈래**(`_fill_check`+`_notify_gone`): 미체결 조회에서 사라진 것만으로는 체결·취소·소멸을 구분할 수 없어(셋 다 목록에서 빠짐) 예약이 사라질 때만 ka10170 1콜 추가로 판정 — ✅체결(당일 매도기록 있음, 수량·평균가·실현손익 표시. 관리자님 수동 매도와는 구분 불가라 단정 안 함) / ⚠️소멸(매도기록 없음 = 체결 안 됨 확정 + 재등록 안내) / 🎯판정불가(일지 조회 실패). **조회 실패를 '체결 안 됨'으로 단정하면 안 된다** — `_fill_check`가 (기록, 성공여부) 튜플을 반환하는 이유. ⚠️ **초기 고점 = 등록 시점 현재가 고정**, 이후 갱신도 **현재가로만**(당일고가를 쓰면 등록 전 고가 때문에 즉시 발동). ⚠️ **고점 기준 선택 옵션은 2026-07-30 제거 — 다시 넣지 말 것**(`peak_basis`/`52주 전고점`/`매수후 고점`). 과거 고점 기준은 손절선이 현재가 위로 올라가 `TRAIL_IMMEDIATE` 거부되는데, **손실 종목은 등록 자체가 불가**(실측 제닉스로보틱스 현재가 4,805 · 매수후 고점 6,890 → 필요 폭 30.3% / 52주 19,940 → 75.9%, 상한 30% 초과)고 **이익 종목은 과거 고점 ≈ 현재가라 결과가 동일**. 차이 날 때 못 쓰고 쓸 수 있을 때 차이 없어 폐기. ⚠️ **최저 매도가**(`min_sell_price`)로 손절선 하한 지정 가능 — `cond_uv = max(트레일, 최저가)`. 트레일 폭을 넓게 잡아도 이 가격 아래로 안 내려간다. 고점이 올라 트레일이 추월하면 그 뒤론 트레일 지배(전환점 = 최저가÷(1−pct)). 1분 간격이라 그 사이 스파이크는 놓친다(손절선이 덜 올라가는 방향 — 손실 위험 아님). ⚠️ **정밀도 보완 안 함으로 결론**(2026-07-30 관리자님): 최저 매도가로 하한이 통제되니 1분 해상도 누락은 감당 범위. `entry_day_high` 기준선 / `realtime_hub` WS 틱 추적 **둘 다 채택 안 함 — 재제안 금지** |
|
||||
| `briefing` | 평일 20:10 (휴장일 self-skip) | `stock_portfolio_report.py send` | 메일만 발송. 텔레그램 리포트 요약은 2026-05-14 관리자님 요청으로 비활성화. 실패 시 자가 알림 |
|
||||
| `briefing-fallback-2030` | 평일 20:30 (휴장일 self-skip) | `briefing_fallback.py retry` | 스냅샷 있으면 skip(idempotent), 없으면 send 재실행. 알림 없음 |
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -1,28 +1,7 @@
|
||||
{
|
||||
"cash": 12223227.048999976,
|
||||
"cash": 21355750.116999976,
|
||||
"initial": 100000000,
|
||||
"positions": {
|
||||
"090850": {
|
||||
"code": "090850",
|
||||
"name": "현대이지웰",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 2454,
|
||||
"entry_price": 5969.413202933985,
|
||||
"entry_at": "2026-07-14T09:50:06.156313+09:00",
|
||||
"stop": 5616,
|
||||
"target": 7029,
|
||||
"peak": 6380,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "breakout",
|
||||
"entry_reason": "거래량·회전율 동반 전고점 돌파",
|
||||
"cur_price": 6020,
|
||||
"tranches": 2,
|
||||
"tranche_value": 7328397.072583333,
|
||||
"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": 5051541.085061288,
|
||||
"last_add_price": 353000
|
||||
@@ -60,7 +39,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 20,750 도달",
|
||||
"cur_price": 18820,
|
||||
"cur_price": 18740,
|
||||
"tranches": 2,
|
||||
"tranche_value": 7068569.038333331,
|
||||
"last_add_price": 18950
|
||||
@@ -81,7 +60,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 123,300 도달",
|
||||
"cur_price": 119700,
|
||||
"cur_price": 119300,
|
||||
"tranches": 2,
|
||||
"tranche_value": 7048635.583499998,
|
||||
"last_add_price": 120500
|
||||
@@ -102,7 +81,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 99,600 도달",
|
||||
"cur_price": 101800,
|
||||
"cur_price": 102100,
|
||||
"tranches": 2,
|
||||
"tranche_value": 6198757.029677045,
|
||||
"last_add_price": 101000
|
||||
@@ -118,19 +97,40 @@
|
||||
"entry_at": "2026-07-30T11:40:14.794832+09:00",
|
||||
"stop": 5320,
|
||||
"target": 9201,
|
||||
"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": 2534350.598481804,
|
||||
"last_add_price": 6550
|
||||
},
|
||||
"051900": {
|
||||
"code": "051900",
|
||||
"name": "LG생활건강",
|
||||
"sources": [
|
||||
"auto"
|
||||
],
|
||||
"qty": 19,
|
||||
"entry_price": 285000,
|
||||
"entry_at": "2026-08-04T09:10:13.228714+09:00",
|
||||
"stop": 263852,
|
||||
"target": 348444,
|
||||
"peak": 292000,
|
||||
"trailing_on": false,
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 292,000 도달",
|
||||
"cur_price": 291000,
|
||||
"tranches": 1,
|
||||
"tranche_value": 5627934.834167534,
|
||||
"last_add_price": 285000
|
||||
}
|
||||
},
|
||||
"realized_pnl": -17935118.274000023,
|
||||
"closed_trades": 33,
|
||||
"realized_pnl": -18037920.297000024,
|
||||
"closed_trades": 34,
|
||||
"wins": 1,
|
||||
"peak_equity": 100133491.83,
|
||||
"max_drawdown": 0.18484209870982204,
|
||||
@@ -154,8 +154,9 @@
|
||||
"086790": "2026-07-28",
|
||||
"010950": "2026-07-28",
|
||||
"003680": "2026-07-29",
|
||||
"161890": "2026-07-30"
|
||||
"161890": "2026-07-30",
|
||||
"090850": "2026-08-04"
|
||||
},
|
||||
"created_at": "2026-06-22T09:00:04.885342+09:00",
|
||||
"updated_at": "2026-08-03T15:28:11.067602+09:00"
|
||||
"updated_at": "2026-08-04T15:28:11.340870+09:00"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user