public static BinanceNet.Objects.OrderSide ToBinanceEquivalent(this Enums.OrderSide input) { switch (input) { case Enums.OrderSide.Buy: return(BinanceNet.Objects.OrderSide.Buy); case Enums.OrderSide.Sell: return(BinanceNet.Objects.OrderSide.Sell); } throw new ArgumentException($"{input} is an unknown OrderSide"); }
/// <inheritdoc /> public async Task <WebCallResult <BitfinexWriteResult <BitfinexOrder> > > PlaceOrderAsync( string symbol, Enums.OrderSide side, Enums.OrderType type, decimal quantity, decimal price, int?flags = null, int?leverage = null, int?groupId = null, int?clientOrderId = null, decimal?priceTrailing = null, decimal?priceAuxLimit = null, decimal?priceOcoStop = null, DateTime?cancelTime = null, string?affiliateCode = null, CancellationToken ct = default) { symbol.ValidateBitfinexSymbol(); if (side == Enums.OrderSide.Sell) { quantity = -quantity; } var parameters = new Dictionary <string, object> { { "symbol", symbol }, { "type", JsonConvert.SerializeObject(type, new OrderTypeConverter(false)) }, { "price", price.ToString(CultureInfo.InvariantCulture) }, { "amount", quantity.ToString(CultureInfo.InvariantCulture) } }; parameters.AddOptionalParameter("gid", groupId); parameters.AddOptionalParameter("cid", clientOrderId); parameters.AddOptionalParameter("flags", flags); parameters.AddOptionalParameter("lev", leverage); parameters.AddOptionalParameter("price_trailing", priceTrailing?.ToString(CultureInfo.InvariantCulture)); parameters.AddOptionalParameter("price_aux_limit", priceAuxLimit?.ToString(CultureInfo.InvariantCulture)); parameters.AddOptionalParameter("price_oco_stop", priceOcoStop?.ToString(CultureInfo.InvariantCulture)); parameters.AddOptionalParameter("tif", cancelTime?.ToString("yyyy-MM-dd HH:mm:ss")); parameters.AddOptionalParameter("meta", new Dictionary <string, string?>() { { "aff_code", affiliateCode ?? _baseClient.AffiliateCode } }); var result = await _baseClient.SendRequestAsync <BitfinexWriteResult <JArray> >(_baseClient.GetUrl(PlaceOrderEndpoint, "2"), HttpMethod.Post, ct, parameters, true).ConfigureAwait(false); if (!result) { return(result.As <BitfinexWriteResult <BitfinexOrder> >(default));