using KLHZ.Trader.Core.Contracts.Declisions.Dtos; using KLHZ.Trader.Core.Contracts.Declisions.Interfaces; using KLHZ.Trader.Core.Declisions.Utils; namespace KLHZ.Trader.Core.Declisions.Services { public class TradingEventsDetector : ITradingEventsDetector { public async ValueTask Detect(IPriceHistoryCacheUnit data) { await Task.Delay(0); float meanfullDiff; if (data.Figi == "BBG004730N88") { meanfullDiff = 0.05f; } else if (data.Figi == "FUTIMOEXF000") { meanfullDiff = 1f; } else { return TradingEventsDto.Empty; } //var downtrendStarts = data.CheckDowntrendStarting(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(7), meanfullDiff); var uptrendStarts = data.CheckLongOpen(TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(7), meanfullDiff, 8, 3); var uptrendStarts2 = data.CheckLongOpen(TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(3), meanfullDiff, 15, 2); var downtrendEnds = data.CheckLongOpen(TimeSpan.FromSeconds(120), TimeSpan.FromSeconds(10), meanfullDiff, 15, 5); uptrendStarts |= downtrendEnds; uptrendStarts |= uptrendStarts2; //var downtrendEnds = data.CheckDowntrendEnding(TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(15), meanfullDiff); var uptrendEnds = data.CheckLongClose(TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(20), meanfullDiff * 1.5f, 8, 8); var uptrendEnds2 = data.CheckLongClose(TimeSpan.FromSeconds(120), TimeSpan.FromSeconds(30), meanfullDiff, 15, 8); uptrendEnds |= uptrendEnds2; return new TradingEventsDto(uptrendEnds, uptrendStarts); } } }