import React, { useEffect, useState } from "react"; import axios from "axios"; function Ribbon() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const loadData = async () => { try { const res = await axios.get("http://127.0.0.1:8000/api/scanner/ribbon"); setData(res.data || []); setLoading(false); } catch (err) { console.error("Ribbon error:", err); setLoading(false); } }; useEffect(() => { loadData(); const interval = setInterval(loadData, 100000); return () => clearInterval(interval); }, []); const openChart = (symbol) => { window.open(`https://www.tradingview.com/chart/?symbol=NSE:${symbol}`, "_blank"); }; if (loading) return
Loading Ribbon...
; return (

📈 EMA Ribbon Strategy

{(data || []).map((s, i) => ( ))}
Stock Price EMA High 5 EMA Low 5 EMA High 100 EMA Low 100 EMA Close 100 Signal Action
{s.symbol} ₹{s.price} {s.ema_high_5} {s.ema_low_5} {s.ema_high_100} {s.ema_low_100} {s.ema_close_100} {s.signal}
); } export default Ribbon;