Skip to content

我的图表一直是第一次获取到的数据在不断重复 #39

Open
@wakaryry

Description

import {getStockRecentKMinuteRT, getStockKRT} from '@/api/stockrt'
import {parseTime} from '@/utils/utils'

export default class CustomDatafeed {
  /**
   * 模糊搜索标的
   * 在搜索框输入的时候触发
   * 返回标的信息数组
   */
  searchSymbols(search) {
    // 根据模糊字段远程拉取标的数据
    console.log(search)
  }

  /**
   * 获取历史k线数据
   * 当标的和周期发生变化的时候触发
   *
   * 返回标的k线数据数组
   */
  getHistoryKLineData(symbol, period, from, to) {
    // 完成数据请求
    console.log(symbol, period, from, to, parseTime(from, '{y}-{m}-{d} {h}:{i}:{s}'), parseTime(to, '{y}-{m}-{d} {h}:{i}:{s}'))
    let api = getStockRecentKMinuteRT
    const params = {
      code: symbol.ticker,
      period: `${period.multiplier}`,
      start_date: parseTime(from, '{y}-{m}-{d} {h}:{i}:{s}'),
      end_date:  parseTime(to, '{y}-{m}-{d} {h}:{i}:{s}')
    }
    if (period.timespan != 'minute') {
      api = getStockKRT
      params.period = period.timespan == 'day' ? 'daily': (period.timespan == 'week' ? 'weekly': 'monthly')
      params.start_date = parseTime(from, '{y}{m}{d}')
      params.end_date = parseTime(to, '{y}{m}{d}')
    }
    return new Promise((resolve, reject) => {
        api(params).then((res) => {
            const _its = res.data.items || []
            const _items = _its.map(item => {
                return {
                    timestamp: (new Date(item.time||item.date)).getTime(),
                    open: item.open,
                    close: item.close,
                    high: item.highest,
                    low: item.lowest,
                    volume: item.volume,
                    turnover: item.turnover || 1
                }
            })
            resolve(_items)
        }).catch(() => {
            resolve([])
        })
    })
  }

  /**
   * 订阅标的在某个周期的实时数据
   * 当标的和周期发生变化的时候触发
   *
   * 通过callback告知图表接收数据
   */
  subscribe(symbol, period, callback) {
    // 完成ws订阅或者http轮询
    console.log('subscribe', symbol, period, callback)
  }

  /**
   * 取消订阅标的在某个周期的实时数据
   * 当标的和周期发生变化的时候触发
   *
   */
  unsubscribe(symbol, period) {
    // 完成ws订阅取消或者http轮询取消
    console.log('unsubscribe', symbol, period)
  }
}

当我拖动图表的时候,我能看到getHistoryKLineData被触发,然后通过新的from/to来获取到数据,我看了下接口请求的参数和返回的数据都是正常。但是图表里面显示的一直都是第一次调用getHistoryKLineData时的数据的重复显示!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions