docker files fixes from liaqat

This commit is contained in:
alirehmani
2024-05-03 16:39:25 +05:00
commit 464a8730e8
587 changed files with 44288 additions and 0 deletions

View File

@@ -0,0 +1,286 @@
using CryptoExchange.Net.Objects;
using FTX.Net.Enums;
using FTX.Net.Objects.Models;
using Managing.Common;
using Managing.Core;
using Managing.Domain.Candles;
using Managing.Domain.Trades;
using static Managing.Common.Enums;
namespace Managing.Infrastructure.Exchanges.Helpers
{
public static class FtxHelpers
{
public static string ToFtxTicker(Ticker ticker)
{
switch (ticker)
{
case Ticker.ADA:
return "ADA-PERP";
case Ticker.APE:
return "APE-PERP";
case Ticker.ALICE:
return "ALICE-PERP";
case Ticker.ALGO:
return "ALGO-PERP";
case Ticker.ATOM:
return "ATOM-PERP";
case Ticker.AVAX:
return "AVAX-PERP";
case Ticker.AXS:
return "AXS-PERP";
case Ticker.BAT:
return "BAT-PERP";
case Ticker.BNB:
return "BNB-PERP";
case Ticker.BTC:
return "BTC-PERP";
case Ticker.BAL:
return "BAL-PERP";
case Ticker.C98:
return "C98-PERP";
case Ticker.CHR:
return "CHR-PERP";
case Ticker.CHZ:
return "CHZ-PERP";
case Ticker.COMP:
return "COMP-PERP";
case Ticker.CRO:
return "CRO-PERP";
case Ticker.CRV:
return "CRV-PERP";
case Ticker.CVC:
return "CVC-PERP";
case Ticker.DEFI:
return "DEFI-PERP";
case Ticker.DOGE:
return "DOGE-PERP";
case Ticker.DOT:
return "DOT-PERP";
case Ticker.DYDX:
return "DYDX-PERP";
case Ticker.ENS:
return "ENS-PERP";
case Ticker.ETC:
return "ETC-PERP";
case Ticker.ETH:
return "ETH-PERP";
case Ticker.FIL:
return "FIL-PERP";
case Ticker.FLM:
return "FLM-PERP";
case Ticker.FTM:
return "FTM-PERP";
case Ticker.GALA:
return "GALA-PERP";
case Ticker.GMT:
return "GMT-PERP";
case Ticker.GRT:
return "GRT-PERP";
case Ticker.HNT:
return "HNT-PERP";
case Ticker.IMX:
return "IMX-PERP";
case Ticker.JASMY:
return "JASMY-PERP";
case Ticker.KAVA:
return "KAVA-PERP";
case Ticker.KSM:
return "KSM-PERP";
case Ticker.LDO:
return "LDO-PERP";
case Ticker.LINK:
return "LINK-PERP";
case Ticker.LOOKS:
return "LOOKS-PERP";
case Ticker.LRC:
return "LRC-PERP";
case Ticker.LTC:
return "LTC-PERP";
case Ticker.MANA:
return "MANA-PERP";
case Ticker.MATIC:
return "MATIC-PERP";
case Ticker.MKR:
return "MKR-PERP";
case Ticker.NEAR:
return "NEAR-PERP";
case Ticker.NEO:
return "NEO-PERP";
case Ticker.OMG:
return "OMG-PERP";
case Ticker.ONE:
return "ONE-PERP";
case Ticker.ONT:
return "ONT-PERP";
case Ticker.QTUM:
return "QTUM-PERP";
case Ticker.REEF:
return "REEF-PERP";
case Ticker.REN:
return "REN-PERP";
case Ticker.ROSE:
return "ROSE-PERP";
case Ticker.RSR:
return "RSR-PERP";
case Ticker.RUNE:
return "RUNE-PERP";
case Ticker.SAND:
return "SAND-PERP";
case Ticker.SOL:
return "SOL-PERP";
case Ticker.SRM:
return "SRM-PERP";
case Ticker.STMX:
return "STMX-PERP";
case Ticker.SUSHI:
return "SUSHI-PERP";
case Ticker.SXP:
return "SXP-PERP";
case Ticker.THETA:
return "THETA-PERP";
case Ticker.UNI:
return "UNI-PERP";
case Ticker.VET:
return "VET-PERP";
case Ticker.WAVES:
return "WAVES-PERP";
case Ticker.XMR:
return "XMR-PERP";
case Ticker.XRP:
return "XRP-PERP";
case Ticker.XTZ:
return "XTZ-PERP";
case Ticker.YFI:
return "YFI-PERP";
case Ticker.ZEC:
return "ZEC-PERP";
case Ticker.ZIL:
return "ZIL-PERP";
default:
break;
}
throw new NotImplementedException();
}
public static Trade Map(WebCallResult<FTXOrder> result, decimal? leverage = null)
{
var data = result.Data;
if (data == null)
{
return new Trade(DateTime.Now, TradeDirection.None,
TradeStatus.Cancelled, TradeType.Market, Ticker.BTC, 0, 0, 0,
"", result.Error?.Message);
}
return new Trade(data.CreateTime,
(data.Side == OrderSide.Buy) ? TradeDirection.Long : TradeDirection.Short,
(TradeStatus)data.Status, (TradeType)data.Type, MiscExtensions.ParseEnum<Ticker>(data.Symbol), data.Quantity, data.AverageFillPrice ?? 0, leverage,
data.ClientOrderId, "");
}
internal static Trade Map(WebCallResult<FTXTriggerOrder> ftxResult, decimal? leverage)
{
var data = ftxResult.Data;
if (data == null)
{
return new Trade(DateTime.Now, TradeDirection.None,
TradeStatus.Cancelled, TradeType.Market, Ticker.BTC, 0, 0, 0,
"", ftxResult.Error?.Message);
}
return new Trade(data.CreateTime,
(data.Side == OrderSide.Buy) ? TradeDirection.Long : TradeDirection.Short,
(TradeStatus)data.Status, (TradeType)data.Type, MiscExtensions.ParseEnum<Ticker>(data.Symbol), data.Quantity, data.TriggerPrice ?? 0, leverage,
Guid.NewGuid().ToString(), "");
}
public static OrderType FtxOrderTypeMap(TradeType tradeType)
{
switch (tradeType)
{
case TradeType.Limit:
return OrderType.Limit;
case TradeType.Market:
return OrderType.Market;
default:
return OrderType.Limit;
}
}
public static Trade Map(FTXOrder data)
{
if (data == null)
return null;
return new Trade(data.CreateTime, TradeDirection.None,
(TradeStatus)data.Status, (TradeType)data.Type, MiscExtensions.ParseEnum<Ticker>(data.Symbol), data.Quantity, data.AverageFillPrice ?? 0, 0,
data.ClientOrderId, "");
}
public static Candle Map(
FTXKline ftxKline,
Ticker ticker,
Enums.TradingExchanges exchange,
Timeframe timeframe)
{
return new Candle
{
Date = ftxKline.OpenTime,
BaseVolume = ftxKline.Volume ?? 0,
Close = ftxKline.ClosePrice,
High = ftxKline.HighPrice,
Low = ftxKline.LowPrice,
Open = ftxKline.OpenPrice,
Ticker = ticker.ToString(),
OpenTime = ftxKline.OpenTime,
Exchange = exchange,
Timeframe = timeframe
};
}
internal static KlineInterval Map(Timeframe interval) => interval switch
{
Timeframe.FiveMinutes => KlineInterval.FiveMinutes,
Timeframe.FifteenMinutes => KlineInterval.FifteenMinutes,
Timeframe.OneHour => KlineInterval.OneHour,
Timeframe.FourHour => KlineInterval.FourHours,
Timeframe.OneDay => KlineInterval.OneDay,
_ => throw new NotImplementedException(),
};
internal static TriggerOrderType FtxTriggerOrderTypeMap(TradeType tradeType) => tradeType switch
{
TradeType.StopMarket => TriggerOrderType.Stop,
TradeType.StopLimit => TriggerOrderType.Stop,
TradeType.StopLoss => TriggerOrderType.Stop,
TradeType.TakeProfit => TriggerOrderType.TakeProfit,
TradeType.StopLossProfit => TriggerOrderType.Stop,
TradeType.StopLossProfitLimit => TriggerOrderType.Stop,
TradeType.StopLossLimit => TriggerOrderType.Stop,
TradeType.TakeProfitLimit => TriggerOrderType.TakeProfit,
TradeType.TrailingStop => TriggerOrderType.TrailingStop,
TradeType.TrailingStopLimit => TriggerOrderType.TrailingStop,
TradeType.StopLossAndLimit => TriggerOrderType.Stop,
TradeType.SettlePosition => TriggerOrderType.Stop,
_ => throw new NotImplementedException(),
};
internal static Orderbook Map(WebCallResult<FTXOrderbook> ftxOrderBook)
{
return new Orderbook()
{
Asks = Map(ftxOrderBook.Data.Asks),
Bids = Map(ftxOrderBook.Data.Bids)
};
}
private static List<OrderBookEntry> Map(IEnumerable<FTXOrderBookEntry> entry)
{
return entry.Select(ask => new OrderBookEntry() { Price = ask.Price, Quantity = ask.Quantity}).ToList();
}
}
}