9 changed files with 288 additions and 23 deletions
@ -0,0 +1,32 @@ |
|||||
|
using Binance.TradeRobot.Common.DI; |
||||
|
using Binance.TradeRobot.Common.Http; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
|
||||
|
namespace Binance.TradeRobot.Business |
||||
|
{ |
||||
|
[BatchRegistration(ServiceLifetime.Singleton, RegistrationType.Self)] |
||||
|
public class DingBusiness |
||||
|
{ |
||||
|
private RestApiService restApiService; |
||||
|
public DingBusiness(RestApiService restApiService) |
||||
|
{ |
||||
|
this.restApiService = restApiService; |
||||
|
} |
||||
|
|
||||
|
public void Send(string content) |
||||
|
{ |
||||
|
try |
||||
|
{ |
||||
|
restApiService.SendRequest("https://oapi.dingtalk.com/robot/send", "?access_token=be2f574475269e83584fa3ef1a93ef68e28c15402afa1d193aa82a1a51164850", new |
||||
|
{ |
||||
|
msgtype = "text", |
||||
|
text = new |
||||
|
{ |
||||
|
content |
||||
|
} |
||||
|
}, null, System.Net.Http.HttpMethod.Post); |
||||
|
} |
||||
|
catch { } |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,74 @@ |
|||||
|
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); |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue