K لائن ڈیٹا پروسیسنگ میں غیر معمولی بات چیت

مصنف:چھوٹا سا خواب, تخلیق: 2019-08-13 11:11:38, تازہ کاری: 2023-10-20 20:06:13

img

K لائن ڈیٹا پروسیسنگ میں غیر معمولی بات چیت

پروگرامنگ ٹریڈنگ کی حکمت عملی لکھتے وقت ، K لائن ڈیٹا کا استعمال کرتے ہوئے ، اکثر غیر معیاری دورانیے کے K لائن ڈیٹا کا استعمال کرنے کی ضرورت ہوتی ہے ، جیسے 12 منٹ کے دورانیے کے K لائن ڈیٹا یا 4 گھنٹے کے K لائن دورانیے کے اعداد و شمار کی ضرورت ہوتی ہے ، جو عام طور پر غیر معیاری دورانیے کے لئے براہ راست دستیاب نہیں ہوتے ہیں۔ تو ہم اس طرح کے مطالبات کا مقابلہ کیسے کرسکتے ہیں؟ اس کا جواب یہ ہے کہ اس کا حل ضرور ہے۔ غیر معیاری دوروں کو چھوٹے دوروں کے اعداد و شمار کے ذریعہ جمع کیا جاسکتا ہے ، جو کہ مجموعی طور پر حاصل کیا جاسکتا ہے ، تصور کریں ، متعدد دوروں میں سب سے زیادہ قیمت ، مجموعی طور پر سب سے زیادہ قیمت ، کم سے کم قیمت مجموعی طور پر کم سے کم قیمت کے طور پر شمار کی جاتی ہے ، افتتاحی قیمت میں کوئی تبدیلی نہیں آتی ہے ، اس کی بنیاد پر اس K لائن خام ڈیٹا کی پہلی افتتاحی قیمت ، اختتامی قیمت اس کی بنیاد پر اس کی بنیاد پر خام ڈیٹا کی آخری اختتامی قیمت کے مطابق ہے ، وقت کھلنے کی قیمت کا وقت ہے ، ٹرانزیکشن کی مقدار کا حساب لگایا جاتا ہے اور خام ڈیٹا کی تجارت کی مقدار کا حساب لگایا جاتا ہے۔ اس کے بارے میں مزید جانیں:

  • سوچنا

    ہم بلاکچین اثاثہ مارکیٹ BTC_USDT کی مثال لیتے ہیں، جہاں ایک گھنٹہ 4 گھنٹوں میں بدل جاتا ہے۔

    img

    img

    img

    img

    وقت اونچا کھولیں کم جمع
    2019.8.12 00:00 11447.07 11382.57 11367.2 11406.92
    2019.8.12 01:00 11420 11405.65 11366.6 11373.83
    2019.8.12 02:00 11419.24 11374.68 11365.51 11398.19
    2019.8.12 03:00 11407.88 11398.59 11369.7 11384.71

    یہ چار ایک گھنٹہ کے دورانیے کے اعداد و شمار، ایک جڑ چار گھنٹے کے دورانیے کے اعداد و شمار کے ساتھ مل کر، کھولنے کی قیمت 00:00 کی پہلی کھلنے کی قیمت ہے: 11382.57 اختتامی قیمت آخری قیمت ہے جو 03:00 بجے بند ہوئی: 11384.71 سب سے زیادہ قیمتیں یہاں سب سے زیادہ قیمتیں تلاش کریں:11447.07 سب سے کم قیمت یہاں سب سے کم قیمت تلاش کریں:11365.51 4 گھنٹے کا سائیکل شروع ہونے کا وقت 00:00 ہے۔ اس 1 گھنٹے کی لائن کا آغاز ہونے کا وقت 2019.8.12 00:00 ہے۔ ٹرانزیکشن کی مقدار ہر ایک گھنٹے میں طلب اور جمع (بنیادی طور پر قیمتوں کی تشکیل کا مشاہدہ کیا جاتا ہے ، جو ٹرانزیکشن کے اعداد و شمار میں نہیں دکھایا گیا ہے) ، یہاں بیان نہیں کیا جاتا ہے۔

    اس کے علاوہ ، یہ ایک بہت ہی دلچسپ اور دلچسپ مضمون ہے۔ اونچائی:11447.07 کھولیں:11382.57 کم:11365.51 مجموعہ:11384.71 وقت:2019.8.12 00:00

    img

    آپ دیکھ سکتے ہیں کہ اعداد و شمار میں ہم آہنگی ہے۔

  • کوڈ لکھنا

    ایک بار جب ابتدائی خیال کی توثیق ہو جاتی ہے تو ، آپ کو دستی طور پر ایک کوڈ لکھنے کی ضرورت ہوتی ہے۔

    اس کے علاوہ ، آپ کو اپنے کمپیوٹر پر اپنے کمپیوٹر کو ڈاؤن لوڈ کرنے کی ضرورت نہیں ہے۔

      function GetNewCycleRecords (sourceRecords, targetCycle) {    // K线合成函数
          var ret = []
          
          // 首先获取源K线数据的周期
          if (!sourceRecords || sourceRecords.length < 2) {
              return null
          }
          var sourceLen = sourceRecords.length
          var sourceCycle = sourceRecords[sourceLen - 1].Time - sourceRecords[sourceLen - 2].Time
    
          if (targetCycle % sourceCycle != 0) {
              Log("targetCycle:", targetCycle)
              Log("sourceCycle:", sourceCycle)
              throw "targetCycle is not an integral multiple of sourceCycle."
          }
    
          if ((1000 * 60 * 60) % targetCycle != 0 && (1000 * 60 * 60 * 24) % targetCycle != 0) {
              Log("targetCycle:", targetCycle)
              Log("sourceCycle:", sourceCycle)
              Log((1000 * 60 * 60) % targetCycle, (1000 * 60 * 60 * 24) % targetCycle)
              throw "targetCycle cannot complete the cycle."
          }
    
          var multiple = targetCycle / sourceCycle
    
    
          var isBegin = false 
          var count = 0
          var high = 0 
          var low = 0 
          var open = 0
          var close = 0 
          var time = 0
          var vol = 0
          for (var i = 0 ; i < sourceLen ; i++) {
              // 获取 时区偏移数值
              var d = new Date()
              var n = d.getTimezoneOffset()
    
              if (((1000 * 60 * 60 * 24) - sourceRecords[i].Time % (1000 * 60 * 60 * 24) + (n * 1000 * 60)) % targetCycle == 0) {
                  isBegin = true
              }
    
              if (isBegin) {
                  if (count == 0) {
                      high = sourceRecords[i].High
                      low = sourceRecords[i].Low
                      open = sourceRecords[i].Open
                      close = sourceRecords[i].Close
                      time = sourceRecords[i].Time
                      vol = sourceRecords[i].Volume
    
                      count++
                  } else if (count < multiple) {
                      high = Math.max(high, sourceRecords[i].High)
                      low = Math.min(low, sourceRecords[i].Low)
                      close = sourceRecords[i].Close
                      vol += sourceRecords[i].Volume
    
                      count++
                  }
    
                  if (count == multiple || i == sourceLen - 1) {
                      ret.push({
                          High : high,
                          Low : low,
                          Open : open,
                          Close : close,
                          Time : time,
                          Volume : vol,
                      })
                      count = 0
                  }
              }
          }
    
          return ret 
      }
    
      // 测试
      function main () {
          while (true) {
              var r = exchange.GetRecords()                           // 原始数据,作为合成K线的基础K线数据,例如要合成4小时K线,可以用1小时K线作为原始数据。
              var r2 = GetNewCycleRecords(r, 1000 * 60 * 60 * 4)      // 通过 GetNewCycleRecords 函数 传入 原始K线数据 r , 和目标周期, 1000 * 60 * 60 * 4 即 目标合成的周期 是4小时K线数据。
    
              $.PlotRecords(r2, "r2")                                 // 策略类库栏 可以勾选画线类库,调用 $.PlotRecords 画线类库 导出函数 画图。
              Sleep(1000)                                             // 每次循环间隔 1000 毫秒,防止访问K线接口获取数据过于频繁,导致交易所限制。
          }
      }
    

    اور اس کے لئے دو چیزیں درکار ہیں، پہلی چیز خام ڈیٹا کی ضرورت ہے، یعنی چھوٹے دورانیے کے لیے K لائن ڈیٹا۔ مثال کے طور پر،var r = exchange.GetRecords()حاصل کردہ چھوٹے دورانیے کے لئے K لائن ڈیٹا۔ دوسرا ، یہ واضح کرنے کی ضرورت ہے کہ کتنے بڑے دورانیے کو جوڑنا ہے ، یعنی K لائن ڈیٹا کی ترکیب کے لئے ہدف کا دورانیہ۔ اس کے بعد، GetNewCycleRecords فنکشن کا استعمال کرتے ہوئے، آپ کو آخر میں ایک K-linear array structure کے اعداد و شمار کو واپس کرنے کی اجازت دیتا ہے. اس کے علاوہ ، آپ کو یہ جاننے کی ضرورت ہے کہ:

    • 1، ہدف کا دورانیہ اس سے چھوٹا نہیں ہوسکتا ہے کہ آپ حاصل کریں نیو سائیکل ریکارڈز کو بطور ڈیٹا خام مال کے لئے K لائن کے دورانیے میں منتقل کریں۔ اس کا مطلب یہ ہے کہ یہ ممکن نہیں ہے کہ چھوٹے دوروں کے اعداد و شمار کو چھوٹے دوروں کے اعداد و شمار میں ضم کیا جائے۔

    • 2، مقرر کردہ ہدف کا دورانیہ دورانیہ بند ہونا ضروری ہے۔ سائیکل بندش کیا ہے؟ اس کا مطلب یہ ہے کہ ایک گھنٹے یا ایک دن کے اندر اندر ، ہدف کے دورانیے کے وقت کی حدیں مل کر ایک بند دائرہ بناتی ہیں۔ مثال: مثال کے طور پر 12 منٹ کے دورانیے کی K لائن، ہر گھنٹے کے 0 منٹ 0 سیکنڈ سے شروع ہوتی ہے (مثلاً 0 بجے) ، پہلا دورانیہ00:00:00 ~ 00:12:00اور دوسرا دور ہے00:12:00 ~ 00:24:00اور تیسری سائیکل00:24:00 ~ 00:36:00اور چوتھا دور ہے00:36:00 ~ 00:48:00اور پانچویں سائیکل00:48:00 ~ 01:00:00یہ ایک مکمل گھنٹہ بناتا ہے۔

      اگر یہ 13 منٹ کا سائیکل ہے ، یا غیر بند سائیکل ہے ، تو اس طرح کے سائیکل کا حساب کتاب کرنے والا ڈیٹا منفرد نہیں ہے ، کیونکہ مجموعی اعداد و شمار کے آغاز کے نقطہ نظر کے لحاظ سے مجموعی اعداد و شمار میں فرق ہے۔

    ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر:img

    موازنہ چارٹimg

  • K لائن ڈیٹا کی تعمیر کے لئے درکار ڈیٹا ڈھانچے

    ایک بار جب میں نے اپنے دوستوں سے پوچھا کہ میں کس طرح ہر K لائن کی سب سے زیادہ قیمت کا حساب لگانا چاہتا ہوں تو میں نے پوچھا کہ میں کس طرح کر سکتا ہوں؟

    عام طور پر ہم اوسط لائن کا حساب لگاتے ہیں جو حساب لگایا گیا اختتامی قیمت کا اوسط ہوتا ہے ، جس میں اوسط لائن ہوتی ہے ، لیکن بعض اوقات یہ بھی ضروری ہوتا ہے کہ سب سے زیادہ قیمت ، کم قیمت ، افتتاحی قیمت وغیرہ کا حساب لگایا جائے۔ اس وقت، آپ کو براہ راست نہیں کر سکتے ہیں.exchange.GetRecords()فنکشن کی طرف سے واپس آنے والے K لائن کے اعداد و شمار کو براہ راست اشارے کے حساب کے فنکشن میں منتقل کیا جاتا ہے۔

    مثال کے طور پرtalib.MAہموار اشارے کے حساب کی تقریب کے دو پیرامیٹرز ہیں، پہلا پیرامیٹر ان اعداد و شمار کا ہے جو ان کو منتقل کرنے کی ضرورت ہے، اور دوسرا پیرامیٹر اشارے کے دورانیے کا ہے۔ مثال کے طور پر، ہم مندرجہ ذیل اعداد و شمار کے ساتھ کیا کرنا چاہتے ہیں.img

    اس کے علاوہ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے. ایکسچینج چارٹ پر ، ایک اوسط لائن مقرر کی گئی ہے ، جس کی اوسط لائن کا دورانیہ پیرامیٹر 9 ہے۔ اور اعداد و شمار کے ذرائع کا حساب لگایا جاتا ہے جو ہر بار کی سب سے زیادہ قیمت ہے۔imgیعنی یہ اوسط لائن 9 4 گھنٹے کے دورانیے K لائن بار کی سب سے زیادہ قیمت کی اوسط کی حساب سے اوسط ہے، جس میں مشتمل اشارے کی اوسط لائن ہے۔

    ہم نے اپنے ہاتھوں سے ایک ڈیٹا حساب بنایا اور دیکھا کہ کیا یہ تبادلے کے چارٹ کے حساب سے ملتا ہے۔

    var highs = []
    for (var i = 0 ; i < r2.length ; i++) {
        highs.push(r2[i].High)
    }
    

    چونکہ ہر بار کی سب سے زیادہ قیمت کا حساب لگانے کے لئے اوسط قیمت حاصل کی جاتی ہے ، لہذا ہم آہنگی کا اشارے حاصل ہوتا ہے۔ اس کے بعد آپ کو ایک صف بنانا ہوگی جس میں ہر اعداد و شمار کا عنصر ہر بار کی سب سے زیادہ قیمت کے مطابق ہوگا۔ آپ دیکھ سکتے ہیں کہ highs متغیر ابتدائی طور پر ایک خالی صف کے طور پر شروع ہوتا ہے، اور پھر ہم اس K لائن ڈیٹا متغیر r2 کے ذریعے چلتے ہیں ((کیا آپ کو یاد نہیں ہے r2؟ اوپر 4 گھنٹے کے لئے K لائن کی تشکیل کے لئے مین فنکشن میں کوڈ دیکھیں) ۔) ہر بار کے لئے r2 کی سب سے زیادہ قیمت پڑھیں (یعنی r2[i].High، i 0 سے لے کر r2.length-1 تک کی حد تک لے جائے گا) ، اور پھر highs میں دھکا دیں۔ اس طرح ایک ڈیٹا ڈھانچہ بنایا گیا ہے جو K لائن ڈیٹا Bar کے برابر ہے۔

    اس وقت highs کو talib میں منتقل کیا جاسکتا ہے۔ MA فنکشن نے اوسط لائن کا حساب لگایا ہے۔

    ایک مکمل مثال:

    function main () {
        while (true) {
            var r = exchange.GetRecords()
            var r2 = GetNewCycleRecords(r, 1000 * 60 * 60 * 4)
            if (!r2) {
                continue
            }
            
            $.PlotRecords(r2, "r2")                                               // 画出K线
            
            var highs = []
            for (var i = 0 ; i < r2.length ; i++) {
                highs.push(r2[i].High)
            }
            
            var ma = talib.MA(highs, 9)                                           // 用均线指标函数 talib.MA 计算 均线指标
            $.PlotLine("high_MA9", ma[ma.length - 2], r2[r2.length - 2].Time)     // 使用画线类库把均线指标画在图表上
            
            Sleep(1000)
        }
    }
    

    دوبارہ جانچ پڑتال:

    img

    جیسا کہ آپ دیکھ سکتے ہیں، ماؤس کی جگہ کے لئے اوسط لائن کے اشارے کی قیمتیں ہیں11466.9289

    مندرجہ بالا کوڈ کو اس پالیسی میں نقل کیا جاسکتا ہے تاکہ ٹیسٹ چل سکے ، اور یاد رکھیں کہ "ڈرائنگ لائن لائبریری" کو منتخب کرنے کے بعد محفوظ کریں!

  • ڈیجیٹل کرنسی مارکیٹ کے لئے K لائن ڈیٹا حاصل کرنے کا طریقہ

    ایجاد کنندہ کیوٹی ٹرانزیکشن پلیٹ فارم کے پاس پہلے سے ہی ایک مربوط انٹرفیس ہے ، جس میں تبادلہ.GetRecords فنکشن ہے ، جو K لائن کے اعداد و شمار کو حاصل کرتا ہے۔ ذیل میں توجہ دی گئی ہے کہ براہ راست ایکسچینج کے K لائن ڈیٹا انٹرفیس تک رسائی حاصل کریں تاکہ ڈیٹا حاصل کیا جاسکے ، کیونکہ بعض اوقات پیرامیٹرز کی وضاحت کرنے کی ضرورت ہوتی ہے تاکہ مزید K لائنیں حاصل کی جاسکیں ، جس میں GetRecords انٹرفیس کو پیک کیا گیا ہے۔ عام طور پر 100 واپس آتا ہے۔ اگر آپ کو ایسی حکمت عملی کا سامنا کرنا پڑتا ہے جس میں ابتدائی طور پر 100 سے زیادہ K لائنوں کی ضرورت ہوتی ہے تو انتظار کرنا ضروری ہے۔ اس حکمت عملی کو جلد از جلد کام کرنے کے ل you ، آپ اپنے آپ کو ایک فنکشن میں لپیٹ سکتے ہیں ، براہ راست ایکسچینج کے K لائن انٹرفیس پر جاسکتے ہیں ، اور مزید K لائن ڈیٹا حاصل کرنے کے لئے پیرامیٹرز کی وضاحت کرسکتے ہیں۔

    ہم اس ضرورت کو پورا کرنے کے لئے ٹوکن ٹریڈنگ بی ٹی سی_یو ایس ڈی ٹی ٹریڈنگ جوڑی کا استعمال کرتے ہیں:

    ایکسپورٹ کے API دستاویزات تلاش کریں اور K لائن انٹرفیس کی وضاحت دیکھیں:img

    https://api.huobi.pro/market/history/kline?period=1day&size=200&symbol=btcusdt
    

    پیرامیٹرز:

    پیرامیٹر نام اقسام کیا یہ ضروری ہے؟ تفصیل قدر نکالنا
    علامت سٹرنگ سچ معاہدہ Btcusdt، ethbtc...
    مدت سٹرنگ سچ اعداد و شمار کے وقت کے ذرات، یعنی ہر ٹن کے وقت کے وقفے کو واپس کرتا ہے 1 منٹ، 5 منٹ، 15 منٹ، 30 منٹ، 60 منٹ، 1 دن، 1 ماہ، 1 ہفتے، 1 سال
    سائز عدد غلط K لائن کے اعداد و شمار کی تعداد واپس کریں [1, 2000]

    ٹیسٹ کا کوڈ:

    function GetRecords_Huobi (period, size, symbol) {
        var url = "https://api.huobi.pro/market/history/kline?" + "period=" + period + "&size=" + size + "&symbol=" + symbol
        var ret = HttpQuery(url)
        
        try {
            var jsonData = JSON.parse(ret)
            var records = []
            for (var i = jsonData.data.length - 1; i >= 0 ; i--) {
                records.push({
                    Time : jsonData.data[i].id * 1000,
                    High : jsonData.data[i].high,
                    Open : jsonData.data[i].open,
                    Low : jsonData.data[i].low,
                    Close : jsonData.data[i].close,
                    Volume : jsonData.data[i].vol,
                })
            }
            return records
        } catch (e) {
            Log(e)
        }
    }  
    
    
    function main() {
        var records = GetRecords_Huobi("1day", "300", "btcusdt")
        Log(records.length)
        $.PlotRecords(records, "K")
    }
    

    ٹوکن ایکسچینج انٹرفیس تک رسائی کے لئے پائیتھون ورژن کی مثال:

