From e5eee2504290f8880dfba5bb1ac20a2daaa571d7 Mon Sep 17 00:00:00 2001 From: vlad zverzhkhovskiy Date: Tue, 23 Sep 2025 11:16:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=81=D1=82=D0=BE=D0=BF=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extentions/InvestApiClientExtentions.cs | 4 ++-- .../Exchange/Interfaces/IManagedAccount.cs | 2 +- .../Exchange/Services/ExchangeDataReader.cs | 2 +- KLHZ.Trader.Core/Exchange/Services/Trader.cs | 18 +++++++++--------- KLHZ.Trader.Core/TG/Services/BotStarter.cs | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/KLHZ.Trader.Core/Exchange/Extentions/InvestApiClientExtentions.cs b/KLHZ.Trader.Core/Exchange/Extentions/InvestApiClientExtentions.cs index 8eb2997..8f3c668 100644 --- a/KLHZ.Trader.Core/Exchange/Extentions/InvestApiClientExtentions.cs +++ b/KLHZ.Trader.Core/Exchange/Extentions/InvestApiClientExtentions.cs @@ -5,10 +5,10 @@ namespace KLHZ.Trader.Core.Exchange.Extentions { internal static class InvestApiClientExtentions { - public static async Task> GetAccounts(this InvestApiClient client, params string[] managedAccountNamePatterns) + public static async Task> GetAccounts(this InvestApiClient client, params string[] managedAccountNamePatterns) { var accounts = await client.Users.GetAccountsAsync(); - var accs = new Dictionary(); + var accs = new Dictionary(); foreach (var pattern in managedAccountNamePatterns) { var aids = accounts.Accounts diff --git a/KLHZ.Trader.Core/Exchange/Interfaces/IManagedAccount.cs b/KLHZ.Trader.Core/Exchange/Interfaces/IManagedAccount.cs index 526efbf..702e07e 100644 --- a/KLHZ.Trader.Core/Exchange/Interfaces/IManagedAccount.cs +++ b/KLHZ.Trader.Core/Exchange/Interfaces/IManagedAccount.cs @@ -9,7 +9,7 @@ namespace KLHZ.Trader.Core.Exchange.Interfaces public decimal Total { get; } bool Initialized { get; } string AccountId { get; } - string? AccountName{ get; } + string? AccountName { get; } Task Init(string accountId, string? accountName = null); Task LoadPortfolio(); ImmutableDictionary Assets { get; } diff --git a/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs b/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs index 3f52bbd..afad593 100644 --- a/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs +++ b/KLHZ.Trader.Core/Exchange/Services/ExchangeDataReader.cs @@ -52,7 +52,7 @@ namespace KLHZ.Trader.Core.Exchange.Services var accounts = await _investApiClient.GetAccounts(_managedAccountNamePatterns); foreach (var acc in accounts) { - await _portfolioWrapper.AddAccount(acc.Key,acc.Value); + await _portfolioWrapper.AddAccount(acc.Key, acc.Value); } _ = CycleSubscribtion(accounts.Keys.ToArray()); } diff --git a/KLHZ.Trader.Core/Exchange/Services/Trader.cs b/KLHZ.Trader.Core/Exchange/Services/Trader.cs index 94c9fbb..e53624e 100644 --- a/KLHZ.Trader.Core/Exchange/Services/Trader.cs +++ b/KLHZ.Trader.Core/Exchange/Services/Trader.cs @@ -294,8 +294,8 @@ namespace KLHZ.Trader.Core.Exchange.Services await OpenPositions(accounts, message, PositionType.Long, stops.stopLoss, stops.takeProfit, 1); } await LogDeclision(DeclisionTradeAction.OpenLong, message); - await LogDeclision(DeclisionTradeAction.OpenLong, message.Value + stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(10, 100)), message); - await LogDeclision(DeclisionTradeAction.OpenLong, message.Value - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(10, 100)), message); + await LogDeclision(DeclisionTradeAction.OpenLong, message.Value + stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); + await LogDeclision(DeclisionTradeAction.OpenLong, message.Value - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message); } if (newMod == TradingMode.Dropping && newMod != oldMod) { @@ -310,8 +310,8 @@ namespace KLHZ.Trader.Core.Exchange.Services await OpenPositions(accounts, message, PositionType.Short, stops.stopLoss, stops.takeProfit, 1); } await LogDeclision(DeclisionTradeAction.OpenShort, message); - await LogDeclision(DeclisionTradeAction.OpenShort, message.Value - stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(10,100)), message); - await LogDeclision(DeclisionTradeAction.OpenShort, message.Value + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(10, 100)), message); + await LogDeclision(DeclisionTradeAction.OpenShort, message.Value - stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(10, 100)), message); + await LogDeclision(DeclisionTradeAction.OpenShort, message.Value + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message); } TradingModes[message.Figi] = newMod; if (oldMod != newMod) @@ -467,7 +467,7 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt assetsForClose.Add(asset); } } - + var tasks = assetsForClose.Select(asset => _portfolioWrapper.Accounts[asset.AccountId].ClosePosition(message.Figi)); await Task.WhenAll(tasks); } @@ -548,8 +548,8 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt } await LogDeclision(DeclisionTradeAction.OpenLong, message); - await LogDeclision(DeclisionTradeAction.OpenLong, message.Value + stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(10, 100)), message); - await LogDeclision(DeclisionTradeAction.OpenLong, message.Value - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(10, 100)), message); + await LogDeclision(DeclisionTradeAction.OpenLong, message.Value + stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); + await LogDeclision(DeclisionTradeAction.OpenLong, message.Value - stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message); } if (result[TradingEvent.DowntrendStart] > Constants.PowerUppingCoefficient && !ShortOpeningStops.ContainsKey(message.Figi) @@ -568,8 +568,8 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt } await LogDeclision(DeclisionTradeAction.OpenShort, message); - await LogDeclision(DeclisionTradeAction.OpenShort, message.Value - stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(10, 100)), message); - await LogDeclision(DeclisionTradeAction.OpenShort, message.Value + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(10, 100)), message); + await LogDeclision(DeclisionTradeAction.OpenShort, message.Value - stops.takeProfit, message.Time.AddMilliseconds(-RandomNumberGenerator.GetInt32(300, 1000)), message); + await LogDeclision(DeclisionTradeAction.OpenShort, message.Value + stops.stopLoss, message.Time.AddMilliseconds(RandomNumberGenerator.GetInt32(300, 1000)), message); } if (result[TradingEvent.UptrendEnd] > Constants.UppingCoefficient) { diff --git a/KLHZ.Trader.Core/TG/Services/BotStarter.cs b/KLHZ.Trader.Core/TG/Services/BotStarter.cs index 4c8e2a6..e145e5d 100644 --- a/KLHZ.Trader.Core/TG/Services/BotStarter.cs +++ b/KLHZ.Trader.Core/TG/Services/BotStarter.cs @@ -39,11 +39,11 @@ namespace KLHZ.Trader.Core.TG.Services { await _botClient.SendMessage(admin, message.Text); } - catch(Exception ex) + catch (Exception ex) { _logger.LogError(ex, "Ошибка при отправке сообщения в бота."); } - + } } }