Fix update money management
This commit is contained in:
@@ -7,6 +7,7 @@ namespace Managing.Application.Abstractions
|
|||||||
{
|
{
|
||||||
Task<MoneyManagement> CreateOrUpdateMoneyManagement(User user, MoneyManagement request);
|
Task<MoneyManagement> CreateOrUpdateMoneyManagement(User user, MoneyManagement request);
|
||||||
Task<MoneyManagement> GetMoneyMangement(User user, string name);
|
Task<MoneyManagement> GetMoneyMangement(User user, string name);
|
||||||
|
Task<MoneyManagement> GetMoneyMangement(string name);
|
||||||
IEnumerable<MoneyManagement> GetMoneyMangements(User user);
|
IEnumerable<MoneyManagement> GetMoneyMangements(User user);
|
||||||
bool DeleteMoneyManagement(User user, string name);
|
bool DeleteMoneyManagement(User user, string name);
|
||||||
bool DeleteMoneyManagements(User user);
|
bool DeleteMoneyManagements(User user);
|
||||||
|
|||||||
@@ -775,7 +775,7 @@ public class TradingBot : Bot, ITradingBot
|
|||||||
Signals = data.Signals;
|
Signals = data.Signals;
|
||||||
Positions = data.Positions;
|
Positions = data.Positions;
|
||||||
WalletBalances = data.WalletBalances;
|
WalletBalances = data.WalletBalances;
|
||||||
MoneyManagement = data.MoneyManagement;
|
// MoneyManagement = data.MoneyManagement; => loaded from database
|
||||||
Timeframe = data.Timeframe;
|
Timeframe = data.Timeframe;
|
||||||
Ticker = data.Ticker;
|
Ticker = data.Ticker;
|
||||||
ScenarioName = data.ScenarioName;
|
ScenarioName = data.ScenarioName;
|
||||||
|
|||||||
@@ -20,13 +20,14 @@ namespace Managing.Application.ManageBot
|
|||||||
private readonly IAccountService _accountService;
|
private readonly IAccountService _accountService;
|
||||||
private readonly ILogger<TradingBot> _tradingBotLogger;
|
private readonly ILogger<TradingBot> _tradingBotLogger;
|
||||||
private readonly ITradingService _tradingService;
|
private readonly ITradingService _tradingService;
|
||||||
|
private readonly IMoneyManagementService _moneyManagementService;
|
||||||
|
|
||||||
private ConcurrentDictionary<string, BotTaskWrapper> _botTasks =
|
private ConcurrentDictionary<string, BotTaskWrapper> _botTasks =
|
||||||
new ConcurrentDictionary<string, BotTaskWrapper>();
|
new ConcurrentDictionary<string, BotTaskWrapper>();
|
||||||
|
|
||||||
public BotService(IBotRepository botRepository, IExchangeService exchangeService,
|
public BotService(IBotRepository botRepository, IExchangeService exchangeService,
|
||||||
IMessengerService messengerService, IAccountService accountService, ILogger<TradingBot> tradingBotLogger,
|
IMessengerService messengerService, IAccountService accountService, ILogger<TradingBot> tradingBotLogger,
|
||||||
ITradingService tradingService)
|
ITradingService tradingService, IMoneyManagementService moneyManagementService)
|
||||||
{
|
{
|
||||||
_botRepository = botRepository;
|
_botRepository = botRepository;
|
||||||
_exchangeService = exchangeService;
|
_exchangeService = exchangeService;
|
||||||
@@ -34,6 +35,7 @@ namespace Managing.Application.ManageBot
|
|||||||
_accountService = accountService;
|
_accountService = accountService;
|
||||||
_tradingBotLogger = tradingBotLogger;
|
_tradingBotLogger = tradingBotLogger;
|
||||||
_tradingService = tradingService;
|
_tradingService = tradingService;
|
||||||
|
_moneyManagementService = moneyManagementService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void SaveOrUpdateBotBackup(BotBackup botBackup)
|
public async void SaveOrUpdateBotBackup(BotBackup botBackup)
|
||||||
@@ -53,7 +55,7 @@ namespace Managing.Application.ManageBot
|
|||||||
if (backup != null)
|
if (backup != null)
|
||||||
{
|
{
|
||||||
backup.Data = data;
|
backup.Data = data;
|
||||||
_botRepository.UpdateBackupBot(backup);
|
_botRepository.UpdateBackupBot(backup);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -125,9 +127,11 @@ namespace Managing.Application.ManageBot
|
|||||||
break;
|
break;
|
||||||
case Enums.BotType.ScalpingBot:
|
case Enums.BotType.ScalpingBot:
|
||||||
var scalpingBotData = JsonConvert.DeserializeObject<TradingBotBackup>(backupBot.Data);
|
var scalpingBotData = JsonConvert.DeserializeObject<TradingBotBackup>(backupBot.Data);
|
||||||
|
var scalpingMoneyManagement =
|
||||||
|
_moneyManagementService.GetMoneyMangement(scalpingBotData.MoneyManagement.Name).Result;
|
||||||
bot = CreateScalpingBot(
|
bot = CreateScalpingBot(
|
||||||
scalpingBotData.AccountName,
|
scalpingBotData.AccountName,
|
||||||
scalpingBotData.MoneyManagement,
|
scalpingMoneyManagement,
|
||||||
backupBot.Name,
|
backupBot.Name,
|
||||||
scalpingBotData.Ticker,
|
scalpingBotData.Ticker,
|
||||||
scalpingBotData.ScenarioName,
|
scalpingBotData.ScenarioName,
|
||||||
@@ -137,9 +141,11 @@ namespace Managing.Application.ManageBot
|
|||||||
break;
|
break;
|
||||||
case Enums.BotType.FlippingBot:
|
case Enums.BotType.FlippingBot:
|
||||||
var flippingBotData = JsonConvert.DeserializeObject<TradingBotBackup>(backupBot.Data);
|
var flippingBotData = JsonConvert.DeserializeObject<TradingBotBackup>(backupBot.Data);
|
||||||
|
var flippingMoneyManagement =
|
||||||
|
_moneyManagementService.GetMoneyMangement(flippingBotData.MoneyManagement.Name).Result;
|
||||||
bot = CreateFlippingBot(
|
bot = CreateFlippingBot(
|
||||||
flippingBotData.AccountName,
|
flippingBotData.AccountName,
|
||||||
flippingBotData.MoneyManagement,
|
flippingMoneyManagement,
|
||||||
backupBot.Name,
|
backupBot.Name,
|
||||||
flippingBotData.Ticker,
|
flippingBotData.Ticker,
|
||||||
flippingBotData.ScenarioName,
|
flippingBotData.ScenarioName,
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ public class MoneyManagementService : IMoneyManagementService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<MoneyManagement> GetMoneyMangement(string name)
|
||||||
|
{
|
||||||
|
return await _settingsRepository.GetMoneyManagement(name);
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<MoneyManagement> GetMoneyMangements(User user)
|
public IEnumerable<MoneyManagement> GetMoneyMangements(User user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ namespace Managing.Application.Trading
|
|||||||
request.MoneyManagement.Leverage,
|
request.MoneyManagement.Leverage,
|
||||||
TradeType.StopLoss,
|
TradeType.StopLoss,
|
||||||
request.Date,
|
request.Date,
|
||||||
TradeStatus.PendingOpen);
|
TradeStatus.Requested);
|
||||||
|
|
||||||
position.StopLoss.Fee = TradingHelpers.GetFeeAmount(fee,
|
position.StopLoss.Fee = TradingHelpers.GetFeeAmount(fee,
|
||||||
position.StopLoss.Price * position.StopLoss.Quantity, account.Exchange);
|
position.StopLoss.Price * position.StopLoss.Quantity, account.Exchange);
|
||||||
@@ -100,7 +100,7 @@ namespace Managing.Application.Trading
|
|||||||
request.MoneyManagement.Leverage,
|
request.MoneyManagement.Leverage,
|
||||||
TradeType.TakeProfit,
|
TradeType.TakeProfit,
|
||||||
request.Date,
|
request.Date,
|
||||||
TradeStatus.PendingOpen);
|
TradeStatus.Requested);
|
||||||
|
|
||||||
position.Status = IsOpenTradeHandled(position.Open.Status, account.Exchange)
|
position.Status = IsOpenTradeHandled(position.Open.Status, account.Exchange)
|
||||||
? position.Status
|
? position.Status
|
||||||
|
|||||||
@@ -75,8 +75,13 @@ const MoneyManagementModal: React.FC<IMoneyManagementModalProps> = ({
|
|||||||
setLeverage(e.target.value)
|
setLeverage(e.target.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onBalanceAtRiskChange(e: any) {
|
||||||
|
setBalanceAtRisk(e.target.value)
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (moneyManagement) {
|
if (moneyManagement) {
|
||||||
|
console.log(moneyManagement)
|
||||||
setBalanceAtRisk(moneyManagement.balanceAtRisk * 100)
|
setBalanceAtRisk(moneyManagement.balanceAtRisk * 100)
|
||||||
setTakeProfit(moneyManagement.takeProfit * 100)
|
setTakeProfit(moneyManagement.takeProfit * 100)
|
||||||
setStopLoss(moneyManagement.stopLoss * 100)
|
setStopLoss(moneyManagement.stopLoss * 100)
|
||||||
@@ -131,6 +136,18 @@ const MoneyManagementModal: React.FC<IMoneyManagementModalProps> = ({
|
|||||||
</select>
|
</select>
|
||||||
</FormInput>
|
</FormInput>
|
||||||
|
|
||||||
|
<FormInput label="Balance at risk" htmlFor="balanceAtRisk">
|
||||||
|
<Slider
|
||||||
|
id="balanceAtRisk"
|
||||||
|
value={balanceAtRisk}
|
||||||
|
onChange={onBalanceAtRiskChange}
|
||||||
|
step="1"
|
||||||
|
max="100"
|
||||||
|
suffixValue="%"
|
||||||
|
disabled={disableInputs}
|
||||||
|
></Slider>
|
||||||
|
</FormInput>
|
||||||
|
|
||||||
<FormInput label="TP%" htmlFor="takeProfit">
|
<FormInput label="TP%" htmlFor="takeProfit">
|
||||||
<Slider
|
<Slider
|
||||||
id="takeProfit"
|
id="takeProfit"
|
||||||
|
|||||||
@@ -127,8 +127,8 @@ const MoneyManagementTable: React.FC<IMoneyManagementList> = ({ list }) => {
|
|||||||
<div className="flex flex-wrap">
|
<div className="flex flex-wrap">
|
||||||
<Table columns={columns} data={rows} />
|
<Table columns={columns} data={rows} />
|
||||||
<MoneyManagementModal
|
<MoneyManagementModal
|
||||||
isOpen={showModal}
|
showModal={showModal}
|
||||||
toggleModal={toggleModal}
|
onClose={toggleModal}
|
||||||
moneyManagement={selectedRow}
|
moneyManagement={selectedRow}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user