#!python3
import json
import urllib2

def GetRecords_Huobi(period, size, symbol):
    headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
    url = "https://api.huobi.pro/market/history/kline?" + "period=" + period + "&size=" + size + "&symbol=" + symbol
    request = urllib2.Request(url)  
    request.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6')  
    opener = urllib2.build_opener()  
    f= opener.open(request)  
    ret = f.read().decode('utf-8')  
    
    try :
        jsonData = json.loads(ret)
        
        records = []
        for i in range(len(jsonData["data"]) - 1, -1, -1):
            records.append({
                "Time" : jsonData["data"][i]["id"] * 1000, 
                "High" : jsonData["data"][i]["high"], 
                "Open" : jsonData["data"][i]["open"], 
                "Low" : jsonData["data"][i]["low"], 
                "Close" : jsonData["data"][i]["close"], 
                "Volume" : jsonData["data"][i]["vol"], 
            })
        return records
    except Exception as e:
        Log(e)
        
def main():
    r = GetRecords_Huobi("1day", "300", "btcusdt")
    Log(len(r))
    ext.PlotRecords(r, "K")   # 需要引用Python画线类库


بائیون ایکسچینج تک رسائی حاصل کرنے کے لئے K لائن انٹرفیس کی مثال کے طور پر پائیون ورژن:

