根据tradingview文档的说明通过getbars函数,使用websocket提交请求历史数据,得到历史数据返回之后渲染历史数据,发现日周月k线分别少一天,一周,一月。商品配置时区设置的是上海,请问此现象是否和配置商品交易时间有关,少数据的原因是什么?配置商品时需要注意什么?以下是tradingview配置项
以下是渲染历史数据的代码
以下回答引自ChatGPT
这种现象可能与配置商品交易时间有关。具体而言,可能是因为在一些特定的交易日或时段,市场暂停交易或者交易时间缩短导致数据不完整。
另外,如果你使用的是TradingView提供的历史数据服务,可能还需要注意以下几点:
TradingView的历史数据服务并非全部覆盖市场上所有产品和期间,可能存在一些数据空缺或不准确的情况。
历史数据的时间戳和时区等信息应该正确设置,否则可能会导致数据不完整或者错误。对于不同的市场和交易所,时区可能有所不同,需要仔细核对相关文档和资料。
如果你需要使用实时数据,可能还需要考虑一些其他的问题,例如网络延迟、数据更新频率等等。
请把代码发出来,不要图片形式的,方便复制
“Devil组”引证GPT后的撰写:
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您好,根据您的描述,可能有以下几个可能的原因导致您得到的历史数据少了一天、一周、一月:
为了解决这个问题,您可以尝试以下步骤:
最后,建议您在使用TradingView时仔细阅读相关文档和使用说明,以确保正确配置您的商品和交易所,并正确使用API请求历史数据。
//渲染历史数据
getBars: (symbolInfo,resolution,periodParams,onHistoryCallback,onErrorCallback) => {
// 请求k线数据
testArr.map(item => {
let barValue = {};
// 时间戳
barValue.time = item.time * 1000;
// 开
barValue.open = item.open;
// 高
barValue.high = item.high;
// 低
barValue.low = item.low;
// 收
barValue.close = item.close;
// 成交量
barValue.volume = item.volume
bar.push(barValue);
})
console.log(bar)
onHistoryCallback(bar)
},
定义一个testArr数组,当getBars函数里添加了“periodParams”参数时,当执行到bar.push(barValue)时,bar数组为什么会被改变,不等于源数组testArr,此时就会出现少一周的数据的情况?当getBars函数里没有添加了“periodParams”参数时,控制台报错:onHistoryCallback is not a function。而打印出来的bar数组没有被改变,依旧等于testArr。请问我应该如何设置periodParams以让bar数组不会被改变,让bar数据正常渲染到图表里?
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可能性1. 交易时区问题
根据你所提供的配置,你已经将商品配置时区设置为上海时区。 因此,任何缺少数据的问题并不是由交易时区引起的。
可能性2. 数据请求问题
我们需要确定数据是否实际上是不可用的,或者只是在客户端显示上存在问题。 如果数据在交易时区内丢失,则可能是因为数据请求问题而不是配置问题。
你可以通过以下两种方法来检查客户端请求是否已正确进行:
通过网络桥接器(Bridge)检查查询是否成功。 在这种情况下,你会看到一条带有响应信息的出站消息。 如果没有,则说明数据未在k线中显示,那么你必须修复查询。
尝试通过TradingView验证数据是否在服务器上可用。 在这种情况下,可能需要进一步研究Websocket API文档,以查找以正确方式格式化查询请求的方法。
以下是一个示例代码,说明如何使用TradingView Websocket API通过python获取历史数据:
import websocket
import json
def on_open(ws):
print('connected')
data = {
"ticks_history": "frxEURUSD",
"adjust_start_time": 1,
"count": 100,
"granularity": 60,
"end": "latest",
}
ws.send(json.dumps(data))
def on_message(ws, message):
print(message)
def on_close(ws):
print('disconnected')
ws.close()
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://ws.binaryws.com/websockets/v3?app_id=1089", on_open=on_open, on_message=on_message, on_close=on_close)
ws.run_forever()
可能性3. 数据丢失问题
如果TradingView API的输出表明数据没有丢失,就可能是对于一些原因,您的客户端可能无法完全渲染数据。
以下是一些在这种情况下尝试的解决方案:
使用不同时间段的k线图查看缺少的数据是否出现在另一个期间。
使用TradingView应用展示其他图表数据,检查客户端渲染是否相同。
根据你遇到问题的k线图的数据解析其数据。
希望这些信息可以帮助你解决问题。
如果我的回答解决了您的问题,请采纳!