dexbot 1.6.0 → 1.6.1

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +5 -4
  3. package/analysis/ama_fitting/package.json +1 -1
  4. package/analysis/trend_detection/package.json +1 -1
  5. package/claw/package.json +1 -1
  6. package/claw/runtimes/openclaw-plugin/openclaw.plugin.json +1 -1
  7. package/claw/runtimes/openclaw-plugin/package.json +1 -1
  8. package/claw/tests/test_claw_mcp_transport.ts +2 -2
  9. package/dist/dexbot.js +1 -1
  10. package/dist/dexbot.js.map +1 -1
  11. package/dist/modules/account_bots.js +2 -2
  12. package/dist/modules/account_bots.js.map +1 -1
  13. package/dist/modules/constants.d.ts +5 -0
  14. package/dist/modules/constants.d.ts.map +1 -1
  15. package/dist/modules/constants.js +22 -0
  16. package/dist/modules/constants.js.map +1 -1
  17. package/dist/modules/dexbot_class.d.ts +3 -0
  18. package/dist/modules/dexbot_class.d.ts.map +1 -1
  19. package/dist/modules/dexbot_class.js +39 -6
  20. package/dist/modules/dexbot_class.js.map +1 -1
  21. package/dist/modules/dexbot_fill_runtime.d.ts +25 -0
  22. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
  23. package/dist/modules/dexbot_fill_runtime.js +162 -7
  24. package/dist/modules/dexbot_fill_runtime.js.map +1 -1
  25. package/dist/modules/dexbot_maintenance_runtime.d.ts +23 -0
  26. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  27. package/dist/modules/dexbot_maintenance_runtime.js +90 -2
  28. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  29. package/dist/modules/dexbot_state_recovery.d.ts.map +1 -1
  30. package/dist/modules/dexbot_state_recovery.js +16 -1
  31. package/dist/modules/dexbot_state_recovery.js.map +1 -1
  32. package/dist/modules/market_adapter_whitelist.js +1 -1
  33. package/dist/modules/market_adapter_whitelist.js.map +1 -1
  34. package/dist/modules/order/grid.d.ts.map +1 -1
  35. package/dist/modules/order/grid.js +46 -10
  36. package/dist/modules/order/grid.js.map +1 -1
  37. package/dist/modules/order/grid_reconcile_internal.d.ts.map +1 -1
  38. package/dist/modules/order/grid_reconcile_internal.js +34 -3
  39. package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
  40. package/dist/modules/order/logger.js +1 -1
  41. package/dist/modules/order/logger.js.map +1 -1
  42. package/dist/modules/order/manager.d.ts +14 -1
  43. package/dist/modules/order/manager.d.ts.map +1 -1
  44. package/dist/modules/order/manager.js +54 -2
  45. package/dist/modules/order/manager.js.map +1 -1
  46. package/dist/modules/order/utils/math.d.ts +5 -1
  47. package/dist/modules/order/utils/math.d.ts.map +1 -1
  48. package/dist/modules/order/utils/math.js +6 -2
  49. package/dist/modules/order/utils/math.js.map +1 -1
  50. package/dist/modules/order/utils/order.d.ts.map +1 -1
  51. package/dist/modules/order/utils/order.js +4 -1
  52. package/dist/modules/order/utils/order.js.map +1 -1
  53. package/dist/scripts/generate_market_adapter_whitelist.d.ts.map +1 -1
  54. package/dist/scripts/generate_market_adapter_whitelist.js +3 -2
  55. package/dist/scripts/generate_market_adapter_whitelist.js.map +1 -1
  56. package/docs/BITSHARES_ONBOARDING.md +14 -6
  57. package/docs/DEXBOT_COMPARISON.md +3 -3
  58. package/docs/EVOLUTION.md +8 -7
  59. package/docs/FUND_MOVEMENT_AND_ACCOUNTING.md +1 -1
  60. package/docs/GRID_RECALCULATION.md +8 -7
  61. package/docs/README.md +1 -1
  62. package/market_adapter/README.md +13 -10
  63. package/package.json +1 -1
  64. package/scripts/README.md +4 -4
  65. package/analysis/results/ama_sweep_results_lp_pool_133_1h.json +0 -2455
  66. package/analysis/results/bot_fitting_results_lp_pool_133_1h.json +0 -218
  67. package/analysis/tradingview/h-bts_tradingview.html +0 -1570
  68. package/analysis/tradingview/t-bts_tradingview.html +0 -1570
