Commit Graph

67 Commits

Author SHA1 Message Date
452c274073 Excellent! Let me create a comprehensive summary of all the changes made:
## Summary

I've successfully implemented all the requested features to add BacktestId support to the strategies/bot system:

### 1. **Added BacktestId Column to BotEntity** 
- **File**: `src/Managing.Infrastructure.Database/PostgreSql/Entities/BotEntity.cs:47`
- Added nullable `int? BacktestId` property with documentation
- This allows bots to reference the backtest they were created from

### 2. **Updated Bot Domain Model** 
- **File**: `src/Managing.Domain/Bots/Bot.cs:37`
- Added `BacktestId` property to the domain model
- Maintains consistency between entity and domain layers

### 3. **Updated TradingBotConfig and TradingBotConfigRequest** 
- **File**: `src/Managing.Domain/Bots/TradingBotConfig.cs:131`
  - Added `[Id(24)] public int? BacktestId` with Orleans serialization attribute
- **File**: `src/Managing.Domain/Bots/TradingBotConfigRequest.cs:119`
  - Added `BacktestId` property to the request model
- These changes ensure BacktestId flows through the entire bot creation pipeline

### 4. **Updated Data Mappers** 
- **File**: `src/Managing.Infrastructure.Database/PostgreSql/PostgreSqlMappers.cs`
  - Updated `Map(Bot bot)` at line 833 to include BacktestId
  - Updated `Map(BotEntity entity)` at line 799 to include BacktestId
- Ensures proper mapping between entity and domain models

### 5. **Updated LiveTradingBotGrain** 
- **File**: `src/Managing.Application/Bots/Grains/LiveTradingBotGrain.cs`
  - Added BacktestId to bot creation at line 1078 (for saved bots)
  - Added BacktestId to bot creation at line 1145 (for running bots)
- The grain now properly persists BacktestId when saving bot statistics

### 6. **Created New Endpoint for Backtest Stats** 
- **File**: `src/Managing.Api/Controllers/BacktestController.cs:114`
- **New Endpoint**: `GET /Backtest/{id}/stats`
- Returns only statistical information without positions, signals, or candles:
  - Basic info: id, name, ticker, timeframe, tradingType, startDate, endDate
  - Performance: initialBalance, finalPnl, netPnl, growthPercentage, hodlPercentage, winRate
  - Risk metrics: sharpeRatio, maxDrawdown, maxDrawdownRecoveryTime
  - Other: fees, score, scoreMessage, positionCount

### 7. **Created Database Migration** 
- **Generated Migration**: `AddBacktestIdToBots`
- The migration adds a nullable integer column `BacktestId` to the `Bots` table
- Ready to be applied with `dotnet ef database update`

### 8. **Regenerated Frontend API Client** 
- Ran `dotnet build` in `src/Managing.Nswag`
- The `ManagingApi.ts` file has been regenerated with:
  - `backtestId` field in bot-related DTOs
  - New `/Backtest/{id}/stats` endpoint

## How It Works

### Starting a Bot from a Backtest:
1. Frontend sends `StartBotRequest` with `TradingBotConfigRequest` containing `backtestId`
2. `BotController` validates and prepares the request
3. `StartBotCommandHandler` creates the bot configuration with BacktestId
4. `LiveTradingBotGrain.CreateAsync()` receives the config and saves it to state
5. When the bot is saved via `SaveBotAsync()`, BacktestId is persisted to the database
6. The Bot entity now has a reference to its originating backtest

### Retrieving Backtest Stats:
1. Frontend calls `GET /Backtest/{id}/stats` with the backtest ID
2. Backend retrieves the full backtest from the database
3. Returns only the statistical summary (without heavy data like positions/signals/candles)
4. Frontend can display backtest performance metrics when viewing a bot

## Database Schema
```sql
ALTER TABLE "Bots" ADD COLUMN "BacktestId" integer NULL;
```

