Update config

This commit is contained in:
2025-06-04 23:15:50 +07:00
parent 756cd5fb11
commit 973a8c7c61
14 changed files with 969 additions and 369 deletions

View File

@@ -142,7 +142,8 @@ namespace Managing.Application.ManageBot
MaxPositionTimeHours = scalpingBotData.MaxPositionTimeHours == 0m ? null : scalpingBotData.MaxPositionTimeHours,
FlipOnlyWhenInProfit = scalpingBotData.FlipOnlyWhenInProfit,
IsForBacktest = false,
FlipPosition = false
FlipPosition = false,
CloseEarlyWhenProfitable = scalpingBotData.CloseEarlyWhenProfitable
};
bot = CreateScalpingBot(scalpingConfig);
@@ -171,7 +172,8 @@ namespace Managing.Application.ManageBot
MaxPositionTimeHours = flippingBotData.MaxPositionTimeHours == 0m ? null : flippingBotData.MaxPositionTimeHours,
FlipOnlyWhenInProfit = flippingBotData.FlipOnlyWhenInProfit,
IsForBacktest = false,
FlipPosition = true
FlipPosition = true,
CloseEarlyWhenProfitable = flippingBotData.CloseEarlyWhenProfitable
};
bot = CreateFlippingBot(flippingConfig);
@@ -263,6 +265,23 @@ namespace Managing.Application.ManageBot
}
}
/// <summary>
/// Updates the configuration of an existing bot without stopping and restarting it.
/// </summary>
/// <param name="identifier">The bot identifier</param>
/// <param name="newConfig">The new configuration to apply</param>
/// <returns>True if the configuration was successfully updated, false otherwise</returns>
public async Task<bool> UpdateBotConfiguration(string identifier, TradingBotConfig newConfig)
{
if (_botTasks.TryGetValue(identifier, out var botTaskWrapper) &&
botTaskWrapper.BotInstance is TradingBot tradingBot)
{
return await tradingBot.UpdateConfiguration(newConfig);
}
return false;
}
public ITradingBot CreateScalpingBot(TradingBotConfig config)
{
return new ScalpingBot(

View File

@@ -74,7 +74,8 @@ namespace Managing.Application.ManageBot
MaxPositionTimeHours = request.Config.MaxPositionTimeHours, // Properly handle nullable value
FlipOnlyWhenInProfit = request.Config.FlipOnlyWhenInProfit,
FlipPosition = request.Config.FlipPosition,
Name = request.Config.Name ?? request.Name
Name = request.Config.Name ?? request.Name,
CloseEarlyWhenProfitable = request.Config.CloseEarlyWhenProfitable
};
switch (configToUse.BotType)