From d459728ca33e04c4fef1eaf31c922e2fac136ab8 Mon Sep 17 00:00:00 2001 From: vlad zverzhkhovskiy Date: Tue, 23 Sep 2025 11:16:27 +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 --- KLHZ.Trader.Core/Exchange/Services/Trader.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/KLHZ.Trader.Core/Exchange/Services/Trader.cs b/KLHZ.Trader.Core/Exchange/Services/Trader.cs index 8672b3a..94c9fbb 100644 --- a/KLHZ.Trader.Core/Exchange/Services/Trader.cs +++ b/KLHZ.Trader.Core/Exchange/Services/Trader.cs @@ -18,6 +18,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.Collections.Concurrent; using System.Collections.Immutable; +using System.Security.Cryptography; using System.Threading.Channels; using Tinkoff.InvestApi; using Asset = KLHZ.Trader.Core.Exchange.Models.AssetsAccounting.Asset; @@ -293,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(-100), message); - await LogDeclision(DeclisionTradeAction.OpenLong, message.Value - stops.stopLoss, message.Time.AddMilliseconds(100), 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); } if (newMod == TradingMode.Dropping && newMod != oldMod) { @@ -309,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(-100), message); - await LogDeclision(DeclisionTradeAction.OpenShort, message.Value + stops.stopLoss, message.Time.AddMilliseconds(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(10, 100)), message); } TradingModes[message.Figi] = newMod; if (oldMod != newMod) @@ -547,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(-100), message); - await LogDeclision(DeclisionTradeAction.OpenLong, message.Value - stops.stopLoss, message.Time.AddMilliseconds(100), 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); } if (result[TradingEvent.DowntrendStart] > Constants.PowerUppingCoefficient && !ShortOpeningStops.ContainsKey(message.Figi) @@ -567,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(-100), message); - await LogDeclision(DeclisionTradeAction.OpenShort, message.Value + stops.stopLoss, message.Time.AddMilliseconds(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(10, 100)), message); } if (result[TradingEvent.UptrendEnd] > Constants.UppingCoefficient) {