@@ -1 +1 @@
1
- {"version":3,"file":"market_adapter_whitelist.js","sourceRoot":"","sources":["../../modules/market_adapter_whitelist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market_adapter_whitelist.js","sourceRoot":"","sources":["../../modules/market_adapter_whitelist.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AAE7B,mEAAmE;AACnE,wEAAwE;AACxE,mCAAmC;AACnC,SAAS,aAAa;IAClB,OAAO,MAAM,CAAC,yCAAyC,IAAI,KAAK,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;AAC9G,CAAC;AAQD,IAAI,eAAe,GAA+C,IAAI,CAAC;AAEvE,SAAS,gCAAgC;IACrC,eAAe,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,KAAU;IAC9B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IACD,OAAO;QACH,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI;QACvB,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI;QAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,KAAK,IAAI;KACpD,CAAC;AACN,CAAC;AAED,SAAS,0BAA0B;IAC/B,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;QACnC,eAAe,GAAG,KAAK,CAAC;QACxB,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,EAAE,SAAS,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAE9C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;gBACvB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,eAAe,GAAG,GAAG,CAAC;QACtB,OAAO,eAAe,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,0BAA0B,aAAa,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;QACnH,eAAe,GAAG,KAAK,CAAC;QACxB,OAAO,eAAe,CAAC;IAC3B,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,SAAS,GAAG,0BAA0B,EAAE,CAAC;IAC/C,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAC1G,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACpC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAc;IACjD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAc;IACpD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC;AAC/D,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../modules/order/grid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../modules/order/grid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AA4BH,OAAO,EAeH,iBAAiB,IAAI,aAAa,EAYrC,MAAM,iBAAiB,CAAC;AA8BzB,QAAA,MAAM,iBAAiB,sBAAgB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CA0DxD;AAED;;;;;;;;;;;;GAYG;AACP,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAOpD;AAED;;;;GAIG;AACP,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAEjD;AAED;;;;;;;;GAQG;AACP,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAkB,EAAE,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO;;;;UAyDjH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACP,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAiJ5C;AA2BD;;;;;;;;;;;;;;GAcG;AACP,wBAAsB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAE,GAAU,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAuanH;AAUL;;;;;OAKO;AACP,wBAAsB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA4a5D;AAED;;;;;;;;;GASG;AACP,wBAAsB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAgIxE;AAED;;;;;GAKG;AACP,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAiFxD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACP,wBAAsB,wCAAwC,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,GAAG,CAAA;CAAO;;;eAiK3H;AAED;;;;;;;;;;GAUG;AACP,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,GAAE,GAAY,EAAE,mBAAmB,GAAE,GAAW,EAAE,mBAAmB,GAAE,GAAU;;;;;;;UAgE1J;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACP,wBAAsB,YAAY,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CA4HzG;AAED;;;;;;;;GAQG;AACP,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CA4BvG;AA6BD;;;;GAIG;AACP,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAGvD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACP,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,wBAAwB,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAiOxH;AAED;;;;;;;;;;;;GAYG;AACP,wBAAsB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,yBAAyB,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAenG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACP,wBAAsB,eAAe,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAiF5D;AA8ED;;;;;;GAMG;AACP,wBAAsB,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAIrF;AAED;;;;;;;GAOG;AACP,wBAAsB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAItF;AAED;;;;;;GAMG;AACP,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,GAAG,GAAG,CAyGhF;AAmED;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAse3H"}
@@ -1896,14 +1896,21 @@ export async function monitorDivergence(manager, calculatedGrid, persistedGrid)
1896
1896
  * @returns {{onChainBuys: Array<import('./types').Order>, onChainSells: Array<import('./types').Order>}}
1897
1897
  */
1898
1898
  function _getOnChainOrders(manager) {
1899
+ // Slot-N gated: fork-kept shelf/manual orders (non-slot-N ids, e.g.
1900
+ // deep-*) sit outside window accounting — same gate as reserve
1901
+ // classification and startup cancel candidates (issue #27 follow-up).
1902
+ // Without this, a live shelf masks an empty window side (oneSideEmpty
1903
+ // stays false) and skews the spread inputs. No-op on grids that only
1904
+ // mint slot-N ids.
1905
+ const isGridSlot = (o) => o?.orderId && Number(o?.size || 0) > 0 && parseSlotIndex(o?.id) !== null;
1899
1906
  const onChainBuys = [
1900
1907
  ...manager.getOrdersByTypeAndState(ORDER_TYPES.BUY, ORDER_STATES.ACTIVE),
1901
1908
  ...manager.getOrdersByTypeAndState(ORDER_TYPES.BUY, ORDER_STATES.PARTIAL)
1902
- ].filter((o) => o?.orderId && Number(o?.size || 0) > 0);
1909
+ ].filter(isGridSlot);
1903
1910
  const onChainSells = [
1904
1911
  ...manager.getOrdersByTypeAndState(ORDER_TYPES.SELL, ORDER_STATES.ACTIVE),
1905
1912
  ...manager.getOrdersByTypeAndState(ORDER_TYPES.SELL, ORDER_STATES.PARTIAL)
1906
- ].filter((o) => o?.orderId && Number(o?.size || 0) > 0);
1913
+ ].filter(isGridSlot);
1907
1914
  return { onChainBuys, onChainSells };
1908
1915
  }
