public static TradeBalanceModel ExchangeBalanceToModel(Margin bitmexMargin) { var model = new TradeBalanceModel { AccountCurrency = "BTC", // The only currency supported Totalbalance = Convert.ToDecimal(bitmexMargin.MarginBalance) / SatoshiRate, UnrealisedPnL = Convert.ToDecimal(bitmexMargin.UnrealisedPnl) / SatoshiRate, MaringAvailable = Convert.ToDecimal(bitmexMargin.AvailableMargin) / SatoshiRate, MarginUsed = Convert.ToDecimal(bitmexMargin.MaintMargin) / SatoshiRate }; return(model); }
private static IReadOnlyCollection <TradeBalanceModel> MarginInfoToBalance(IReadOnlyList <MarginInfo> marginInfos) { if (marginInfos.Count != 1) { throw new ApiException(@"Incorrect number of marginInfo. Expected 1 but received {marginInfo.Count}"); } var mi = marginInfos[0]; var balance = new TradeBalanceModel { AccountCurrency = "USD", Totalbalance = mi.NetValue, UnrealisedPnL = mi.UnrealizedPl, MaringAvailable = 0, // TODO The mapping is not defined yet. MarginUsed = mi.RequiredMargin }; return(new[] { balance }); }
public IReadOnlyCollection <TradeBalanceModel> ConvertCollateral(IEnumerable <CollateralReport> collateralReports) { var models = new List <TradeBalanceModel>(); foreach (var report in collateralReports) { var instr = report.IsSetField((int)OneZeroCustomTag.OzAccountCurrency) ? report.GetString(OneZeroCustomTag.OzAccountCurrency) : "NoSymbol"; var model = new TradeBalanceModel { AccountCurrency = instr, Totalbalance = report.IsSetField((int)OneZeroCustomTag.OzEquity) ? report.GetDecimal(OneZeroCustomTag.OzEquity) : -1, UnrealisedPnL = report.IsSetField((int)OneZeroCustomTag.OzUnrealizedProfitOrLoss) ? report.GetDecimal(OneZeroCustomTag.OzUnrealizedProfitOrLoss) : -1, MaringAvailable = report.IsSetField((int)OneZeroCustomTag.OzFreeMargin) ? report.GetDecimal(OneZeroCustomTag.OzFreeMargin) : -1, MarginUsed = report.IsSetField((int)OneZeroCustomTag.OzUsedMargin) ? report.GetDecimal(OneZeroCustomTag.OzUsedMargin) : -1 }; models.Add(model); } return(models); }