using Binance.TradeRobot.Common.Extensions; using Binance.TradeRobot.Model.Base; using System; namespace Binance.TradeRobot.Business.Extensions { public static class KIDExtension { public static long GetKID(this DateTime datetime, Enums.SignalPeriod kLinePeriodic, bool isPrevious) { DateTime dt = datetime.AddSeconds(datetime.Second * -1).AddMilliseconds(datetime.Millisecond * -1); if (kLinePeriodic == Enums.SignalPeriod._1m) { if (isPrevious) dt = dt.AddMinutes(-1); } else if (kLinePeriodic == Enums.SignalPeriod._5m) { var fiveMinCount = dt.Minute / 5; //5分钟的次数 dt = dt.AddMinutes(dt.Minute * -1).AddMinutes(fiveMinCount * 5); if (isPrevious) dt = dt.AddMinutes(-5); } else if (kLinePeriodic == Enums.SignalPeriod._15m) { var fifteenMinCount = dt.Minute / 15; //15分钟次数 dt = dt.AddMinutes(dt.Minute * -1).AddMinutes(fifteenMinCount * 15); if (isPrevious) dt = dt.AddMinutes(-15); } else if (kLinePeriodic == Enums.SignalPeriod._30m) { var fifteenMinCount = dt.Minute / 30; //30分钟次数 dt = dt.AddMinutes(dt.Minute * -1).AddMinutes(fifteenMinCount * 30); if (isPrevious) dt = dt.AddMinutes(-30); } else if (kLinePeriodic == Enums.SignalPeriod._1h) { dt = dt.AddMinutes(dt.Minute * -1); if (isPrevious) dt = dt.AddHours(-1); } else if (kLinePeriodic == Enums.SignalPeriod._4h) { var hCount = dt.Hour / 4; //4小时的次数 dt = dt.AddMinutes(dt.Minute * -1).AddHours(dt.Hour * -1).AddHours(hCount * 4); if (isPrevious) dt = dt.AddHours(-4); } else if (kLinePeriodic == Enums.SignalPeriod._1d) { dt = dt.AddMinutes(dt.Minute * -1).AddHours(dt.Hour * -1); if (isPrevious) dt = dt.AddDays(-1); } else if (kLinePeriodic == Enums.SignalPeriod._1w) { var week = dt.DayOfWeek; dt = dt.AddMinutes(dt.Minute * -1).AddHours(dt.Hour * -1).AddDays((int)week * -1); if (isPrevious) dt = dt.AddDays(-7); } else if (kLinePeriodic == Enums.SignalPeriod._1M) { dt = dt.AddMinutes(dt.Minute * -1).AddHours(dt.Hour * -1).AddDays((dt.Day - 1) * -1); if (isPrevious) dt = dt.AddMonths(-1); } Console.WriteLine(dt); return dt.DateTimeToStamp(len13: false); } } }