#!python3
import json
import urllib2

def GetRecords_Huobi(period, size, symbol):
    headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
    url = "https://api.binance.com/api/v3/klines?symbol=" + symbol + "&interval=" + period
    request = urllib2.Request(url)  
    request.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6')  
    opener = urllib2.build_opener()  
    f= opener.open(request)  
    ret = f.read().decode('utf-8')  
    try :
        jsonData = json.loads(ret)
        
        records = []
        for i in range(len(jsonData)):
            records.append({
                "Time" : float(jsonData[i][0]),
                "High" : float(jsonData[i][2]), 
                "Open" : float(jsonData[i][1]), 
                "Low" : float(jsonData[i][3]), 
                "Close" : float(jsonData[i][4]), 
                "Volume" : float(jsonData[i][5]), 
            })
        return records
    except Exception as e:
        Log(e)
        
def main():
    r = GetRecords_Huobi("1m", "300", "BTCUSDT")
    Log(len(r))
    ext.PlotRecords(r, "K")   # 需要引用Python画线类库


img

img

جیسا کہ آپ دیکھ سکتے ہیں کہ لاگ میں ، records.length کو 300 پرنٹ کریں ، یعنی records K لائن ڈیٹا بار کی تعداد 300 ہے۔img


متعلقہ

مزید

