feat: instrument model
This commit is contained in:
@@ -1376,7 +1376,17 @@ function TimelineView({ instrument }: { instrument: string }) {
|
|||||||
const r = await api.get<CalendarEvent[]>(
|
const r = await api.get<CalendarEvent[]>(
|
||||||
`/instrument-models/${instrument}/calendar-events?days_back=${daysBack}&days_forward=90`
|
`/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}`,
|
id: `ff_${ev.date}_${ev.currency}_${i}`,
|
||||||
date: ev.date,
|
date: ev.date,
|
||||||
category: ev.category,
|
category: ev.category,
|
||||||
@@ -1423,8 +1433,8 @@ function TimelineView({ instrument }: { instrument: string }) {
|
|||||||
category: 'unclassified',
|
category: 'unclassified',
|
||||||
pips: bias,
|
pips: bias,
|
||||||
label: 'Guidance macro',
|
label: 'Guidance macro',
|
||||||
absorption_days: simLen,
|
absorption_days: 1, // quasi-null decay à la fin
|
||||||
rise_days: 0,
|
rise_days: simLen, // monte progressivement sur toute la fenêtre
|
||||||
plateau_days: 0,
|
plateau_days: 0,
|
||||||
decay_type: 'linear',
|
decay_type: 'linear',
|
||||||
}, ...prev]
|
}, ...prev]
|
||||||
|
|||||||
Reference in New Issue
Block a user