@blackcube/xgate-sdk 0.25.2 → 0.25.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +39 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +116 -1
- package/dist/index.d.ts +116 -1
- package/dist/index.js +34 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -461,6 +461,121 @@ declare const WS_SUBSCRIPTION_LIMITS: Partial<Record<XgateEx, number>>;
|
|
|
461
461
|
*/
|
|
462
462
|
declare function subscriptionLimitOf(xex: XgateEx): number | undefined;
|
|
463
463
|
|
|
464
|
+
/**
|
|
465
|
+
* COMBIEN DE BOUGIES UNE VENUE SERT PAR APPEL — uniquement ce qu'une documentation ou un SDK affirme.
|
|
466
|
+
*
|
|
467
|
+
* Le budget d'une venue se compte en APPELS, pas en bougies : dix fois plus de barres par appel, c'est dix fois
|
|
468
|
+
* moins d'appels ET dix fois moins d'attente cumulée. C'est le seul levier qui décide de la durée d'un backfill.
|
|
469
|
+
*
|
|
470
|
+
* **binance** — « `limit` est plafonné à 1500 par la venue **sur les deux marchés** ; au-delà, elle refuse la
|
|
471
|
+
* requête au lieu de tronquer » (`binance-sdk`, docblock de `getCandles`). Le plafond vaut donc pour le comptant
|
|
472
|
+
* comme pour le perpétuel.
|
|
473
|
+
*
|
|
474
|
+
* **bybit** — `limit [1, 1000]`, défaut **200** (doc officielle v5, `/v5/market/kline`). C'est `category` qui
|
|
475
|
+
* distingue comptant et perpétuel chez elle, pas la limite. ⚠️ SANS `limit` EXPLICITE, BYBIT EN REND 200, quelle
|
|
476
|
+
* que soit la fenêtre demandée — mesuré le 2026-08-16 : 197 bougies par appel sur les six intervalles, les
|
|
477
|
+
* huit cents manquantes n'étant jamais redemandées puisque le curseur avance de la fenêtre entière.
|
|
478
|
+
*
|
|
479
|
+
* **blofin** — 1440 ; la venue clampe EN SILENCE et le SDK lève au-delà (`blofin-sdk`, `getCandles`).
|
|
480
|
+
*
|
|
481
|
+
* **aster** — 1500 ; non documenté, API de forme binance.
|
|
482
|
+
*
|
|
483
|
+
* **hyperliquid** et **pacifica** n'acceptent AUCUN `limit` : leurs SDK n'envoient que `startTime`/`endTime`
|
|
484
|
+
* (`get-candle-snapshot.ts`, `get-candle-data.ts`). Le nombre sert alors à dimensionner la FENÊTRE demandée, pas
|
|
485
|
+
* à remplir un paramètre. Pour hyperliquid, la venue borne d'elle-même à ~5 000 bougies par (coin, intervalle) —
|
|
486
|
+
* et l'horizon que ça couvre dépend de l'activité du coin, ce n'est donc pas une durée fixe.
|
|
487
|
+
*
|
|
488
|
+
* ⚠️ UNE VENUE ABSENTE DE CETTE TABLE N'A PAS DE PLAFOND DOCUMENTÉ — ce qui n'est pas « pas de plafond ». On ne
|
|
489
|
+
* devine aucun chiffre : le jour où l'une d'elles s'en approche, on lit sa documentation et on l'ajoute.
|
|
490
|
+
*/
|
|
491
|
+
declare const CANDLES_PER_CALL: Partial<Record<XgateEx, number>>;
|
|
492
|
+
/**
|
|
493
|
+
* Combien de bougies demander à une venue en un appel, ou `undefined` si personne ne l'a publié.
|
|
494
|
+
*
|
|
495
|
+
* ⚠️ LA CLÉ EST LA VENUE, PAS LA LIGNE DE CATALOGUE DE L'APPELANT. Un consommateur qui distingue le comptant du
|
|
496
|
+
* perpétuel par deux identifiants à lui (`binance` / `binance-spot`) doit résoudre vers la venue avant de
|
|
497
|
+
* demander : le plafond appartient à binance, pas à l'un de ses marchés. Interroger cette table avec un
|
|
498
|
+
* identifiant maison rendait `undefined` et faisait retomber l'appelant sur une valeur de repli — trois fois trop
|
|
499
|
+
* petite pour binance, deux fois pour bybit.
|
|
500
|
+
*/
|
|
501
|
+
declare function candlesPerCallOf(xex: XgateEx): number | undefined;
|
|
502
|
+
/**
|
|
503
|
+
* LA CADENCE MINIMALE ENTRE DEUX APPELS, PAR VENUE — en millisecondes.
|
|
504
|
+
*
|
|
505
|
+
* ⚠️ INTERDIT DE DEVINER UN CHIFFRE ICI. Toute valeur se source dans la documentation de la venue, et la source
|
|
506
|
+
* s'écrit dans ce commentaire. Un throttle inventé se paie en bannissement d'IP, pas en lenteur.
|
|
507
|
+
*
|
|
508
|
+
* Ces cadences sont un PLANCHER : si la venue répond plus lentement que son throttle, c'est sa latence qui
|
|
509
|
+
* commande. Trois d'entre elles ont été corrigées PAR LA MESURE, jamais par confort — deux tours complets du
|
|
510
|
+
* 2026-08-02 ayant compté les refus venue par venue :
|
|
511
|
+
*
|
|
512
|
+
* venue avant → après refus au 1er tour refus au 2e
|
|
513
|
+
* pacifica 2 500 → 4 000 51 / 525 (9,7 %) 0
|
|
514
|
+
* lighter 600 → 1 200 126 / 1 218 (10,3 %) 0
|
|
515
|
+
* hyperliquid 200 → 500 17 / 1 239 (1,4 %) 39 / 708 (5,5 %) à 300 ms
|
|
516
|
+
*
|
|
517
|
+
* ⚠️ LEÇON DU CAS HYPERLIQUID : un premier réglage à 300 ms reposait sur un poids de requête SUPPOSÉ, et il a
|
|
518
|
+
* EMPIRÉ la situation. Une cadence ne se déduit pas d'une hypothèse sur ce que coûte un appel — elle se dérive du
|
|
519
|
+
* budget documenté, puis se vérifie au tour suivant.
|
|
520
|
+
*
|
|
521
|
+
* Détail des budgets :
|
|
522
|
+
*
|
|
523
|
+
* binance weight 2 par kline, budget IP 6 000 weight/min → ~3 000 req/min ; 150 ms est très en dessous.
|
|
524
|
+
* 429 et 418 (ban d'IP) remontés par la venue.
|
|
525
|
+
* bybit 600 req / 5 s en public → 150 ms reste prudent.
|
|
526
|
+
* hyperliquid 1 200 weight/min par IP. À 387 ms réels on tirait 155 req/min en se faisant encore refouler :
|
|
527
|
+
* la requête pèse donc ~8 weight et le budget est atteint vers 150 req/min. 500 ms garde 20 % de
|
|
528
|
+
* marge, la même que celle qui a ramené lighter et pacifica à zéro refus.
|
|
529
|
+
* blofin 500 req/min ET 1 500 req/5 min (docs.blofin.com). C'EST LA SECONDE QUI MORD : 300 req/min, deux
|
|
530
|
+
* fois plus strict — et sa sanction est d'UNE HEURE contre cinq minutes. 250 ms tient 240 req/min.
|
|
531
|
+
* pacifica 125 crédits / 60 s sur IP non identifiée, une kline étant un GET lourd à 3-12 crédits. La plus
|
|
532
|
+
* contraignante de loin, et sa pénalité s'ALLONGE si on insiste. À 4 000 ms on tire 15 req/min,
|
|
533
|
+
* soit 45 à 180 crédits — sous le budget pour tout coût jusqu'à 8.
|
|
534
|
+
* lighter ~60 requêtes pondérées/min (palier Standard), les endpoints pesant ~300. Le budget donne
|
|
535
|
+
* 1 000 ms tout juste ; 1 200 parce qu'un réglage COLLÉ au budget laisse un résidu de refus.
|
|
536
|
+
* aster 2 400 weight/min, une kline au-delà de 1 000 bougies coûtant 10 → ~240 req/min.
|
|
537
|
+
* paradex 1 500 req/min par IP.
|
|
538
|
+
* extended API lente (2 à 4 s par requête observées) — le throttle ne mord jamais.
|
|
539
|
+
*/
|
|
540
|
+
declare const REST_THROTTLE_MS: Partial<Record<XgateEx, number>>;
|
|
541
|
+
/**
|
|
542
|
+
* La cadence documentée d'une venue, ou `undefined` si personne ne l'a publiée.
|
|
543
|
+
*
|
|
544
|
+
* ⚠️ LE BUDGET EST CELUI DE LA VENUE, PAS DU MARCHÉ. Une IP qui interroge le comptant ET le perpétuel de binance
|
|
545
|
+
* consomme UN SEUL budget : un appelant qui traite les deux en parallèle, chacun à cette cadence, tire deux fois
|
|
546
|
+
* plus vite que ce que la table annonce. C'est à lui de sérialiser par venue.
|
|
547
|
+
*/
|
|
548
|
+
declare function restThrottleOf(xex: XgateEx): number | undefined;
|
|
549
|
+
/**
|
|
550
|
+
* TOUT L'HISTORIQUE QU'UNE VENUE ACCEPTE DE SERVIR, en bougies par (marché, intervalle).
|
|
551
|
+
*
|
|
552
|
+
* ⚠️ CE N'EST PAS `CANDLES_PER_CALL`, ET LES CONFONDRE FAIT LIRE UN BACKFILL DE TRAVERS. Le premier plafond dit
|
|
553
|
+
* combien de bougies tiennent dans UN appel : binance en rend 1 500 à la fois et sert pourtant quarante-quatre
|
|
554
|
+
* mois, parce qu'on pagine. Celui-ci dit combien la venue en garde EN TOUT — au-delà, aucune pagination ne sert à
|
|
555
|
+
* rien, elle répond une liste vide.
|
|
556
|
+
*
|
|
557
|
+
* **hyperliquid** : « Only the most recent 5000 candles are available » (documentation officielle,
|
|
558
|
+
* `info` endpoint, `candleSnapshot`). La fenêtre GLISSE : ce qui sort des 5 000 dernières devient définitivement
|
|
559
|
+
* hors de portée. Sondé le 2026-08-16 sur dix symboles au 2024-09-14 en 15m — POL rend ~500 barres (coin peu
|
|
560
|
+
* traité, ses 5 000 bougies s'étalent sur deux ans), les neuf autres rendent ZÉRO.
|
|
561
|
+
*
|
|
562
|
+
* L'horizon couvert dépend donc de l'ACTIVITÉ du marché, jamais d'une durée fixe : en 1d et 1w la venue est
|
|
563
|
+
* complète, le plafond ne mord que sous le jour.
|
|
564
|
+
*
|
|
565
|
+
* ⚠️ UNE VENUE ABSENTE DE CETTE TABLE SERT SON HISTORIQUE COMPLET par pagination, pour autant qu'on sache. Ce
|
|
566
|
+
* n'est pas une valeur par défaut confortable : c'est ce qui a été constaté. Le jour où l'une d'elles s'arrête,
|
|
567
|
+
* on lit sa documentation et on l'ajoute — on ne devine aucun chiffre ici.
|
|
568
|
+
*/
|
|
569
|
+
declare const CANDLES_MAX_HISTORY: Partial<Record<XgateEx, number>>;
|
|
570
|
+
/**
|
|
571
|
+
* Combien de bougies une venue garde au total, ou `undefined` quand elle sert tout son historique.
|
|
572
|
+
*
|
|
573
|
+
* ⚠️ LA CLÉ EST LA VENUE, PAS LA LIGNE DE CATALOGUE DE L'APPELANT — même règle que `candlesPerCallOf` : un
|
|
574
|
+
* consommateur qui sépare le comptant du perpétuel (`binance` / `binance-spot`) résout vers la venue avant de
|
|
575
|
+
* demander, sinon il lit `undefined` et croit à un historique complet.
|
|
576
|
+
*/
|
|
577
|
+
declare function candlesMaxHistoryOf(xex: XgateEx): number | undefined;
|
|
578
|
+
|
|
464
579
|
/**
|
|
465
580
|
* UNE COTATION, TELLE QU'XGATE LA REND — quelle que soit la venue d'où elle vient.
|
|
466
581
|
*
|
|
@@ -1729,4 +1844,4 @@ declare function expiryOf(xtras?: Record<string, unknown>): Date | undefined;
|
|
|
1729
1844
|
*/
|
|
1730
1845
|
declare function isDated(xtras?: Record<string, unknown>): boolean;
|
|
1731
1846
|
|
|
1732
|
-
export { CandlesService, CandlesStreamRegistry, CandlesStreamService, CatalogService, type Direction, type IAccountState, type IBalance, type ICandle, type ICandlesQuery, type IEntryWithProtection, type IEquityPoint, type IFundingPaid, type IMoveStop, type IMovement, type IOrder, type IPair, type IPosition, type IPrice, type IProtection, type IProtectionInput, type IProtectionLeg, type IPublicTrade, type ITarget, type ITrade, type ITradingAccess, type IWalletAccess, type IXexAccess, type IXexSpotSource, type MarketKind, type MovementKind, type MovementStatus, ORDER_STATUSES, type OrderStatus, type OrderType, PricesService, SPOT_XEXES, type Side, SpotCandlesService, SpotCatalogService, SpotPricesService, SpotWsCandlesService, TIMEFRAME_MINUTES, type TimeInForce, Timeframe, TradingService, type Unsubscribe, WALLET_XEXES, WS_SUBSCRIPTION_LIMITS, WalletService, WsCandlesService, WsTradesService, XGATE_EXCHANGES, XgateEx, XgateModule, buildLevels, buildProtection, canonicalFromBase, canonicalFromXex, expiryOf, isDated, multiplierFromXex, roundPrice, roundToStep, servesNatively, servesSpot, sourceFor, subscriptionLimitOf, timeframeMs };
|
|
1847
|
+
export { CANDLES_MAX_HISTORY, CANDLES_PER_CALL, CandlesService, CandlesStreamRegistry, CandlesStreamService, CatalogService, type Direction, type IAccountState, type IBalance, type ICandle, type ICandlesQuery, type IEntryWithProtection, type IEquityPoint, type IFundingPaid, type IMoveStop, type IMovement, type IOrder, type IPair, type IPosition, type IPrice, type IProtection, type IProtectionInput, type IProtectionLeg, type IPublicTrade, type ITarget, type ITrade, type ITradingAccess, type IWalletAccess, type IXexAccess, type IXexSpotSource, type MarketKind, type MovementKind, type MovementStatus, ORDER_STATUSES, type OrderStatus, type OrderType, PricesService, REST_THROTTLE_MS, SPOT_XEXES, type Side, SpotCandlesService, SpotCatalogService, SpotPricesService, SpotWsCandlesService, TIMEFRAME_MINUTES, type TimeInForce, Timeframe, TradingService, type Unsubscribe, WALLET_XEXES, WS_SUBSCRIPTION_LIMITS, WalletService, WsCandlesService, WsTradesService, XGATE_EXCHANGES, XgateEx, XgateModule, buildLevels, buildProtection, candlesMaxHistoryOf, candlesPerCallOf, canonicalFromBase, canonicalFromXex, expiryOf, isDated, multiplierFromXex, restThrottleOf, roundPrice, roundToStep, servesNatively, servesSpot, sourceFor, subscriptionLimitOf, timeframeMs };
|
package/dist/index.d.ts
CHANGED
|
@@ -461,6 +461,121 @@ declare const WS_SUBSCRIPTION_LIMITS: Partial<Record<XgateEx, number>>;
|
|
|
461
461
|
*/
|
|
462
462
|
declare function subscriptionLimitOf(xex: XgateEx): number | undefined;
|
|
463
463
|
|
|
464
|
+
/**
|
|
465
|
+
* COMBIEN DE BOUGIES UNE VENUE SERT PAR APPEL — uniquement ce qu'une documentation ou un SDK affirme.
|
|
466
|
+
*
|
|
467
|
+
* Le budget d'une venue se compte en APPELS, pas en bougies : dix fois plus de barres par appel, c'est dix fois
|
|
468
|
+
* moins d'appels ET dix fois moins d'attente cumulée. C'est le seul levier qui décide de la durée d'un backfill.
|
|
469
|
+
*
|
|
470
|
+
* **binance** — « `limit` est plafonné à 1500 par la venue **sur les deux marchés** ; au-delà, elle refuse la
|
|
471
|
+
* requête au lieu de tronquer » (`binance-sdk`, docblock de `getCandles`). Le plafond vaut donc pour le comptant
|
|
472
|
+
* comme pour le perpétuel.
|
|
473
|
+
*
|
|
474
|
+
* **bybit** — `limit [1, 1000]`, défaut **200** (doc officielle v5, `/v5/market/kline`). C'est `category` qui
|
|
475
|
+
* distingue comptant et perpétuel chez elle, pas la limite. ⚠️ SANS `limit` EXPLICITE, BYBIT EN REND 200, quelle
|
|
476
|
+
* que soit la fenêtre demandée — mesuré le 2026-08-16 : 197 bougies par appel sur les six intervalles, les
|
|
477
|
+
* huit cents manquantes n'étant jamais redemandées puisque le curseur avance de la fenêtre entière.
|
|
478
|
+
*
|
|
479
|
+
* **blofin** — 1440 ; la venue clampe EN SILENCE et le SDK lève au-delà (`blofin-sdk`, `getCandles`).
|
|
480
|
+
*
|
|
481
|
+
* **aster** — 1500 ; non documenté, API de forme binance.
|
|
482
|
+
*
|
|
483
|
+
* **hyperliquid** et **pacifica** n'acceptent AUCUN `limit` : leurs SDK n'envoient que `startTime`/`endTime`
|
|
484
|
+
* (`get-candle-snapshot.ts`, `get-candle-data.ts`). Le nombre sert alors à dimensionner la FENÊTRE demandée, pas
|
|
485
|
+
* à remplir un paramètre. Pour hyperliquid, la venue borne d'elle-même à ~5 000 bougies par (coin, intervalle) —
|
|
486
|
+
* et l'horizon que ça couvre dépend de l'activité du coin, ce n'est donc pas une durée fixe.
|
|
487
|
+
*
|
|
488
|
+
* ⚠️ UNE VENUE ABSENTE DE CETTE TABLE N'A PAS DE PLAFOND DOCUMENTÉ — ce qui n'est pas « pas de plafond ». On ne
|
|
489
|
+
* devine aucun chiffre : le jour où l'une d'elles s'en approche, on lit sa documentation et on l'ajoute.
|
|
490
|
+
*/
|
|
491
|
+
declare const CANDLES_PER_CALL: Partial<Record<XgateEx, number>>;
|
|
492
|
+
/**
|
|
493
|
+
* Combien de bougies demander à une venue en un appel, ou `undefined` si personne ne l'a publié.
|
|
494
|
+
*
|
|
495
|
+
* ⚠️ LA CLÉ EST LA VENUE, PAS LA LIGNE DE CATALOGUE DE L'APPELANT. Un consommateur qui distingue le comptant du
|
|
496
|
+
* perpétuel par deux identifiants à lui (`binance` / `binance-spot`) doit résoudre vers la venue avant de
|
|
497
|
+
* demander : le plafond appartient à binance, pas à l'un de ses marchés. Interroger cette table avec un
|
|
498
|
+
* identifiant maison rendait `undefined` et faisait retomber l'appelant sur une valeur de repli — trois fois trop
|
|
499
|
+
* petite pour binance, deux fois pour bybit.
|
|
500
|
+
*/
|
|
501
|
+
declare function candlesPerCallOf(xex: XgateEx): number | undefined;
|
|
502
|
+
/**
|
|
503
|
+
* LA CADENCE MINIMALE ENTRE DEUX APPELS, PAR VENUE — en millisecondes.
|
|
504
|
+
*
|
|
505
|
+
* ⚠️ INTERDIT DE DEVINER UN CHIFFRE ICI. Toute valeur se source dans la documentation de la venue, et la source
|
|
506
|
+
* s'écrit dans ce commentaire. Un throttle inventé se paie en bannissement d'IP, pas en lenteur.
|
|
507
|
+
*
|
|
508
|
+
* Ces cadences sont un PLANCHER : si la venue répond plus lentement que son throttle, c'est sa latence qui
|
|
509
|
+
* commande. Trois d'entre elles ont été corrigées PAR LA MESURE, jamais par confort — deux tours complets du
|
|
510
|
+
* 2026-08-02 ayant compté les refus venue par venue :
|
|
511
|
+
*
|
|
512
|
+
* venue avant → après refus au 1er tour refus au 2e
|
|
513
|
+
* pacifica 2 500 → 4 000 51 / 525 (9,7 %) 0
|
|
514
|
+
* lighter 600 → 1 200 126 / 1 218 (10,3 %) 0
|
|
515
|
+
* hyperliquid 200 → 500 17 / 1 239 (1,4 %) 39 / 708 (5,5 %) à 300 ms
|
|
516
|
+
*
|
|
517
|
+
* ⚠️ LEÇON DU CAS HYPERLIQUID : un premier réglage à 300 ms reposait sur un poids de requête SUPPOSÉ, et il a
|
|
518
|
+
* EMPIRÉ la situation. Une cadence ne se déduit pas d'une hypothèse sur ce que coûte un appel — elle se dérive du
|
|
519
|
+
* budget documenté, puis se vérifie au tour suivant.
|
|
520
|
+
*
|
|
521
|
+
* Détail des budgets :
|
|
522
|
+
*
|
|
523
|
+
* binance weight 2 par kline, budget IP 6 000 weight/min → ~3 000 req/min ; 150 ms est très en dessous.
|
|
524
|
+
* 429 et 418 (ban d'IP) remontés par la venue.
|
|
525
|
+
* bybit 600 req / 5 s en public → 150 ms reste prudent.
|
|
526
|
+
* hyperliquid 1 200 weight/min par IP. À 387 ms réels on tirait 155 req/min en se faisant encore refouler :
|
|
527
|
+
* la requête pèse donc ~8 weight et le budget est atteint vers 150 req/min. 500 ms garde 20 % de
|
|
528
|
+
* marge, la même que celle qui a ramené lighter et pacifica à zéro refus.
|
|
529
|
+
* blofin 500 req/min ET 1 500 req/5 min (docs.blofin.com). C'EST LA SECONDE QUI MORD : 300 req/min, deux
|
|
530
|
+
* fois plus strict — et sa sanction est d'UNE HEURE contre cinq minutes. 250 ms tient 240 req/min.
|
|
531
|
+
* pacifica 125 crédits / 60 s sur IP non identifiée, une kline étant un GET lourd à 3-12 crédits. La plus
|
|
532
|
+
* contraignante de loin, et sa pénalité s'ALLONGE si on insiste. À 4 000 ms on tire 15 req/min,
|
|
533
|
+
* soit 45 à 180 crédits — sous le budget pour tout coût jusqu'à 8.
|
|
534
|
+
* lighter ~60 requêtes pondérées/min (palier Standard), les endpoints pesant ~300. Le budget donne
|
|
535
|
+
* 1 000 ms tout juste ; 1 200 parce qu'un réglage COLLÉ au budget laisse un résidu de refus.
|
|
536
|
+
* aster 2 400 weight/min, une kline au-delà de 1 000 bougies coûtant 10 → ~240 req/min.
|
|
537
|
+
* paradex 1 500 req/min par IP.
|
|
538
|
+
* extended API lente (2 à 4 s par requête observées) — le throttle ne mord jamais.
|
|
539
|
+
*/
|
|
540
|
+
declare const REST_THROTTLE_MS: Partial<Record<XgateEx, number>>;
|
|
541
|
+
/**
|
|
542
|
+
* La cadence documentée d'une venue, ou `undefined` si personne ne l'a publiée.
|
|
543
|
+
*
|
|
544
|
+
* ⚠️ LE BUDGET EST CELUI DE LA VENUE, PAS DU MARCHÉ. Une IP qui interroge le comptant ET le perpétuel de binance
|
|
545
|
+
* consomme UN SEUL budget : un appelant qui traite les deux en parallèle, chacun à cette cadence, tire deux fois
|
|
546
|
+
* plus vite que ce que la table annonce. C'est à lui de sérialiser par venue.
|
|
547
|
+
*/
|
|
548
|
+
declare function restThrottleOf(xex: XgateEx): number | undefined;
|
|
549
|
+
/**
|
|
550
|
+
* TOUT L'HISTORIQUE QU'UNE VENUE ACCEPTE DE SERVIR, en bougies par (marché, intervalle).
|
|
551
|
+
*
|
|
552
|
+
* ⚠️ CE N'EST PAS `CANDLES_PER_CALL`, ET LES CONFONDRE FAIT LIRE UN BACKFILL DE TRAVERS. Le premier plafond dit
|
|
553
|
+
* combien de bougies tiennent dans UN appel : binance en rend 1 500 à la fois et sert pourtant quarante-quatre
|
|
554
|
+
* mois, parce qu'on pagine. Celui-ci dit combien la venue en garde EN TOUT — au-delà, aucune pagination ne sert à
|
|
555
|
+
* rien, elle répond une liste vide.
|
|
556
|
+
*
|
|
557
|
+
* **hyperliquid** : « Only the most recent 5000 candles are available » (documentation officielle,
|
|
558
|
+
* `info` endpoint, `candleSnapshot`). La fenêtre GLISSE : ce qui sort des 5 000 dernières devient définitivement
|
|
559
|
+
* hors de portée. Sondé le 2026-08-16 sur dix symboles au 2024-09-14 en 15m — POL rend ~500 barres (coin peu
|
|
560
|
+
* traité, ses 5 000 bougies s'étalent sur deux ans), les neuf autres rendent ZÉRO.
|
|
561
|
+
*
|
|
562
|
+
* L'horizon couvert dépend donc de l'ACTIVITÉ du marché, jamais d'une durée fixe : en 1d et 1w la venue est
|
|
563
|
+
* complète, le plafond ne mord que sous le jour.
|
|
564
|
+
*
|
|
565
|
+
* ⚠️ UNE VENUE ABSENTE DE CETTE TABLE SERT SON HISTORIQUE COMPLET par pagination, pour autant qu'on sache. Ce
|
|
566
|
+
* n'est pas une valeur par défaut confortable : c'est ce qui a été constaté. Le jour où l'une d'elles s'arrête,
|
|
567
|
+
* on lit sa documentation et on l'ajoute — on ne devine aucun chiffre ici.
|
|
568
|
+
*/
|
|
569
|
+
declare const CANDLES_MAX_HISTORY: Partial<Record<XgateEx, number>>;
|
|
570
|
+
/**
|
|
571
|
+
* Combien de bougies une venue garde au total, ou `undefined` quand elle sert tout son historique.
|
|
572
|
+
*
|
|
573
|
+
* ⚠️ LA CLÉ EST LA VENUE, PAS LA LIGNE DE CATALOGUE DE L'APPELANT — même règle que `candlesPerCallOf` : un
|
|
574
|
+
* consommateur qui sépare le comptant du perpétuel (`binance` / `binance-spot`) résout vers la venue avant de
|
|
575
|
+
* demander, sinon il lit `undefined` et croit à un historique complet.
|
|
576
|
+
*/
|
|
577
|
+
declare function candlesMaxHistoryOf(xex: XgateEx): number | undefined;
|
|
578
|
+
|
|
464
579
|
/**
|
|
465
580
|
* UNE COTATION, TELLE QU'XGATE LA REND — quelle que soit la venue d'où elle vient.
|
|
466
581
|
*
|
|
@@ -1729,4 +1844,4 @@ declare function expiryOf(xtras?: Record<string, unknown>): Date | undefined;
|
|
|
1729
1844
|
*/
|
|
1730
1845
|
declare function isDated(xtras?: Record<string, unknown>): boolean;
|
|
1731
1846
|
|
|
1732
|
-
export { CandlesService, CandlesStreamRegistry, CandlesStreamService, CatalogService, type Direction, type IAccountState, type IBalance, type ICandle, type ICandlesQuery, type IEntryWithProtection, type IEquityPoint, type IFundingPaid, type IMoveStop, type IMovement, type IOrder, type IPair, type IPosition, type IPrice, type IProtection, type IProtectionInput, type IProtectionLeg, type IPublicTrade, type ITarget, type ITrade, type ITradingAccess, type IWalletAccess, type IXexAccess, type IXexSpotSource, type MarketKind, type MovementKind, type MovementStatus, ORDER_STATUSES, type OrderStatus, type OrderType, PricesService, SPOT_XEXES, type Side, SpotCandlesService, SpotCatalogService, SpotPricesService, SpotWsCandlesService, TIMEFRAME_MINUTES, type TimeInForce, Timeframe, TradingService, type Unsubscribe, WALLET_XEXES, WS_SUBSCRIPTION_LIMITS, WalletService, WsCandlesService, WsTradesService, XGATE_EXCHANGES, XgateEx, XgateModule, buildLevels, buildProtection, canonicalFromBase, canonicalFromXex, expiryOf, isDated, multiplierFromXex, roundPrice, roundToStep, servesNatively, servesSpot, sourceFor, subscriptionLimitOf, timeframeMs };
|
|
1847
|
+
export { CANDLES_MAX_HISTORY, CANDLES_PER_CALL, CandlesService, CandlesStreamRegistry, CandlesStreamService, CatalogService, type Direction, type IAccountState, type IBalance, type ICandle, type ICandlesQuery, type IEntryWithProtection, type IEquityPoint, type IFundingPaid, type IMoveStop, type IMovement, type IOrder, type IPair, type IPosition, type IPrice, type IProtection, type IProtectionInput, type IProtectionLeg, type IPublicTrade, type ITarget, type ITrade, type ITradingAccess, type IWalletAccess, type IXexAccess, type IXexSpotSource, type MarketKind, type MovementKind, type MovementStatus, ORDER_STATUSES, type OrderStatus, type OrderType, PricesService, REST_THROTTLE_MS, SPOT_XEXES, type Side, SpotCandlesService, SpotCatalogService, SpotPricesService, SpotWsCandlesService, TIMEFRAME_MINUTES, type TimeInForce, Timeframe, TradingService, type Unsubscribe, WALLET_XEXES, WS_SUBSCRIPTION_LIMITS, WalletService, WsCandlesService, WsTradesService, XGATE_EXCHANGES, XgateEx, XgateModule, buildLevels, buildProtection, candlesMaxHistoryOf, candlesPerCallOf, canonicalFromBase, canonicalFromXex, expiryOf, isDated, multiplierFromXex, restThrottleOf, roundPrice, roundToStep, servesNatively, servesSpot, sourceFor, subscriptionLimitOf, timeframeMs };
|
package/dist/index.js
CHANGED
|
@@ -2130,6 +2130,39 @@ XgateModule = __decorateClass([
|
|
|
2130
2130
|
})
|
|
2131
2131
|
], XgateModule);
|
|
2132
2132
|
|
|
2133
|
-
|
|
2133
|
+
// src/helpers/rest-limits.ts
|
|
2134
|
+
var CANDLES_PER_CALL = {
|
|
2135
|
+
binance: 1500,
|
|
2136
|
+
bybit: 1e3,
|
|
2137
|
+
blofin: 1440,
|
|
2138
|
+
aster: 1500,
|
|
2139
|
+
hyperliquid: 5e3,
|
|
2140
|
+
pacifica: 500
|
|
2141
|
+
};
|
|
2142
|
+
function candlesPerCallOf(xex) {
|
|
2143
|
+
return CANDLES_PER_CALL[xex];
|
|
2144
|
+
}
|
|
2145
|
+
var REST_THROTTLE_MS = {
|
|
2146
|
+
binance: 150,
|
|
2147
|
+
bybit: 150,
|
|
2148
|
+
hyperliquid: 500,
|
|
2149
|
+
extended: 200,
|
|
2150
|
+
paradex: 200,
|
|
2151
|
+
aster: 400,
|
|
2152
|
+
lighter: 1200,
|
|
2153
|
+
blofin: 250,
|
|
2154
|
+
pacifica: 4e3
|
|
2155
|
+
};
|
|
2156
|
+
function restThrottleOf(xex) {
|
|
2157
|
+
return REST_THROTTLE_MS[xex];
|
|
2158
|
+
}
|
|
2159
|
+
var CANDLES_MAX_HISTORY = {
|
|
2160
|
+
hyperliquid: 5e3
|
|
2161
|
+
};
|
|
2162
|
+
function candlesMaxHistoryOf(xex) {
|
|
2163
|
+
return CANDLES_MAX_HISTORY[xex];
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
export { CANDLES_MAX_HISTORY, CANDLES_PER_CALL, CandlesService, CandlesStreamRegistry, CandlesStreamService, CatalogService, ORDER_STATUSES, PricesService, REST_THROTTLE_MS, SPOT_XEXES, SpotCandlesService, SpotCatalogService, SpotPricesService, SpotWsCandlesService, TIMEFRAME_MINUTES, Timeframe, TradingService, WALLET_XEXES, WS_SUBSCRIPTION_LIMITS, WalletService, WsCandlesService, WsTradesService, XGATE_EXCHANGES, XgateEx, XgateModule, buildLevels, buildProtection, candlesMaxHistoryOf, candlesPerCallOf, canonicalFromBase, canonicalFromXex, expiryOf, isDated, multiplierFromXex, restThrottleOf, roundPrice, roundToStep, servesNatively, servesSpot, sourceFor, subscriptionLimitOf, timeframeMs };
|
|
2134
2167
|
//# sourceMappingURL=index.js.map
|
|
2135
2168
|
//# sourceMappingURL=index.js.map
|