بیم مینکیا پوسٹ مین اس مسئلے کو ٹھیک کر سکتا ہے؟ آپ 3 گھنٹے یا 6 گھنٹے کے ساتھ k دن نہیں بنا سکتے۔

بیم مینif (((1000 * 60 * 60 * 24) - sourceRecords[i].Time % (1000 * 60 * 60 * 24) + (n * 1000 * 60)) % targetCycle == 0) { isBegin = سچ } اس جملے میں ایک مسئلہ ہے کہ آپ 3 گھنٹے یا 6 گھنٹے کے ساتھ k دن نہیں بنا سکتے ہیں، آپ صرف 1 گھنٹے، 2 گھنٹے، 4 گھنٹے کے ساتھ k لائن کے ساتھ k دن بنا سکتے ہیں.

xis2004اگر آپ کسی بھی قسم کے تمام تاریخی اعداد و شمار پر چڑھنا چاہتے ہیں تو کیا آپ بھی کر سکتے ہیں؟

ولزینگشکریہ جواب کے لیے

ولزینگبراہ کرم ، اگر آپ 300 سے زیادہ بٹن چاہتے ہیں تو ، اس کا بہتر طریقہ کیا ہے؟ مثال کے طور پر ، 1000 K لائن ڈیٹا۔ ایک بار میں تبادلہ ہر بار 300 بٹن کی حمایت کرتا ہے۔ شکریہ

چھوٹا سا خواباچھا، وقت نکالیں اور اسے تبدیل کریں۔

چھوٹا سا خوابیہ آپ کو انٹرفیس کے اعداد و شمار تک رسائی فراہم کرتا ہے، اور آپ کو کتنا ڈیٹا فراہم کرتا ہے۔ یہ عام طور پر حالیہ چند سو بار ہے۔

چھوٹا سا خواباگر ایکسچینج انٹرفیس کی حمایت کی زیادہ سے زیادہ واپسی کی تعداد سے زیادہ ہے تو ، اس سے صرف ڈیٹا اکٹھا کیا جاسکتا ہے ، جیسے کہ کافی K لائن ڈیٹا۔