From 6a9fef7be8ebdc43b4a2ba59b03db40d458611b4 Mon Sep 17 00:00:00 2001 From: Hwang Date: Sun, 22 Feb 2026 18:27:30 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=A4=EB=A7=A4=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=8B=9C=EC=9E=91=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursorrules | 20 ++++ .gitignore | 16 +++ __pycache__/database.cpython-312.pyc | Bin 42862 -> 42846 bytes __pycache__/ml_predictor.cpython-312.pyc | Bin 12006 -> 11990 bytes __pycache__/risk_manager.cpython-312.pyc | Bin 10502 -> 10486 bytes quant_bot.db | Bin 77824 -> 77824 bytes requirements.txt | 118 +++++++++++++++++++++++ update_env_simple.py | 6 +- 8 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 .cursorrules create mode 100644 .gitignore create mode 100644 requirements.txt diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..bfd675c --- /dev/null +++ b/.cursorrules @@ -0,0 +1,20 @@ +# 1. 역할 (Role & Persona) +- 당신은 '세계 최고의 퀀트 개발자'이자 '헤지펀드 매니저'입니다. 동시에 초보자를 위한 최고의 코딩 멘토입니다. +- 금융 공학적 관점에서 수익을 극대화하고 리스크를 최소화하는 논리를 제시하되, 설명은 아주 쉽고 친절하게 하세요. + +# 2. 코드 작성 및 제공 원칙 (Strict Rules) +- [전체 코드 제공]: 코드는 반드시 '전체 소스(Full Source)'를 제공하세요. `// ... 생략`은 절대 금지합니다. 함수가 3줄 이하라면 3줄 전체를 제공하고, 수정할 때도 생략 없이 온전한 코드를 줍니다. +- [기존 구조 존중]: 잘 작동하는 코드를 '더 나은 구조'라며 임의로 클래스화하거나 복잡하게 바꾸지 마세요. 기존의 주석과 로거(Logger)는 절대 지우지 말고 유지하세요. +- [설명 후 수정]: 핵심 로직을 변경해야 할 때는 코드를 짜기 전에 반드시 이유를 먼저 설명하고 승인을 받으세요. +- [교육적 주석]: 주식 투자 용어(RSI, 변동성, 꼬리잡기 등)나 새로운 개념이 나올 때는 코딩에 추가할 때 이해하기 쉽게 주석을 달아주세요. +- 빼먹거나 놓치는 부분 없이 꼼꼼하게 검증한 후 코드를 출력하세요. + +# 3. 투자 철학 및 매매 로직 (Trading Philosophy) +- 모든 매매 로직은 '안정성(Safety)'을 최우선으로 하며, 손절(Stop-loss) 로직은 필수입니다. +- 백테스트(Backtest)가 불가능한 '뇌동매매' 기반의 코드는 작성하지 않습니다. +- 수수료(Fees)와 슬리피지(Slippage), API 호출 효율성을 철저히 고려하여 코드를 작성하세요. + +# 4. 시스템 아키텍처 및 통신 (System Architecture) +- [즉시 저장 (Atomic Save)]: 데이터 파일(json 등)은 프로그램 종료 시점이 아니라, 이벤트(알림 발송 등)가 발생할 때마다 즉시 저장하세요. 재시작 시 기존 데이터를 삭제하지 않고 수정 데이터만 끼워 넣는 방식으로 안정적으로 운영하세요. +- [API 요청 규칙]: 모든 API 요청은 `utils/request_handler.py`의 `SafeRequest` 클래스를 상속받아 구현하세요. HTTP 429(Too Many Requests) 에러 발생 시 재시도(Retry) 로직을 반드시 포함하세요. +- [알림 시스템]: 알림 기능은 텔레그램과 매터모스트용(msg_tg, msg_mm)으로 분리하여 구현하고, 서버 부하 방지를 위해 일반 루프에는 `random.sleep(1~3)`을 기본 적용하세요. (실시간 매매 로직 제외) \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c53104 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv +.env +# Environment variables +.env +*.log +*.json +*.db \ No newline at end of file diff --git a/__pycache__/database.cpython-312.pyc b/__pycache__/database.cpython-312.pyc index 2bd586146453dffd12220809f9a2a104ec8d17bd..2a6eb76c1f07ef2c80ffccd040a50aac6ee85f5c 100644 GIT binary patch delta 46 zcmaENj_KYxChpU`yj%=GAaHEfM(!pqZaMvo{M=L^k)OAD1=mM)#$TIf8C@v>0CqYN ALI3~& delta 62 zcmcb2j_KVwChpU`yj%=GpfX{`M(!pqX+8an{M=L^k)NlZomrlrpQ~GxT3n)=Sdh7S Q2G>V*##@`ajINXb0H1Of6#xJL diff --git a/__pycache__/ml_predictor.cpython-312.pyc b/__pycache__/ml_predictor.cpython-312.pyc index bd19741009c3375a53105394ba665ad76b498c26..4d87d7f4c4edb3c3fa98bb73c5cba09830dbcbe8 100644 GIT binary patch delta 37 qcmaDBdo7mxG%qg~0}u!to3)Xr2zopFbmiK delta 53 zcmcZ>`z)6GG%qg~0}$|jowSj=jZNA}KO;Xk6-eag>1St_=jZ3@7Nr)K=q46qZl1$t Gr2zolDiR|A diff --git a/__pycache__/risk_manager.cpython-312.pyc b/__pycache__/risk_manager.cpython-312.pyc index 1ef8794431513b528e46a146badc07edcc2f37c7..4f1530bebf6725e828a6f3b4c71104f8d973ec99 100644 GIT binary patch delta 37 qcmZn*`WDE2nwOW00SE++&DzNQj*VMMKO;Xk6-eagZ5CnwqzC}pPz(bA delta 53 zcmews*cQZnnwOW00SF|MW^Cks$0lv0pOK%N3MBIL^s_U|^Ye3ci&BeAbQ23QH?y#R GQUn0Sw-L<% diff --git a/quant_bot.db b/quant_bot.db index a7d8ab617369cb02383ca48863efe8aab92232a7..8da240b29f8acf9bf5f74177c2e8011dc3e46aeb 100644 GIT binary patch delta 784 zcmZp8z|!!5Wr8$g#Y7or#)^#z^Zgm+HwiErY-Vg=R^VXb&tu@<$)C5eF^Rw4lZjnY zm7U4h*ucQp$im?5+@)`(w!EFX<;|=u4z3r&E}q?<%Rb4-z{pJ3z)07~NWsv;%E;Ub zD1a&C%E&G$3o**j)X*T<`^~bsueS9#xEcC3PI||~?u((vz(^j87#9Nr0~7yi2L5mS zuQv+{+~*hNVwPltxQ~gGS(4Mh0A&8A11t$VEKH{ucs6mSvWYXD+A7Gnhlx>s@`X?4 z)8}h4DsX{aYiMd^U^@MzCga@t5ThIuXMal*m#m_4mqa61$2`{@Gh@rhh`ex*l%%9= zKcnF604MLFs*(by{M_Uq?Se=@SEtgjL{t6D;KE3sz=~p*JpIT*uhKw+lu(}nefPo; z$JBs~RFmW?FOSkReZvT+&=f-pZ^TgHmnh z{LpNVkRpG}khGl4$dZa;zoZ-!<18QTqWo+hCsUI!qp)0$qMSlslW=D@ZBvsZ-|&p8 zs$f_1Dr0~D95eGU%gS(X=Wx&bkfP+s^zByKj8%+`azJmJF^VI3+`!z*#Bxx0JclM8 tw>2>_FgCC-Ff=esOUx-wHPACP&@(XFE+E2~%*f;=3rYvuf$1QT4FFyF@Y?_Y delta 66 zcmV-I0KNZ!-~@o+1dtm6aFHBC0dTQkpHBfDvJe3