All changes follow the project's architecture patterns (Controller → Application → Repository) and maintain backward compatibility through nullable BacktestId fields.
2026-01-09 18:24:08 +07:00
bcb00b9a86 Refactor pagination sorting parameters across multiple controllers and services to use the new SortDirection enum; update related API models and TypeScript definitions for consistency. Fix minor documentation and naming inconsistencies in the Bot and Data controllers. 2025-12-14 20:23:26 +07:00
a254db6d24 Update bot market type 2025-12-11 23:32:06 +07:00
35df25915f Add flagsmith 2025-12-11 19:22:54 +07:00
Oda
9d536ea49e Refactoring TradingBotBase.cs + clean architecture (#38)
* Refactoring TradingBotBase.cs + clean architecture

* Fix basic tests

* Fix tests

* Fix workers

* Fix open positions

* Fix closing position stucking the grain

* Fix comments

* Refactor candle handling to use IReadOnlyList for chronological order preservation across various components
2025-12-01 19:32:06 +07:00
6376e13b07 Add Bollinger Bands Volatility Protection indicator support
- Introduced BollingerBandsVolatilityProtection indicator in GeneticService with configuration settings for period and standard deviation (stdev).
- Updated ScenarioHelpers to handle creation and validation of the new indicator type.
- Enhanced CustomScenario, backtest, and scenario pages to include BollingerBandsVolatilityProtection in indicator lists and parameter mappings.
- Modified API and types to reflect the addition of the new indicator in relevant enums and mappings.
- Updated frontend components to support new parameters and visualization for Bollinger Bands.
2025-11-25 02:12:57 +07:00
68e9b2348c Add PositionCount property to Backtest models and responses
- Introduced PositionCount to Backtest, LightBacktest, and their respective response models.
- Updated BacktestController and BacktestExecutor to include PositionCount in responses.
- Modified database schema to accommodate new PositionCount field in relevant entities.
2025-11-18 22:23:20 +07:00
0cfc30598b Fix managing with good backtest return 2025-11-14 14:28:13 +07:00
57ba32f31e Add bundle version number on the backtest name 2025-11-12 18:11:39 +07:00
7e52b7a734 Improve workers for backtests 2025-11-10 01:44:33 +07:00
b1cd01bf9b Fix backtest count 2025-11-09 14:00:36 +07:00
7e08e63dd1 Add genetic backtest to worker 2025-11-09 03:32:08 +07:00
7dba29c66f Add jobs 2025-11-09 02:08:31 +07:00
92c28367cf Add Versionning for bundle backtest request 2025-10-23 13:37:53 +07:00
6bfefc91c8 Deserialized variant for bundle backtest 2025-10-23 12:31:30 +07:00
a1fe7ed3b3 Add saved bundle status 2025-10-22 16:45:49 +07:00
af08462e59 Add save only for bundle backtest 2025-10-21 16:38:51 +07:00
76b5036703 Fix volume over time 2025-10-18 13:48:12 +07:00
472c507801 Add netpnl and initialBalance to backtests 2025-10-16 17:19:22 +07:00
b3f3bccd72 Add delete backtests by filters 2025-10-15 00:28:25 +07:00
a462fc9948 Add name to backtest filters 2025-10-14 18:38:27 +07:00
74adad5834 Add filters and sorting for backtests 2025-10-14 18:06:36 +07:00
32ac342a20 Update bundle backtests 2025-10-12 15:42:38 +07:00
5acc77650f Add bundle backtest refact + fix whitelist 2025-10-12 14:40:20 +07:00
63bc7bbe59 Bundle from worker to grain 2025-09-15 12:56:59 +07:00
da50b30344 Optionnal cooldown 2025-09-12 00:12:48 +07:00
Oda
082ae8714b Trading bot grain (#33)
* Trading bot Grain

* Fix a bit more of the trading bot

* Advance on the tradingbot grain

* Fix build

* Fix db script

* Fix user login

* Fix a bit backtest

* Fix cooldown and backtest

* start fixing bot start

* Fix startup

* Setup local db

* Fix build and update candles and scenario

* Add bot registry

* Add reminder

* Updateing the grains

* fix bootstraping

* Save stats on tick

* Save bot data every tick

* Fix serialization

* fix save bot stats

* Fix get candles

* use dict instead of list for position

* Switch hashset to dict

* Fix a bit

* Fix bot launch and bot view

* add migrations

* Remove the tolist

* Add agent grain

* Save agent summary

* clean

* Add save bot

* Update get bots

* Add get bots

* Fix stop/restart

* fix Update config

* Update scanner table on new backtest saved

* Fix backtestRowDetails.tsx

* Fix agentIndex

* Update agentIndex

* Fix more things

* Update user cache

* Fix

* Fix account load/start/restart/run
2025-08-05 04:07:06 +07:00
Oda
3de8b5e00e Orlean (#32)
* Start building with orlean

* Add missing file

* Serialize grain state

* Remove grain and proxies

* update and add plan

* Update a bit

* Fix backtest grain

* Fix backtest grain

* Clean a bit
2025-07-30 16:03:30 +07:00
Oda
422fecea7b Postgres (#30)
* Add postgres

* Migrate users

* Migrate geneticRequest

* Try to fix Concurrent call

* Fix asyncawait

* Fix async and concurrent

* Migrate backtests

* Add cache for user by address

* Fix backtest migration

* Fix not open connection

* Fix backtest command error

* Fix concurrent

* Fix all concurrency

* Migrate TradingRepo

* Fix scenarios

* Migrate statistic repo

* Save botbackup

* Add settings et moneymanagement

* Add bot postgres

* fix a bit more backups

* Fix bot model

* Fix loading backup

* Remove cache market for read positions

* Add workers to postgre

* Fix workers api

* Reduce get Accounts for workers

* Migrate synth to postgre

* Fix backtest saved

* Remove mongodb

* botservice decorrelation

* Fix tradingbot scope call

* fix tradingbot

* fix concurrent

* Fix scope for genetics

* Fix account over requesting

* Fix bundle backtest worker

* fix a lot of things

* fix tab backtest

* Remove optimized moneymanagement

* Add light signal to not use User and too much property

* Make money management lighter

* insert indicators to awaitable

* Migrate add strategies to await

* Refactor scenario and indicator retrieval to use asynchronous methods throughout the application

* add more async await

* Add services

* Fix and clean

* Fix bot a bit

* Fix bot and add message for cooldown

* Remove fees

* Add script to deploy db

* Update dfeeploy script

* fix script

* Add idempotent script and backup

* finish script migration

* Fix did user and agent name on start bot
2025-07-27 20:42:17 +07:00
83ed78a1fa Add signalr 2025-07-21 19:54:04 +07:00
a32e9c33a8 Add front for bundle 2025-07-21 18:16:01 +07:00
6f49f2659f Add bundle backtest 2025-07-21 17:03:27 +07:00
0870edee61 Setup bundle for backtest 2025-07-21 00:01:13 +07:00
a3e7a8ac4e Add bundle backtest endpoint 2025-07-19 21:42:43 +07:00
fd117f9a2f Delete backtest by request id 2025-07-18 19:34:16 +07:00
7de18673f9 Add scoreMessage 2025-07-17 21:07:10 +07:00
27bed791c3 Add backtest light 2025-07-17 05:19:16 +07:00
b547c01787 update pagination 2025-07-16 21:37:05 +07:00
f51fd5a5f7 pagination for backtest and optimization 2025-07-16 14:27:07 +07:00
cebbeff887 Add progression and new method of selection/mutation/crossover 2025-07-11 23:38:22 +07:00
79f0cd20c1 Delete backtest by id and with filters 2025-07-11 22:05:46 +07:00
c62570e15d Add enum for Selection method 2025-07-11 17:15:11 +07:00
e43a1af5ef Fix genetic backend 2025-07-11 14:11:41 +07:00
551480d618 Update genetic impl 2025-07-10 22:07:21 +07:00
2fc7a1d4bb Start impl for genetic 2025-07-10 21:33:24 +07:00
0b4f2173e0 Add Genetic workers 2025-07-10 19:15:57 +07:00
387948a107 Remove candle from getBacktestsForUser 2025-07-09 16:55:47 +07:00
9c01dce461 Remove candle from backtest 2025-07-08 23:36:21 +07:00
59c5de7df7 Push merge conflict 2025-07-04 11:02:53 +07:00
Oda
a547c4a040 Add synthApi (#27)
* Add synthApi

* Put confidence for Synth proba

* Update the code

* Update readme

* Fix bootstraping

* fix github build

* Update the endpoints for scenario

* Add scenario and update backtest modal

* Update bot modal

* Update interfaces for synth

* add synth to backtest

* Add Kelly criterion and better signal

* Update signal confidence

* update doc

* save leaderboard and prediction

* Update nswag to generate ApiClient in the correct path

* Unify the trading modal

* Save miner and prediction

* Update messaging and block new signal until position not close when flipping off

* Rename strategies to indicators

* Update doc

* Update chart + add signal name

* Fix signal direction

* Update docker webui

* remove crypto npm

* Clean
2025-07-03 00:13:42 +07:00