gpt4 book ai didi

javascript - TradingView 轻量级图表价格似乎无法正确缩放

转载 作者:行者123 更新时间:2023-12-04 01:24:06 28 4
gpt4 key购买 nike

我刚刚将比特币的实时数据添加到我的图表中。有一个高峰,甚至交易 View 都无法处理它......至少,在我的图表上。这是它的样子:
My code/chart but zoomed in
正如你在 6 月 2 日看到的那样,比特币涨得如此之高,以至于它走出了屏幕。这应该是可以修复的,因为在实际的交易 View 页面本身上它看起来都很好并且很正常:
TradingView.com
此外,如果我缩小图表,它看起来非常正常:
My code/chart but zoomed out
所以我想要什么是我的图表缩放方式与在 tradingview.com 上的缩放方式相同。

这是我的代码:

// Predifined variables
var chart, priceArea, fetchedData;

// Faster to write log();
const log = console.log;

// Get data.
fetch('./getData.php', {
method: 'GET'
}).then(response => response.json()).then(function (data) {
// Set data to a global variable for global usage.
fetchedData = data;

// To make sure the chart is initialized and set after this fetch is done. Else I would get a error for setting data that I do not yet have.
initChartSettings();
});


/**
* Initializes the chart and its settings.
*/
function initChartSettings() {
// Create chart canvas
chart = LightweightCharts.createChart(document.getElementById('Chart'), {width: 1500, height: 700,});

// Could also be done in the width and height code line but thought it might work for scaling.
chart.applyOptions({
timeScale: {
// Adds hours and minutes to the chart.
timeVisible: true,
secondsVisible: false
}
});

// Init price line
priceArea = chart.addAreaSeries();

// This array is needed to make the setData work. It expects an array with objects.
let arrayWithOldData = [];

// Get each item in the fetchedData array. Since it gives more data then I need I use this for loop to take the time and value. Used to create chart lines.
for (let i = 0; i < fetchedData.length; i++) {
let dataElement = fetchedData[i];

// Object needed for the arrayWithOldData.
let oldData = {
// Timestamp / 1000 to make it a workable timestamp for tradingview chart and + 7200 seconds to make sure I get a timestamp of amsterdam (+2:00).
time: (dataElement[0] / 1000) + 7200,
value: dataElement[4]
};

// Add the data to the array.
arrayWithOldData.push(oldData);
}

log(arrayWithOldData);

// Set data
priceArea.setData(arrayWithOldData);

// PriceLine options
priceArea.applyOptions({
topColor: 'rgba(70, 130, 180, 0.5)',
bottomColor: 'rgba(70, 130, 180, 0.1)',
lineColor: '#4682B4',
lineWidth: 2
});

startTime = new Date();
updateLiveChartData();
}

我试过的:

我在我的代码中尝试了以下内容: https://github.com/tradingview/lightweight-charts/blob/master/docs/customization.md -> 价格轴 -> priceScale() -> autoScale: true 和 scaleMargins 具有不同的顶部和底部。似乎 scaleMargins 有效,但是当我回到过去并确保我不再看到峰值时,一切都和平坦一样好:(我还尝试放在代码的末尾:chart.timeScale().fitContent() ; 但这给出的结果与我现在的结果相同,但后来缩小了。如果我用 timeScale 放大,它看起来仍然一样。

最佳答案

似乎是由无效数据格式引起的问题(您已经传递了预期数字的字符串)。我们将在 Debug模式下警告 https://github.com/tradingview/lightweight-charts/issues/315 之后的无效类型.
编辑:
由于启用 Debug模式时会显示里程碑 3.2 警告。

关于javascript - TradingView 轻量级图表价格似乎无法正确缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62172087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com