From 6d1f0d612b9d9da5e6b78aac3188e6f7955faf34 Mon Sep 17 00:00:00 2001 From: cryptooda Date: Thu, 17 Jul 2025 22:54:02 +0700 Subject: [PATCH] Remove playground because not working anymore and make backtest properties required --- .../Models/Requests/LightBacktestResponse.cs | 30 +++++++------ .../organism/Backtest/backtestCards.tsx | 44 +------------------ .../UnifiedTradingModal.tsx | 39 ++++++++-------- .../src/generated/ManagingApi.ts | 26 +++++------ .../src/generated/ManagingApiTypes.ts | 26 +++++------ .../src/pages/backtestPage/backtest.tsx | 14 ++---- .../pages/backtestPage/backtestPlayground.tsx | 34 -------------- 7 files changed, 67 insertions(+), 146 deletions(-) delete mode 100644 src/Managing.WebApp/src/pages/backtestPage/backtestPlayground.tsx diff --git a/src/Managing.Api/Models/Requests/LightBacktestResponse.cs b/src/Managing.Api/Models/Requests/LightBacktestResponse.cs index ea32a24..e819a0e 100644 --- a/src/Managing.Api/Models/Requests/LightBacktestResponse.cs +++ b/src/Managing.Api/Models/Requests/LightBacktestResponse.cs @@ -1,20 +1,22 @@ +using System.ComponentModel.DataAnnotations; using Managing.Domain.Bots; namespace Managing.Api.Models.Requests; public class LightBacktestResponse { - public string Id { get; set; } = string.Empty; - public TradingBotConfig Config { get; set; } = new(); - public decimal FinalPnl { get; set; } - public int WinRate { get; set; } - public decimal GrowthPercentage { get; set; } - public decimal HodlPercentage { get; set; } - public DateTime StartDate { get; set; } - public DateTime EndDate { get; set; } - public decimal? MaxDrawdown { get; set; } - public decimal Fees { get; set; } - public double? SharpeRatio { get; set; } - public double Score { get; set; } - public string ScoreMessage { get; set; } = string.Empty; -} \ No newline at end of file + [Required] public string Id { get; set; } = string.Empty; + [Required] public TradingBotConfig Config { get; set; } = new(); + [Required] public decimal FinalPnl { get; set; } + [Required] public int WinRate { get; set; } + [Required] public decimal GrowthPercentage { get; set; } + [Required] public decimal HodlPercentage { get; set; } + [Required] public DateTime StartDate { get; set; } + [Required] public DateTime EndDate { get; set; } + [Required] public decimal? MaxDrawdown { get; set; } + [Required] public decimal Fees { get; set; } + + [Required] public double? SharpeRatio { get; set; } + [Required] public double Score { get; set; } + [Required] public string ScoreMessage { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/src/Managing.WebApp/src/components/organism/Backtest/backtestCards.tsx b/src/Managing.WebApp/src/components/organism/Backtest/backtestCards.tsx index 6d1b690..1dc157d 100644 --- a/src/Managing.WebApp/src/components/organism/Backtest/backtestCards.tsx +++ b/src/Managing.WebApp/src/components/organism/Backtest/backtestCards.tsx @@ -7,7 +7,6 @@ import useBacktestStore from '../../../app/store/backtestStore' import type { Backtest, MoneyManagement, - RunBacktestRequest, StartBotRequest, TradingBotConfig, TradingBotConfigRequest @@ -151,39 +150,6 @@ const BacktestCards: React.FC = ({list}) => { setShowBotNameModal(false) } - async function runOptimizedBacktest(backtest: Backtest) { - const t = new Toast('Optimized backtest is running') - const client = new BacktestClient({}, apiUrl) - - // Calculate dates for the API call - const startDate = backtest.candles[0].date - const endDate = backtest.candles[backtest.candles.length - 1].date - - // Create optimized backtest config - const optimizedConfig: TradingBotConfig = { - ...backtest.config, - name: `${backtest.config.ticker}-${backtest.config.scenarioName}-Optimized`, - moneyManagement: backtest.optimizedMoneyManagement || backtest.config.moneyManagement - } - - const request: RunBacktestRequest = { - config: optimizedConfig as unknown as TradingBotConfigRequest, - startDate: startDate, - endDate: endDate, - save: false, - } - - await client - .backtest_Run(request) - .then((backtest: Backtest) => { - t.update('success', `${backtest.config.ticker} Backtest Succeeded`) - addBacktest(backtest) - }) - .catch((err) => { - t.update('error', 'Error :' + err) - }) - } - async function deleteBacktest(id: string) { const t = new Toast('Deleting backtest') const client = new BacktestClient({}, apiUrl) @@ -217,7 +183,7 @@ const BacktestCards: React.FC = ({list}) => {
@@ -279,14 +245,6 @@ const BacktestCards: React.FC = ({list}) => { Save money management -
  • - -
  • {backtest.config.ticker} diff --git a/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx b/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx index 77ea9fe..8d8394e 100644 --- a/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx +++ b/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx @@ -7,24 +7,25 @@ import useBacktestStore from '../../../app/store/backtestStore' import {useCustomMoneyManagement} from '../../../app/store/customMoneyManagement' import {useCustomScenario} from '../../../app/store/customScenario' import { - AccountClient, - BacktestClient, - BotClient, - DataClient, - MoneyManagement, - MoneyManagementClient, - RiskManagement, - RiskToleranceLevel, - RunBacktestRequest, - Scenario, - ScenarioClient, - ScenarioRequest, - SignalType, - StartBotRequest, - Ticker, - Timeframe, - TradingBotConfigRequest, - UpdateBotConfigRequest, + AccountClient, + BacktestClient, + BotClient, + DataClient, + LightBacktestResponse, + MoneyManagement, + MoneyManagementClient, + RiskManagement, + RiskToleranceLevel, + RunBacktestRequest, + Scenario, + ScenarioClient, + ScenarioRequest, + SignalType, + StartBotRequest, + Ticker, + Timeframe, + TradingBotConfigRequest, + UpdateBotConfigRequest, } from '../../../generated/ManagingApi' import type {IUnifiedTradingConfigInput, UnifiedTradingModalProps} from '../../../global/type' import {Loader} from '../../atoms' @@ -713,7 +714,7 @@ const UnifiedTradingModal: React.FC = ({ const backtest = await backtestClient.backtest_Run(request); t.update('success', `${ticker} Backtest Succeeded`); - addBacktest(backtest); + addBacktest(backtest as unknown as LightBacktestResponse); } catch (err: any) { diff --git a/src/Managing.WebApp/src/generated/ManagingApi.ts b/src/Managing.WebApp/src/generated/ManagingApi.ts index a38631a..66afb40 100644 --- a/src/Managing.WebApp/src/generated/ManagingApi.ts +++ b/src/Managing.WebApp/src/generated/ManagingApi.ts @@ -3805,19 +3805,19 @@ export interface PaginatedBacktestsResponse { } export interface LightBacktestResponse { - id?: string | null; - config?: TradingBotConfig | null; - finalPnl?: number; - winRate?: number; - growthPercentage?: number; - hodlPercentage?: number; - startDate?: Date; - endDate?: Date; - maxDrawdown?: number | null; - fees?: number; - sharpeRatio?: number | null; - score?: number; - scoreMessage?: string | null; + id: string; + config: TradingBotConfig; + finalPnl: number; + winRate: number; + growthPercentage: number; + hodlPercentage: number; + startDate: Date; + endDate: Date; + maxDrawdown: number; + fees: number; + sharpeRatio: number; + score: number; + scoreMessage: string; } export interface RunBacktestRequest { diff --git a/src/Managing.WebApp/src/generated/ManagingApiTypes.ts b/src/Managing.WebApp/src/generated/ManagingApiTypes.ts index b1b9723..c0c772c 100644 --- a/src/Managing.WebApp/src/generated/ManagingApiTypes.ts +++ b/src/Managing.WebApp/src/generated/ManagingApiTypes.ts @@ -611,19 +611,19 @@ export interface PaginatedBacktestsResponse { } export interface LightBacktestResponse { - id?: string | null; - config?: TradingBotConfig | null; - finalPnl?: number; - winRate?: number; - growthPercentage?: number; - hodlPercentage?: number; - startDate?: Date; - endDate?: Date; - maxDrawdown?: number | null; - fees?: number; - sharpeRatio?: number | null; - score?: number; - scoreMessage?: string | null; + id: string; + config: TradingBotConfig; + finalPnl: number; + winRate: number; + growthPercentage: number; + hodlPercentage: number; + startDate: Date; + endDate: Date; + maxDrawdown: number; + fees: number; + sharpeRatio: number; + score: number; + scoreMessage: string; } export interface RunBacktestRequest { diff --git a/src/Managing.WebApp/src/pages/backtestPage/backtest.tsx b/src/Managing.WebApp/src/pages/backtestPage/backtest.tsx index 81056ca..6ce5148 100644 --- a/src/Managing.WebApp/src/pages/backtestPage/backtest.tsx +++ b/src/Managing.WebApp/src/pages/backtestPage/backtest.tsx @@ -2,7 +2,6 @@ import React, {useState} from 'react' import 'react-toastify/dist/ReactToastify.css' import {Tabs} from '../../components/mollecules' -import BacktestPlayground from './backtestPlayground' import BacktestScanner from './backtestScanner' import BacktestUpload from './backtestUpload' import BacktestGenetic from './backtestGenetic' @@ -11,29 +10,24 @@ import type {TabsType} from '../../global/type.tsx' // Tabs Array const tabs: TabsType = [ - { - Component: BacktestPlayground, - index: 1, - label: 'Playground', - }, { Component: BacktestScanner, - index: 2, + index: 1, label: 'Scanner', }, { Component: BacktestUpload, - index: 3, + index: 2, label: 'Upload', }, { Component: BacktestGenetic, - index: 4, + index: 3, label: 'Genetic', }, { Component: BacktestGeneticBundle, - index: 5, + index: 4, label: 'GeneticBundle', }, ] diff --git a/src/Managing.WebApp/src/pages/backtestPage/backtestPlayground.tsx b/src/Managing.WebApp/src/pages/backtestPage/backtestPlayground.tsx deleted file mode 100644 index 3b0d032..0000000 --- a/src/Managing.WebApp/src/pages/backtestPage/backtestPlayground.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React, {useState} from 'react' -import 'react-toastify/dist/ReactToastify.css' - -import useBacktestStore from '../../app/store/backtestStore' -import {BacktestCards, UnifiedTradingModal} from '../../components/organism' - -const BacktestPlayground: React.FC = () => { - const { backtests: backtestingResult } = useBacktestStore() - const [showModal, setShowModal] = useState(false) - - function openModal() { - setShowModal(true) - } - - function closeModal() { - setShowModal(false) - } - - return ( -
    - - - -
    - ) -} - -export default BacktestPlayground