Compare commits
3 Commits
a61f1f67c5
...
b3696949f5
| Author | SHA1 | Date | |
|---|---|---|---|
| b3696949f5 | |||
| eaa276b26d | |||
| 70f6b9a34d |
@@ -36,7 +36,7 @@ LLM이 자막 요약·뉴스 평문 생성·결산 보고서 등 본문을 만
|
||||
|
||||
| 작업 | 진입점 (사람이 시키는 한 마디) | 트리거 |
|
||||
|---|---|---|
|
||||
| **오전 브리핑** (main/클로) | "오전 브리핑 메일 보내줘" → cron payload의 step 그대로 실행 | OpenClaw cron `56d66b54` (매일 07:00) |
|
||||
| **오전 브리핑** (main/클로) | "오전 브리핑 메일 보내줘" → cron payload의 step 그대로 실행 (미국증시 요약 포함) | OpenClaw cron `56d66b54` (매일 07:55) + fallback `b3f1c2d4...0830` (매일 08:30, US 미게시 보완) |
|
||||
| **오후 브리핑** (main/클로) | "오후 브리핑 메일 보내줘" → cron payload의 step 그대로 실행 | OpenClaw cron `9d2c105f` (매일 19:00) |
|
||||
| **비하이브 종목분석 요약** (stock/레이) | "비하이브 신규 영상 점검해줘" → cron payload의 step 그대로 실행 | OpenClaw cron `747e1013` (평일 07/12/18시) |
|
||||
| **월간 결산** (budget/골디) | "월간 결산 돌려줘" → cron payload의 step 그대로 실행 | OpenClaw cron `08e9a978` (매월 1일 05:00) |
|
||||
|
||||
@@ -1907,7 +1907,7 @@ def _render_row(c: dict, source: str = 'watchlist') -> str:
|
||||
|
||||
if mode == 'held':
|
||||
qty = c.get('held_qty', 0)
|
||||
status_cell = f'<span class="badge held">보유 {qty:,} 주</span>'
|
||||
status_cell = f'<span class="badge held">📦 {qty:,}</span>'
|
||||
accounts = c.get('held_accounts') or []
|
||||
avg = c.get('held_avg_price', 0)
|
||||
held_row = (
|
||||
@@ -2767,7 +2767,7 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
|
||||
<summary>
|
||||
<div class="left">
|
||||
<div class="line1 line1-held">{_buy_rank_badge(buy_amount)}<span class="{stock_cls}">{stock}</span><span class="code acct-mini">{acct_label}</span></div>
|
||||
<div class="line2"><span class="badge held">보유 {qty:,} 주</span>{_pending_badges_html(r)}<span class="muted small wt-chip"><span class="rt-weight">{weight:.2f}</span>%</span>{star}</div>
|
||||
<div class="line2"><span class="badge held">📦 {qty:,}</span>{_pending_badges_html(r)}<span class="muted small wt-chip"><span class="rt-weight">{weight:.2f}</span>%</span>{star}</div>
|
||||
{summary_journal_html}
|
||||
</div>
|
||||
<div class="right">
|
||||
@@ -4298,7 +4298,7 @@ details.row + .section-label { margin-top: 14px; padding-top: 24px; border-top-c
|
||||
.btn-tag-quick.active { color: #ff6b78; background: rgba(255,77,94,0.14); border-color: rgba(255,77,94,0.50); }
|
||||
.btn-tag-quick.active:hover { background: rgba(255,77,94,0.22); }
|
||||
.badge.watching { background: #1a1e2a; color: #7a8090; }
|
||||
.badge.held { background: #2a1820; color: #ff8a96; border: 1px solid rgba(255,77,94,0.3); }
|
||||
.badge.held { background: #2a1820; color: #ff8a96; border: 1px solid rgba(255,77,94,0.3); font-size: 10px; padding: 2px 7px; }
|
||||
.badge.pending-buy { background: #2a1822; color: #ff9fb3; border: 1px solid rgba(255,140,170,0.32); font-weight: 600; padding: 2px 6px; letter-spacing: 0; }
|
||||
.badge.pending-sell { background: #182030; color: #7fb8ff; border: 1px solid rgba(122,180,255,0.32); font-weight: 600; padding: 2px 6px; letter-spacing: 0; }
|
||||
dl.pending-detail { margin-top: 8px; padding-top: 8px; border-top: 1px dashed rgba(255,255,255,0.08); grid-template-columns: 92px minmax(0, 1fr); }
|
||||
|
||||
@@ -182,7 +182,7 @@ def run(overrides: dict | None, codes: list[str], date_from: str = '', date_to:
|
||||
pos['last_add_price'] = fill
|
||||
cash -= cost
|
||||
nstop, ntarget = signals.compute_stop_target(pos['entry_price'], od['atr'], od['recent_low'])
|
||||
pos['stop'] = max(pos['stop'], nstop)
|
||||
pos['stop'] = nstop if od.get('add_kind') == 'down' else max(pos['stop'], nstop)
|
||||
pos['target'] = ntarget
|
||||
elif kind == 'buy':
|
||||
if code in positions or len(positions) >= config.MAX_POSITIONS or exited.get(code) == day:
|
||||
@@ -223,7 +223,7 @@ def run(overrides: dict | None, codes: list[str], date_from: str = '', date_to:
|
||||
if act in ('sell', 'scale_out'):
|
||||
pending.append({'kind': act, 'code': code, 'frac': dec.get('sell_frac', 1.0)})
|
||||
elif act == 'add':
|
||||
pending.append({'kind': 'add', 'code': code,
|
||||
pending.append({'kind': 'add', 'code': code, 'add_kind': dec.get('add_kind'),
|
||||
'atr': ind['atr'], 'recent_low': ind['recent_low']})
|
||||
|
||||
# ---- 2. 신규 매수 판단 (당일 종가) → 내일 시가 주문 큐잉 ----
|
||||
|
||||
@@ -41,6 +41,9 @@ REL_STRENGTH_DAYS = 20 # 상대강도: 종목 N일 수익률 − 시
|
||||
TREND_SLOPE_GATE = 1 # 추세 게이트 ① 장기선 우상향 요구 (1=요구/0=완화). 보수성 완화 변이 실험용
|
||||
MID_ARRAY_GATE = 1 # 추세 게이트 ② 5일선>중기선(60) 요구 (1=요구/0=완화)
|
||||
IMMEDIATE_ENTRY = 0 # 즉시매수: 조건 통과 종목이 돌파·눌림목 둘 다 아니어도 강세장이면 현재가 즉시 매수 (1=켜기). 꾸준한 상승 종목 놓침 방지 실험용
|
||||
AVERAGING_ENTRY = 0 # 물타기(애버리징): 보유 중 직전매수가 대비 하락 시 손절 대신 추가매수로 평단↓ (1=켜기). 종목당 10% 한도 내, 급락·약세장 제외
|
||||
AVERAGING_DROP_PCT = 0.10 # 물타기 트리거 — 직전 매수가 대비 이 비율 하락 시 추가 (0.10=-10%마다)
|
||||
CRASH_DROP_PCT = 0.10 # 당일 단일 하락이 이 비율 이상이면 물타기 말고 손절 (그림 #3, 0.10=-10%↓)
|
||||
ATR_PERIOD = 14
|
||||
BREAKOUT_LOOKBACK = 20 # 돌파 판정용 최근 고점 구간
|
||||
SWING_LOW_LOOKBACK = 10 # 손절선 후보 스윙 저점 구간
|
||||
@@ -93,6 +96,8 @@ TUNABLE = [
|
||||
{'key': 'TREND_SLOPE_GATE', 'label': '장기선 우상향 요구', 'type': 'int', 'min': 0, 'max': 1, 'step': 1, 'group': '추세'},
|
||||
{'key': 'MID_ARRAY_GATE', 'label': '중기 정배열(5>60) 요구', 'type': 'int', 'min': 0, 'max': 1, 'step': 1, 'group': '추세'},
|
||||
{'key': 'IMMEDIATE_ENTRY', 'label': '즉시매수(눌림 안 기다림)', 'type': 'int', 'min': 0, 'max': 1, 'step': 1, 'group': '매수'},
|
||||
{'key': 'AVERAGING_ENTRY', 'label': '물타기(하락 시 추가매수)', 'type': 'int', 'min': 0, 'max': 1, 'step': 1, 'group': '매도'},
|
||||
{'key': 'AVERAGING_DROP_PCT', 'label': '물타기 하락 트리거', 'type': 'float', 'min': 0.03, 'max': 0.3, 'step': 0.01, 'group': '매도'},
|
||||
{'key': 'ATR_PERIOD', 'label': 'ATR 기간(일)', 'type': 'int', 'min': 5, 'max': 60, 'step': 1, 'group': '변동성·기간'},
|
||||
{'key': 'BREAKOUT_LOOKBACK', 'label': '돌파 고점 구간(일)', 'type': 'int', 'min': 5, 'max': 120, 'step': 1, 'group': '변동성·기간'},
|
||||
{'key': 'SWING_LOW_LOOKBACK', 'label': '스윙 저점 구간(일)', 'type': 'int', 'min': 3, 'max': 60, 'step': 1, 'group': '변동성·기간'},
|
||||
|
||||
@@ -286,7 +286,8 @@ def _run_scan(pf, uni, quotes, cmkt, now, execute: bool = True) -> dict:
|
||||
flow = data.flow_net(data.investor_flow(code))
|
||||
anl = data.analyst(code, cur_price)
|
||||
dec = signals.evaluate_holding(pf.positions[code], ind, flow, anl,
|
||||
held_days=_held_days(pf.positions[code], now))
|
||||
held_days=_held_days(pf.positions[code], now),
|
||||
market_ok=mkt_ok.get(cmkt.get(code, ''), True))
|
||||
pf.apply_position_update(code, dec['position_update'])
|
||||
dec.update({k: pf.positions[code].get(k) for k in
|
||||
('entry_price', 'qty', 'stop', 'target', 'trailing_on', 'entry_at')})
|
||||
@@ -305,7 +306,9 @@ def _run_scan(pf, uni, quotes, cmkt, now, execute: bool = True) -> dict:
|
||||
# 새 평단 기준 손절·목표 재산정 (손절은 위로만 래칫)
|
||||
new_entry = pf.positions[code]['entry_price']
|
||||
nstop, ntarget = signals.compute_stop_target(new_entry, ind['atr'], ind['recent_low'])
|
||||
pf.positions[code]['stop'] = max(pf.positions[code]['stop'], nstop)
|
||||
# 추격매수(up)=손절 위로만 래칫 / 물타기(down)=낮아진 평단 기준으로 손절 재설정
|
||||
pf.positions[code]['stop'] = (nstop if dec.get('add_kind') == 'down'
|
||||
else max(pf.positions[code]['stop'], nstop))
|
||||
pf.positions[code]['target'] = ntarget
|
||||
buys.append(rec)
|
||||
dec.update({'fill_price': fill, 'entry_price': new_entry,
|
||||
|
||||
@@ -266,11 +266,12 @@ def evaluate_candidate(code, name, sources, ind, flow, analyst, market_ok) -> di
|
||||
'reason': f'눌림목 대기 — 지정가 {limit:,}'}
|
||||
|
||||
|
||||
def evaluate_holding(position, ind, flow, analyst, held_days=None) -> dict:
|
||||
def evaluate_holding(position, ind, flow, analyst, held_days=None, market_ok=True) -> dict:
|
||||
"""보유 종목 판단. 우선순위: 손절/추세이탈(전량) → 시간손절 → 분할익절(scale_out) → 추격매수(add) → 유지.
|
||||
|
||||
position 의 stop/peak/trailing/scaled_out 갱신값도 position_update 로 함께 반환.
|
||||
held_days: 보유 경과 일수(달력). None이면 시간손절 미적용(엔진·백테스트가 산정해 전달).
|
||||
market_ok: 시장 강세 여부(물타기 허용 판단용, 백테스트는 중립 True).
|
||||
"""
|
||||
price = ind['price']
|
||||
entry = position['entry_price']
|
||||
@@ -314,6 +315,23 @@ def evaluate_holding(position, ind, flow, analyst, held_days=None) -> dict:
|
||||
'price': price, 'checks': checks, 'action': None, 'state': 'HOLD',
|
||||
'position_update': upd, 'pnl_pct': pnl_pct}
|
||||
|
||||
# 0. 물타기(애버리징) — 켜진 변이만. 하락 시 손절 대신 추가매수로 평단↓ (한도·강세장·비급락 조건).
|
||||
# 당일 단일 급락(-CRASH%↓)은 물타기 금지→손절 우선(그림 #3), 약세장도 금지(그림 #4).
|
||||
avg_on = getattr(config, 'AVERAGING_ENTRY', 0)
|
||||
if avg_on:
|
||||
prev_close = ind.get('prev_close') or price
|
||||
today_chg = (price / prev_close - 1) if prev_close else 0
|
||||
crash = today_chg <= -getattr(config, 'CRASH_DROP_PCT', 0.10)
|
||||
avg_trigger = last_add * (1 - getattr(config, 'AVERAGING_DROP_PCT', 0.10))
|
||||
budget_left = tranches < config.ENTRY_TRANCHES
|
||||
# 트레일링/익절 전 + 한도 남음 + 강세장 + 비급락 + 직전매수가 -X% 도달 → 물타기
|
||||
if (budget_left and market_ok and not crash and not trailing_on and not scaled_out
|
||||
and price <= avg_trigger):
|
||||
return {**base, 'state': 'ADD', 'action': 'add', 'add_kind': 'down',
|
||||
'reason': f'물타기 — {tranches + 1}/{config.ENTRY_TRANCHES}차 (평단↓, -{config.AVERAGING_DROP_PCT*100:.0f}%)'}
|
||||
# 물타기 한도 소진(또는 급락/약세장)인데 손절선 깨짐 → 최종 손절
|
||||
# (한도 남았는데 급락이면 아래 일반 손절로 자연 처리)
|
||||
|
||||
# 1. 손절·추세이탈 — 전량
|
||||
if price <= stop:
|
||||
reason = '트레일링 익절' if (trailing_on and price > entry) else '손절'
|
||||
|
||||
@@ -866,6 +866,19 @@ def _immediate_chip_html(p) -> str:
|
||||
f'data-detail="{_esc(desc)}">즉시</span>')
|
||||
|
||||
|
||||
def _avg_chip_html(p) -> str:
|
||||
"""물타기(애버리징) 칩 — 보유 중 하락 시 손절 대신 추가매수로 평단 낮추는 변이. 아니면 빈 문자열."""
|
||||
if not int((p or {}).get('AVERAGING_ENTRY', 0)):
|
||||
return ''
|
||||
drop = (p or {}).get('AVERAGING_DROP_PCT', 0.10)
|
||||
desc = ('물타기(애버리징) 변이 — 우량주(추세·정배열 통과)를 산 뒤 직전 매수가보다 '
|
||||
f'-{drop*100:.0f}% 떨어지면, 손절하지 않고 추가매수해 평균단가를 낮춰요(종목당 10% 한도). '
|
||||
'단 ①당일 -10%↓ 급락이면 물타기 말고 손절 ②약세장이면 물타기 금지 — 떨어지는 칼·하락장 물타기는 피해요. '
|
||||
'(손절형 기존 전략과 라이브 비교 중)')
|
||||
return (f'<span class="bic bic-avg" data-title="물타기(애버리징)" '
|
||||
f'data-detail="{_esc(desc)}">물타기</span>')
|
||||
|
||||
|
||||
def _backtest_panel() -> str:
|
||||
"""백테스트 결과 — 유형별(세부 라벨) 대표(1위) 조합 요약. 비교군은 이 대표들로 자동 구성되므로
|
||||
수동 추가/제거 없이 읽기 전용 요약만 보여준다."""
|
||||
@@ -1122,8 +1135,8 @@ def _compare_panel() -> str:
|
||||
bt_row = ''
|
||||
rows += (
|
||||
f'<details class="row" data-reg="{i}" data-rank="{rank_of[v["id"]]}" data-bt="{bt_attr}" '
|
||||
f'data-held="{s.get("open_positions", 0)}" data-trades="{s.get("closed_trades", 0)}"><summary>'
|
||||
f'<span class="vid">{rank_of[v["id"]]}위</span>{_bear_chip_html(mp)}{_relax_chip_html(mp)}{_immediate_chip_html(mp)} <span class="muted">{_vid_disp(vid)}</span> '
|
||||
f'data-ret="{ret}" data-held="{s.get("open_positions", 0)}" data-trades="{s.get("closed_trades", 0)}"><summary>'
|
||||
f'<span class="vid">{rank_of[v["id"]]}위</span>{_bear_chip_html(mp)}{_relax_chip_html(mp)}{_immediate_chip_html(mp)}{_avg_chip_html(mp)} <span class="muted">{_vid_disp(vid)}</span> '
|
||||
f'<span class="nm">{_esc(_cat_name(mp))}</span>{tag}'
|
||||
f'<span class="rt"><span class="muted">🛒{s.get("open_positions", 0)}</span> '
|
||||
f'<b style="color:{rc}">{ret:+g}%</b></span></summary>'
|
||||
@@ -1155,29 +1168,45 @@ def _compare_panel() -> str:
|
||||
f'</div></details>'
|
||||
)
|
||||
sortbar = ('<div class="cmp-sortbar" id="cmp-sortbar">'
|
||||
'<button type="button" data-s="rank">손익순</button>'
|
||||
'<button type="button" data-s="bt">평가순</button>'
|
||||
'<button type="button" data-s="held">보유순</button>'
|
||||
'<button type="button" data-s="trades">거래순</button></div>')
|
||||
'<button type="button" data-s="rank" data-attr="data-ret">손익순</button>'
|
||||
'<button type="button" data-s="bt" data-attr="data-bt">평가순</button>'
|
||||
'<button type="button" data-s="held" data-attr="data-held">보유순</button>'
|
||||
'<button type="button" data-s="trades" data-attr="data-trades">거래순</button></div>')
|
||||
# 각 버튼: 한 번 누를 때마다 오름/내림 토글. 기본 방향 — 손익/보유/거래=내림(desc), 평가(백테스트순위)=오름(asc)
|
||||
sort_js = """
|
||||
<script>(function(){
|
||||
var bar=document.getElementById('cmp-sortbar'),box=document.getElementById('cmp-rows');
|
||||
if(!bar||!box)return;
|
||||
var ATTR={rank:'data-ret',bt:'data-bt',held:'data-held',trades:'data-trades'};
|
||||
var LBL={rank:'손익순',bt:'평가순',held:'보유순',trades:'거래순'};
|
||||
var DEFDIR={rank:'desc',bt:'asc',held:'desc',trades:'desc'}; // 기본 방향
|
||||
function num(el,a){return parseFloat(el.getAttribute(a))||0;}
|
||||
var CMP={rank:function(a,b){return num(a,'data-rank')-num(b,'data-rank');},
|
||||
bt:function(a,b){return num(a,'data-bt')-num(b,'data-bt');},
|
||||
held:function(a,b){return num(b,'data-held')-num(a,'data-held');},
|
||||
trades:function(a,b){return num(b,'data-trades')-num(a,'data-trades');}};
|
||||
function apply(m){
|
||||
var f=CMP[m]; if(!f)return;
|
||||
Array.prototype.slice.call(box.children).sort(f).forEach(function(r){box.appendChild(r);});
|
||||
bar.querySelectorAll('button').forEach(function(b){b.classList.toggle('active',b.dataset.s===m);});
|
||||
try{sessionStorage.setItem('cmpSort',m);}catch(e){}
|
||||
function apply(m,dir){
|
||||
var at=ATTR[m]; if(!at)return;
|
||||
var mul=(dir==='asc')?1:-1;
|
||||
Array.prototype.slice.call(box.children)
|
||||
.sort(function(a,b){return mul*(num(a,at)-num(b,at));})
|
||||
.forEach(function(r){box.appendChild(r);});
|
||||
bar.querySelectorAll('button').forEach(function(b){
|
||||
var on=b.dataset.s===m;
|
||||
b.classList.toggle('active',on);
|
||||
b.textContent=LBL[b.dataset.s]+(on?(dir==='asc'?' ↑':' ↓'):'');
|
||||
});
|
||||
try{sessionStorage.setItem('cmpSort',m);sessionStorage.setItem('cmpDir',dir);}catch(e){}
|
||||
}
|
||||
bar.addEventListener('click',function(e){var b=e.target.closest('button');if(b)apply(b.dataset.s);});
|
||||
var m='rank';try{m=sessionStorage.getItem('cmpSort')||'rank';}catch(e){}
|
||||
if(!CMP[m])m='rank';
|
||||
apply(m);
|
||||
bar.addEventListener('click',function(e){
|
||||
var b=e.target.closest('button'); if(!b)return;
|
||||
var m=b.dataset.s, cur=sessionStorage.getItem('cmpSort'), curdir=sessionStorage.getItem('cmpDir');
|
||||
var dir;
|
||||
if(cur===m){dir=(curdir==='asc')?'desc':'asc';} // 같은 버튼 재클릭 → 방향 토글
|
||||
else{dir=DEFDIR[m];} // 다른 버튼 → 그 버튼 기본 방향
|
||||
apply(m,dir);
|
||||
});
|
||||
var m='rank',dir;
|
||||
try{m=sessionStorage.getItem('cmpSort')||'rank';dir=sessionStorage.getItem('cmpDir');}catch(e){}
|
||||
if(!ATTR[m])m='rank';
|
||||
if(!dir)dir=DEFDIR[m];
|
||||
apply(m,dir);
|
||||
})();</script>"""
|
||||
fav_js = ("""
|
||||
<script>(function(){
|
||||
@@ -1294,7 +1323,7 @@ h1{font-size:17px;margin:10px 0 2px}h2{font-size:14px;margin:22px 0 8px;color:#c
|
||||
.vid{background:#1e293b;color:#7dd3fc;border-radius:5px;padding:1px 6px;font-size:11px;font-weight:700}
|
||||
.bic{border-radius:5px;padding:1px 5px;font-size:10px;font-weight:700;margin-left:4px}
|
||||
.bic0{background:#334155;color:#cbd5e1}.bic1{background:#1e3a5f;color:#7dd3fc}.bic2{background:#4a2e12;color:#fbbf24}
|
||||
.bic-relax{background:#3b1d4a;color:#d8b4fe}.bic-now{background:#0c3a2e;color:#6ee7b7}
|
||||
.bic-relax{background:#3b1d4a;color:#d8b4fe}.bic-now{background:#0c3a2e;color:#6ee7b7}.bic-avg{background:#3a2a0c;color:#fcd34d}
|
||||
.cmp-btlink{background:#0f2a3f;color:#7dd3fc;border:1px solid #1e3a5f;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-block}
|
||||
.note{white-space:pre-wrap;line-height:1.65;font-size:13px;color:#cbd5e1}
|
||||
ul.an{margin:6px 0;padding-left:18px;line-height:1.7;font-size:13px}
|
||||
@@ -1425,7 +1454,7 @@ td:first-child,th:first-child{text-align:left}
|
||||
<title>{_esc(vid)} 전략 상세</title>{style}</head><body><div id="page">
|
||||
{back}
|
||||
<h1><span class="vid">{rank or "—"}위</span> <span class="muted">{_vid_disp(vid)}</span> {_esc(_cat_name(params))}
|
||||
<span class="bic bic{bm}">{_BEAR_WORD[bm]}</span>{_relax_chip_html(params)}{_immediate_chip_html(params)} {icon}</h1>
|
||||
<span class="bic bic{bm}">{_BEAR_WORD[bm]}</span>{_relax_chip_html(params)}{_immediate_chip_html(params)}{_avg_chip_html(params)} {icon}</h1>
|
||||
<div class="sub">{_esc(_market_fit_summary(params))} · 약세장대처: {_BEAR_NAME[bm]}</div>
|
||||
|
||||
<div class="card">{notes_html}</div>
|
||||
@@ -1994,8 +2023,9 @@ def render_html(view: str | None = None, day_date: str | None = None,
|
||||
_vp = vv.get('params') or {}
|
||||
_rx = ' 완화' if (not int(_vp.get('TREND_SLOPE_GATE', 1)) or not int(_vp.get('MID_ARRAY_GATE', 1))) else ''
|
||||
_im = ' 즉시' if int(_vp.get('IMMEDIATE_ENTRY', 0)) else ''
|
||||
_av = ' 물타기' if int(_vp.get('AVERAGING_ENTRY', 0)) else ''
|
||||
opts += (f'<option value="{_esc(vv["id"])}"{_sel}>{_fav}{_rk(vv["id"])}{_vid_disp(vv["id"])} '
|
||||
f'[{_BEAR_WORD[_bear_mode(_vp)]}{_rx}{_im}] · {_esc(_cat_name(_vp))}</option>')
|
||||
f'[{_BEAR_WORD[_bear_mode(_vp)]}{_rx}{_im}{_av}] · {_esc(_cat_name(_vp))}</option>')
|
||||
view_sel = (f'<div class="sub" style="margin:4px 0 8px">체크리스트 시각: '
|
||||
f'<select id="judge-view" '
|
||||
f'onchange="location.href=\'/?t=watch&view=\'+encodeURIComponent(this.value)">{opts}</select></div>')
|
||||
@@ -2115,6 +2145,7 @@ h3.grp{{font-size:13px;margin:16px 0 8px;color:#cbd5e1}}
|
||||
.bic2{{background:#4a2e12;color:#fbbf24}}
|
||||
.bic-relax{{background:#3b1d4a;color:#d8b4fe}}
|
||||
.bic-now{{background:#0c3a2e;color:#6ee7b7}}
|
||||
.bic-avg{{background:#3a2a0c;color:#fcd34d}}
|
||||
.cmp-sortbar{{display:flex;gap:6px;margin:0 0 10px}}
|
||||
.cmp-sortbar button{{flex:1;background:#141b24;border:1px solid #1f2937;border-radius:8px;color:#9ca3af;font-size:11px;font-weight:600;padding:7px 4px;cursor:pointer}}
|
||||
.cmp-sortbar button.active{{background:#15406e;color:#fff;border-color:#2952cc}}
|
||||
|
||||
@@ -32,3 +32,5 @@
|
||||
{"date": "2026-06-12", "market": "KOSPI", "market_label": "코스피", "rise": 756, "upper": 3, "fall": 144, "lower": 0, "steady": 18, "adr": 527.08, "personal": -43174, "foreign": 22041, "institutional": 22870, "captured_at": "2026-06-12T21:00:03.422609+09:00"}
|
||||
{"date": "2026-06-15", "market": "KOSDAQ", "market_label": "코스닥", "rise": 1010, "upper": 10, "fall": 662, "lower": 0, "steady": 62, "adr": 154.08, "personal": 6162, "foreign": -8164, "institutional": 2166, "captured_at": "2026-06-15T21:00:02.416077+09:00"}
|
||||
{"date": "2026-06-15", "market": "KOSPI", "market_label": "코스피", "rise": 676, "upper": 3, "fall": 207, "lower": 0, "steady": 35, "adr": 328.02, "personal": -15124, "foreign": 10774, "institutional": 4462, "captured_at": "2026-06-15T21:00:02.416077+09:00"}
|
||||
{"date": "2026-06-16", "market": "KOSDAQ", "market_label": "코스닥", "rise": 764, "upper": 6, "fall": 896, "lower": 1, "steady": 76, "adr": 85.84, "personal": 7907, "foreign": -3095, "institutional": -4630, "captured_at": "2026-06-16T21:00:02.050758+09:00"}
|
||||
{"date": "2026-06-16", "market": "KOSPI", "market_label": "코스피", "rise": 519, "upper": 5, "fall": 360, "lower": 0, "steady": 38, "adr": 145.56, "personal": -21841, "foreign": 15353, "institutional": 7076, "captured_at": "2026-06-16T21:00:02.050758+09:00"}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"👀": "v1"}
|
||||
{"👀": "v1", "⭐": "v4", "🔥": "v300"}
|
||||
File diff suppressed because one or more lines are too long
@@ -3745,5 +3745,81 @@
|
||||
"RISK_PER_TRADE_PCT": 0.02,
|
||||
"IMMEDIATE_ENTRY": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "v300",
|
||||
"name": "SMA40·RR3·S1.5·P1.5·V1.3·RSI↑88·RSI↓20·HOLD0·RISK0.02·BEAR_ENTRY_MODE2",
|
||||
"params": {
|
||||
"SMA_LONG": 40,
|
||||
"RR_RATIO": 3.0,
|
||||
"STOP_ATR_MULT": 1.5,
|
||||
"PULLBACK_ATR_MULT": 1.5,
|
||||
"VOLUME_BREAKOUT_MULT": 1.3,
|
||||
"RSI_OVERBOUGHT": 88,
|
||||
"RSI_OVERSOLD": 20,
|
||||
"MAX_HOLD_DAYS": 0,
|
||||
"RISK_PER_TRADE_PCT": 0.02,
|
||||
"BEAR_ENTRY_MODE": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "v301",
|
||||
"name": "SMA10·RR3·S2·P1.5·V1.3·RSI↑88·RSI↓20·HOLD0·RISK0.02·BEAR_ENTRY_MODE1·MAX_POSITIONS10·TREND_SLOPE_GATE1·MID_ARRAY_GATE1·AVERAGING_ENTRY1",
|
||||
"params": {
|
||||
"SMA_LONG": 10,
|
||||
"RR_RATIO": 3.0,
|
||||
"STOP_ATR_MULT": 2.0,
|
||||
"PULLBACK_ATR_MULT": 1.5,
|
||||
"VOLUME_BREAKOUT_MULT": 1.3,
|
||||
"RSI_OVERBOUGHT": 88,
|
||||
"RSI_OVERSOLD": 20,
|
||||
"MAX_HOLD_DAYS": 0,
|
||||
"RISK_PER_TRADE_PCT": 0.02,
|
||||
"BEAR_ENTRY_MODE": 1,
|
||||
"MAX_POSITIONS": 10,
|
||||
"TREND_SLOPE_GATE": 1,
|
||||
"MID_ARRAY_GATE": 1,
|
||||
"AVERAGING_ENTRY": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "v302",
|
||||
"name": "SMA20·RR3·S2·P1.5·V1.3·RSI↑88·RSI↓20·HOLD0·RISK0.02·BEAR_ENTRY_MODE1·MAX_POSITIONS10·TREND_SLOPE_GATE1·MID_ARRAY_GATE1·AVERAGING_ENTRY1",
|
||||
"params": {
|
||||
"SMA_LONG": 20,
|
||||
"RR_RATIO": 3.0,
|
||||
"STOP_ATR_MULT": 2.0,
|
||||
"PULLBACK_ATR_MULT": 1.5,
|
||||
"VOLUME_BREAKOUT_MULT": 1.3,
|
||||
"RSI_OVERBOUGHT": 88,
|
||||
"RSI_OVERSOLD": 20,
|
||||
"MAX_HOLD_DAYS": 0,
|
||||
"RISK_PER_TRADE_PCT": 0.02,
|
||||
"BEAR_ENTRY_MODE": 1,
|
||||
"MAX_POSITIONS": 10,
|
||||
"TREND_SLOPE_GATE": 1,
|
||||
"MID_ARRAY_GATE": 1,
|
||||
"AVERAGING_ENTRY": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "v303",
|
||||
"name": "SMA60·RR3·S2·P1.5·V1.3·RSI↑75·RSI↓20·HOLD0·RISK0.01·BEAR_ENTRY_MODE1·MAX_POSITIONS10·TREND_SLOPE_GATE1·MID_ARRAY_GATE1·AVERAGING_ENTRY1",
|
||||
"params": {
|
||||
"SMA_LONG": 60,
|
||||
"RR_RATIO": 3.0,
|
||||
"STOP_ATR_MULT": 2.0,
|
||||
"PULLBACK_ATR_MULT": 1.5,
|
||||
"VOLUME_BREAKOUT_MULT": 1.3,
|
||||
"RSI_OVERBOUGHT": 75,
|
||||
"RSI_OVERSOLD": 20,
|
||||
"MAX_HOLD_DAYS": 0,
|
||||
"RISK_PER_TRADE_PCT": 0.01,
|
||||
"BEAR_ENTRY_MODE": 1,
|
||||
"MAX_POSITIONS": 10,
|
||||
"TREND_SLOPE_GATE": 1,
|
||||
"MID_ARRAY_GATE": 1,
|
||||
"AVERAGING_ENTRY": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.943184+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.113024+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.569777+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.943289+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.148135+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.605764+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944222+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.276302+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.689302+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944232+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.277525+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.690702+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944241+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.278741+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.692105+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944251+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.279953+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.693523+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944261+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.281173+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.694944+09:00"
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 233,744 도달",
|
||||
"cur_price": 248750,
|
||||
"cur_price": 248000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3332473.3402132783,
|
||||
"last_add_price": 244500
|
||||
@@ -31,5 +31,5 @@
|
||||
"max_drawdown": 0.005230139292375102,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944270+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.282444+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.696441+09:00"
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 232,280 도달",
|
||||
"cur_price": 248750,
|
||||
"cur_price": 248000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 3741721.8543046354,
|
||||
"last_add_price": 238500
|
||||
@@ -31,5 +31,5 @@
|
||||
"max_drawdown": 0.0059876134567287895,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944280+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.283725+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.697922+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944290+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.284988+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.699344+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.944300+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.286210+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.700759+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582443+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.287442+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.702169+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.943299+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.150231+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.607723+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582452+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.288736+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.703675+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582461+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.290034+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.705156+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582469+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.291322+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.706631+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582478+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.292542+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.708069+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582490+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.293831+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.709550+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582499+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.295144+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.711038+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582507+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.296435+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.712518+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582515+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.297662+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.713931+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582546+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.298875+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.715340+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582554+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.300087+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.716759+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.943310+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.152146+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.609645+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582561+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.301307+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.718159+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582647+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.315746+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.719647+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582670+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.319615+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.721062+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582678+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.320890+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.722551+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582685+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.322172+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.724045+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582693+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.323394+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.725472+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582701+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.324728+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.726983+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582708+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.326019+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.728486+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582717+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.327240+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.729891+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582725+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.328455+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.731310+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582733+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.329672+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.732721+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582740+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.330947+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.734232+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582748+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.332191+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.735641+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582755+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.333422+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.737050+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582763+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.334642+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.738463+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582771+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.335934+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.739962+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582779+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.337220+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.741437+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582787+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.338496+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.742912+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582795+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.339790+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.744403+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582803+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.341070+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.745877+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582811+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.342372+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.747373+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582819+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.343597+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.748786+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582826+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.344810+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.750195+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582834+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.346088+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.751681+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582841+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.347368+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.753151+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582849+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.348667+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.754622+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582857+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.349953+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.756123+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582864+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.351247+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.757610+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582872+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.352529+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.759096+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582879+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.353755+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.760501+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582887+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.354966+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.761910+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582894+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.356166+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.763310+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582902+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.357379+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.764723+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582910+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.358617+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.766154+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582918+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.359838+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.767555+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582926+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.361064+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.768960+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.582933+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.362282+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.770401+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583136+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.390047+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.771865+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583144+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.391331+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.773356+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583184+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.397768+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.774783+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583191+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.398982+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.776229+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583198+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.400251+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.777687+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583205+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.401542+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.779183+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583212+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.402814+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.780654+09:00"
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
"scaled_out": false,
|
||||
"entry_path": "pullback",
|
||||
"entry_reason": "눌림목 지정가 233,744 도달",
|
||||
"cur_price": 248750,
|
||||
"cur_price": 248000,
|
||||
"tranches": 2,
|
||||
"tranche_value": 6250000.0,
|
||||
"last_add_price": 244500
|
||||
@@ -31,5 +31,5 @@
|
||||
"max_drawdown": 0.009821865591495171,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-11T09:00:01.943203+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.126478+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.585724+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583220+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.404094+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.782162+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583227+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.405315+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.783573+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583234+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.406536+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.784981+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583241+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.407826+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.786467+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583249+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.409101+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.787934+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583273+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.410386+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.789401+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583281+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.411696+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.790891+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583289+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.412998+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.792307+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583297+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.414287+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.793713+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583304+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.415576+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.795119+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583311+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.416804+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.796541+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583318+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.418088+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.797969+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583325+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.419309+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.799378+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583333+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.420587+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.800874+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583340+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.421869+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.802358+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583347+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.423094+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.803776+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:55:00.583354+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.424338+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.805196+09:00"
|
||||
}
|
||||
@@ -9,5 +9,5 @@
|
||||
"max_drawdown": 0.0,
|
||||
"last_exit": {},
|
||||
"created_at": "2026-06-15T14:40:00.621011+09:00",
|
||||
"updated_at": "2026-06-15T15:25:02.428850+09:00"
|
||||
"updated_at": "2026-06-16T15:25:01.867126+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