docker files fixes from liaqat
This commit is contained in:
34
src/Managing.Domain/Candles/Candle.cs
Normal file
34
src/Managing.Domain/Candles/Candle.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using Managing.Common;
|
||||
using Skender.Stock.Indicators;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Managing.Domain.Candles
|
||||
{
|
||||
public class Candle : IQuote
|
||||
{
|
||||
[Required]
|
||||
public Enums.TradingExchanges Exchange { get; set; }
|
||||
[Required]
|
||||
public string Ticker { get; set; }
|
||||
[Required]
|
||||
public DateTime OpenTime { get; set; }
|
||||
[Required]
|
||||
public DateTime Date { get; set; }
|
||||
[Required]
|
||||
public decimal Open { get; set; }
|
||||
[Required]
|
||||
public decimal Close { get; set; }
|
||||
public decimal Volume { get; }
|
||||
[Required]
|
||||
public decimal High { get; set; }
|
||||
[Required]
|
||||
public decimal Low { get; set; }
|
||||
public decimal BaseVolume { get; set; }
|
||||
public decimal QuoteVolume { get; set; }
|
||||
public int TradeCount { get; set; }
|
||||
public decimal TakerBuyBaseVolume { get; set; }
|
||||
public decimal TakerBuyQuoteVolume { get; set; }
|
||||
[Required]
|
||||
public Enums.Timeframe Timeframe { get; set; }
|
||||
}
|
||||
}
|
||||
71
src/Managing.Domain/Candles/CandleExtensions.cs
Normal file
71
src/Managing.Domain/Candles/CandleExtensions.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Domain.Candles;
|
||||
|
||||
public static class CandleExtensions
|
||||
{
|
||||
|
||||
public static Candle SetupClosingCandle(this Candle candle)
|
||||
{
|
||||
|
||||
return candle;
|
||||
}
|
||||
|
||||
public static DateTime GetBotPreloadSinceFromTimeframe(Timeframe timeframe)
|
||||
{
|
||||
return timeframe switch
|
||||
{
|
||||
Timeframe.FiveMinutes => DateTime.UtcNow.AddDays(-1),
|
||||
Timeframe.FifteenMinutes => DateTime.UtcNow.AddDays(-5),
|
||||
Timeframe.ThirtyMinutes => DateTime.UtcNow.AddDays(-10),
|
||||
Timeframe.OneHour => DateTime.UtcNow.AddDays(-30),
|
||||
Timeframe.FourHour => DateTime.UtcNow.AddDays(-60),
|
||||
Timeframe.OneDay => DateTime.UtcNow.AddDays(-360),
|
||||
_ => DateTime.Now.AddHours(-15),
|
||||
};
|
||||
}
|
||||
|
||||
public static DateTime GetPreloadSinceFromTimeframe(Timeframe timeframe)
|
||||
{
|
||||
return DateTime.UtcNow.AddDays(GetMinimalDays(timeframe));
|
||||
}
|
||||
|
||||
public static int GetIntervalFromTimeframe(Timeframe timeframe)
|
||||
{
|
||||
return timeframe switch
|
||||
{
|
||||
Timeframe.OneDay => 3600000, // 1h
|
||||
Timeframe.FiveMinutes => 120000, // 2min
|
||||
Timeframe.FifteenMinutes => 60000, // 1 min
|
||||
Timeframe.OneHour => 900000, // 15min
|
||||
_ => 300000, // 5min
|
||||
};
|
||||
}
|
||||
|
||||
public static int GetUnixInterval(this Timeframe timeframe)
|
||||
{
|
||||
return timeframe switch
|
||||
{
|
||||
Timeframe.OneDay => 86400,
|
||||
Timeframe.FiveMinutes => 300,
|
||||
Timeframe.FifteenMinutes => 900,
|
||||
Timeframe.FourHour => 14400,
|
||||
Timeframe.OneHour => 3600,
|
||||
_ => throw new NotImplementedException()
|
||||
};
|
||||
}
|
||||
|
||||
public static double GetMinimalDays(Timeframe timeframe)
|
||||
{
|
||||
return timeframe switch
|
||||
{
|
||||
Timeframe.FiveMinutes => -1,
|
||||
Timeframe.FifteenMinutes => -5,
|
||||
Timeframe.ThirtyMinutes => -10,
|
||||
Timeframe.OneHour => -30,
|
||||
Timeframe.FourHour => -60,
|
||||
Timeframe.OneDay => -360,
|
||||
_ => throw new NotImplementedException()
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user