Files
managing-apps/src/Managing.Infrastructure.Exchanges/CandleHelpers.cs
2024-05-03 16:39:25 +05:00

83 lines
2.9 KiB
C#

using Binance.Net.Interfaces;
using FTX.Net.Objects.Models;
using Kraken.Net.Objects.Models;
using Managing.Domain.Candles;
using Managing.Infrastructure.Databases.MongoDb.Collections;
using static Managing.Common.Enums;
namespace Managing.Infrastructure.Exchanges
{
public static class CandleHelpers
{
public static CandleDto Convert(IBinanceKline candle, Ticker ticker, Timeframe timeframe)
{
return new CandleDto()
{
Ticker = ticker.ToString(),
Timeframe = timeframe,
BaseVolume = candle.Volume,
Close = candle.ClosePrice,
CloseTime = candle.CloseTime,
Open = candle.OpenPrice,
OpenTime = candle.OpenTime,
High = candle.HighPrice,
Low = candle.LowPrice,
QuoteVolume = candle.QuoteVolume,
TakerBuyBaseVolume = candle.TakerBuyBaseVolume,
TakerBuyQuoteVolume = candle.TakerBuyQuoteVolume,
TradeCount = candle.TradeCount,
};
}
public static CandleDto Convert(KrakenStreamKline candle, Ticker ticker, Timeframe timeframe)
{
return new CandleDto()
{
Ticker = ticker.ToString(),
Timeframe = timeframe,
BaseVolume = candle.Volume,
Close = candle.ClosePrice,
CloseTime = candle.CloseTime,
Open = candle.OpenPrice,
OpenTime = candle.OpenTime,
High = candle.HighPrice,
Low = candle.LowPrice,
QuoteVolume = candle.VolumeWeightedAveragePrice,
TradeCount = candle.TradeCount
};
}
internal static Candle Map(FTXKline lastCandle)
{
return new Candle
{
OpenTime = lastCandle.OpenTime,
High = lastCandle.HighPrice,
Low = lastCandle.LowPrice,
Close = lastCandle.ClosePrice,
Open = lastCandle.OpenPrice
};
}
internal static Candle Map(IBinanceStreamKline candle, Ticker ticker, Timeframe timeframe)
{
return new Candle()
{
Ticker = ticker.ToString(),
Timeframe = timeframe,
BaseVolume = candle.Volume,
Close = candle.ClosePrice,
Date = candle.CloseTime,
Open = candle.OpenPrice,
OpenTime = candle.OpenTime,
High = candle.HighPrice,
Low = candle.LowPrice,
QuoteVolume = candle.QuoteVolume,
TakerBuyBaseVolume = candle.TakerBuyBaseVolume,
TakerBuyQuoteVolume = candle.TakerBuyQuoteVolume,
TradeCount = candle.TradeCount,
};
}
}
}