기반 기술
ChartFighter를 받치는 기술을 정리했습니다.
스스로 배우는 AI 봇
ChartFighter의 봇은 사람이 규칙을 짜 넣은 봇이 아닙니다. 실제 과거 시장 차트 위에서 서로 겨루며 디시전 트리 유전 알고리즘으로 진화한 봇입니다.
진화
봇마다 «어떤 지표를 어떤 설정으로 들고, 어떤 조건에서 사고파는가»가 유전자입니다. 수많은 과거 차트 구간에서 모의 대전을 거듭하며 교차와 변이로 다음 세대를 만들고, 더 잘 이기는 전략이 살아남습니다.
실력을 재서 난이도로
봇의 실력은 고정해 둔 기준 봇 무리와 같은 차트에서 겨룬 승률로 잽니다. 학습에 쓰지 않은 차트 구간에서 재므로, 외운 차트에서만 강한 봇이 높게 나오지 않습니다. 이 측정을 바탕으로 쉬움·보통·어려움 난이도별 상대를 고릅니다.
다양한 플레이 스타일
가장 강한 봇만 남기지 않습니다. 매매 횟수, 들고 있는 시간, 손절을 하는가, 주로 쓰는 지표 계열, 실력 — 다섯 축으로 나눈 격자의 칸마다 봇을 따로 보존해, 봇의 다양성을 확보하였습니다.
사람과 같은 규칙
봇은 사람과 같은 봉, 같은 매매 횟수, 같은 투자금으로 싸웁니다. 수수료나 정보, 규칙에서 봇에게 유리한 조건은 없습니다.
블랙박스가 아닌 봇
봇의 유전자는 숫자 덩어리로 된 블랙박스가 아니라 지표와 조건으로 된 규칙입니다. 그래서 ChartFighter는 봇마다 어떤 지표를 어떤 설정으로 들고, 어떤 조건에서 사고파는지 알고 있습니다.
| 규칙의 모양 — 예시 | |
|---|---|
| 들고 있는 지표 | RSI(14) · 단순이동평균(20) |
| 사는 조건 | RSI(14) < 30 그리고 종가 > 단순이동평균(20) |
| 파는 조건 | 평가 수익률 > +5% 또는 평가 수익률 < −3% |
규칙이 어떤 모양인지 보이려고 지어낸 예시입니다. 실제 봇의 규칙은 지표 62종 가운데 고른 것과 그 조건을 이렇게 조합합니다.
국가별 학습된 봇 100개체 이상
고객이 언제 들어와도 실력에 맞는 상대가 있고, 그 상대는 ChartFighter가 매매 규칙을 알고 있는 봇입니다.

게임을 받치는 기술
서버가 판정합니다
봉 공급, 체결, 손익, 승패, 레이팅을 모두 서버가 정합니다. 앱을 조작해도 결과는 바뀌지 않습니다.
실시간 대전
두 사람이 같은 차트를 같은 속도로 봅니다(봉 하나에 0.5초). 매매는 실시간 소켓으로 오가고, 연결이 끊겨도 30초 안에 돌아오면 그 판을 이어 갑니다. 같은 계정이 다른 기기에서 접속하면 새 기기가 이어받습니다.
지표 엔진
대부분의 지표를 코드가 아니라 수식 언어(DSL)로 정의합니다. 같은 정의가 게임 화면의 계산과 봇의 판단에 그대로 쓰이고, 서버와 앱의 계산 결과가 같은지를 같은 예제 데이터로 대조합니다.
실제 시장 데이터
한국 KOSPI·KOSDAQ / 베트남 HOSE·HNX / 미국 NASDAQ·NYSE의 실제 과거 일봉을 씁니다. 대전 중에는 종목 이름과 날짜를 가리고, 판이 끝나면 공개합니다.
나라별 데이터 분리
지갑·전적·상점·인벤토리는 나라마다 따로 두고, 레이팅은 모든 나라에 하나로 이어집니다. 나라 사이의 게임 머니는 송금으로 옮깁니다.
보안
모든 통신은 TLS(HTTPS·WSS)로 암호화합니다. 모바일 앱은 로그인 토큰을 기기의 보안 저장소에 보관하고, 서버는 비밀번호와 갱신 토큰을 해시로만 저장합니다.
임베드 구조
모바일 앱용 Flutter 패키지 하나, 인증 두 방식, 화면 언어 3개. ChartFighter 앱도 같은 SDK 위에 만든 첫 번째 고객입니다.
자세한 문의는 아래 메일로 연락 주시기 바랍니다.