improved indicator redraw on new candles with error handling

This commit is contained in:
DiTus
2026-03-01 21:15:24 +01:00
parent 9c560a5786
commit 780ecfdfb5
2 changed files with 31 additions and 32 deletions

View File

@ -366,10 +366,7 @@ if (data.candles && data.candles.length > 0) {
this.updateStats(latest); this.updateStats(latest);
} }
// Always try to redraw indicators after candles are set window.drawIndicatorsOnChart?.();
if (window.drawIndicatorsOnChart) {
window.drawIndicatorsOnChart();
}
} catch (error) { } catch (error) {
console.error('Error loading data:', error); console.error('Error loading data:', error);
} finally { } finally {
@ -431,10 +428,8 @@ async loadNewData() {
this.updateStats(latest); this.updateStats(latest);
// Update indicators - for new candles, update series; for initial loads, redraw console.log('[Chart] Calling drawIndicatorsOnChart after new data');
if (window.drawIndicatorsOnChart) { window.drawIndicatorsOnChart?.();
window.drawIndicatorsOnChart();
}
await this.loadSignals(); await this.loadSignals();

View File

@ -842,30 +842,31 @@ export function updateIndicatorCandles() {
// Chart drawing // Chart drawing
export function drawIndicatorsOnChart() { export function drawIndicatorsOnChart() {
if (!window.dashboard || !window.dashboard.chart) { try {
return; if (!window.dashboard || !window.dashboard.chart) {
} return;
}
const currentInterval = window.dashboard.currentInterval;
const candles = window.dashboard?.allData?.get(currentInterval); const currentInterval = window.dashboard.currentInterval;
const candles = window.dashboard?.allData?.get(currentInterval);
if (!candles || candles.length === 0) {
console.log('[Indicators] No candles available'); if (!candles || candles.length === 0) {
return; console.log('[Indicators] No candles available');
} return;
}
console.log(`[Indicators] ========== drawIndicatorsOnChart START ==========`);
console.log(`[Indicators] Candles from allData: ${candles.length}`); console.log(`[Indicators] ========== drawIndicatorsOnChart START ==========`);
console.log(`[Indicators] First candle time: ${candles[0]?.time} (${new Date(candles[0]?.time * 1000).toLocaleDateString()})`); console.log(`[Indicators] Candles from allData: ${candles.length}`);
console.log(`[Indicators] Last candle time: ${candles[candles.length - 1]?.time} (${new Date(candles[candles.length - 1]?.time * 1000).toLocaleDateString()})`); console.log(`[Indicators] First candle time: ${candles[0]?.time} (${new Date(candles[0]?.time * 1000).toLocaleDateString()})`);
console.log(`[Indicators] Last candle time: ${candles[candles.length - 1]?.time} (${new Date(candles[candles.length - 1]?.time * 1000).toLocaleDateString()})`);
const oldestTime = candles[0]?.time;
const newestTime = candles[candles.length - 1]?.time; const oldestTime = candles[0]?.time;
const oldestDate = oldestTime ? new Date(oldestTime * 1000).toLocaleDateString() : 'N/A'; const newestTime = candles[candles.length - 1]?.time;
const newestDate = newestTime ? new Date(newestTime * 1000).toLocaleDateString() : 'N/A'; const oldestDate = oldestTime ? new Date(oldestTime * 1000).toLocaleDateString() : 'N/A';
const newestDate = newestTime ? new Date(newestTime * 1000).toLocaleDateString() : 'N/A';
console.log(`[Indicators] ========== Redrawing ==========`);
console.log(`[Indicators] Candles: ${candles.length} | Time range: ${oldestDate} (${oldestTime}) to ${newestDate} (${newestTime})`); console.log(`[Indicators] ========== Redrawing ==========`);
console.log(`[Indicators] Candles: ${candles.length} | Time range: ${oldestDate} (${oldestTime}) to ${newestDate} (${newestTime})`);
const activeIndicators = getActiveIndicators(); const activeIndicators = getActiveIndicators();
@ -950,6 +951,9 @@ console.log(`[Indicators] ========== Redrawing ==========`);
}); });
console.log(`[Indicators] ========== drawIndicatorsOnChart END ==========`); console.log(`[Indicators] ========== drawIndicatorsOnChart END ==========`);
} catch (error) {
console.error('[Indicators] Error drawing indicators:', error);
}
} }
function resetIndicator(id) { function resetIndicator(id) {