Technology
Here is the technology behind ChartFighter.
AI bots that learn on their own
ChartFighter’s bots are not bots with rules written in by people. They evolved by a decision-tree genetic algorithm, competing against each other on real past market charts.
Evolution
Each bot’s genes are «which indicators it carries, with which settings, and under which conditions it buys and sells». Over mock matches on a great many past chart windows, crossover and mutation produce the next generation, and the strategies that win more survive.
Strength measured, then sorted into difficulty
A bot’s strength is measured by its win rate against a fixed reference group of bots on the same charts. It is measured on chart windows not used for learning, so a bot that is only strong on charts it memorised does not score high. Based on this measurement, we choose opponents for each difficulty: Easy, Normal and Hard.
A variety of play styles
We do not keep only the strongest bots. A grid with five axes — how often a bot trades, how long it holds, whether it cuts losses, which family of indicators it mainly uses, and its strength — keeps bots in each cell separately, which secures a diverse population of bots.
The same rules as people
Bots play with the same candles, the same number of trades and the same investment as people. Bots get no advantage in fees, information or rules.
Bots that are not black boxes
A bot’s genes are not a black box of numbers; they are rules made of indicators and conditions. So for each bot, ChartFighter knows which indicators it carries with which settings and under which conditions it buys and sells.
| What a rule looks like — an example | |
|---|---|
| Indicators it carries | RSI(14) · Simple moving average(20) |
| Buy condition | RSI(14) < 30 and close > Simple moving average(20) |
| Sell condition | Unrealised return > +5% or unrealised return < −3% |
A made-up example to show the shape of a rule. Real bots combine indicators chosen from the 62 available with conditions like these.
More than 100 trained bots in each country
Whenever customers come, there is an opponent at their level, and that opponent is a bot whose trading rules ChartFighter knows.

The technology behind the game
The server decides
The server decides the candles, fills, profit and loss, the winner and ratings. Tampering with the app does not change the result.
Real-time matches
Both players see the same chart at the same pace (0.5 seconds per candle). Trades travel over a real-time socket, and if the connection drops, a player who returns within 30 seconds carries on with the match. If the same account connects from another device, the new device takes over.
Indicator engine
Most indicators are defined in a formula language (DSL) rather than in code. The same definitions are used both for the game screen’s calculations and for the bots’ decisions, and the server’s and the app’s results are checked against each other on the same sample data.
Real market data
Real past daily candles from Korea KOSPI·KOSDAQ / Vietnam HOSE·HNX / United States NASDAQ·NYSE. During a match the stock name and dates are hidden, and they are revealed when the match ends.
Data kept per country
Wallets, records, shops and inventories are kept separately for each country, while the rating is one across all countries. Game money moves between countries by remittance.
Security
All traffic is encrypted with TLS (HTTPS · WSS). The mobile app keeps sign-in tokens in the device’s secure storage, and the server stores passwords and refresh tokens only as hashes.
Embedding
One Flutter package for mobile apps, two ways to sign in, three screen languages. The ChartFighter app itself is the first customer built on the same SDK.
For more details, please contact us at the email address below.