diff --git a/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs b/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs index 2483b90..f6997f7 100644 --- a/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs +++ b/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs @@ -157,7 +157,7 @@ namespace KLHZ.Trader.Core.Exchange.Services }; await _tradeDataProvider.AddData(message, TimeSpan.FromHours(7)); - //await _eventBus.Broadcast(message); + await _eventBus.Broadcast(message); var exchangeState = ExchangeScheduler.GetCurrentState(); if (exchangeState == Models.Trading.ExchangeState.ClearingTime diff --git a/KLHZ.Trader.Core/Exchange/Services/ManagedAccount.cs b/KLHZ.Trader.Core/Exchange/Services/ManagedAccount.cs index 79e8e70..c4cd2a0 100644 --- a/KLHZ.Trader.Core/Exchange/Services/ManagedAccount.cs +++ b/KLHZ.Trader.Core/Exchange/Services/ManagedAccount.cs @@ -252,7 +252,25 @@ namespace KLHZ.Trader.Core.Exchange.Services ConfirmMarginTrade = true, }; + var stopsReq = new GetStopOrdersRequest() { AccountId = asset.AccountId}; + var res = await _investApiClient.Orders.PostOrderAsync(req); + var stopOrders = await _investApiClient.StopOrders.GetStopOrdersAsync(stopsReq); + if (stopOrders.StopOrders != null) + { + foreach (var stopOrder in stopOrders.StopOrders) + { + try + { + await _investApiClient.StopOrders.CancelStopOrderAsync(new CancelStopOrderRequest() { AccountId = asset.AccountId, StopOrderId = stopOrder.StopOrderId }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при закрытии стопов для позиции."); + } + } + } + await LoadPortfolioNolock(); } } diff --git a/KLHZ.Trader.Core/TG/Services/BotMessagesHandler.cs b/KLHZ.Trader.Core/TG/Services/BotMessagesHandler.cs index 18518ed..3ecf4ff 100644 --- a/KLHZ.Trader.Core/TG/Services/BotMessagesHandler.cs +++ b/KLHZ.Trader.Core/TG/Services/BotMessagesHandler.cs @@ -94,14 +94,14 @@ namespace KLHZ.Trader.Core.TG.Services { var acc = _portfolioWrapper.Accounts.Values.FirstOrDefault(a => !a.Assets.ContainsKey("FUTIMOEXF000")); if (acc != null) - await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Long, 10, 10, 1); + await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Long, 4, 6, 1); break; } case "шорт IMOEXF": { var acc = _portfolioWrapper.Accounts.Values.FirstOrDefault(a => !a.Assets.ContainsKey("FUTIMOEXF000")); if (acc != null) - await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Short, 10, 10, 1); + await acc.OpenPosition("FUTIMOEXF000", Exchange.Models.AssetsAccounting.PositionType.Short, 4, 6, 1); break; } case "ребут":