币安量化交易
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.9 KiB

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);
}
}
}