/// <summary>
        /// req kline
        /// </summary>
        /// <param name="contractCode"></param>
        /// <param name="period"></param>
        /// <param name="callbackFun"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="id"></param>
        public void ReqKLine(string contractCode, string period, _OnReqKLineResponse callbackFun, long from, long to, string id = _DEFAULT_ID)
        {
            string    ch      = $"market.{contractCode}.kline.{period}";
            WSReqData reqData = new WSReqData()
            {
                req = ch, id = id, from = from, to = to
            };

            Req(JsonConvert.SerializeObject(reqData), ch, callbackFun, typeof(ReqKLineResponse));
        }
        /// <summary>
        /// req kline
        /// </summary>
        /// <param name="contractCode"></param>
        /// <param name="period"></param>
        /// <param name="callbackFun"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="id"></param>
        public void ReqKLine(string contractCode, string period, _OnReqKLineResponse callbackFun, long from, long to, string id = WebSocketOp.DEFAULT_ID)
        {
            string    ch      = $"market.{contractCode}.kline.{period}";
            WSReqData reqData = new WSReqData()
            {
                req = ch, id = id, from = from, to = to
            };
            string sub_str = JsonConvert.SerializeObject(reqData);

            WebSocketOp wsop = new WebSocketOp(this.path, sub_str, callbackFun, typeof(ReqKLineResponse), true, this.host);

            wsop.Connect();
        }