feat: instrument model
This commit is contained in:
@@ -1376,7 +1376,17 @@ function TimelineView({ instrument }: { instrument: string }) {
|
||||
const r = await api.get<CalendarEvent[]>(
|
||||
`/instrument-models/${instrument}/calendar-events?days_back=${daysBack}&days_forward=90`
|
||||
)
|
||||
const imported: VirtualEventForm[] = r.data.map((ev, i) => ({
|
||||
// Déduplique par (date, category) — garde le plus fort en valeur absolue
|
||||
// évite de cumuler NFP + Non-Farm Payrolls qui sont le même release
|
||||
const seen = new Map<string, CalendarEvent>()
|
||||
for (const ev of r.data) {
|
||||
const key = `${ev.date}_${ev.currency}_${ev.category}`
|
||||
const prev = seen.get(key)
|
||||
if (!prev || Math.abs(ev.estimated_pips) > Math.abs(prev.estimated_pips)) {
|
||||
seen.set(key, ev)
|
||||
}
|
||||
}
|
||||
const imported: VirtualEventForm[] = [...seen.values()].map((ev, i) => ({
|
||||
id: `ff_${ev.date}_${ev.currency}_${i}`,
|
||||
date: ev.date,
|
||||
category: ev.category,
|
||||
@@ -1423,8 +1433,8 @@ function TimelineView({ instrument }: { instrument: string }) {
|
||||
category: 'unclassified',
|
||||
pips: bias,
|
||||
label: 'Guidance macro',
|
||||
absorption_days: simLen,
|
||||
rise_days: 0,
|
||||
absorption_days: 1, // quasi-null decay à la fin
|
||||
rise_days: simLen, // monte progressivement sur toute la fenêtre
|
||||
plateau_days: 0,
|
||||
decay_type: 'linear',
|
||||
}, ...prev]
|
||||
|
||||
Reference in New Issue
Block a user