+ return (
+
+ )
}
export default TradeChart
diff --git a/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx b/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx
index 5586931..c38211a 100644
--- a/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx
+++ b/src/Managing.WebApp/src/components/organism/UnifiedTradingModal/UnifiedTradingModal.tsx
@@ -6,25 +6,24 @@ import useApiUrlStore from '../../../app/store/apiStore'
import {useCustomMoneyManagement} from '../../../app/store/customMoneyManagement'
import {useCustomScenario} from '../../../app/store/customScenario'
import {
- AccountClient,
- BacktestClient,
- BotClient,
- BotType,
- DataClient,
- MoneyManagement,
- MoneyManagementClient,
- RiskManagement,
- RiskToleranceLevel,
- RunBacktestRequest,
- Scenario,
- ScenarioClient,
- ScenarioRequest,
- SignalType,
- StartBotRequest,
- Ticker,
- Timeframe,
- TradingBotConfigRequest,
- UpdateBotConfigRequest,
+ AccountClient,
+ BacktestClient,
+ BotClient,
+ DataClient,
+ 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, Slider} from '../../atoms'
@@ -197,12 +196,11 @@ const UnifiedTradingModal: React.FC
= ({
setGlobalCustomScenario((backtest.config as any).scenario); // Also update global store for prefilling
setSelectedScenario('custom');
} else if (backtest.config.scenarioName) {
- setSelectedScenario(backtest.config.scenarioName);
- setShowCustomScenario(false);
+ setSelectedScenario(backtest.config.scenarioName);
+ setShowCustomScenario(false);
}
setValue('timeframe', backtest.config.timeframe);
- setValue('botType', backtest.config.botType);
setValue('cooldownPeriod', backtest.config.cooldownPeriod);
setValue('maxLossStreak', backtest.config.maxLossStreak);
setValue('maxPositionTimeHours', backtest.config.maxPositionTimeHours);
@@ -245,7 +243,6 @@ const UnifiedTradingModal: React.FC = ({
}
setValue('timeframe', backtest.config.timeframe);
- setValue('botType', backtest.config.botType);
setValue('cooldownPeriod', backtest.config.cooldownPeriod);
setValue('maxLossStreak', backtest.config.maxLossStreak);
setValue('maxPositionTimeHours', backtest.config.maxPositionTimeHours);
@@ -305,7 +302,6 @@ const UnifiedTradingModal: React.FC = ({
}
setValue('scenarioName', config.scenarioName || '');
setValue('timeframe', config.timeframe);
- setValue('botType', config.botType);
setValue('cooldownPeriod', config.cooldownPeriod);
setValue('maxLossStreak', config.maxLossStreak);
setValue('maxPositionTimeHours', config.maxPositionTimeHours);
@@ -443,13 +439,14 @@ const UnifiedTradingModal: React.FC = ({
const onMoneyManagementChange = (e: React.ChangeEvent) => {
if (e.target.value === 'custom') {
setShowCustomMoneyManagement(true);
+ setSelectedMoneyManagement('custom'); // Set selected to 'custom'
setCustomMoneyManagement(undefined);
setGlobalCustomMoneyManagement(null); // Clear global store when creating new custom
} else {
setShowCustomMoneyManagement(false);
+ setSelectedMoneyManagement(e.target.value); // Update selected money management
setCustomMoneyManagement(undefined);
setGlobalCustomMoneyManagement(null); // Clear global store when switching away from custom
- setSelectedMoneyManagement(e.target.value);
}
};
@@ -544,7 +541,7 @@ const UnifiedTradingModal: React.FC = ({
}
console.log(form)
- console.log(moneyManagement)
+ console.log(customMoneyManagement)
if (!moneyManagement) {
t.update('error', 'Money management is required');
return;
@@ -557,8 +554,8 @@ const UnifiedTradingModal: React.FC = ({
scenario: customScenario ? convertScenarioToRequest(customScenario) : undefined,
scenarioName: customScenario ? undefined : form.scenarioName,
timeframe: form.timeframe,
- botType: form.botType,
isForWatchingOnly: form.isForWatchingOnly || false,
+ flipPosition: false, // Default to false since we're only using isForWatchingOnly checkbox
cooldownPeriod: form.cooldownPeriod,
maxLossStreak: form.maxLossStreak,
maxPositionTimeHours: form.maxPositionTimeHours,
@@ -592,6 +589,7 @@ const UnifiedTradingModal: React.FC = ({
closeModal();
} catch (error: any) {
+ console.error(error);
t.update('error', `Error: ${error.message || error}`);
}
};
@@ -607,7 +605,6 @@ const UnifiedTradingModal: React.FC = ({
scenario: customScenario ? convertScenarioToRequest(customScenario) : undefined,
scenarioName: customScenario ? undefined : form.scenarioName,
timeframe: form.timeframe,
- botType: form.botType,
isForWatchingOnly: false,
cooldownPeriod: form.cooldownPeriod,
maxLossStreak: form.maxLossStreak,
@@ -622,14 +619,13 @@ const UnifiedTradingModal: React.FC = ({
useForDynamicStopLoss: form.useForDynamicStopLoss ?? true,
moneyManagementName: showCustomMoneyManagement ? undefined : selectedMoneyManagement,
moneyManagement: customMoneyManagement,
+ flipPosition: form.isForWatchingOnly ?? false,
};
const request: RunBacktestRequest = {
config: tradingBotConfigRequest,
startDate: new Date(form.startDate),
endDate: new Date(form.endDate),
- balance: form.balance,
- watchOnly: false,
save: form.save || false,
};
@@ -724,45 +720,29 @@ const UnifiedTradingModal: React.FC = ({
- {/* Second Row: Money Management & Bot Type */}
-