danghungithp's picture
Upload 1398 files
bec48e1 verified
import * as chart from './chart.js';
import { calculatePV } from './indicators/pv.js';
import { calculateMFI } from './indicators/mfi.js';
import { analyzeVSA } from './indicators/vsa.js';
let stockData = [];
let entryPoint = 0;
let stopLoss = 0;
let takeProfit = 0;
document.getElementById('analyze-button').addEventListener('click', () => {
const stockSymbol = document.getElementById('stock-symbol').value;
fetchStockData(stockSymbol);
});
document.getElementById('set-points-button').addEventListener('click', () => {
entryPoint = parseFloat(document.getElementById('entry-point').value);
stopLoss = parseFloat(document.getElementById('stop-loss').value);
takeProfit = parseFloat(document.getElementById('take-profit').value);
updateTradePoints();
});
async function fetchStockData(symbol) {
try {
const response = await fetch(`http://localhost:5000/api/stock_data?symbol=${symbol}`);
const data = await response.json();
if (!Array.isArray(data) || data.length === 0) {
alert('Không có dữ liệu cho mã cổ phiếu này!');
return;
}
processStockData(data);
} catch (error) {
alert('Lỗi khi lấy dữ liệu từ server: ' + error);
}
}
function processStockData(data) {
// Chuẩn hóa dữ liệu cho các hàm chỉ báo
const priceArr = data.map(d => d.price);
const volumeArr = data.map(d => d.volume);
const pv = calculatePV(priceArr, volumeArr);
const mfi = calculateMFI(data, volumeArr);
const vsaAnalysis = analyzeVSA(priceArr, volumeArr);
// Vẽ biểu đồ
chart.renderPriceVolumeChart({labels: priceArr.map((_,i)=>i+1), values: priceArr}, {labels: volumeArr.map((_,i)=>i+1), values: volumeArr});
chart.renderPVChart({labels: pv.map((_,i)=>i+1), values: pv});
chart.renderMFIChart({labels: mfi.map((_,i)=>i+1), values: mfi});
displayAnalysisResults(vsaAnalysis);
}
function updateTradePoints() {
document.getElementById('trade-points').innerText = `Điểm vào: ${entryPoint}, Dừng lỗ: ${stopLoss}, Chốt lời: ${takeProfit}`;
}
function displayAnalysisResults(analysis) {
document.getElementById('analysis-results').innerText = JSON.stringify(analysis, null, 2);
}