OpenChart
Claude·Codex와 함께하는 무료 데스크톱 차트 도구. 알림 설정·차트 움직임 분석·데이터 제공자 선택
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기국내 주식의 투자자별 수급을 차트 패턴의 현재 단계와 겹쳐 조건 검색하는 리서치 도구. KIS Open API, DART, 금융위 시세로 수집하고 패턴 16종을 형성중·돌파선 부근·돌파·눌림목·실패로 판정합니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
국내 주식의 투자자별 수급과 차트 패턴의 현재 위치를 하나의 조건으로 묶어 검색하는 리서치 플랫폼입니다. 시중의 도구는 대체로 둘 중 하나만 답합니다. 수급 도구는 "누가 얼마나 샀는가"를 보여주고, 차트 도구는 "어떤 패턴인가"를 보여줍니다. 그런데 실제 판단은 두 가지가 만나는 지점에서 일어납니다. 누가 사들였다는 사실은 그것이 차트의 어느 국면에서 벌어졌는지를 알아야 의미가 생기고, 패턴이 완성됐다는 사실은 그 구간에 실제 매수 주체가 있었는지를 알아야 신뢰가 생깁니다. 이 플랫폼은 그 교집합을 질문으로 만들 수 있게 합니다. 특정 주체가 유통주식수 대비 의미 있는 규모로 순매수했고, 그 매수가 패턴 형성 구간 안에서 일어났으며, 현재 가격이 돌파선 부근이거나 돌파 후 눌림목인 종목 수급, 패턴, 위치를 각각 조절해 이런 조건을 직접 조립하고 결과를 표로 받습니다. 세 축을 AND로 묶어 종목을 걸러냅니다.README 전문 보기 ↗
국내 주식의 투자자별 수급과 차트 패턴의 현재 위치를 하나의 조건으로 묶어 검색하는 리서치 플랫폼입니다.
시중의 도구는 대체로 둘 중 하나만 답합니다. 수급 도구는 "누가 얼마나 샀는가"를 보여주고, 차트 도구는 "어떤 패턴인가"를 보여줍니다. 그런데 실제 판단은 두 가지가 만나는 지점에서 일어납니다. 누가 사들였다는 사실은 그것이 차트의 어느 국면에서 벌어졌는지를 알아야 의미가 생기고, 패턴이 완성됐다는 사실은 그 구간에 실제 매수 주체가 있었는지를 알아야 신뢰가 생깁니다.
이 플랫폼은 그 교집합을 질문으로 만들 수 있게 합니다.
특정 주체가 유통주식수 대비 의미 있는 규모로 순매수했고, 그 매수가 패턴 형성 구간 안에서 일어났으며, 현재 가격이 돌파선 부근이거나 돌파 후 눌림목인 종목
수급, 패턴, 위치를 각각 조절해 이런 조건을 직접 조립하고 결과를 표로 받습니다.
세 축을 AND로 묶어 종목을 걸러냅니다.
| 축 | 조절할 수 있는 것 |
|---|---|
| 수급 | 투자자 주체, 순매수·순매도, 유통주식수 대비 비율 또는 평소 거래량 대비 배수, 임계값, 적용 기간(최근 N일 또는 패턴 형성 구간 중), 집계 방식(합계 또는 일 최대) |
| 패턴 | 상승·하락·중립 방향, 패턴 종류 16가지, 현재 단계, 최소 점수 |
| 라인 | 거래량 돌파 후 눌림목, 이평선 지지, 지지선 재테스트 |
투자자 주체는 KIS가 제공하는 12구분을 그대로 씁니다. 개인, 외국인, 기타외국인, 기관합계, 그리고 기관 내부를 금융투자·보험·투신·연기금·은행·기타금융으로 나눈 세부 항목과 기타법인까지 각각 독립된 조건으로 걸 수 있습니다. 기관을 한 덩어리로 보면 서로 반대로 움직이는 주체가 상쇄되어 사라지기 때문입니다.
조건에 맞는 종목이 없으면 그 기간의 실제 최대값과 상위 1% 기준선을 함께 알려줍니다. 임계값이 현실과 얼마나 떨어져 있는지 모르면 조건을 고칠 수 없기 때문입니다.
StockCharts ChartSchool 분류를 기준으로, 일봉에서 기하학적으로 판정 가능한 16종을 구현했습니다.
| 방향 | 패턴 |
|---|---|
| 상승 8종 | 역헤드앤숄더, 쌍바닥, 삼중바닥, 원형바닥, 하락쐐기, 컵앤핸들, 상승삼각형, 상승깃발 |
| 하락 6종 | 헤드앤숄더, 쌍고점, 삼중천장, 상승쐐기, 하락삼각형, 하락깃발 |
| 중립 2종 | 대칭삼각형, 박스권 |
"패턴이 있다"만으로는 쓸모가 없습니다. 지금 그 패턴의 어디에 있는지가 판단의 재료이므로, 모든 적중에 단계를 함께 판정합니다.
| 단계 | 뜻 |
|---|---|
| 형성중 | 구조는 성립하나 돌파선에서 멀다 |
| 돌파선 부근 | 넥라인·돌파선 ±3% 안 |
| 돌파 | 돌파 직후 3봉 이내 |
| 눌림목 | 돌파 후 되돌려 돌파선 부근까지 왔고, 돌파선은 아직 지키고 있다 |
| 돌파 실패 | 돌파 후 돌파선을 다시 잃었다 |
자동 판정이라 오탐이 섞입니다. 그래서 모든 적중은 근거에 실제 수치를 남깁니다. 어깨 대칭도, 컵 깊이, 바닥 체류 봉수, 돌파 거래량 배수, 추세선 R²를 직접 확인하고 판단하시면 됩니다.
변곡점을 군집화해 지지·저항선을 만들고, 평소 거래량의 1.8배 이상으로 그 선을 돌파한 뒤 되돌아와 아직 지키고 있는 종목을 찾습니다. 3일선·5일선 지지도 함께 봅니다.
일봉 차트 위에 패턴 골격(어깨, 머리, 넥라인, 돌파선)을 겹쳐 그리고, 언제 얼마나 수급이 들어왔는지를 봉에 화살표로 표시합니다. 지지선 그리기는 저장되어 새로고침해도 남습니다.
프로그램매매 패널은 프로그램 제외 외국인을 계산합니다. 외국인 순매수에서 프로그램 순매수를 뺀 값으로, 차익거래가 아닌 실수요 외국인 물량을 근사합니다.
수집은 장 마감 후 배치로 돌고, 화면은 적재된 결과만 읽습니다. 조회할 때마다 외부 API를 때리지 않으므로 응답이 일정하고 레이트 제한에 걸리지 않습니다.
| 데이터 | 출처 | 비고 |
|---|---|---|
| 투자자별 수급 12구분 | 한국투자증권 Open API FHPTJ04160001 | 실전 계좌 초당 15건, 모의 초당 2건. 도메인에 vts 포함 여부로 자동 전환 |
| 일봉 | DATA.go.kr 금융위원회 주식시세정보 | 전 종목을 한 번에. T+1 공시라 당일치는 다음 날 들어온다 |
| 분봉 | KIS FHKST03010200 (당일), Yahoo Finance (과거 소급) | provider 폴백. 1분봉은 약 14일, 5분봉은 약 57일까지 |
| 프로그램매매 | KIS FHPPG04650101 / FHPPG04650201 | 장중에만 내려온다 |
| 임원·주요주주 지분변동 | OpenDART elestock + 원문 파싱 | 변동전 + 증감 = 변동후 항등식으로 증감 열을 식별 |
| 유통주식수 | OpenDART hyslrSttus, tesstkAcqsDspsSttus | 상장주식수에서 최대주주 소유분과 자기주식을 뺀 실계산. 미확보 종목은 상장주식수로 대체하고 화면에 표시 |
수급 원천은 InvestorFlowProvider 인터페이스 뒤에 있습니다. 환경변수 하나로 갈아끼울 수 있고, 재배포가 제한된 데이터를 쓰는 provider는 라이선스 가드가 걸려 있습니다.
KRX Data Marketplace 데이터는 재배포 제한이 있어 이 저장소에 포함하지 않았습니다. 해당 provider를 쓰시려면 직접 계약 후 내려받아
data/krx-csv/에 두시면 됩니다.
Next.js 15 (App Router, Turbopack) + TypeScript + Tailwind v4
lightweight-charts (일봉·패턴 오버레이) / recharts (수급 시계열)
PGlite (PostgreSQL 18 WASM) 소켓 서버 또는 Supabase
DB는 표준 pg 드라이버로 붙습니다. DATABASE_URL 만 바꾸면 로컬 PGlite와 Supabase 사이를 오갈 수 있습니다.
Meta의 Astryx에서 규칙을 가져왔습니다. 표면 톤 4단으로 층을 만들고 그림자를 쓰지 않으며, 테두리는 별도 회색이 아니라 전경색의 10% 알파입니다.
UI 액센트는 무채색입니다. 이 화면에서 적색은 상승·순매수, 청색은 하락·순매도로 이미 예약되어 있어서, UI 액센트에 유채색을 쓰면 "선택됨"과 "하락"이 시각적으로 섞입니다. 금색은 아직 확정이 아닌 상태(넥라인 부근, 유통주식수 추정) 하나에만 씁니다.
npm install
cp .env.example .env.local
.env.local에 발급받은 키를 채웁니다.
| 변수 | 발급처 |
|---|---|
KIS_APP_KEY, KIS_APP_SECRET | 한국투자증권 KIS Developers |
DATA_GO_KR_KEY | 공공데이터포털 금융위원회 주식시세정보 |
DART_API_KEY (선택) | OpenDART 유통주식수 실계산과 임원 매수 교차확인용 |
npm run db:server
PGlite 소켓 서버는 반드시 별도 터미널에서 포그라운드로 띄우세요. 백그라운드 서브셸로 분리하면 셸이 종료될 때 WAL 플러시 없이 죽어 데이터 디렉터리가 손상됩니다. 복구 도구가 없어 재수집이 유일한 방법입니다.
다른 터미널에서:
npm run migrate
npm run batch -- ohlcv --date 2026-08-06 --days 220
npm run batch -- flow --date 2026-08-06 --lookback 30
npm run batch -- dart --date 2026-08-06
npm run batch -- patterns --date 2026-08-06
npm run batch -- lines --date 2026-08-06
npm run batch -- flow-events --date 2026-08-06
--date를 넘기지 않으면 오늘로 잡히고, 오늘 일봉이 아직 없으면 대상이 0건이 됩니다. 기준일은 항상 명시하세요.
한 번에 돌리려면:
npm run batch -- all --date 2026-08-06
npm run dev
.env.local을 고친 뒤에는 개발 서버를 재시작해야 합니다. 그냥 두면 워커가 죽으면서 모든 API가 500을 반환합니다.
이 도구는 수집한 데이터의 사실과 순위만 보여줍니다. 종목 추천, 매매 지시, 목표가 제시를 하지 않으며, 수익률을 보장하거나 예측하지 않습니다. 패턴 판정은 자동화된 기하학적 근사이며 오탐을 포함합니다. 투자 판단과 그 결과에 대한 책임은 전적으로 이용자 본인에게 있습니다.
데이터 제공처의 이용약관과 재배포 정책은 각자 확인하고 준수하셔야 합니다.