chore: update workspace config and memory
This commit is contained in:
27
projects/auto-trader/LIVE_ENABLE_CHECKLIST.md
Normal file
27
projects/auto-trader/LIVE_ENABLE_CHECKLIST.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# 실주문 전환 체크리스트
|
||||
|
||||
## 현재 상태
|
||||
- 계좌 타입: VIRTUAL
|
||||
- 실주문: 비활성 (`enable_orders=false`)
|
||||
- 알림: 활성 가능
|
||||
- API 호출 간격: 300ms
|
||||
|
||||
## 실주문 전환 전 필수 확인
|
||||
1. 최소 2~5 거래일 동안 모의투자 로그 확인
|
||||
2. `signals.jsonl`, `orders.jsonl`, `alerts.jsonl` 검토
|
||||
3. 중복 주문 없는지 확인
|
||||
4. 손절/익절 기준이 의도대로 동작하는지 확인
|
||||
5. 장 시작 직후/장 마감 직전 오작동 없는지 확인
|
||||
6. 종목당 최대금액, 1일 매수 횟수 제한 확인
|
||||
7. 텔레그램 알림이 정상 수신되는지 확인
|
||||
8. 실계좌 전환 시 `KIS_ACCOUNT_TYPE=REAL` 변경 여부 확인
|
||||
9. 실계좌에서는 최초 하루는 소액/1주만 테스트
|
||||
|
||||
## 실주문 전환 방법
|
||||
- `strategy_config.json`에서 `enable_orders`를 `true`로 변경
|
||||
- KIS 설정이 실계좌라면 주문이 실제로 나감
|
||||
|
||||
## 권장 순서
|
||||
1. 모의투자 검증
|
||||
2. 소액 실주문 시험
|
||||
3. 한도 점진 확대
|
||||
82
projects/auto-trader/README.md
Normal file
82
projects/auto-trader/README.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Auto Trader (KIS MCP / Virtual-safe)
|
||||
|
||||
모의투자 계좌 기준으로 자동매매 골격을 만든 프로젝트입니다.
|
||||
기본값은 **신호는 생성하지만 실제 주문은 넣지 않는 안전 모드**입니다.
|
||||
|
||||
## 현재 탑재한 조건 5개
|
||||
|
||||
### 매수 조건 3개
|
||||
1. **buy_gap_strength**
|
||||
- 현재가가 전일종가 대비 +1.0% 이상
|
||||
- 현재가가 시가 위
|
||||
|
||||
2. **buy_reclaim_after_dip**
|
||||
- 장중 저가가 시가 대비 -0.5% 이하로 밀린 적 있음
|
||||
- 현재가가 다시 시가 위로 회복
|
||||
- 현재가가 저가 대비 +1.0% 이상 반등
|
||||
|
||||
3. **buy_near_day_high**
|
||||
- 현재가가 당일 고가에서 0.5% 이내
|
||||
- 당일 등락률 플러스
|
||||
|
||||
### 매도 조건 2개
|
||||
4. **sell_take_profit**
|
||||
- 평가수익률 +3.0% 이상이면 매도 신호
|
||||
|
||||
5. **sell_stop_loss_or_fade**
|
||||
- 평가수익률 -2.0% 이하이면 손절 신호
|
||||
- 또는 현재가가 시가 대비 -1.5% 이하로 밀리면 약세 이탈로 매도 신호
|
||||
|
||||
## 안전장치
|
||||
- `enable_orders: false` 기본값
|
||||
- API 호출 간격 기본 300ms
|
||||
- API 오류 시 재시도
|
||||
- 종목당 최대 포지션 금액 제한
|
||||
- 1일 1회 매수 제한
|
||||
- 장 시간 외 주문 차단
|
||||
|
||||
## 감시 종목
|
||||
- SK하이닉스 (000660)
|
||||
- 삼성전자 (005930)
|
||||
- 이오테크닉스 (039030)
|
||||
|
||||
## 실행
|
||||
```bash
|
||||
cd /home/arin/.openclaw/workspace/projects/auto-trader
|
||||
/home/arin/.openclaw/workspace/KIS_MCP_Server/.venv/bin/python auto_trader.py
|
||||
```
|
||||
|
||||
## 1회 실행 + 텔레그램 알림
|
||||
```bash
|
||||
cd /home/arin/.openclaw/workspace/projects/auto-trader
|
||||
./run_cycle.sh
|
||||
```
|
||||
|
||||
## 백그라운드 실행
|
||||
```bash
|
||||
cd /home/arin/.openclaw/workspace/projects/auto-trader
|
||||
./start_trader.sh
|
||||
./stop_trader.sh
|
||||
```
|
||||
|
||||
백그라운드 실행은 `trader_daemon.py`를 돌리며,
|
||||
- 신호 생성
|
||||
- 로그 저장
|
||||
- 새 알림 발견 시 텔레그램 전송
|
||||
을 한 번에 처리합니다.
|
||||
|
||||
## 설정 파일
|
||||
- `strategy_config.json`
|
||||
|
||||
실주문으로 전환하려면:
|
||||
- `enable_orders`를 `true`로 변경
|
||||
- 먼저 반드시 모의투자에서 충분히 검증
|
||||
|
||||
## 로그 파일
|
||||
- `signals.jsonl`: 신호 기록
|
||||
- `orders.jsonl`: 주문 실행 또는 드라이런 기록
|
||||
- `state.json`: 일일 매수 횟수 등 상태 저장
|
||||
|
||||
## 주의
|
||||
이 전략은 수익 보장용이 아니라 **자동매매 인프라 시작점**입니다.
|
||||
조건 수치는 이후 백테스트/실시간 관찰로 조정해야 합니다.
|
||||
BIN
projects/auto-trader/__pycache__/auto_trader.cpython-313.pyc
Normal file
BIN
projects/auto-trader/__pycache__/auto_trader.cpython-313.pyc
Normal file
Binary file not shown.
371
projects/auto-trader/auto_trader.py
Normal file
371
projects/auto-trader/auto_trader.py
Normal file
@@ -0,0 +1,371 @@
|
||||
import asyncio
|
||||
import json
|
||||
import time
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Tuple
|
||||
|
||||
BASE = Path('/home/arin/.openclaw/workspace/projects/auto-trader')
|
||||
CONFIG_PATH = BASE / 'strategy_config.json'
|
||||
STATE_PATH = BASE / 'state.json'
|
||||
SIGNALS_PATH = BASE / 'signals.jsonl'
|
||||
ORDERS_PATH = BASE / 'orders.jsonl'
|
||||
ALERTS_PATH = BASE / 'alerts.jsonl'
|
||||
|
||||
import sys
|
||||
sys.path.insert(0, '/home/arin/.openclaw/workspace/KIS_MCP_Server')
|
||||
from server import inquery_stock_price, inquery_balance, order_stock # type: ignore
|
||||
|
||||
LAST_API_CALL_AT = 0.0
|
||||
|
||||
|
||||
def load_json(path: Path, default: Any):
|
||||
if not path.exists():
|
||||
return default
|
||||
try:
|
||||
return json.loads(path.read_text(encoding='utf-8'))
|
||||
except Exception:
|
||||
return default
|
||||
|
||||
|
||||
def save_json(path: Path, data: Any) -> None:
|
||||
path.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding='utf-8')
|
||||
|
||||
|
||||
def append_jsonl(path: Path, row: Dict[str, Any]) -> None:
|
||||
with open(path, 'a', encoding='utf-8') as f:
|
||||
f.write(json.dumps(row, ensure_ascii=False) + '\n')
|
||||
|
||||
|
||||
def to_int(v: Any) -> int:
|
||||
try:
|
||||
return int(str(v).replace(',', '').strip())
|
||||
except Exception:
|
||||
return 0
|
||||
|
||||
|
||||
def to_float(v: Any) -> float:
|
||||
try:
|
||||
return float(str(v).replace(',', '').strip())
|
||||
except Exception:
|
||||
return 0.0
|
||||
|
||||
|
||||
def now_ts() -> str:
|
||||
return datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
|
||||
def get_api_interval_seconds(cfg: Dict[str, Any]) -> float:
|
||||
return max(0.0, float(cfg.get('api_call_interval_ms', 300)) / 1000.0)
|
||||
|
||||
|
||||
def get_retry_count(cfg: Dict[str, Any]) -> int:
|
||||
return max(0, int(cfg.get('api_retry_count', 2)))
|
||||
|
||||
|
||||
def get_retry_backoff_seconds(cfg: Dict[str, Any]) -> float:
|
||||
return max(0.0, float(cfg.get('api_retry_backoff_ms', 600)) / 1000.0)
|
||||
|
||||
|
||||
async def throttle_api_call(cfg: Dict[str, Any]) -> None:
|
||||
global LAST_API_CALL_AT
|
||||
interval = get_api_interval_seconds(cfg)
|
||||
now = time.monotonic()
|
||||
wait_for = interval - (now - LAST_API_CALL_AT)
|
||||
if wait_for > 0:
|
||||
await asyncio.sleep(wait_for)
|
||||
LAST_API_CALL_AT = time.monotonic()
|
||||
|
||||
|
||||
async def call_with_retry(func, *args, cfg: Dict[str, Any], **kwargs):
|
||||
retries = get_retry_count(cfg)
|
||||
backoff = get_retry_backoff_seconds(cfg)
|
||||
last_error = None
|
||||
for attempt in range(retries + 1):
|
||||
try:
|
||||
await throttle_api_call(cfg)
|
||||
return await func(*args, **kwargs)
|
||||
except Exception as e:
|
||||
last_error = e
|
||||
if attempt >= retries:
|
||||
break
|
||||
await asyncio.sleep(backoff * (attempt + 1))
|
||||
raise last_error
|
||||
|
||||
|
||||
def market_is_open(now: datetime | None = None) -> bool:
|
||||
now = now or datetime.now()
|
||||
if now.weekday() >= 5:
|
||||
return False
|
||||
hhmm = now.hour * 100 + now.minute
|
||||
return 900 <= hhmm <= 1530
|
||||
|
||||
|
||||
async def fetch_balance_map(cfg: Dict[str, Any]) -> Dict[str, Dict[str, Any]]:
|
||||
raw = await call_with_retry(inquery_balance, cfg=cfg)
|
||||
items = raw.get('output1', []) if isinstance(raw, dict) else []
|
||||
result = {}
|
||||
for item in items:
|
||||
qty = to_int(item.get('hldg_qty', 0))
|
||||
if qty <= 0:
|
||||
continue
|
||||
symbol = item.get('pdno')
|
||||
if not symbol:
|
||||
continue
|
||||
result[symbol] = {
|
||||
'symbol': symbol,
|
||||
'name': item.get('prdt_name', ''),
|
||||
'qty': qty,
|
||||
'avg_price': to_float(item.get('pchs_avg_pric', 0)),
|
||||
'profit_rate': to_float(item.get('evlu_pfls_rt', 0)),
|
||||
'profit_amount': to_int(item.get('evlu_pfls_amt', 0)),
|
||||
'position_value': to_int(item.get('evlu_amt', 0)),
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
async def fetch_quote(symbol: str, cfg: Dict[str, Any]) -> Dict[str, Any]:
|
||||
q = await call_with_retry(inquery_stock_price, symbol, cfg=cfg)
|
||||
return {
|
||||
'symbol': symbol,
|
||||
'name': q.get('hts_kor_isnm', ''),
|
||||
'price': to_int(q.get('stck_prpr', 0)),
|
||||
'open': to_int(q.get('stck_oprc', 0)),
|
||||
'high': to_int(q.get('stck_mxpr', 0)),
|
||||
'low': to_int(q.get('stck_llam', 0)),
|
||||
'prev_close': to_int(q.get('stck_prdy_clpr', 0)),
|
||||
'change_pct': to_float(q.get('prdy_ctrt', 0)),
|
||||
'volume': to_int(q.get('acml_vol', 0)),
|
||||
'trading_value': to_int(q.get('acml_tr_pbmn', 0)),
|
||||
}
|
||||
|
||||
|
||||
def pct(a: float, b: float) -> float:
|
||||
if not b:
|
||||
return 0.0
|
||||
return (a - b) / b * 100.0
|
||||
|
||||
|
||||
def eval_buy_rules(quote: Dict[str, Any], holding: Dict[str, Any] | None, cfg: Dict[str, Any], state: Dict[str, Any]) -> List[str]:
|
||||
rules = cfg['rules']
|
||||
signals: List[str] = []
|
||||
price = quote['price']
|
||||
open_ = quote['open']
|
||||
high = quote['high']
|
||||
low = quote['low']
|
||||
prev_close = quote['prev_close']
|
||||
|
||||
if holding:
|
||||
return signals
|
||||
|
||||
r1 = rules['buy_gap_strength']
|
||||
if r1['enabled']:
|
||||
if pct(price, prev_close) >= r1['min_pct_vs_prev_close'] and (not r1['require_above_open'] or price > open_):
|
||||
signals.append('buy_gap_strength')
|
||||
|
||||
r2 = rules['buy_reclaim_after_dip']
|
||||
if r2['enabled']:
|
||||
dipped = pct(low, open_) <= -abs(r2['dip_below_open_pct'])
|
||||
reclaimed = price > open_ if r2['reclaim_above_open'] else True
|
||||
rebound = pct(price, low) >= r2['rebound_from_low_pct']
|
||||
if dipped and reclaimed and rebound:
|
||||
signals.append('buy_reclaim_after_dip')
|
||||
|
||||
r3 = rules['buy_near_day_high']
|
||||
if r3['enabled'] and high > 0:
|
||||
distance_from_high = (high - price) / high * 100.0
|
||||
positive = quote['change_pct'] > 0 if r3['require_positive_day'] else True
|
||||
if distance_from_high <= r3['max_distance_from_high_pct'] and positive:
|
||||
signals.append('buy_near_day_high')
|
||||
|
||||
symbol_state = state.setdefault(quote['symbol'], {'buy_count_today': 0, 'last_buy_date': None})
|
||||
today = datetime.now().strftime('%Y-%m-%d')
|
||||
if symbol_state.get('last_buy_date') != today:
|
||||
symbol_state['buy_count_today'] = 0
|
||||
if symbol_state.get('buy_count_today', 0) >= cfg['max_daily_buys_per_symbol']:
|
||||
return []
|
||||
|
||||
return signals
|
||||
|
||||
|
||||
def eval_sell_rules(quote: Dict[str, Any], holding: Dict[str, Any] | None, cfg: Dict[str, Any]) -> List[str]:
|
||||
if not holding:
|
||||
return []
|
||||
rules = cfg['rules']
|
||||
signals: List[str] = []
|
||||
|
||||
profit_rate = holding.get('profit_rate', 0.0)
|
||||
price = quote['price']
|
||||
open_ = quote['open']
|
||||
|
||||
r4 = rules['sell_take_profit']
|
||||
if r4['enabled'] and profit_rate >= r4['take_profit_pct']:
|
||||
signals.append('sell_take_profit')
|
||||
|
||||
r5 = rules['sell_stop_loss_or_fade']
|
||||
fade_pct = pct(price, open_)
|
||||
if r5['enabled'] and (profit_rate <= r5['stop_loss_pct'] or fade_pct <= r5['fade_from_open_pct']):
|
||||
signals.append('sell_stop_loss_or_fade')
|
||||
|
||||
return signals
|
||||
|
||||
|
||||
def calc_buy_qty(price: int, cfg: Dict[str, Any], holding: Dict[str, Any] | None) -> int:
|
||||
if price <= 0:
|
||||
return 0
|
||||
budget = int(cfg['buy_budget_per_trade'])
|
||||
max_pos = int(cfg['max_position_value_per_symbol'])
|
||||
current_value = int(holding['position_value']) if holding else 0
|
||||
room = max(0, max_pos - current_value)
|
||||
usable = min(budget, room)
|
||||
qty = usable // price
|
||||
return max(0, qty)
|
||||
|
||||
|
||||
def make_alert_key(symbol: str, side: str, reasons: List[str], ts: str) -> str:
|
||||
minute = ts[:16]
|
||||
return f"{minute}|{symbol}|{side}|{'/'.join(sorted(reasons))}"
|
||||
|
||||
|
||||
def maybe_record_alert(symbol: str, name: str, side: str, reasons: List[str], quote: Dict[str, Any], state: Dict[str, Any]) -> Dict[str, Any] | None:
|
||||
if not reasons:
|
||||
return None
|
||||
ts = now_ts()
|
||||
key = make_alert_key(symbol, side, reasons, ts)
|
||||
alert_state = state.setdefault('_alerts', {})
|
||||
if alert_state.get('last_key') == key:
|
||||
return None
|
||||
alert = {
|
||||
'time': ts,
|
||||
'key': key,
|
||||
'symbol': symbol,
|
||||
'name': name,
|
||||
'side': side,
|
||||
'reasons': reasons,
|
||||
'price': quote.get('price', 0),
|
||||
'change_pct': quote.get('change_pct', 0),
|
||||
}
|
||||
append_jsonl(ALERTS_PATH, alert)
|
||||
alert_state['last_key'] = key
|
||||
return alert
|
||||
|
||||
|
||||
async def execute_buy(symbol: str, quote: Dict[str, Any], reasons: List[str], cfg: Dict[str, Any], state: Dict[str, Any]) -> Dict[str, Any]:
|
||||
qty = calc_buy_qty(quote['price'], cfg, None)
|
||||
if qty <= 0:
|
||||
return {'action': 'buy_skipped', 'symbol': symbol, 'reason': 'budget_or_position_limit', 'time': now_ts()}
|
||||
|
||||
row = {
|
||||
'time': now_ts(),
|
||||
'action': 'buy',
|
||||
'symbol': symbol,
|
||||
'name': quote['name'],
|
||||
'qty': qty,
|
||||
'price': quote['price'],
|
||||
'reasons': reasons,
|
||||
'dry_run': not cfg['enable_orders'],
|
||||
}
|
||||
if cfg['enable_orders']:
|
||||
row['result'] = await call_with_retry(order_stock, symbol, qty, 0, 'buy', cfg=cfg)
|
||||
append_jsonl(ORDERS_PATH, row)
|
||||
symbol_state = state.setdefault(symbol, {'buy_count_today': 0, 'last_buy_date': None})
|
||||
symbol_state['buy_count_today'] = int(symbol_state.get('buy_count_today', 0)) + 1
|
||||
symbol_state['last_buy_date'] = datetime.now().strftime('%Y-%m-%d')
|
||||
return row
|
||||
|
||||
|
||||
async def execute_sell(symbol: str, quote: Dict[str, Any], holding: Dict[str, Any], reasons: List[str], cfg: Dict[str, Any]) -> Dict[str, Any]:
|
||||
qty = int(holding['qty']) if cfg.get('sell_all_on_signal', True) else 1
|
||||
row = {
|
||||
'time': now_ts(),
|
||||
'action': 'sell',
|
||||
'symbol': symbol,
|
||||
'name': quote['name'],
|
||||
'qty': qty,
|
||||
'price': quote['price'],
|
||||
'reasons': reasons,
|
||||
'dry_run': not cfg['enable_orders'],
|
||||
}
|
||||
if cfg['enable_orders']:
|
||||
row['result'] = await call_with_retry(order_stock, symbol, qty, 0, 'sell', cfg=cfg)
|
||||
append_jsonl(ORDERS_PATH, row)
|
||||
return row
|
||||
|
||||
|
||||
async def run_once() -> Dict[str, Any]:
|
||||
cfg = load_json(CONFIG_PATH, {})
|
||||
state = load_json(STATE_PATH, {})
|
||||
balance_map = await fetch_balance_map(cfg)
|
||||
|
||||
results = []
|
||||
for item in cfg.get('symbols', []):
|
||||
if not item.get('enabled', True):
|
||||
continue
|
||||
symbol = item['symbol']
|
||||
holding = balance_map.get(symbol)
|
||||
|
||||
try:
|
||||
quote = await fetch_quote(symbol, cfg)
|
||||
except Exception as e:
|
||||
error_row = {
|
||||
'time': now_ts(),
|
||||
'symbol': symbol,
|
||||
'name': item.get('name', ''),
|
||||
'error': str(e),
|
||||
}
|
||||
append_jsonl(SIGNALS_PATH, error_row)
|
||||
results.append(error_row)
|
||||
continue
|
||||
|
||||
buy_reasons = eval_buy_rules(quote, holding, cfg, state)
|
||||
sell_reasons = eval_sell_rules(quote, holding, cfg)
|
||||
|
||||
signal_row = {
|
||||
'time': now_ts(),
|
||||
'symbol': symbol,
|
||||
'name': quote['name'],
|
||||
'quote': quote,
|
||||
'holding': holding,
|
||||
'buy_reasons': buy_reasons,
|
||||
'sell_reasons': sell_reasons,
|
||||
}
|
||||
append_jsonl(SIGNALS_PATH, signal_row)
|
||||
|
||||
action = None
|
||||
if market_is_open():
|
||||
if sell_reasons and holding:
|
||||
maybe_record_alert(symbol, quote['name'], 'sell', sell_reasons, quote, state)
|
||||
action = await execute_sell(symbol, quote, holding, sell_reasons, cfg)
|
||||
elif buy_reasons and not holding:
|
||||
maybe_record_alert(symbol, quote['name'], 'buy', buy_reasons, quote, state)
|
||||
action = await execute_buy(symbol, quote, buy_reasons, cfg, state)
|
||||
else:
|
||||
action = {'action': 'market_closed', 'symbol': symbol, 'time': now_ts()}
|
||||
|
||||
results.append({
|
||||
'symbol': symbol,
|
||||
'name': quote['name'],
|
||||
'price': quote['price'],
|
||||
'buy_reasons': buy_reasons,
|
||||
'sell_reasons': sell_reasons,
|
||||
'action': action,
|
||||
})
|
||||
|
||||
save_json(STATE_PATH, state)
|
||||
return {'time': now_ts(), 'mode': cfg.get('mode'), 'enable_orders': cfg.get('enable_orders'), 'results': results}
|
||||
|
||||
|
||||
async def main():
|
||||
cfg = load_json(CONFIG_PATH, {})
|
||||
poll_seconds = int(cfg.get('poll_seconds', 60))
|
||||
while True:
|
||||
try:
|
||||
result = await run_once()
|
||||
print(json.dumps(result, ensure_ascii=False))
|
||||
except Exception as e:
|
||||
print(json.dumps({'time': now_ts(), 'error': str(e)}, ensure_ascii=False))
|
||||
await asyncio.sleep(poll_seconds)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
||||
5350
projects/auto-trader/logs/trader-2026-03-23-172428.log
Normal file
5350
projects/auto-trader/logs/trader-2026-03-23-172428.log
Normal file
File diff suppressed because it is too large
Load Diff
3
projects/auto-trader/notify_state.json
Normal file
3
projects/auto-trader/notify_state.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"last_key": null
|
||||
}
|
||||
94
projects/auto-trader/notify_telegram.py
Normal file
94
projects/auto-trader/notify_telegram.py
Normal file
@@ -0,0 +1,94 @@
|
||||
import json
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
BASE = Path('/home/arin/.openclaw/workspace/projects/auto-trader')
|
||||
ALERTS_PATH = BASE / 'alerts.jsonl'
|
||||
NOTIFY_STATE_PATH = BASE / 'notify_state.json'
|
||||
CONFIG_PATH = BASE / 'telegram_notify_config.json'
|
||||
|
||||
|
||||
def load_json(path: Path, default):
|
||||
if not path.exists():
|
||||
return default
|
||||
try:
|
||||
return json.loads(path.read_text(encoding='utf-8'))
|
||||
except Exception:
|
||||
return default
|
||||
|
||||
|
||||
def save_json(path: Path, data):
|
||||
path.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding='utf-8')
|
||||
|
||||
|
||||
def load_alerts():
|
||||
if not ALERTS_PATH.exists():
|
||||
return []
|
||||
rows = []
|
||||
for line in ALERTS_PATH.read_text(encoding='utf-8').splitlines():
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
try:
|
||||
rows.append(json.loads(line))
|
||||
except Exception:
|
||||
pass
|
||||
return rows
|
||||
|
||||
|
||||
def format_msg(alert: dict) -> str:
|
||||
side = '매수' if alert.get('side') == 'buy' else '매도'
|
||||
reasons = ', '.join(alert.get('reasons', []))
|
||||
return (
|
||||
f"[자동매매 알림]\n"
|
||||
f"시간: {alert.get('time')}\n"
|
||||
f"종목: {alert.get('name')}({alert.get('symbol')})\n"
|
||||
f"신호: {side}\n"
|
||||
f"현재가: {alert.get('price'):,}원\n"
|
||||
f"등락률: {alert.get('change_pct')}%\n"
|
||||
f"조건: {reasons}"
|
||||
)
|
||||
|
||||
|
||||
def send_message(cfg: dict, text: str):
|
||||
cmd = [
|
||||
'openclaw', 'message', 'send',
|
||||
'--channel', cfg['channel'],
|
||||
'--target', cfg['target'],
|
||||
'--message', text,
|
||||
]
|
||||
if cfg.get('account'):
|
||||
cmd.extend(['--account', cfg['account']])
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
|
||||
def main():
|
||||
cfg = load_json(CONFIG_PATH, {})
|
||||
if not cfg.get('enabled'):
|
||||
print(json.dumps({'status': 'disabled'}, ensure_ascii=False))
|
||||
return
|
||||
|
||||
alerts = load_alerts()
|
||||
state = load_json(NOTIFY_STATE_PATH, {'last_key': None})
|
||||
last_key = state.get('last_key')
|
||||
|
||||
if last_key is None:
|
||||
new_alerts = alerts[-1:] if alerts else []
|
||||
else:
|
||||
keys = [a.get('key') for a in alerts]
|
||||
if last_key in keys:
|
||||
idx = keys.index(last_key)
|
||||
new_alerts = alerts[idx + 1:]
|
||||
else:
|
||||
new_alerts = alerts[-1:] if alerts else []
|
||||
|
||||
for alert in new_alerts:
|
||||
send_message(cfg, format_msg(alert))
|
||||
state['last_key'] = alert.get('key')
|
||||
|
||||
save_json(NOTIFY_STATE_PATH, state)
|
||||
print(json.dumps({'sent': len(new_alerts), 'last_key': state.get('last_key')}, ensure_ascii=False))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
10
projects/auto-trader/run_cycle.sh
Executable file
10
projects/auto-trader/run_cycle.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd /home/arin/.openclaw/workspace/projects/auto-trader
|
||||
PY=/home/arin/.openclaw/workspace/KIS_MCP_Server/.venv/bin/python
|
||||
$PY - <<'PY'
|
||||
import asyncio, json, auto_trader
|
||||
result = asyncio.run(auto_trader.run_once())
|
||||
print(json.dumps(result, ensure_ascii=False))
|
||||
PY
|
||||
$PY notify_telegram.py
|
||||
227
projects/auto-trader/signals.jsonl
Normal file
227
projects/auto-trader/signals.jsonl
Normal file
@@ -0,0 +1,227 @@
|
||||
{"time": "2026-03-23 17:11:31", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:11:31", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:11:32", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:12:32", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:12:32", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:13:30", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:13:30", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:13:30", "symbol": "039030", "name": "이오테크닉스", "error": "Failed to get stock price: {\"rt_cd\":\"1\",\"msg1\":\"초당 거래건수를 초과하였습니다.\",\"message\":\"EGW00201\"}"}
|
||||
{"time": "2026-03-23 17:20:09", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:20:10", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:20:10", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:23:53", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:23:53", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:23:54", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:24:28", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:24:29", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:24:29", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:25:29", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:25:30", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:25:30", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:26:30", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:26:31", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:26:31", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:27:32", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:27:32", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:27:33", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:28:33", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:28:34", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:28:34", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:29:34", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:29:35", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:29:35", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:30:36", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:30:36", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:30:37", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:31:37", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:31:38", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:31:38", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:32:38", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:32:39", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:32:39", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:33:39", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:33:40", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:33:40", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:34:41", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:34:41", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:34:42", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:35:42", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:35:43", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:35:43", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:36:43", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:36:44", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:36:44", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:37:44", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:37:45", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:37:45", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:38:46", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:38:46", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:38:47", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:39:47", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:39:48", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:39:48", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:40:49", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:40:49", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:40:50", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:41:51", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:41:51", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:41:52", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:42:52", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:42:53", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:42:53", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:43:53", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:43:54", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:43:54", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:44:55", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:44:55", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:44:56", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:45:57", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:45:57", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:45:58", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:46:58", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:46:59", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:46:59", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:47:59", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:48:00", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:48:00", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:49:00", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:49:01", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:49:01", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:50:02", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:50:02", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:50:03", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:51:03", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:51:04", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:51:04", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:52:04", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:52:05", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:52:05", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:53:06", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:53:06", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:53:07", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:54:07", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:54:08", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:54:08", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:55:08", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:55:09", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:55:09", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:56:09", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:56:10", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:56:10", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:57:11", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:57:11", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:57:12", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:58:12", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:58:13", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:58:13", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:59:13", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:59:14", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 17:59:14", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:00:15", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:00:15", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:00:16", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:01:16", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:01:17", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:01:17", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:02:17", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:02:18", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:02:18", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:03:19", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:03:19", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:03:20", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:04:20", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:04:21", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:04:21", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:05:21", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:05:22", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:05:22", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:06:23", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:06:23", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:06:24", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:07:24", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:07:25", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:07:25", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:08:25", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3908718, "trading_value": 3679875155000}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:08:26", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30258064, "trading_value": 5704694379250}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:08:26", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:09:26", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:09:27", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:09:27", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:10:28", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:10:28", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:10:29", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:11:29", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:11:30", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:11:30", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:12:30", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:12:31", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:12:31", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:13:32", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:13:32", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:13:33", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:14:33", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:14:34", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:14:34", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:15:34", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:15:35", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:15:35", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:16:35", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:16:36", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:16:36", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:17:37", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:17:37", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:17:38", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:18:38", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:18:39", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:18:39", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:19:39", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:19:40", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:19:40", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:20:41", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:20:41", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:20:42", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:21:42", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:21:43", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:21:43", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:22:43", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:22:44", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:22:44", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:23:44", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:23:45", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:23:46", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:24:46", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:24:46", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:24:47", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:25:47", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:25:48", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:25:48", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:26:48", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:26:49", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:26:49", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:27:49", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:27:50", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:27:50", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:28:50", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:28:51", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:28:51", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:29:52", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:29:52", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:29:53", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:30:53", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:30:54", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:30:54", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:31:54", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:31:55", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:31:55", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:32:55", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:32:56", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:32:56", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:33:57", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:33:57", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:33:58", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:34:58", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:34:59", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:34:59", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:35:59", "symbol": "000660", "name": "", "quote": {"symbol": "000660", "name": "", "price": 933000, "open": 952000, "high": 1309000, "low": 705000, "prev_close": 0, "change_pct": -7.35, "volume": 3911813, "trading_value": 3682788964415}, "holding": {"symbol": "000660", "name": "SK하이닉스", "qty": 1, "avg_price": 937000.0, "profit_rate": -0.43, "profit_amount": -4000, "position_value": 933000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:36:00", "symbol": "005930", "name": "", "quote": {"symbol": "005930", "name": "", "price": 186300, "open": 190500, "high": 259000, "low": 139600, "prev_close": 0, "change_pct": -6.57, "volume": 30268173, "trading_value": 5706605720650}, "holding": {"symbol": "005930", "name": "삼성전자", "qty": 1, "avg_price": 188100.0, "profit_rate": -0.96, "profit_amount": -1800, "position_value": 186300}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
{"time": "2026-03-23 18:36:00", "symbol": "039030", "name": "", "quote": {"symbol": "039030", "name": "", "price": 419000, "open": 414500, "high": 558000, "low": 301000, "prev_close": 0, "change_pct": -2.44, "volume": 112861, "trading_value": 47503718000}, "holding": {"symbol": "039030", "name": "이오테크닉스", "qty": 1, "avg_price": 428000.0, "profit_rate": -2.1, "profit_amount": -9000, "position_value": 419000}, "buy_reasons": [], "sell_reasons": ["sell_stop_loss_or_fade"]}
|
||||
9
projects/auto-trader/start_trader.sh
Executable file
9
projects/auto-trader/start_trader.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd /home/arin/.openclaw/workspace/projects/auto-trader
|
||||
LOG_DIR=logs
|
||||
mkdir -p "$LOG_DIR"
|
||||
STAMP=$(date +%F-%H%M%S)
|
||||
nohup /home/arin/.openclaw/workspace/KIS_MCP_Server/.venv/bin/python trader_daemon.py >> "$LOG_DIR/trader-$STAMP.log" 2>&1 &
|
||||
echo $! > trader.pid
|
||||
echo "started trader pid $(cat trader.pid)"
|
||||
1
projects/auto-trader/state.json
Normal file
1
projects/auto-trader/state.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
15
projects/auto-trader/stop_trader.sh
Executable file
15
projects/auto-trader/stop_trader.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd /home/arin/.openclaw/workspace/projects/auto-trader
|
||||
if [ ! -f trader.pid ]; then
|
||||
echo "no trader.pid"
|
||||
exit 0
|
||||
fi
|
||||
PID=$(cat trader.pid)
|
||||
if kill -0 "$PID" 2>/dev/null; then
|
||||
kill "$PID"
|
||||
echo "stopped pid $PID"
|
||||
else
|
||||
echo "pid $PID not running"
|
||||
fi
|
||||
rm -f trader.pid
|
||||
45
projects/auto-trader/strategy_config.json
Normal file
45
projects/auto-trader/strategy_config.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"mode": "virtual-safe",
|
||||
"enable_orders": false,
|
||||
"poll_seconds": 60,
|
||||
"api_call_interval_ms": 300,
|
||||
"api_retry_count": 2,
|
||||
"api_retry_backoff_ms": 600,
|
||||
"max_symbols": 5,
|
||||
"buy_budget_per_trade": 1000000,
|
||||
"max_position_value_per_symbol": 1200000,
|
||||
"max_daily_buys_per_symbol": 1,
|
||||
"sell_all_on_signal": true,
|
||||
"symbols": [
|
||||
{"symbol": "000660", "name": "SK하이닉스", "enabled": true},
|
||||
{"symbol": "005930", "name": "삼성전자", "enabled": true},
|
||||
{"symbol": "039030", "name": "이오테크닉스", "enabled": true}
|
||||
],
|
||||
"rules": {
|
||||
"buy_gap_strength": {
|
||||
"enabled": true,
|
||||
"min_pct_vs_prev_close": 1.0,
|
||||
"require_above_open": true
|
||||
},
|
||||
"buy_reclaim_after_dip": {
|
||||
"enabled": true,
|
||||
"dip_below_open_pct": 0.5,
|
||||
"reclaim_above_open": true,
|
||||
"rebound_from_low_pct": 1.0
|
||||
},
|
||||
"buy_near_day_high": {
|
||||
"enabled": true,
|
||||
"max_distance_from_high_pct": 0.5,
|
||||
"require_positive_day": true
|
||||
},
|
||||
"sell_take_profit": {
|
||||
"enabled": true,
|
||||
"take_profit_pct": 3.0
|
||||
},
|
||||
"sell_stop_loss_or_fade": {
|
||||
"enabled": true,
|
||||
"stop_loss_pct": -2.0,
|
||||
"fade_from_open_pct": -1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
6
projects/auto-trader/telegram_notify_config.json
Normal file
6
projects/auto-trader/telegram_notify_config.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"channel": "telegram",
|
||||
"target": "5897670258",
|
||||
"account": "default"
|
||||
}
|
||||
1
projects/auto-trader/trader.pid
Normal file
1
projects/auto-trader/trader.pid
Normal file
@@ -0,0 +1 @@
|
||||
24420
|
||||
33
projects/auto-trader/trader_daemon.py
Normal file
33
projects/auto-trader/trader_daemon.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import asyncio
|
||||
import json
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
import auto_trader
|
||||
|
||||
BASE = Path('/home/arin/.openclaw/workspace/projects/auto-trader')
|
||||
PY = '/home/arin/.openclaw/workspace/KIS_MCP_Server/.venv/bin/python'
|
||||
|
||||
|
||||
def load_config():
|
||||
return auto_trader.load_json(auto_trader.CONFIG_PATH, {})
|
||||
|
||||
|
||||
def run_notifier():
|
||||
subprocess.run([PY, str(BASE / 'notify_telegram.py')], check=False)
|
||||
|
||||
|
||||
async def main():
|
||||
while True:
|
||||
try:
|
||||
result = await auto_trader.run_once()
|
||||
print(json.dumps(result, ensure_ascii=False), flush=True)
|
||||
run_notifier()
|
||||
except Exception as e:
|
||||
print(json.dumps({'error': str(e)}, ensure_ascii=False), flush=True)
|
||||
cfg = load_config()
|
||||
await asyncio.sleep(int(cfg.get('poll_seconds', 60)))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user