1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
//! High-performance mapping factory for all bar indicators (NO allocations, NO logic, just static mapping)
//! Usage: BAR_INDICATOR_MAP.get("sma") -> Some(BarIndicatorId::Sma
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, strum::EnumIter)]
pub enum BarIndicatorId {
// Average (23 indicators) - Legacy Ama/Wma/Hma replaced by optimized O(1) versions
Alma, // ALMA
Ama, // AMA (O(1) ring window ER - was Amaring)
AvFrama, // AV_FRAMA
AvVidya, // AV_VIDYA
Dema, // DEMA
Ehlersfa, // EHLERSFA
Ehlersz, // EHLERSZ
Ema, // EMA
Framaadv, // FRAMAADV
Hma, // HMA (O(1) composite - was Hmafast)
Jma, // JMA
Lr, // LR
Mcginley, // MCGINLEY
Rma, // RMA
Sma, // SMA
T3, // T3
Tema, // TEMA
Tma, // TMA
Trima, // TRIMA
Vwap, // VWAP
Vwma, // VWMA
Wma, // WMA (O(1) running sums - was Wmafast)
// Momentum (114 indicators)
AdaptiveStoch, // ADAPTIVE_STOCH
Adx, // ADX
DiPlusMinus, // DI_PLUS_MINUS (+DI/-DI from ADX)
Amat, // AMAT
Apo, // APO
Aroon, // AROON
AroonDown, // AROON_DOWN
AroonOsc, // AROON_OSC
AroonUp, // AROON_UP
AtrRsi, // ATR_RSI
BbPeriod, // BB_PERIOD
Bias, // BIAS
Bop, // BOP
Cci, // CCI
Cfo, // CFO
Cmo, // CMO
Cog, // COG
ConnorsRsi, // CONNORS_RSI
Coppock, // COPPOCK
Demarker, // DEMARKER
Dm, // DM
Dpo, // DPO
DpoPct, // DPO_PCT
Dsp, // DSP
Dss, // DSS
EhlersCc, // EHLERS_CC
EhlersRocket, // EHLERS_ROCKET
ElderImpulse, // ELDER_IMPULSE
ElderRay, // ELDER_RAY
EmaSlope, // EMA_SLOPE
Ewmac, // EWMAC
EwmacRobust, // EWMAC_ROBUST
Gapo, // GAPO
Gator, // GATOR
Highest, // HIGHEST
IftRsi, // IFT_RSI
Imi, // IMI
Kdj, // KDJ
Kst, // KST
Kvo, // KVO
Lowest, // LOWEST
Macd, // MACD
MacdHist, // MACD_HIST
MacdHistZ, // MACD_HIST_Z
MacdSignal, // MACD_SIGNAL
MarketCipher, // MARKET_CIPHER
MoFisher, // MO_FISHER
MoObv, // MO_OBV
MomZscore, // MOM_ZSCORE
NeuralMom, // NEURAL_MOM
Pfe, // PFE
Pmo, // PMO
Ppo, // PPO
PpoSignal, // PPO_SIGNAL
Pressure, // PRESSURE
Psar, // PSAR
Psl, // PSL
Qqe, // QQE
Qstick, // QSTICK
Rmi, // RMI
Roc, // ROC
RocPct, // ROC_PCT
Rsi, // RSI
RsiPctBands, // RSI_PCT_BANDS
RsiPctRank, // RSI_PCT_RANK
RsiZscore, // RSI_ZSCORE
Rsioma, // RSIOMA
Rsx, // RSX
Rvgi, // RVGI
Rwi, // RWI
Smi, // SMI
Stc, // STC
Stoch, // STOCH
StochRsi, // STOCH_RSI
Stochkd, // STOCHKD
SweepRev, // SWEEP_REV
SwingAge, // SWING_AGE
Tdi, // TDI
Trix, // TRIX
Tsi, // TSI
Uo, // UO
UoSmooth, // UO_SMOOTH
Vhf, // VHF
VhfMa, // VHF_MA
Vortex, // VORTEX
Vwrsi, // VWRSI
WilliamsR, // WILLIAMS_R
// Signal Processing (84 indicators)
Autocorr, // AUTOCORR
Butter, // BUTTER
Cheby, // CHEBY
Cusum, // CUSUM
Cyber, // CYBER
Decyc, // DECYC
Esine, // ESINE
Ess, // ESS
Fft, // FFT
Hampel, // HAMPEL
Hdc, // HDC
Hilb, // HILB
Hmom, // HMOM
Hyst, // HYST
Logicand, // LOGICAND - AND Logic Gate
Logicor, // LOGICOR - OR Logic Gate
Logicxor, // LOGICXOR - XOR Logic Gate
Logicsign, // LOGICSIGN - Sign Combiner
Lz, // LZ
Mrf, // MRF
Rc, // RC
Roof, // ROOF
Sbp, // SBP
Sbprhl, // SBPRHL
Sbwf, // SBWF
Scf, // SCF
Screst, // SCREST
Screstp, // SCRESTP
Sent, // SENT
Sentent, // SENTENT
Sentr, // SENTR
Ser, // SER
Sflat, // SFLAT
Sflatp, // SFLATP
Sflux, // SFLUX
Sg, // SG
Shmpr, // SHMPR
Slmpr, // SLMPR
Sroll, // SROLL
Sroll95, // SROLL95
Srollp, // SROLLP
Srollrp, // SROLLRP
Sslope, // SSLOPE
Sslopep, // SSLOPEP
Ssloperp, // SSLOPERP
Sslopez, // SSLOPEZ
Stft, // STFT
Tenc, // TENC
Thresh, // THRESH
Wave, // WAVE
Wcomp, // WCOMP
Zmad, // ZMAD
// Channels (72 indicators)
Adaptivebb, // ADAPTIVEBB
Adaptivechan, // ADAPTIVECHAN
Atrchan, // ATRCHAN
Bb, // BB
Bbmetrics, // BBMETRICS
Darvas, // DARVAS
Dc, // DC
Dcmetrics, // DCMETRICS
Dcpos, // DCPOS
Dcwidth, // DCWIDTH
Dpobands, // DPOBANDS
Envbw, // ENVBW
Envelope, // ENVELOPE
Ichimoku, // ICHIMOKU
Ichimokupos, // ICHIMOKUPOS
Ichimokuthick, // ICHIMOKUTHICK
Kc, // KC
Kcmetrics, // KCMETRICS
Keltbw, // KELTBW
Keltdist, // KELTDIST
Keltpos, // KELTPOS
Medchan, // MEDCHAN
Medchanpos, // MEDCHANPOS
Pchosc, // PCHOSC
Pchwidth, // PCHWIDTH
Percentb, // PERCENTB
Percentilech, // PERCENTILECH
Pivotchan, // PIVOTCHAN
Pricechan, // PRICECHAN
Projbands, // PROJBANDS
Qrchan, // QRCHAN
Regchan, // REGCHAN
Regchanwidth, // REGCHANWIDTH
Starc, // STARC
Stddevchan, // STDDEVCHAN
Stddevwidth, // STDDEVWIDTH
Theilsenchan, // THEILSENCHAN
Trimabands, // TRIMABANDS
Volprofchan, // VOLPROFCHAN
Vwapchan, // VWAPCHAN
Vwapchanwidth, // VWAPCHANWIDTH
// Volatility (52 indicators)
Abb, // ABB
Atr, // ATR
Atrbw, // ATRBW
Atrc, // ATRC
Atrp, // ATRP
Atrpt, // ATRPT
Atrz, // ATRZ
Avr, // AVR
Bpv, // BPV
C2cvp, // C2CVP
Chop, // CHOP
Cv, // CV
Dvr, // DVR
Fuzzy, // FUZZY
Har, // HAR
Hvc2c, // HVC2C
Kp, // KP
Natr, // NATR
Nr, // NR
Pgry, // PGRY
Rbvj, // RBVJ
Rcb, // RCB
Rp, // RP
Rq, // RQ
Rv, // RV
Rvi, // RVI
Rvz, // RVZ
Sqmom, // SQMOM
Tr, // TR
Ui, // UI
Vbd, // VBD
Vbexp, // VBEXP
VoDc, // VO_DC
VoKc, // VO_KC
VoMi, // VO_MI
VoVr, // VO_VR
Vov, // VOV
Vovp, // VOVP
Vovpt, // VOVPT
Vprb, // VPRB
Wvf, // WVF
// Levels (27 indicators)
Avwap, // AVWAP
Avwaprev, // AVWAPREV
Avwaptouch, // AVWAPTOUCH
Bos, // BOS
Camarilla, // CAMARILLA
Demark, // DEMARK
Floorpivot, // FLOORPIVOT
Fvg, // FVG
Fvgalt, // FVGALT
Fvgdur, // FVGDUR
Fvgrev, // FVGREV
Hlva, // HLVA
Liqgap, // LIQGAP
Pivavwap, // PIVAVWAP
Pivot, // PIVOT
Rmid, // RMID
Rquart, // RQUART
Swingstr, // SWINGSTR
Woodie, // WOODIE
// Candles (4 indicators)
Candleanatomy, // CANDLEANATOMY
Heikinashi, // HEIKINASHI
Wickspike, // WICKSPIKE (StatisticalWickDetector)
// Volume (27 indicators)
Cvd, // CVD — Cumulative Volume Delta (rolling)
Mfi, // MFI
NviPvi, // NVI_PVI
Poc, // POC
Pvo, // PVO
Pvt, // PVT
Pzo, // PZO
Rvol, // RVOL
Rvp, // RVP — Rolling Volume Profile (POC/VAH/VAL, Triple)
SessionVwap, // SESSION_VWAP
Vdelta, // VDELTA
Vfi, // VFI
Vo, // VO
Vpin, // VPIN
Vprofile, // VPROFILE
Vpt, // VPT
Vroc, // VROC
Vz, // VZ
Vzo, // VZO
TradeFlowImbalance, // TRADE_FLOW_IMBALANCE
UptickDowntickVolume, // UPTICK_DOWNTICK_VOLUME
AggressorImbalance, // AGGRESSOR_IMBALANCE
LargeTradeFilter, // LARGE_TRADE_FILTER
// Trend (19 indicators)
AdxSlope, // ADX_SLOPE
Didi, // DIDI
Eit, // EIT
GannHilo, // GANN_HILO
Gmma, // GMMA
HaTrend, // HA_TREND
KamaSlope, // KAMA_SLOPE
LrSlope, // LR_SLOPE
Ravi, // RAVI
Sdl, // SDL
Ssl, // SSL
Supertrend, // SUPERTREND
Tii, // TII
TrEr, // TR_ER
Zlsma, // ZLSMA
// Accumulation (20 indicators)
Ad, // AD
Asi, // ASI
Cho, // CHO
Cmf, // CMF
Di, // DI
Eom, // EOM
Fi, // FI
Ii, // II
Iip, // IIP
Iir, // IIR
Obv, // OBV
Tmf, // TMF
Wad, // WAD
// Adaptive (7 indicators)
Adaptivema, // ADAPTIVEMA
Frama, // FRAMA
Kama, // KAMA
Mama, // MAMA
Vidya, // VIDYA
// Entropy (20 indicators)
Apen, // APEN
Conden, // CONDEN
Fisher, // FISHER
Infog, // INFOG
Jsd, // JSD
Kld, // KLD
Mi, // MI
Pe, // PE
Sampen, // SAMPEN
Shannon, // SHANNON
Te, // TE
Xmil, // XMIL
// Kalman (15 indicators)
Abgfilter, // ABGFILTER
Ekf, // EKF
Kalman, // KALMAN
Kcomp, // KCOMP
Kregime, // KREGIME
Kscr, // KSCR
Kslope, // KSLOPE
Kslopez, // KSLOPEZ
Particle, // PARTICLE
Rts, // RTS
Ukf, // UKF
// Trend Stop (21 indicators)
Atrts, // ATRTS
Chand, // CHAND
Cks, // CKS
Donbo, // DONBO
Dons, // DONS
Kelts, // KELTS
Psars, // PSARS
Supts, // SUPTS
TsSwings, // TS_SWINGS
Volts, // VOLTS
VoltsAtr, // VOLTS_ATR
// Chaos (18 indicators)
Ac, // AC
Alligator, // ALLIGATOR
Ao, // AO
ChaosOsc, // CHAOS_OSC
Dfa, // DFA
DfaPct, // DFA_PCT
FractalDim, // FRACTAL_DIM
Fractals, // FRACTALS
Hurst, // HURST
HurstPct, // HURST_PCT
WilliamsMfi, // WILLIAMS_MFI
// Regression (7 indicators)
Arima, // ARIMA
Arimax, // ARIMAX
Egarch, // EGARCH
Garch, // GARCH
PolyReg, // POLY_REG
Var, // VAR
// Ratio (4 indicators)
Er, // ER
ErRing, // ER_RING
RangeAtr, // RANGE_ATR
SpreadAnalyzer, // SPREAD_ANALYZER
// Tick Advanced (8 indicators)
VwapDeviation, // VWAP_DEVIATION
TradeRunDetector, // TRADE_RUN_DETECTOR
SizeWeightedDirectionalMomentum, // SIZE_WEIGHTED_DIRECTIONAL_MOMENTUM
TickFrequencyAnomaly, // TICK_FREQUENCY_ANOMALY
AggressorBurstDetector, // AGGRESSOR_BURST_DETECTOR
LargeTickMomentum, // LARGE_TICK_MOMENTUM
ValueAreaTracker, // VALUE_AREA_TRACKER
VolumeImbalanceZone, // VOLUME_IMBALANCE_ZONE
// Clusters (11 indicators)
ClQueueImb, // CL_QUEUE_IMB
MarketMicro, // MARKET_MICRO
OrderBookSlope, // ORDER_BOOK_SLOPE
OrderFlowImb, // ORDER_FLOW_IMB
TickVolume, // TICK_VOLUME
VwapLevels, // VWAP_LEVELS
FootprintChart, // FOOTPRINT_CHART
FootprintImbalance, // FOOTPRINT_IMBALANCE
FootprintPoc, // FOOTPRINT_POC
AbsorptionDetector, // ABSORPTION_DETECTOR
TradeClusterDetector, // TRADE_CLUSTER_DETECTOR
// Position (19 indicators)
AvwapDist, // AVWAP_DIST
Cpr, // CPR
DayWeekMonth, // DAY_WEEK_MONTH
DistLevels, // DIST_LEVELS
DomWoq, // DOM_WOQ
HolidayProx, // HOLIDAY_PROX
HourDay, // HOUR_DAY
MonthQtr, // MONTH_QTR
MonthTurn, // MONTH_TURN
QtrTurn, // QTR_TURN
RelTrendPos, // REL_TREND_POS
Session, // SESSION
SomEom, // SOM_EOM
SoqEoq, // SOQ_EOQ
SowEow, // SOW_EOW
VwapDist, // VWAP_DIST
WeekMonth, // WEEK_MONTH
Weekday, // WEEKDAY
// Statistics (29 indicators)
Adf, // ADF
AdfKpss, // ADF_KPSS
ArchLm, // ARCH_LM
ArchLmPval, // ARCH_LM_PVAL
BpCusum, // BP_CUSUM
Coint, // COINT
EgAdf, // EG_ADF
EgCoint, // EG_COINT
EgTrend, // EG_TREND
HalfLifeMr, // HALF_LIFE_MR
Kpss, // KPSS
KpssTrend, // KPSS_TREND
KpssZ, // KPSS_Z
LjungBox, // LJUNG_BOX
Pacf, // PACF
Pp, // PP
PriceZscore, // PRICE_ZSCORE
PvCoherence, // PV_COHERENCE
RSquared, // R_SQUARED
ResidStat, // RESID_STAT
StCusum, // ST_CUSUM
Vr, // VR
VrAgg, // VR_AGG
VrZAgg, // VR_Z_AGG
Za, // ZA
// Book (11 indicators)
BookImb, // BOOK_IMB
BookMicroprice, // BOOK_MICROPRICE
BookSlope, // BOOK_SLOPE
Ofi, // OFI
QueueImb, // QUEUE_IMB
LiquiditySweep, // BOOK_LIQUIDITY_SWEEP
BookPressure, // BOOK_PRESSURE
SpreadDistribution, // BOOK_SPREAD_DIST
OrderBookVelocity, // BOOK_OBV
WallDetector, // WALL_DETECTOR
BookDepthChange, // BOOK_DEPTH_CHANGE
// Book delta indicators (3 — consume OrderbookDelta)
IcebergDetector, // ICEBERG_DETECTOR
LevelReplenishRate, // LEVEL_REPLENISH_RATE
BookChurnRate, // BOOK_CHURN_RATE
// Hybrid Tick+Book indicators (3 — consume Tick + OrderBook together)
HiddenLiquidityDetector, // HIDDEN_LIQUIDITY_DETECTOR
TradeBookAbsorption, // TRADE_BOOK_ABSORPTION
SweepImpactAnalyzer, // SWEEP_IMPACT_ANALYZER
// Book Advanced (6 — consume OrderBook L2 snapshots)
BidAskAsymmetry, // BID_ASK_ASYMMETRY
BidAskBounceRate, // BID_ASK_BOUNCE_RATE
MidPriceVelocity, // MID_PRICE_VELOCITY
BestLevelVolatility, // BEST_LEVEL_VOLATILITY
LayerConcentration, // LAYER_CONCENTRATION
PriceLevelDensity, // PRICE_LEVEL_DENSITY
// Funding / OI indicators (3 — consume FundingRate / OpenInterest)
FundingMomentum, // FUNDING_MOMENTUM
FundingZScore, // FUNDING_ZSCORE
OiChangeRate, // OI_CHANGE_RATE
FundingPriceDivergence, // FUNDING_PRICE_DIVERGENCE
// Open Interest indicators (5 — consume OpenInterest / OpenInterest+MarkPrice)
OiZScore, // OI_Z_SCORE
OiMomentum, // OI_MOMENTUM
OiPercentile, // OI_PERCENTILE
LongSqueezeDetector, // LONG_SQUEEZE_DETECTOR
OiPriceCorrelation, // OI_PRICE_CORRELATION
// MarkPrice indicators (2 — consume MarkPrice)
MarkPriceVsLast, // MARK_PRICE_VS_LAST
IndexPriceMomentum, // INDEX_PRICE_MOMENTUM
// MarkPrice advanced (3 — consume MarkPrice)
MarkPriceMomentum, // MARK_PRICE_MOMENTUM
MarkPriceVolatility, // MARK_PRICE_VOLATILITY
MarkPriceGapDetector, // MARK_PRICE_GAP_DETECTOR
// Ticker indicators (3 — consume Ticker / 24h stats)
Volume24hMomentum, // VOLUME_24H_MOMENTUM
HighLowRangeRatio, // HIGH_LOW_RANGE_RATIO
PriceChange24hZScore, // PRICE_CHANGE_24H_ZSCORE
// Liquidation indicators (7 — consume Liquidation events)
LiquidationRate, // LIQUIDATION_RATE
LiquidationVolumeImbalance, // LIQUIDATION_VOLUME_IMBALANCE
LiquidationCascade, // LIQUIDATION_CASCADE
LiquidationVolumeVelocity, // LIQUIDATION_VOLUME_VELOCITY
StopHuntDetector, // STOP_HUNT_DETECTOR
LiquidationClusterDetector, // LIQUIDATION_CLUSTER_DETECTOR
LiquidationCooldown, // LIQUIDATION_COOLDOWN
// Ohlcv Average (15 indicators) - REMOVED
// All OHLCV variants replaced by MovingAverageWithField
// Use: MovingAverageWithField::new(MovingAverageType, period, OhlcvField)
// Sentiment indicators (5 — consume LongShortRatio / AggTrade streams)
LongShortRatioMomentum, // LONG_SHORT_RATIO_MOMENTUM
LongShortExtremeDetector, // LONG_SHORT_EXTREME_DETECTOR
RatioVsPriceDivergence, // RATIO_VS_PRICE_DIVERGENCE
AggTradeFlowImbalance, // AGG_TRADE_FLOW_IMBALANCE
AggTradeSizeDistribution, // AGG_TRADE_SIZE_DISTRIBUTION
// Index/Basis indicators (6 — consume IndexPrice, CompositeIndex, Basis)
PriceVsIndexSpread, // PRICE_VS_INDEX_SPREAD
IndexComponentDrift, // INDEX_COMPONENT_DRIFT
IndexCorrelationBreakdown, // INDEX_CORRELATION_BREAKDOWN
BasisMomentum, // BASIS_MOMENTUM
BasisExtreme, // BASIS_EXTREME
BasisZScore, // BASIS_Z_SCORE
// Volatility advanced indicators (4 — consume HistoricalVolatility, VolatilityIndex)
HvMomentum, // HV_MOMENTUM
HvSpike, // HV_SPIKE
VolIdxSpike, // VOL_IDX_SPIKE
VolIdxMomentum, // VOL_IDX_MOMENTUM
// Greeks indicators (3 — consume OptionGreeks)
DeltaExposureFlow, // DELTA_EXPOSURE_FLOW
GammaSqueezeDetector, // GAMMA_SQUEEZE_DETECTOR
IvSkew, // IV_SKEW
// Greeks advanced (4 — consume OptionGreeks)
CharmTracker, // CHARM_TRACKER
VegaExposureFlow, // VEGA_EXPOSURE_FLOW
ThetaDecayTracker, // THETA_DECAY_TRACKER
PinRiskDetector, // PIN_RISK_DETECTOR
// Stress indicators (6 — consume InsuranceFund / SettlementEvent / MarkPrice)
FundDepletionRate, // FUND_DEPLETION_RATE
FundStressDetector, // FUND_STRESS_DETECTOR
InsuranceFundMomentum, // INSURANCE_FUND_MOMENTUM
SettlementApproachSignal, // SETTLEMENT_APPROACH_SIGNAL
SettlementPriceMomentum, // SETTLEMENT_PRICE_MOMENTUM
SettlementVsMarkSpread, // SETTLEMENT_VS_MARK_SPREAD
// Microstructure indicators (9 — consume BlockTrade / OrderbookL3 / OrderbookDelta)
BlockTradeFlow, // BLOCK_TRADE_FLOW
BlockTradeImpact, // BLOCK_TRADE_IMPACT
L3OrderRate, // L3_ORDER_RATE
L3LargeOrderTracker, // L3_LARGE_ORDER_TRACKER
L3CancelRatio, // L3_CANCEL_RATIO
BlockTradeSizeAnomaly, // BLOCK_TRADE_SIZE_ANOMALY
QuoteStuffingDetector, // QUOTE_STUFFING_DETECTOR
L3SpooferScore, // L3_SPOOFER_SCORE
QuoteLifecycleTracker, // QUOTE_LIFECYCLE_TRACKER
// Risk indicators (3 — consume RiskLimit)
LeverageReductionWarning, // LEVERAGE_REDUCTION_WARNING
MmrTracker, // MMR_TRACKER
RiskLimitProximity, // RISK_LIMIT_PROXIMITY
// Funding indicators (5 — consume PredictedFunding / FundingRate / FundingSettlement / MarkPrice)
FundingDrift, // FUNDING_DRIFT
FundingTimeDecay, // FUNDING_TIME_DECAY
PredictedFundingExtreme, // PREDICTED_FUNDING_EXTREME
SettledFundingMomentum, // SETTLED_FUNDING_MOMENTUM
FundingSettlementImpact, // FUNDING_SETTLEMENT_IMPACT
// Funding advanced (3 — consume FundingRate)
AnnualizedFundingRate, // ANNUALIZED_FUNDING_RATE
FundingDirectionShift, // FUNDING_DIRECTION_SHIFT
FundingExtremeAlert, // FUNDING_EXTREME_ALERT
// Misc indicators (5 — consume AuctionEvent / MarketWarning)
AuctionLiquidityScore, // AUCTION_LIQUIDITY_SCORE
AuctionPriceDeviation, // AUCTION_PRICE_DEVIATION
AuctionImbalance, // AUCTION_IMBALANCE
WarningRate, // WARNING_RATE
WarningFrequencyFilter, // WARNING_FREQUENCY_FILTER
// Ticker advanced indicators (2 — consume Ticker)
TickerSpreadRatio, // TICKER_SPREAD_RATIO
Volume24hZScore, // VOLUME_24H_Z_SCORE
// Cross-stream composite indicators (8 — consume 2-3 streams simultaneously)
FundingOiPressure, // FUNDING_OI_PRESSURE (FundingRate + OI)
IvHvSpread, // IV_HV_SPREAD (VolatilityIndex + HistoricalVolatility)
SqueezeProbability, // SQUEEZE_PROBABILITY (OI + MarkPrice + Liquidation)
FundingSentimentAlignment, // FUNDING_SENTIMENT_ALIGNMENT (FundingRate + LongShortRatio)
VolRegimeEntry, // VOL_REGIME_ENTRY (VolatilityIndex + MarkPrice)
BlockTradeVolumeRatio, // BLOCK_TRADE_VOLUME_RATIO (BlockTrade + AggTrade)
CapitulationDetector, // CAPITULATION_DETECTOR (Liquidation + AggTrade + MarkPrice)
IndexTrackingError, // INDEX_TRACKING_ERROR (IndexPrice + CompositeIndex)
// Category C composite + adaptive + cross-asset indicators (11)
MarketStressComposite, // MARKET_STRESS_COMPOSITE (VolIdx + Liq + Funding + InsuranceFund)
RiskOffDetector, // RISK_OFF_DETECTOR (VolIdx + Liq + Funding + InsuranceFund)
SentimentComposite, // SENTIMENT_COMPOSITE (LongShortRatio + AggTrade + Funding)
CompoundSqueezeProbability, // COMPOUND_SQUEEZE_PROBABILITY (OI + Liq + MarkPrice + Funding)
TpoSessionBalance, // TPO_SESSION_BALANCE (Tick)
CompositeWeightDrift, // COMPOSITE_WEIGHT_DRIFT (CompositeIndex)
AdaptiveWindowSelector, // ADAPTIVE_WINDOW_SELECTOR (Tick)
AdaptiveThreshold, // ADAPTIVE_THRESHOLD (Tick)
}
impl BarIndicatorId {
/// True if this indicator accepts a `MovingAverageType` parameter
/// (i.e. its smoother is configurable). Used by the optimizer to decide
/// whether to expand `ma_type` as an axis in the parameter cube.
pub fn supports_ma_type(self) -> bool {
matches!(
self,
BarIndicatorId::Atr
| BarIndicatorId::Atrbw
| BarIndicatorId::Atrp
| BarIndicatorId::Atrz
| BarIndicatorId::AvVidya
| BarIndicatorId::BbPeriod
| BarIndicatorId::MacdHistZ
| BarIndicatorId::Pressure
| BarIndicatorId::RangeAtr
| BarIndicatorId::SweepRev
| BarIndicatorId::Tmf
| BarIndicatorId::VhfMa
| BarIndicatorId::Volts
| BarIndicatorId::VoltsAtr
)
}
/// Canonical enumeration of every `BarIndicatorId` variant.
///
/// Single source of truth for "all indicators" — downstream consumers
/// (mlq strategy codegen, validators, catalogs) iterate this instead of
/// maintaining their own hand-written lists that drift on every add/remove.
/// Backed by `strum::EnumIter`, so adding a variant to the enum makes it
/// appear here automatically with no manual edit anywhere.
pub fn all() -> impl Iterator<Item = BarIndicatorId> {
use strum::IntoEnumIterator;
<BarIndicatorId as IntoEnumIterator>::iter()
}
}
// Original variants: 487
// Added long aliases: 155
// Total: 637
#[cfg(test)]
mod all_iter_tests {
use super::*;
/// `all()` enumerates every variant with no duplicates. Guards against a
/// future hand-edit accidentally breaking the EnumIter contract.
#[test]
fn all_enumerates_every_variant() {
let n = BarIndicatorId::all().count();
assert!(n >= 550, "expected 550+ variants, got {n}");
let set: std::collections::HashSet<_> = BarIndicatorId::all().collect();
assert_eq!(set.len(), n, "all() yielded duplicate variants");
}
/// Every variant `all()` yields must have a catalog signature — this is
/// the single-source-of-truth contract: the enum and the catalog cannot
/// drift. A missing signature means codegen / validators silently skip it.
///
/// Coverage is checked by the catalog's own `machine_id` reverse mapping
/// (NOT by string-key lookup — catalog ids use SCREAMING_SNAKE like
/// `AV_FRAMA` while the variant Debug is `AvFrama`, so string matching
/// would give false negatives).
#[test]
fn every_variant_has_catalog_signature() {
use crate::catalog::data::master_catalog::all_signatures;
let covered: std::collections::HashSet<BarIndicatorId> =
all_signatures().filter_map(|s| s.machine_id).collect();
let missing: Vec<String> = BarIndicatorId::all()
.filter(|id| !covered.contains(id))
.map(|id| format!("{id:?}"))
.collect();
assert!(
missing.is_empty(),
"{} BarIndicatorId variants have no catalog signature (machine_id): {:?}",
missing.len(), missing
);
}
}