Remove playground because not working anymore and make backtest properties required

This commit is contained in:
2025-07-17 22:54:02 +07:00
parent 03a4e179f7
commit 6d1f0d612b
7 changed files with 67 additions and 146 deletions

View File

@@ -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<BacktestCardsProps> = ({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<BacktestCardsProps> = ({list}) => {
<div className="tooltip" data-tip="Delete backtest">
<button
className="btn btn-primary h-5 min-h-0 px-2 mr-5 rounded-full"
onClick={() => deleteBacktest(backtest.id)}
onClick={() => deleteBacktest(backtest.id ?? '')}
>
<TrashIcon width={15}></TrashIcon>
</button>
@@ -279,14 +245,6 @@ const BacktestCards: React.FC<BacktestCardsProps> = ({list}) => {
Save money management
</button>
</li>
<li>
<button
className="text-xs"
onClick={() => runOptimizedBacktest(backtest)}
>
Run optimized money management
</button>
</li>
</ul>
</div>
{backtest.config.ticker}

View File

@@ -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<UnifiedTradingModalProps> = ({
const backtest = await backtestClient.backtest_Run(request);
t.update('success', `${ticker} Backtest Succeeded`);
addBacktest(backtest);
addBacktest(backtest as unknown as LightBacktestResponse);
} catch (err: any) {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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',
},
]

View File

@@ -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 (
<div className="container mx-auto">
<button className="btn" onClick={openModal}>
Run New Backtest
</button>
<BacktestCards list={backtestingResult} />
<UnifiedTradingModal
mode="backtest"
showModal={showModal}
closeModal={closeModal}
/>
</div>
)
}
export default BacktestPlayground