public static CandlestickInterval ToTradeViewCandlestickInterval(this KucoinKlineInterval candlestickInterval) { switch (candlestickInterval) { case KucoinKlineInterval.OneMinute: return(CandlestickInterval.Minute); case KucoinKlineInterval.ThreeMinutes: return(CandlestickInterval.Minutes3); case KucoinKlineInterval.FiveMinutes: return(CandlestickInterval.Minutes5); case KucoinKlineInterval.FifteenMinutes: return(CandlestickInterval.Minutes15); case KucoinKlineInterval.ThirtyMinutes: return(CandlestickInterval.Minutes30); case KucoinKlineInterval.OneHour: return(CandlestickInterval.Hour); case KucoinKlineInterval.TwoHours: return(CandlestickInterval.Hours2); case KucoinKlineInterval.FourHours: return(CandlestickInterval.Hours4); case KucoinKlineInterval.SixHours: return(CandlestickInterval.Hours6); case KucoinKlineInterval.EightHours: return(CandlestickInterval.Hours8); case KucoinKlineInterval.TwelfHours: return(CandlestickInterval.Hours12); case KucoinKlineInterval.OneDay: return(CandlestickInterval.Day); case KucoinKlineInterval.OneWeek: return(CandlestickInterval.Week); default: throw new NotImplementedException(); } }
/// <summary> /// Subscribe to kline updates /// </summary> /// <param name="symbol">Symbol to subscribe</param> /// <param name="interval">Interval of the klines</param> /// <param name="onData">Data handler</param> /// <returns>A stream subscription. This stream subscription can be used to be notified when the socket is disconnected/reconnected and to unsubscribe</returns> public async Task <CallResult <UpdateSubscription> > SubscribeToKlineUpdatesAsync(string symbol, KucoinKlineInterval interval, Action <DataEvent <KucoinStreamCandle> > onData) { symbol.ValidateKucoinSymbol(); var innerHandler = new Action <DataEvent <JToken> >(tokenData => { InvokeHandler(tokenData.As(GetData <KucoinStreamCandle>(tokenData), symbol), onData); }); var request = new KucoinRequest(NextId().ToString(CultureInfo.InvariantCulture), "subscribe", $"/market/candles:{symbol}_{JsonConvert.SerializeObject(interval, new KlineIntervalConverter(false))}", false); return(await SubscribeAsync(request, null, false, innerHandler).ConfigureAwait(false)); }
/// <summary> /// Subscribe to kline updates /// </summary> /// <param name="symbol">Symbol to subscribe</param> /// <param name="interval">Interval of the klines</param> /// <param name="onData">Data handler</param> /// <returns>A stream subscription. This stream subscription can be used to be notified when the socket is disconnected/reconnected and to unsubscribe</returns> public CallResult <UpdateSubscription> SubscribeToKlineUpdates(string symbol, KucoinKlineInterval interval, Action <KucoinStreamCandle> onData) => SubscribeToKlineUpdatesAsync(symbol, interval, onData).Result;