1909
1916
  /**
@@ -1975,11 +1982,11 @@ export async function checkSpreadCondition(manager, _BitShares, updateOrdersOnCh
1975
1982
  const toleranceSteps = 0.5;
1976
1983
  const buyCount = manager.getOrdersByTypeAndState(ORDER_TYPES.BUY, ORDER_STATES.ACTIVE)
1977
1984
  .concat(manager.getOrdersByTypeAndState(ORDER_TYPES.BUY, ORDER_STATES.PARTIAL))
1978
- .filter((o) => o?.orderId && Number(o?.size || 0) > 0)
1985
+ .filter((o) => o?.orderId && Number(o?.size || 0) > 0 && parseSlotIndex(o?.id) !== null)
1979
1986
  .length;
1980
1987
  const sellCount = manager.getOrdersByTypeAndState(ORDER_TYPES.SELL, ORDER_STATES.ACTIVE)
1981
1988
  .concat(manager.getOrdersByTypeAndState(ORDER_TYPES.SELL, ORDER_STATES.PARTIAL))
1982
- .filter((o) => o?.orderId && Number(o?.size || 0) > 0)
1989
+ .filter((o) => o?.orderId && Number(o?.size || 0) > 0 && parseSlotIndex(o?.id) !== null)
1983
1990
  .length;
1984
1991
  manager.outOfSpread = shouldFlagOutOfSpread(currentSpread, nominalSpread, toleranceSteps, buyCount, sellCount, manager.config.incrementPercent);
1985
1992
  if (manager.outOfSpread === 0)
@@ -2018,7 +2025,12 @@ export async function checkSpreadCondition(manager, _BitShares, updateOrdersOnCh
2018
2025
  }
2019
2026
  // Limit spread = nominal + half increment tolerance (0.5 steps).
2020
2027
  const limitSpread = nominalSpread + (manager.config.incrementPercent * toleranceSteps);
2021
- manager.logger?.log?.(`Spread too wide (${Format.formatPercent(currentSpread)} > ${Format.formatPercent(limitSpread)}), correcting with ${manager.outOfSpread} extra slot(s)...`, 'warn');
2028
+ // One-sided book: currentSpread is Infinity (no opposing quote), so
2029
+ // log the empty side instead of a bogus "0% > limit" comparison.
2030
+ const spreadDesc = oneSideEmpty
2031
+ ? `one-sided (${onChainBuys.length === 0 ? 'no buys' : 'no sells'})`
2032
+ : `${Format.formatPercent(currentSpread)} > ${Format.formatPercent(limitSpread)}`;
2033
+ manager.logger?.log?.(`Spread too wide (${spreadDesc}), correcting with ${manager.outOfSpread} extra slot(s)...`, 'warn');
2022
2034
  // Refresh funds before the side decision below: the top-of-tick recalc may
2023
2035
  // predate fills processed since, and determineOrderSideByFunds reads
2024
2036
  // manager.funds/accountTotals directly (not via _getSizingContext). No-op
@@ -2512,11 +2524,16 @@ export async function prepareSpreadCorrectionOrders(manager, preferredSide, outO
2512
2524
  const missingSlots = configuredMissingSlots > 0
2513
2525
  ? Math.floor(configuredMissingSlots)
2514
2526
  : 1;
2515
- // STRATEGY: Edge-Based Correction (Safe Bridging)
2527
+ // STRATEGY: Window-Contiguous Correction (Safe Bridging)
2516
2528
  // Instead of calculating a "mid-price" (which can be dangerous in wide gaps),
2517
- // we strictly target the orders closest to the spread gap.
2529
+ // we extend the live window contiguously so a fund-constrained correction
2530
+ // never leaves an interior hole.
2518
2531
  // 1. Priority: Update existing PARTIAL orders at the edge (Highest Buy / Lowest Sell).
2519
- // 2. Fallback: Activate SPREAD slots at the edge (Lowest Spread for Buy / Highest Spread for Sell).
2532
+ // 2. Fallback: Activate empty slots window-contiguous-first (Lowest Buy-rail /
2533
+ // Highest Sell-rail, adjacent to the live window top). A rail with no
2534
+ // live orders has no window to extend, so it falls back to
2535
+ // spread-edge-first (Highest Buy / Lowest Sell) to close the spread
2536
+ // near market first.
2520
2537
  const allOrders = Array.from(manager.orders.values());
2521
2538
  // Boundary-correct type computation — hoisted before edge-partial and
2522
2539
  // candidate filters so all call sites (including the edge-partial filter
@@ -2569,11 +2586,30 @@ export async function prepareSpreadCorrectionOrders(manager, preferredSide, outO
2569
2586
  // boundary-correct type so a SPREAD slot that, after a boundary shift, now sits
2570
2587
  // in the BUY or SELL zone is excluded — it would otherwise be placed on the
2571
2588
  // correction side at a price the grid already considers the opposite side.
2589
+ // Candidate ordering: window-contiguous-first when the rail has live
2590
+ // orders to extend (BUY lowest first, SELL highest first, both adjacent
2591
+ // to the live window top). A fully-empty rail has no window anchor —
2592
+ // "lowest buy" would be the rail bottom, placing deep orders while the
2593
+ // near-market gap stays open — so it falls back to spread-edge-first
2594
+ // (BUY highest, SELL lowest) to close the spread near market first.
2595
+ // The gap-band promotion path below stays edge-first by necessity
2596
+ // (boundary derivation requires contiguity), so under fund shortage
2597
+ // in-rail holes heal before band slots.
2598
+ const railHasLiveOrders = allOrders.some((o) => getSlotCorrectType(o) === railType && isOrderPlaced(o));
2599
+ const sortCandidates = (a, b) => {
2600
+ const edgeFirst = railType === ORDER_TYPES.BUY
2601
+ ? b.price - a.price
2602
+ : a.price - b.price;
2603
+ const windowFirst = railType === ORDER_TYPES.BUY
2604
+ ? a.price - b.price
2605
+ : b.price - a.price;
2606
+ return railHasLiveOrders ? windowFirst : edgeFirst;
2607
+ };
2572
2608
  const typedSpreadCandidates = allOrders
2573
2609
  .filter((o) => o.type === ORDER_TYPES.SPREAD
2574
2610
  && isSlotAvailable(o)
2575
2611
  && getSlotCorrectType(o) === railType)
2576
- .sort((a, b) => railType === ORDER_TYPES.BUY ? a.price - b.price : b.price - a.price)
2612
+ .sort(sortCandidates)
2577
2613
  .slice(0, missingSlots);
2578
2614
  // Secondary candidates: orphaned virtual slots that have lost their
2579
2615
  // order (e.g. stale-cleaned after a race condition during a crash, or a
@@ -2605,7 +2641,7 @@ export async function prepareSpreadCorrectionOrders(manager, preferredSide, outO
2605
2641
  && o.state === ORDER_STATES.VIRTUAL
2606
2642
  && !o.orderId
2607
2643
  && getSlotCorrectType(o) === railType)
2608
- .sort((a, b) => railType === ORDER_TYPES.BUY ? b.price - a.price : a.price - b.price)
2644
+ .sort(sortCandidates)
2609
2645
  .slice(0, missingSlots);
2610
2646
  // If the funded rail is full, the spread itself may be stale: the
2611
2647
  // nearest empty slots are still in the gap band. Promote contiguous