|
|
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
|
|
Ticker,
|
|
|
|
|
Timeframe,
|
|
|
|
|
TradingBotConfigRequest,
|
|
|
|
|
TradingType,
|
|
|
|
|
UpdateBotConfigRequest,
|
|
|
|
|
} from '../../../generated/ManagingApi'
|
|
|
|
|
import type {IUnifiedTradingConfigInput, UnifiedTradingModalProps} from '../../../global/type'
|
|
|
|
|
@@ -83,6 +84,7 @@ const UnifiedTradingModal: React.FC<UnifiedTradingModalProps> = ({
|
|
|
|
|
flipOnlyWhenInProfit: true,
|
|
|
|
|
balance: 10000,
|
|
|
|
|
closeEarlyWhenProfitable: false,
|
|
|
|
|
tradingType: TradingType.BacktestSpot,
|
|
|
|
|
useSynthApi: false,
|
|
|
|
|
useForPositionSizing: true,
|
|
|
|
|
useForSignalFiltering: true,
|
|
|
|
|
@@ -217,7 +219,8 @@ const UnifiedTradingModal: React.FC<UnifiedTradingModalProps> = ({
|
|
|
|
|
setValue('useForPositionSizing', backtest.config.useForPositionSizing ?? true);
|
|
|
|
|
setValue('useForSignalFiltering', backtest.config.useForSignalFiltering ?? true);
|
|
|
|
|
setValue('useForDynamicStopLoss', backtest.config.useForDynamicStopLoss ?? true);
|
|
|
|
|
|
|
|
|
|
setValue('tradingType', (backtest.config as any).tradingType || TradingType.BacktestSpot);
|
|
|
|
|
|
|
|
|
|
// Use backtest's money management as custom
|
|
|
|
|
if (backtest.config.moneyManagement) {
|
|
|
|
|
setShowCustomMoneyManagement(true);
|
|
|
|
|
@@ -259,7 +262,8 @@ const UnifiedTradingModal: React.FC<UnifiedTradingModalProps> = ({
|
|
|
|
|
setValue('useForPositionSizing', backtest.config.useForPositionSizing ?? true);
|
|
|
|
|
setValue('useForSignalFiltering', backtest.config.useForSignalFiltering ?? true);
|
|
|
|
|
setValue('useForDynamicStopLoss', backtest.config.useForDynamicStopLoss ?? true);
|
|
|
|
|
|
|
|
|
|
setValue('tradingType', (backtest.config as any).tradingType || TradingType.BacktestSpot);
|
|
|
|
|
|
|
|
|
|
// Set tickers for backtest (array)
|
|
|
|
|
if (backtest.config.ticker) {
|
|
|
|
|
setValue('tickers', [backtest.config.ticker]);
|
|
|
|
|
@@ -318,7 +322,8 @@ const UnifiedTradingModal: React.FC<UnifiedTradingModalProps> = ({
|
|
|
|
|
setValue('useForPositionSizing', config.useForPositionSizing ?? true);
|
|
|
|
|
setValue('useForSignalFiltering', config.useForSignalFiltering ?? true);
|
|
|
|
|
setValue('useForDynamicStopLoss', config.useForDynamicStopLoss ?? true);
|
|
|
|
|
|
|
|
|
|
setValue('tradingType', (config as any).tradingType || TradingType.BacktestSpot);
|
|
|
|
|
|
|
|
|
|
// Handle money management - if it exists, treat as custom for update mode
|
|
|
|
|
if (config.moneyManagement) {
|
|
|
|
|
setShowCustomMoneyManagement(true);
|
|
|
|
|
@@ -664,6 +669,7 @@ const UnifiedTradingModal: React.FC<UnifiedTradingModalProps> = ({
|
|
|
|
|
useForPositionSizing: form.useForPositionSizing ?? true,
|
|
|
|
|
useForSignalFiltering: form.useForSignalFiltering ?? true,
|
|
|
|
|
useForDynamicStopLoss: form.useForDynamicStopLoss ?? true,
|
|
|
|
|
tradingType: form.tradingType || TradingType.BacktestSpot,
|
|
|
|
|
moneyManagementName: showCustomMoneyManagement ? undefined : selectedMoneyManagement,
|
|
|
|
|
moneyManagement: moneyManagement,
|
|
|
|
|
};
|
|
|
|
|
@@ -889,6 +895,18 @@ const UnifiedTradingModal: React.FC<UnifiedTradingModalProps> = ({
|
|
|
|
|
))}
|
|
|
|
|
</select>
|
|
|
|
|
</FormInput>
|
|
|
|
|
|
|
|
|
|
{(mode === 'createBot' || mode === 'updateBot') && (
|
|
|
|
|
<FormInput label="Trading Type" htmlFor="tradingType">
|
|
|
|
|
<select
|
|
|
|
|
className="select select-bordered w-full"
|
|
|
|
|
{...register('tradingType', { required: true })}
|
|
|
|
|
>
|
|
|
|
|
<option value={TradingType.BacktestSpot}>Spot</option>
|
|
|
|
|
<option value={TradingType.BacktestFutures}>Futures</option>
|
|
|
|
|
</select>
|
|
|
|
|
</FormInput>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* Money Management */}
|
|
|
|
|
|