feat: wavelets

This commit is contained in:
OpenSquared
2026-07-14 16:40:19 +02:00
parent b693aca2dc
commit 2dc4d8e91b
2 changed files with 8 additions and 4 deletions

Binary file not shown.

View File

@@ -1921,12 +1921,16 @@ export default function InstrumentDashboard({ instrumentIdProp, isVisible }: { i
<CartesianGrid strokeDasharray="3 3" stroke="#1e293b" />
<XAxis dataKey="date" tick={{ fontSize: 9, fill: '#64748b' }}
interval={Math.max(0, Math.floor(waveletChartData.length / 8))} />
<YAxis tick={{ fontSize: 9, fill: '#64748b' }} domain={['auto', 'auto']} />
{/* Two Y-axes: band oscillations (demeaned, small amplitude) would be
crushed flat against the raw price level (e.g. ~1.15 for EURUSD) on a
shared axis — same dual-scale idiom as InstrumentChart's theoryCurve overlay. */}
<YAxis yAxisId="price" tick={{ fontSize: 9, fill: '#64748b' }} domain={['auto', 'auto']} />
<YAxis yAxisId="band" orientation="right" tick={{ fontSize: 9, fill: '#64748b' }} domain={['auto', 'auto']} />
<Tooltip contentStyle={{ background: '#0f172a', border: '1px solid #334155', borderRadius: 6, fontSize: 10 }} />
<Line type="monotone" dataKey="original" stroke="#94a3b8" strokeWidth={1.5} dot={false} name="Prix" isAnimationActive={false} />
<Line type="monotone" dataKey="reconstruction" stroke="#22c55e" strokeWidth={1} strokeDasharray="4 2" dot={false} name="Reconstruction" isAnimationActive={false} />
<Line yAxisId="price" type="monotone" dataKey="original" stroke="#94a3b8" strokeWidth={1.5} dot={false} name="Prix" isAnimationActive={false} />
<Line yAxisId="price" type="monotone" dataKey="reconstruction" stroke="#22c55e" strokeWidth={1} strokeDasharray="4 2" dot={false} name="Reconstruction" isAnimationActive={false} />
{waveletData.bands.map((b: any, i: number) => !hiddenBands.has(b.label) && (
<Line key={b.label} type="monotone" dataKey={b.label}
<Line key={b.label} yAxisId="band" type="monotone" dataKey={b.label}
stroke={WAVELET_BAND_COLORS[i % WAVELET_BAND_COLORS.length]}
strokeWidth={1} dot={false} name={b.label} isAnimationActive={false} />
))}