/// <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));
Example #2
0
        /// <summary>
        /// 根据订单类型判断订单是否支持返积分
        /// </summary>
        /// <param name="orderType"></param>
        /// <param name="groupbuyType"></param>
        /// <returns></returns>
        public bool IsCanRebateScoreByOrderType(Enums.OrderType orderType, string groupbuyType = null)
        {
            bool result = false;


            var websiteInfo = GetWebsiteInfoModelFromDataBase();

            if (orderType == Enums.OrderType.Normal)
            {
                result = websiteInfo.IsOrderRebateScoreByMallOrder == 1;
            }

            if (orderType == Enums.OrderType.GroupBuy && groupbuyType == "leader")
            {
                result = websiteInfo.IsOrderRebateScoreByCreateGroupBuy == 1;
            }

            if (orderType == Enums.OrderType.GroupBuy && groupbuyType == "member")
            {
                result = websiteInfo.IsOrderRebateScoreByJoinGroupBuy == 1;
            }

            return(result);
        }