From 47e94a562047cb96c4a54e052d6e8859e7cc7de6 Mon Sep 17 00:00:00 2001 From: vlad zverzhkhovskiy Date: Mon, 22 Sep 2025 12:32:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=85=D0=B0=D0=BD=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=D0=B0=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B7=D0=B8=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Exchange/Services/ExchangeDataReader.cs | 2 +- .../Exchange/Services/ManagedAccount.cs | 18 ++++++++++++++++++ .../TG/Services/BotMessagesHandler.cs | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) 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 "ребут":