예제 #1
0
 /// <summary>
 /// Position information,Maximum leverage depends on your borrowings and margin ratio.
 /// </summary>
 /// <param name="instrumentType">Instrument Type</param>
 /// <param name="marginMode">Margin Mode</param>
 /// <param name="underlying">Underlying</param>
 /// <param name="instrumentId">Instrument ID</param>
 /// <param name="tier"></param>
 /// <param name="ct">Cancellation Token</param>
 /// <returns></returns>
 public virtual WebCallResult <IEnumerable <OkexPositionTier> > GetPositionTiers(
     OkexInstrumentType instrumentType,
     OkexMarginMode marginMode,
     string underlying,
     string instrumentId  = null,
     string tier          = null,
     CancellationToken ct = default) => GetPositionTiers_Async(instrumentType, marginMode, underlying, instrumentId, tier, ct).Result;
예제 #2
0
        /// <summary>
        /// Position information,Maximum leverage depends on your borrowings and margin ratio.
        /// </summary>
        /// <param name="instrumentType">Instrument Type</param>
        /// <param name="marginMode">Margin Mode</param>
        /// <param name="underlying">Underlying</param>
        /// <param name="instrumentId">Instrument ID</param>
        /// <param name="tier"></param>
        /// <param name="ct">Cancellation Token</param>
        /// <returns></returns>
        public virtual async Task <WebCallResult <IEnumerable <OkexPositionTier> > > GetPositionTiers_Async(
            OkexInstrumentType instrumentType,
            OkexMarginMode marginMode,
            string underlying,
            string instrumentId  = null,
            string tier          = null,
            CancellationToken ct = default)
        {
            if (instrumentType.IsNotIn(OkexInstrumentType.Margin, OkexInstrumentType.Futures, OkexInstrumentType.Option, OkexInstrumentType.Swap))
            {
                throw new ArgumentException("Instrument Type can be only Margin, Futures, Option or Swap.");
            }

            var parameters = new Dictionary <string, object>
            {
                { "instType", JsonConvert.SerializeObject(instrumentType, new InstrumentTypeConverter(false)) },
                { "tdMode", JsonConvert.SerializeObject(marginMode, new MarginModeConverter(false)) },
            };

            parameters.AddOptionalParameter("uly", underlying);
            parameters.AddOptionalParameter("instId", instrumentId);
            parameters.AddOptionalParameter("tier", tier);

            var result = await SendRequestAsync <OkexRestApiResponse <IEnumerable <OkexPositionTier> > >(GetUrl(Endpoints_V5_Public_PositionTiers), HttpMethod.Get, ct, parameters).ConfigureAwait(false);

            if (!result.Success)
            {
                return(WebCallResult <IEnumerable <OkexPositionTier> > .CreateErrorResult(result.ResponseStatusCode, result.ResponseHeaders, result.Error));
            }
            if (result.Data.ErrorCode > 0)
            {
                return(WebCallResult <IEnumerable <OkexPositionTier> > .CreateErrorResult(result.ResponseStatusCode, result.ResponseHeaders, new ServerError(result.Data.ErrorCode, result.Data.ErrorMessage, result.Data.Data)));
            }

            return(new WebCallResult <IEnumerable <OkexPositionTier> >(result.ResponseStatusCode, result.ResponseHeaders, result.Data.Data, null));
        }