diff --git a/KLHZ.Trader.Core.Math/Declisions/Utils/FFT.cs b/KLHZ.Trader.Core.Math/Declisions/Utils/FFT.cs index d2f3237..496d16d 100644 --- a/KLHZ.Trader.Core.Math/Declisions/Utils/FFT.cs +++ b/KLHZ.Trader.Core.Math/Declisions/Utils/FFT.cs @@ -61,7 +61,7 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils var tmp = new List(); for (int i = 0; i < result.Harmonics.Length; i++) { - var per = CaclHarmonycPeriod(result.LastTime - result.StartTime, result.Length, i); + var per = CaclHarmonycPeriod(result.LastTime - result.StartTime, result.Length, i+1); if (per >= minPeriod && per <= maxPeriod) { tmp.Add(result.Harmonics[i]); diff --git a/KLHZ.Trader.Core/Exchange/Services/Trader.cs b/KLHZ.Trader.Core/Exchange/Services/Trader.cs index bbd01b8..f4b9955 100644 --- a/KLHZ.Trader.Core/Exchange/Services/Trader.cs +++ b/KLHZ.Trader.Core/Exchange/Services/Trader.cs @@ -540,12 +540,12 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt //result = MergeResults(result, resTask2.Result.ToImmutableDictionary()); //result = MergeResults(result, resTask3.Result.ToImmutableDictionary()); result = MergeResultsMax(result, changeModeData); - //result = MergeResultsMult(result, getFFTModsTask.Result); + result = MergeResultsMult(result, getFFTModsTask.Result); //////result = MergeResults(result, getAreasModsTask.Result); //result = MergeResultsMult(result, getSellsDiffsModsTask.Result); result = MergeResultsMult(result, getTradingModeModsTask.Result); - if (result[TradingEvent.UptrendStart] > Constants.UppingCoefficient + if (result[TradingEvent.UptrendStart] >= Constants.UppingCoefficient && !LongOpeningStops.ContainsKey(message.Figi) && state == ExchangeState.Open ) @@ -720,17 +720,18 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt private async Task CalcTradingMode(string figi) { var res = TradingMode.None; - var largeData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(60)); + var largeData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(90)); var smallData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(15)); if (!largeData.isFullIntervalExists && smallData.isFullIntervalExists) { - largeData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(30)); + largeData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(45)); smallData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(10)); } if (!largeData.isFullIntervalExists && smallData.isFullIntervalExists) { - largeData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(20)); + largeData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(15)); + smallData = await _tradeDataProvider.GetData(figi, TimeSpan.FromMinutes(7)); } if (largeData.isFullIntervalExists && smallData.isFullIntervalExists) { @@ -745,11 +746,19 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt { res = TradingMode.SlowDropping; } - if ((largeDataRes > 5 && smallDataRes > 0) || smallDataRes > 7) + if ((largeDataRes > 5 && smallDataRes > 0)) { res = TradingMode.Growing; } - if ((largeDataRes < -5 && smallDataRes < 0) || smallDataRes < -7) + if ((largeDataRes < -5 && smallDataRes < 0)) + { + res = TradingMode.Dropping; + } + if (smallDataRes > 7) + { + res = TradingMode.Growing; + } + if (smallDataRes < - 7) { res = TradingMode.Dropping; } @@ -916,7 +925,7 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt { //res[TradingEvent.UptrendEnd] = Constants.UppingCoefficient; //res[TradingEvent.UptrendStart] = 1; - //res[TradingEvent.DowntrendStart] = Constants.LowingCoefficient; + res[TradingEvent.DowntrendStart] = Constants.LowingCoefficient; //res[TradingEvent.DowntrendEnd] = Constants.UppingCoefficient; } if (mode == TradingMode.Growing) @@ -936,7 +945,7 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt if (mode == TradingMode.SlowDropping) { //res[TradingEvent.UptrendEnd] = Constants.PowerUppingCoefficient; - res[TradingEvent.UptrendStart] = Constants.LowingCoefficient; + //res[TradingEvent.UptrendStart] = Constants.LowingCoefficient; res[TradingEvent.DowntrendStart] = Constants.UppingCoefficient; //res[TradingEvent.DowntrendEnd] = Constants.UppingCoefficient; } diff --git a/KLHZ.Trader.Service/Controllers/PlayController.cs b/KLHZ.Trader.Service/Controllers/PlayController.cs index 27d7516..209de79 100644 --- a/KLHZ.Trader.Service/Controllers/PlayController.cs +++ b/KLHZ.Trader.Service/Controllers/PlayController.cs @@ -35,7 +35,7 @@ namespace KLHZ.Trader.Service.Controllers var figi2 = "BBG004730N88"; //var figi2 = "FUTIMOEXF000"; var time1 = DateTime.UtcNow.AddDays(-shift ?? -7).Date; - //var time1 = new DateTime(2025, 9, 24, 7, 00, 0, DateTimeKind.Utc); + //var time1 = new DateTime(2025, 9, 24, 11, 00, 0, DateTimeKind.Utc); //var time2 = DateTime.UtcNow.AddMinutes(18); using var context1 = await _dbContextFactory.CreateDbContextAsync(); context1.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;