크라우니 트레이딩 훈련엔진 — 한선씨 SSOT
개요
trader.crowny.org "크라우니 트레이딩"(CASDAQ-sim 훈련 앱) 계산 로직의 단일 원본(SSOT)을
한선씨로 작성. JS 프론트(별도 에이전트 작업)는 이 로직의 포팅/동반이며, 수치는 이 파일이 정본.
무엇을 했는지
설계서/개발자문서(
design_handoff_trading/)의 수식을 그대로 옮겨 26개 순수함수로 구현:
- 레벨/별 산출 (floor(잔고/60) 0~49클램프, floor(레벨/7))
- 역매칭 표시틱봉/내부틱봉 (활동량×1000 고정소수점 입력, round(act²×2140/bpmT), round(act×240/bpmT))
- 휴식판정(+120→600초/-120→3600초), 모드1 정산(+60/-120), 모드2 사다리 4단계(1사이클=$3,300),
모드3 계정수(1/11/31), 자기체크 27레벨 4상 판정(체크판정: 티/옴/타/음), 권장속도, 요금제 5단
- 체크판정 로직은 셀코어 룰(룰생성/룰조건추가/룰변경추가)로도 병행 표현(선언용, kps_저널_컨디션.한선 관례 준용)
핵심 발견 — VM 나눗셈 실측
hanseonc_high의
/ 연산자는 실측 결과
가장 가까운 정수로 반올림, 동률(.5)은 0쪽으로
(7/2=3, 9/2=4, -9/2=-4, 100/3=33, 2140000000/18000000=119). 가드레일 문서의 "자연반올림(ceil 경향)"
설명과 달리 실제로는 대체로 정확한 round() 근사라 표시틱봉/내부틱봉은
/ 그대로 써도 됨.
반대로 레벨산출처럼 floor()가 필요한 곳은
/가 floor가 아니므로 별도
내림나눗() 헬퍼(반올림 몫에서
나머지 부호 보정) 경유 필수 — 이 구분을 안 하면 조용히 틀린 레벨이 나온다.
검증
hanseonc_high 컴파일 경고/에러 0. 자체 assert 90/90 PASS(전 함수 커버, 모드2 사다리는
0→150→300→…→3300 전체 사이클 시뮬레이션까지 실측).
cd /Users/ef/crowny-trader/한선씨
/Users/ef/CrownyOS/crownyc/hanseonc_high 트레이딩훈련엔진.한선 > /tmp/훈련엔진.toau
/Users/ef/CrownyOS/crownyc/crownyc run /tmp/훈련엔진.toau
관련 파일
/Users/ef/crowny-trader/한선씨/트레이딩훈련엔진.한선 (482줄, 26함수, 신규)
- 참고:
/Users/ef/crowny-trader/한선씨/스터디카탈로그.한선 (기존 스타일 준용)
- 설계 원본:
/Users/ef/Downloads/design_handoff_trading/크라우니 트레이딩 설계서.md,
크라우니 트레이딩 개발자 문서.md잔여 이슈
- 라이브 무접촉 지시로 server.js/public 배선은 손대지 않음 — JS 프론트 에이전트가 이 수식을
참조해 포팅해야 함(특히 나눗셈 반올림 차이·레벨산출 floor 구분 숙지 필요).
- 셀코어 룰은 조립만 하고 실행(룰엔진실행)까지는 안 함 — 필요 시 셀db 슬롯 매핑 후 배선.