dexbot 1.4.13 → 1.4.15

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 (330) hide show
  1. package/README.md +77 -68
  2. package/claw/data/positions.json +3391 -1
  3. package/claw/docs/AI_BOT_LIBRARY_API.md +1 -1
  4. package/claw/docs/POSITION_HEALTH.md +2 -2
  5. package/claw/modules/claw_catalog.ts +1 -3
  6. package/claw/modules/claw_launcher.ts +2 -3
  7. package/claw/modules/claw_skill_md.ts +1 -1
  8. package/claw/modules/decision_loop.ts +1 -1
  9. package/claw/modules/dexbot_profiles.ts +2 -33
  10. package/claw/modules/feed_price_source.ts +3 -32
  11. package/claw/modules/launcher_mode_detector.ts +1 -1
  12. package/claw/modules/mcp_utils.ts +1 -1
  13. package/claw/modules/mpa_utils.ts +36 -1
  14. package/claw/modules/position_discovery.ts +1 -28
  15. package/claw/modules/position_health.ts +1 -20
  16. package/claw/modules/position_manager.ts +3 -28
  17. package/claw/modules/skill_utils.ts +1 -1
  18. package/claw/modules/types.ts +0 -53
  19. package/claw/package.json +1 -1
  20. package/claw/runtimes/openclaw-plugin/openclaw.plugin.json +1 -1
  21. package/claw/runtimes/openclaw-plugin/package.json +1 -1
  22. package/claw/skills/margin-trading/references/honest-assets.md +1 -1
  23. package/claw/skills/margin-trading/references/position-management.md +2 -2
  24. package/claw/skills/shared/references/js-automation-overview.md +2 -2
  25. package/claw/skills/trend-detection/references/service.md +24 -17
  26. package/claw/tests/test_claw_bridge.ts +47 -47
  27. package/claw/tests/test_claw_catalog_and_credentials.ts +9 -9
  28. package/claw/tests/test_claw_chain_layer.ts +54 -54
  29. package/claw/tests/test_claw_data_flow.ts +41 -41
  30. package/claw/tests/test_claw_domain_logic.ts +26 -26
  31. package/claw/tests/test_claw_manifest_and_matrix.ts +1 -1
  32. package/claw/tests/test_claw_mcp_transport.ts +16 -16
  33. package/claw/tests/test_claw_regressions.ts +43 -43
  34. package/claw/tests/test_claw_skill_generation.ts +1 -1
  35. package/claw/tests/test_claw_state_store.ts +2 -2
  36. package/claw/tests/test_dexbot_profiles.ts +4 -4
  37. package/claw/tests/test_memu_bridge.ts +3 -3
  38. package/claw/tests/test_nullclaw_tmp_integration.ts +1 -1
  39. package/claw/tests/test_position_health.ts +2 -2
  40. package/claw/tests/test_position_manager.ts +18 -18
  41. package/claw/tests/test_position_manager_watch_health.ts +2 -2
  42. package/claw/tests/test_short_mpa_strategy.ts +12 -12
  43. package/dist/analysis/chart_utils.d.ts +13 -1
  44. package/dist/analysis/chart_utils.d.ts.map +1 -1
  45. package/dist/analysis/chart_utils.js +16 -1
  46. package/dist/analysis/chart_utils.js.map +1 -1
  47. package/dist/analysis/math_utils.d.ts +8 -12
  48. package/dist/analysis/math_utils.d.ts.map +1 -1
  49. package/dist/analysis/math_utils.js +9 -75
  50. package/dist/analysis/math_utils.js.map +1 -1
  51. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +4 -4
  52. package/dist/dexbot.d.ts.map +1 -1
  53. package/dist/dexbot.js +54 -35
  54. package/dist/dexbot.js.map +1 -1
  55. package/dist/market_adapter/candle_utils.d.ts +18 -1
  56. package/dist/market_adapter/candle_utils.d.ts.map +1 -1
  57. package/dist/market_adapter/candle_utils.js +50 -1
  58. package/dist/market_adapter/candle_utils.js.map +1 -1
  59. package/dist/market_adapter/core/config_normalizers.js +1 -1
  60. package/dist/market_adapter/core/config_normalizers.js.map +1 -1
  61. package/dist/market_adapter/core/kibana_client.d.ts +2 -2
  62. package/dist/market_adapter/core/kibana_client.js +2 -2
  63. package/dist/market_adapter/core/kibana_market_candles.d.ts +1 -87
  64. package/dist/market_adapter/core/kibana_market_candles.d.ts.map +1 -1
  65. package/dist/market_adapter/core/kibana_market_candles.js +1 -80
  66. package/dist/market_adapter/core/kibana_market_candles.js.map +1 -1
  67. package/dist/market_adapter/core/market_adapter_service.d.ts +0 -8
  68. package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -1
  69. package/dist/market_adapter/core/market_adapter_service.js +28 -115
  70. package/dist/market_adapter/core/market_adapter_service.js.map +1 -1
  71. package/dist/market_adapter/core/signals/hurst_analyzer.d.ts.map +1 -0
  72. package/dist/{analysis/trend_detection → market_adapter/core/signals}/hurst_analyzer.js +2 -2
  73. package/dist/market_adapter/core/signals/hurst_analyzer.js.map +1 -0
  74. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_trend_analyzer.d.ts +0 -1
  75. package/dist/market_adapter/core/signals/kalman_trend_analyzer.d.ts.map +1 -0
  76. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_trend_analyzer.js +2 -4
  77. package/dist/market_adapter/core/signals/kalman_trend_analyzer.js.map +1 -0
  78. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_velocity_smoothing.d.ts +25 -4
  79. package/dist/market_adapter/core/signals/kalman_velocity_smoothing.d.ts.map +1 -0
  80. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_velocity_smoothing.js +41 -19
  81. package/dist/market_adapter/core/signals/kalman_velocity_smoothing.js.map +1 -0
  82. package/dist/market_adapter/core/signals/permutation_entropy_analyzer.d.ts.map +1 -0
  83. package/dist/{analysis/trend_detection → market_adapter/core/signals}/permutation_entropy_analyzer.js +2 -2
  84. package/dist/market_adapter/core/signals/permutation_entropy_analyzer.js.map +1 -0
  85. package/dist/market_adapter/core/strategies/ama.d.ts +1 -19
  86. package/dist/market_adapter/core/strategies/ama.d.ts.map +1 -1
  87. package/dist/market_adapter/core/strategies/ama.js +1 -1
  88. package/dist/market_adapter/core/strategies/ama.js.map +1 -1
  89. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts +2 -13
  90. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts.map +1 -1
  91. package/dist/market_adapter/core/strategies/ama_slope_model.js +15 -26
  92. package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -1
  93. package/dist/market_adapter/core/strategies/atr/calculator.d.ts +38 -3
  94. package/dist/market_adapter/core/strategies/atr/calculator.d.ts.map +1 -1
  95. package/dist/market_adapter/core/strategies/atr/calculator.js +84 -24
  96. package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -1
  97. package/dist/market_adapter/core/strategies/collateral_manager.d.ts +1 -1
  98. package/dist/market_adapter/core/strategies/collateral_manager.js +1 -1
  99. package/dist/market_adapter/core/strategies/dynamic_weight_series.d.ts +32 -0
  100. package/dist/market_adapter/core/strategies/dynamic_weight_series.d.ts.map +1 -0
  101. package/dist/market_adapter/core/strategies/dynamic_weight_series.js +136 -0
  102. package/dist/market_adapter/core/strategies/dynamic_weight_series.js.map +1 -0
  103. package/dist/market_adapter/core/strategies/regime_gate.d.ts +6 -21
  104. package/dist/market_adapter/core/strategies/regime_gate.d.ts.map +1 -1
  105. package/dist/market_adapter/core/strategies/regime_gate.js +11 -74
  106. package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -1
  107. package/dist/market_adapter/core/strategies/regime_interp.d.ts +13 -0
  108. package/dist/market_adapter/core/strategies/regime_interp.d.ts.map +1 -0
  109. package/dist/market_adapter/core/strategies/regime_interp.js +74 -0
  110. package/dist/market_adapter/core/strategies/regime_interp.js.map +1 -0
  111. package/dist/market_adapter/core/strategies/volatility_shift.d.ts +22 -0
  112. package/dist/market_adapter/core/strategies/volatility_shift.d.ts.map +1 -0
  113. package/dist/market_adapter/core/strategies/volatility_shift.js +37 -0
  114. package/dist/market_adapter/core/strategies/volatility_shift.js.map +1 -0
  115. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +3 -4
  116. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -1
  117. package/dist/market_adapter/inputs/fetch_lp_data.d.ts +1 -10
  118. package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -1
  119. package/dist/market_adapter/inputs/fetch_lp_data.js +1 -1
  120. package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -1
  121. package/dist/market_adapter/lp_chart_core.d.ts.map +1 -1
  122. package/dist/market_adapter/lp_chart_core.js +0 -10
  123. package/dist/market_adapter/lp_chart_core.js.map +1 -1
  124. package/dist/market_adapter/lp_chart_runner.d.ts +1 -16
  125. package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -1
  126. package/dist/market_adapter/lp_chart_runner.js +1 -15
  127. package/dist/market_adapter/lp_chart_runner.js.map +1 -1
  128. package/dist/market_adapter/market_adapter.d.ts +3 -3
  129. package/dist/market_adapter/market_adapter.d.ts.map +1 -1
  130. package/dist/market_adapter/market_adapter.js +6 -8
  131. package/dist/market_adapter/market_adapter.js.map +1 -1
  132. package/dist/market_adapter/merge_lp_data.js +5 -5
  133. package/dist/market_adapter/utils/adapter_client.d.ts +1 -3
  134. package/dist/market_adapter/utils/adapter_client.d.ts.map +1 -1
  135. package/dist/market_adapter/utils/adapter_client.js +1 -14
  136. package/dist/market_adapter/utils/adapter_client.js.map +1 -1
  137. package/dist/market_adapter/utils/data_discovery.d.ts.map +1 -1
  138. package/dist/market_adapter/utils/data_discovery.js +1 -2
  139. package/dist/market_adapter/utils/data_discovery.js.map +1 -1
  140. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts +1 -3
  141. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -1
  142. package/dist/market_adapter/utils/dynamic_grid_snapshot.js +1 -1
  143. package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -1
  144. package/dist/market_adapter/utils/file_lock.d.ts +10 -2
  145. package/dist/market_adapter/utils/file_lock.d.ts.map +1 -1
  146. package/dist/market_adapter/utils/file_lock.js +171 -102
  147. package/dist/market_adapter/utils/file_lock.js.map +1 -1
  148. package/dist/market_adapter/utils/native_history.d.ts +1 -9
  149. package/dist/market_adapter/utils/native_history.d.ts.map +1 -1
  150. package/dist/market_adapter/utils/native_history.js +1 -21
  151. package/dist/market_adapter/utils/native_history.js.map +1 -1
  152. package/dist/modules/account_bots.d.ts +16 -38
  153. package/dist/modules/account_bots.d.ts.map +1 -1
  154. package/dist/modules/account_bots.js +16 -38
  155. package/dist/modules/account_bots.js.map +1 -1
  156. package/dist/modules/account_orders.d.ts +11 -11
  157. package/dist/modules/account_orders.d.ts.map +1 -1
  158. package/dist/modules/account_orders.js +11 -18
  159. package/dist/modules/account_orders.js.map +1 -1
  160. package/dist/modules/bitshares_client.d.ts +5 -8
  161. package/dist/modules/bitshares_client.d.ts.map +1 -1
  162. package/dist/modules/bitshares_client.js +6 -10
  163. package/dist/modules/bitshares_client.js.map +1 -1
  164. package/dist/modules/bots_file_lock.d.ts +8 -5
  165. package/dist/modules/bots_file_lock.d.ts.map +1 -1
  166. package/dist/modules/bots_file_lock.js +8 -5
  167. package/dist/modules/bots_file_lock.js.map +1 -1
  168. package/dist/modules/chain_keys.d.ts +31 -22
  169. package/dist/modules/chain_keys.d.ts.map +1 -1
  170. package/dist/modules/chain_keys.js +31 -22
  171. package/dist/modules/chain_keys.js.map +1 -1
  172. package/dist/modules/chain_orders.d.ts +52 -48
  173. package/dist/modules/chain_orders.d.ts.map +1 -1
  174. package/dist/modules/chain_orders.js +124 -49
  175. package/dist/modules/chain_orders.js.map +1 -1
  176. package/dist/modules/config.d.ts +3 -0
  177. package/dist/modules/config.d.ts.map +1 -1
  178. package/dist/modules/config.js +3 -0
  179. package/dist/modules/config.js.map +1 -1
  180. package/dist/modules/constants.d.ts +17 -13
  181. package/dist/modules/constants.d.ts.map +1 -1
  182. package/dist/modules/constants.js +42 -21
  183. package/dist/modules/constants.js.map +1 -1
  184. package/dist/modules/cr_planner.d.ts +2 -1
  185. package/dist/modules/cr_planner.d.ts.map +1 -1
  186. package/dist/modules/cr_planner.js +1 -1
  187. package/dist/modules/cr_planner.js.map +1 -1
  188. package/dist/modules/credential_policy.d.ts +6 -4
  189. package/dist/modules/credential_policy.d.ts.map +1 -1
  190. package/dist/modules/credential_policy.js +6 -4
  191. package/dist/modules/credential_policy.js.map +1 -1
  192. package/dist/modules/credit_runtime.d.ts.map +1 -1
  193. package/dist/modules/credit_runtime.js +4 -8
  194. package/dist/modules/credit_runtime.js.map +1 -1
  195. package/dist/modules/dexbot_class.d.ts +33 -88
  196. package/dist/modules/dexbot_class.d.ts.map +1 -1
  197. package/dist/modules/dexbot_class.js +36 -68
  198. package/dist/modules/dexbot_class.js.map +1 -1
  199. package/dist/modules/dexbot_cow_runtime.d.ts +7 -7
  200. package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -1
  201. package/dist/modules/dexbot_cow_runtime.js +7 -7
  202. package/dist/modules/dexbot_cow_runtime.js.map +1 -1
  203. package/dist/modules/dexbot_credential_client.d.ts +3 -3
  204. package/dist/modules/dexbot_credential_client.js +3 -3
  205. package/dist/modules/dexbot_credential_client.js.map +1 -1
  206. package/dist/modules/dexbot_fill_runtime.d.ts +1 -7
  207. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
  208. package/dist/modules/dexbot_fill_runtime.js +1 -9
  209. package/dist/modules/dexbot_fill_runtime.js.map +1 -1
  210. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  211. package/dist/modules/dexbot_maintenance_runtime.js +3 -1
  212. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  213. package/dist/modules/dexbot_state_recovery.d.ts.map +1 -1
  214. package/dist/modules/dexbot_state_recovery.js +99 -1
  215. package/dist/modules/dexbot_state_recovery.js.map +1 -1
  216. package/dist/modules/graceful_shutdown.d.ts +4 -2
  217. package/dist/modules/graceful_shutdown.d.ts.map +1 -1
  218. package/dist/modules/graceful_shutdown.js +4 -2
  219. package/dist/modules/graceful_shutdown.js.map +1 -1
  220. package/dist/modules/launcher/bot_supervisor.d.ts +1 -1
  221. package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -1
  222. package/dist/modules/launcher/bot_supervisor.js +1 -4
  223. package/dist/modules/launcher/bot_supervisor.js.map +1 -1
  224. package/dist/modules/launcher/child_env.d.ts.map +1 -1
  225. package/dist/modules/launcher/child_env.js +3 -0
  226. package/dist/modules/launcher/child_env.js.map +1 -1
  227. package/dist/modules/market_adapter_whitelist.d.ts +1 -2
  228. package/dist/modules/market_adapter_whitelist.d.ts.map +1 -1
  229. package/dist/modules/market_adapter_whitelist.js +1 -4
  230. package/dist/modules/market_adapter_whitelist.js.map +1 -1
  231. package/dist/modules/node_health_cache.d.ts +12 -4
  232. package/dist/modules/node_health_cache.d.ts.map +1 -1
  233. package/dist/modules/node_health_cache.js +13 -13
  234. package/dist/modules/node_health_cache.js.map +1 -1
  235. package/dist/modules/node_manager.d.ts.map +1 -1
  236. package/dist/modules/node_manager.js +3 -6
  237. package/dist/modules/node_manager.js.map +1 -1
  238. package/dist/modules/order/accounting.d.ts +2 -37
  239. package/dist/modules/order/accounting.d.ts.map +1 -1
  240. package/dist/modules/order/accounting.js +2 -64
  241. package/dist/modules/order/accounting.js.map +1 -1
  242. package/dist/modules/order/export.d.ts +1 -37
  243. package/dist/modules/order/export.d.ts.map +1 -1
  244. package/dist/modules/order/export.js +1 -1
  245. package/dist/modules/order/export.js.map +1 -1
  246. package/dist/modules/order/format.d.ts +28 -14
  247. package/dist/modules/order/format.d.ts.map +1 -1
  248. package/dist/modules/order/format.js +73 -18
  249. package/dist/modules/order/format.js.map +1 -1
  250. package/dist/modules/order/grid.d.ts +11 -5
  251. package/dist/modules/order/grid.d.ts.map +1 -1
  252. package/dist/modules/order/grid.js +79 -37
  253. package/dist/modules/order/grid.js.map +1 -1
  254. package/dist/modules/order/grid_reconcile_internal.js +2 -2
  255. package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
  256. package/dist/modules/order/logger_state.d.ts +3 -45
  257. package/dist/modules/order/logger_state.d.ts.map +1 -1
  258. package/dist/modules/order/logger_state.js +3 -55
  259. package/dist/modules/order/logger_state.js.map +1 -1
  260. package/dist/modules/order/manager.d.ts +0 -4
  261. package/dist/modules/order/manager.d.ts.map +1 -1
  262. package/dist/modules/order/manager.js +3 -9
  263. package/dist/modules/order/manager.js.map +1 -1
  264. package/dist/modules/order/sync_engine.d.ts +0 -2
  265. package/dist/modules/order/sync_engine.d.ts.map +1 -1
  266. package/dist/modules/order/sync_engine.js +1 -4
  267. package/dist/modules/order/sync_engine.js.map +1 -1
  268. package/dist/modules/order/utils/math.d.ts +2 -11
  269. package/dist/modules/order/utils/math.d.ts.map +1 -1
  270. package/dist/modules/order/utils/math.js +3 -14
  271. package/dist/modules/order/utils/math.js.map +1 -1
  272. package/dist/modules/order/utils/order.d.ts +1 -17
  273. package/dist/modules/order/utils/order.d.ts.map +1 -1
  274. package/dist/modules/order/utils/order.js +3 -21
  275. package/dist/modules/order/utils/order.js.map +1 -1
  276. package/dist/modules/order/utils/system.d.ts +1 -11
  277. package/dist/modules/order/utils/system.d.ts.map +1 -1
  278. package/dist/modules/order/utils/system.js +3 -3
  279. package/dist/modules/order/utils/system.js.map +1 -1
  280. package/dist/modules/order/utils/validate.d.ts +1 -26
  281. package/dist/modules/order/utils/validate.d.ts.map +1 -1
  282. package/dist/modules/order/utils/validate.js +1 -1
  283. package/dist/modules/order/utils/validate.js.map +1 -1
  284. package/dist/modules/order/working_grid.d.ts +3 -9
  285. package/dist/modules/order/working_grid.d.ts.map +1 -1
  286. package/dist/modules/order/working_grid.js +3 -11
  287. package/dist/modules/order/working_grid.js.map +1 -1
  288. package/dist/modules/paths.d.ts +43 -2
  289. package/dist/modules/paths.d.ts.map +1 -1
  290. package/dist/modules/paths.js +81 -21
  291. package/dist/modules/paths.js.map +1 -1
  292. package/dist/modules/runtime_settings.js +1 -1
  293. package/dist/modules/runtime_settings.js.map +1 -1
  294. package/dist/pm2.d.ts +1 -1
  295. package/dist/pm2.d.ts.map +1 -1
  296. package/dist/pm2.js +1 -4
  297. package/dist/pm2.js.map +1 -1
  298. package/dist/scripts/analyze-orders.d.ts.map +1 -1
  299. package/dist/scripts/analyze-orders.js +36 -45
  300. package/dist/scripts/analyze-orders.js.map +1 -1
  301. package/dist/scripts/sync-version.js +22 -0
  302. package/dist/scripts/sync-version.js.map +1 -1
  303. package/ecosystem.config.cjs +32 -0
  304. package/package.json +4 -1
  305. package/scripts/README.md +24 -8
  306. package/scripts/clear-all.sh +39 -12
  307. package/scripts/clear-logs.sh +1 -1
  308. package/scripts/clear-market-adapter.sh +3 -3
  309. package/scripts/clear-orders.sh +1 -1
  310. package/scripts/create-bot-symlinks.sh +4 -2
  311. package/scripts/lib/dexbot-paths.sh +63 -0
  312. package/scripts/reset-settings.sh +1 -1
  313. package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +0 -1
  314. package/dist/analysis/trend_detection/hurst_analyzer.js.map +0 -1
  315. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +0 -1
  316. package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +0 -1
  317. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +0 -1
  318. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +0 -1
  319. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +0 -1
  320. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +0 -1
  321. package/dist/market_adapter/index.d.ts +0 -32
  322. package/dist/market_adapter/index.d.ts.map +0 -1
  323. package/dist/market_adapter/index.js +0 -39
  324. package/dist/market_adapter/index.js.map +0 -1
  325. package/dist/scripts/fix-err-message.d.ts +0 -3
  326. package/dist/scripts/fix-err-message.d.ts.map +0 -1
  327. package/dist/scripts/fix-err-message.js +0 -193
  328. package/dist/scripts/fix-err-message.js.map +0 -1
  329. /package/dist/{analysis/trend_detection → market_adapter/core/signals}/hurst_analyzer.d.ts +0 -0
  330. /package/dist/{analysis/trend_detection → market_adapter/core/signals}/permutation_entropy_analyzer.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"candle_utils.d.ts","sourceRoot":"","sources":["../../market_adapter/candle_utils.ts"],"names":[],"mappings":"AA+BA,iBAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,SAAO,WAmCrF;AAED,iBAAS,6BAA6B,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,SAAO;;;EAgC1E;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAE,GAAU,EAAE,KAAK,GAAE,GAAU,EAAE,OAAO,GAAE,GAAQ,SAmEpH;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;;;;SAwBpD;AAED;;;;;;;;;GASG;AACH,iBAAS,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,OAMnD;AAED,iBAAS,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,GAAE,GAAQ,SAc9D;AAED,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"candle_utils.d.ts","sourceRoot":"","sources":["../../market_adapter/candle_utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,iBAAS,aAAa,CAAC,MAAM,EAAE,GAAG,OAGjC;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,GAAG,OAGhC;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,GAAG,OAGlC;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,GAAG,OAGtC;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,GAAG;;;;;;;SAqBnC;AA+BD,iBAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,SAAO,WAmCrF;AAED,iBAAS,6BAA6B,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,SAAO;;;EAgC1E;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAE,GAAU,EAAE,KAAK,GAAE,GAAU,EAAE,OAAO,GAAE,GAAQ,SAmEpH;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;;;;SAwBpD;AAED;;;;;;;;;GASG;AACH,iBAAS,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,OAMnD;AAED,iBAAS,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,GAAE,GAAQ,SAc9D;AAED,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,6BAA6B,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA"}
@@ -1,4 +1,53 @@
1
1
  'use strict';
2
+ /**
3
+ * Candle field accessors and transforms — canonical implementations shared by
4
+ * the production market adapter and the analysis tooling (via
5
+ * analysis/math_utils.ts). Keeps every consumer on one accessor path.
6
+ */
7
+ function getCandleHigh(candle) {
8
+ if (!candle)
9
+ return null;
10
+ return Array.isArray(candle) ? candle[2] : candle.high;
11
+ }
12
+ function getCandleLow(candle) {
13
+ if (!candle)
14
+ return null;
15
+ return Array.isArray(candle) ? candle[3] : candle.low;
16
+ }
17
+ function getCandleClose(candle) {
18
+ if (!candle)
19
+ return null;
20
+ return Array.isArray(candle) ? candle[4] : candle.close;
21
+ }
22
+ function getCandleTimestamp(candle) {
23
+ if (!candle)
24
+ return null;
25
+ return Array.isArray(candle) ? candle[0] : candle.timestamp;
26
+ }
27
+ function normalizeCandle(candle) {
28
+ if (!candle)
29
+ return null;
30
+ if (Array.isArray(candle)) {
31
+ const ts = Number(candle[0]);
32
+ const open = Number(candle[1]);
33
+ const high = Number(candle[2]);
34
+ const low = Number(candle[3]);
35
+ const close = Number(candle[4]);
36
+ const volume = Number(candle[5] ?? 0);
37
+ if (![ts, open, high, low, close].every(Number.isFinite))
38
+ return null;
39
+ return { time: Math.floor(ts / 1000), open, high, low, close, volume: Number.isFinite(volume) ? volume : 0 };
40
+ }
41
+ const ts = Number(candle.timestamp ?? candle.ts ?? candle.time);
42
+ const open = Number(candle.open);
43
+ const high = Number(candle.high);
44
+ const low = Number(candle.low);
45
+ const close = Number(candle.close);
46
+ const volume = Number(candle.volume ?? candle.volumeA ?? 0);
47
+ if (![ts, open, high, low, close].every(Number.isFinite))
48
+ return null;
49
+ return { time: Math.floor(ts / 1000), open, high, low, close, volume: Number.isFinite(volume) ? volume : 0 };
50
+ }
2
51
  function rawToHuman(rawAmount, precision) {
3
52
  if (precision === undefined || precision === null || !Number.isFinite(Number(precision))) {
4
53
  throw new Error(`Invalid precision for rawToHuman: ${precision}`);
@@ -241,5 +290,5 @@ function mergeCandles(a, b, { onCollision } = {}) {
241
290
  }
242
291
  return [...map.values()].sort((x, y) => x[0] - y[0]);
243
292
  }
244
- export { tradesToCandles, detectMissingCandleTimestamps, fillCandleGaps, detectStaleTail, pruneStaleTail, mergeCandles };
293
+ export { getCandleClose, getCandleHigh, getCandleLow, getCandleTimestamp, normalizeCandle, tradesToCandles, detectMissingCandleTimestamps, fillCandleGaps, detectStaleTail, pruneStaleTail, mergeCandles };
245
294
  //# sourceMappingURL=candle_utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"candle_utils.js","sourceRoot":"","sources":["../../market_adapter/candle_utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"candle_utils.js","sourceRoot":"","sources":["../../market_adapter/candle_utils.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ function normalizeAtrPeriod(period, defaultValue = MARKET_ADAPTER.DYNAMIC_WEIGHT
5
5
  if (!Number.isFinite(value) || value <= 0)
6
6
  return defaultValue;
7
7
  const rounded = Math.round(value);
8
- return Math.max(3, Math.min(30, rounded));
8
+ return Math.max(MARKET_ADAPTER.DYNAMIC_WEIGHT_ATR_PERIOD_MIN, Math.min(MARKET_ADAPTER.DYNAMIC_WEIGHT_ATR_PERIOD_MAX, rounded));
9
9
  }
10
10
  function normalizeMaxVolatilityOffset(value, defaultValue = MARKET_ADAPTER.DYNAMIC_WEIGHT_SYMMETRIC_SHIFT_CLAMP) {
11
11
  const numeric = Number(value);
@@ -1 +1 @@
1
- {"version":3,"file":"config_normalizers.js","sourceRoot":"","sources":["../../../market_adapter/core/config_normalizers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,CAAC;AAGb,SAAS,kBAAkB,CAAC,MAAW,EAAE,YAAY,GAAG,cAAc,CAAC,iCAAiC;IACpG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAE/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAU,EAAE,YAAY,GAAG,cAAc,CAAC,oCAAoC;IAChH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,iDAAiD;IACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7E,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAU,EAAE,YAAY,GAAG,cAAc,CAAC,wCAAwC;IACpH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7E,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,CAAA"}
1
+ {"version":3,"file":"config_normalizers.js","sourceRoot":"","sources":["../../../market_adapter/core/config_normalizers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,CAAC;AAGb,SAAS,kBAAkB,CAAC,MAAW,EAAE,YAAY,GAAG,cAAc,CAAC,iCAAiC;IACpG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAE/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,6BAA6B,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC,CAAC;AACnI,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAU,EAAE,YAAY,GAAG,cAAc,CAAC,oCAAoC;IAChH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,iDAAiD;IACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7E,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAU,EAAE,YAAY,GAAG,cAAc,CAAC,wCAAwC;IACpH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7E,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,CAAA"}
@@ -2,8 +2,8 @@
2
2
  * KIBANA ELASTICSEARCH CLIENT
3
3
  *
4
4
  * Shared HTTP client for querying the BitShares Kibana instance.
5
- * Extracted from kibana_source.js and kibana_bot_queries.js to
6
- * eliminate duplication.
5
+ * Centralizes the request/response handling used by the Kibana candle
6
+ * sources (inputs/kibana_source.ts, core/kibana_candles.ts).
7
7
  *
8
8
  * All Kibana-consuming modules should use this client instead of
9
9
  * maintaining their own HTTP implementation.
@@ -2,8 +2,8 @@
2
2
  * KIBANA ELASTICSEARCH CLIENT
3
3
  *
4
4
  * Shared HTTP client for querying the BitShares Kibana instance.
5
- * Extracted from kibana_source.js and kibana_bot_queries.js to
6
- * eliminate duplication.
5
+ * Centralizes the request/response handling used by the Kibana candle
6
+ * sources (inputs/kibana_source.ts, core/kibana_candles.ts).
7
7
  *
8
8
  * All Kibana-consuming modules should use this client instead of
9
9
  * maintaining their own HTTP implementation.
@@ -25,81 +25,6 @@
25
25
  * Output: [[timestamp_ms, open, high, low, close, volume_base], ...]
26
26
  * Same OHLCV format as kibana_source.ts for compatibility with candle_utils.
27
27
  */
28
- /**
29
- * Build ES query for fill_order aggregation in one direction.
30
- *
31
- * Filters fills where pays.asset_id = soldAssetId, aggregates by time bucket:
32
- * sum_sold = Σ pays.amount
33
- * sum_received = Σ receives.amount
34
- *
35
- * VWAP per bucket = sum_received / sum_sold (precision-adjusted externally).
36
- *
37
- * @param {string} soldAssetId – e.g. '1.3.0' (BTS)
38
- * @param {string} receivedAssetId – e.g. '1.3.5649' (HONEST.USD)
39
- * @param {number} lookbackHours
40
- * @param {number} intervalSeconds
41
- * @param {Object|null} timeRange – { gte, lte } ISO strings
42
- * @returns {Object} ES query object
43
- */
44
- declare function buildFillCandleQuery(soldAssetId: any, receivedAssetId: any, lookbackHours: any, intervalSeconds: any, timeRange?: any): {
45
- size: number;
46
- query: {
47
- bool: {
48
- filter: ({
49
- term: {
50
- operation_type: number;
51
- 'operation_history.op_object.pays.asset_id.keyword'?: undefined;
52
- 'operation_history.op_object.receives.asset_id.keyword'?: undefined;
53
- };
54
- range?: undefined;
55
- } | {
56
- term: {
57
- 'operation_history.op_object.pays.asset_id.keyword': any;
58
- operation_type?: undefined;
59
- 'operation_history.op_object.receives.asset_id.keyword'?: undefined;
60
- };
61
- range?: undefined;
62
- } | {
63
- term: {
64
- 'operation_history.op_object.receives.asset_id.keyword': any;
65
- operation_type?: undefined;
66
- 'operation_history.op_object.pays.asset_id.keyword'?: undefined;
67
- };
68
- range?: undefined;
69
- } | {
70
- range: {
71
- 'block_data.block_time': {
72
- gte: any;
73
- lte: any;
74
- };
75
- };
76
- term?: undefined;
77
- })[];
78
- };
79
- };
80
- aggs: {
81
- by_time: {
82
- date_histogram: {
83
- field: string;
84
- fixed_interval: string;
85
- min_doc_count: number;
86
- };
87
- aggs: {
88
- sum_sold: {
89
- sum: {
90
- field: string;
91
- };
92
- };
93
- sum_received: {
94
- sum: {
95
- field: string;
96
- };
97
- };
98
- };
99
- };
100
- };
101
- };
102
- declare function bucketsToCandles(buckets: any, soldPrecision: any, receivedPrecision: any): any;
103
28
  /**
104
29
  * Fetch bidirectional fill candles for an asset pair.
105
30
  *
@@ -121,16 +46,5 @@ declare function getMarketCandles(assetA: any, assetB: any, config?: any): Promi
121
46
  * @returns {Promise<Object>} Parsed close price response
122
47
  */
123
48
  declare function getMarketClosePrices(assetA: any, assetB: any, config?: any): Promise<any[]>;
124
- /**
125
- * Fetch candles for an MPA/BTS market using symbol strings.
126
- * Resolves asset objects internally using chain queries if available,
127
- * or accepts pre-resolved asset objects.
128
- *
129
- * @param {Object} baseAsset – { id, precision, symbol } for BTS
130
- * @param {Object} quoteAsset – { id, precision, symbol } for the MPA
131
- * @param {Object} [config]
132
- * @returns {Promise<Array>} OHLCV candles (quote-per-base, e.g. HONEST.USD per BTS)
133
- */
134
- declare function getMpaCandles(baseAsset: any, quoteAsset: any, config?: any): Promise<any[]>;
135
- export { getMarketCandles, getMarketClosePrices, getMpaCandles, buildFillCandleQuery, bucketsToCandles };
49
+ export { getMarketCandles, getMarketClosePrices };
136
50
  //# sourceMappingURL=kibana_market_candles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kibana_market_candles.d.ts","sourceRoot":"","sources":["../../../market_adapter/core/kibana_market_candles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAmBH;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,oBAAoB,CAAC,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,GAAE,GAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCpI;AAID,iBAAS,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,OAYjF;AAID;;;;;;;;;;GAUG;AACH,iBAAe,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAE,GAAQ,kBAQzE;AAED;;;;;;;GAOG;AACH,iBAAe,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAE,GAAQ,kBAQ7E;AAED;;;;;;;;;GASG;AACH,iBAAe,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAE,GAAQ,kBAE7E;AAED,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"kibana_market_candles.d.ts","sourceRoot":"","sources":["../../../market_adapter/core/kibana_market_candles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAkBH;;;;;;;;;;GAUG;AACH,iBAAe,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAE,GAAQ,kBAQzE;AAED;;;;;;;GAOG;AACH,iBAAe,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAE,GAAQ,kBAQ7E;AAED,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAA"}
@@ -25,7 +25,6 @@
25
25
  * Output: [[timestamp_ms, open, high, low, close, volume_base], ...]
26
26
  * Same OHLCV format as kibana_source.ts for compatibility with candle_utils.
27
27
  */
28
- import { toIntervalLabel } from '../interval_utils.js';
29
28
  import { fetchKibanaCandles, fetchKibanaClosePrices } from './kibana_candles.js';
30
29
  'use strict';
31
30
  const OP_FILL_ORDER = 4;
@@ -35,71 +34,6 @@ const FILL_FIELD_MAP = {
35
34
  soldAmountField: 'operation_history.op_object.pays.amount',
36
35
  receivedAmountField: 'operation_history.op_object.receives.amount',
37
36
  };
38
- // ─── Query Builders ──────────────────────────────────────────────────────────
39
- /**
40
- * Build ES query for fill_order aggregation in one direction.
41
- *
42
- * Filters fills where pays.asset_id = soldAssetId, aggregates by time bucket:
43
- * sum_sold = Σ pays.amount
44
- * sum_received = Σ receives.amount
45
- *
46
- * VWAP per bucket = sum_received / sum_sold (precision-adjusted externally).
47
- *
48
- * @param {string} soldAssetId – e.g. '1.3.0' (BTS)
49
- * @param {string} receivedAssetId – e.g. '1.3.5649' (HONEST.USD)
50
- * @param {number} lookbackHours
51
- * @param {number} intervalSeconds
52
- * @param {Object|null} timeRange – { gte, lte } ISO strings
53
- * @returns {Object} ES query object
54
- */
55
- function buildFillCandleQuery(soldAssetId, receivedAssetId, lookbackHours, intervalSeconds, timeRange = null) {
56
- const rangeValue = timeRange
57
- ? { gte: timeRange.gte, lte: timeRange.lte }
58
- : { gte: `now-${lookbackHours}h`, lte: 'now' };
59
- return {
60
- size: 0,
61
- query: {
62
- bool: {
63
- filter: [
64
- { term: { operation_type: OP_FILL_ORDER } },
65
- { term: { 'operation_history.op_object.pays.asset_id.keyword': soldAssetId } },
66
- { term: { 'operation_history.op_object.receives.asset_id.keyword': receivedAssetId } },
67
- { range: { 'block_data.block_time': rangeValue } },
68
- ],
69
- },
70
- },
71
- aggs: {
72
- by_time: {
73
- date_histogram: {
74
- field: 'block_data.block_time',
75
- fixed_interval: toIntervalLabel(intervalSeconds),
76
- min_doc_count: 1,
77
- },
78
- aggs: {
79
- sum_sold: {
80
- sum: { field: 'operation_history.op_object.pays.amount' },
81
- },
82
- sum_received: {
83
- sum: { field: 'operation_history.op_object.receives.amount' },
84
- },
85
- },
86
- },
87
- },
88
- };
89
- }
90
- // ─── Bucket → Candle ─────────────────────────────────────────────────────────
91
- function bucketsToCandles(buckets, soldPrecision, receivedPrecision) {
92
- const soldScale = Math.pow(10, soldPrecision);
93
- const recvScale = Math.pow(10, receivedPrecision);
94
- return buckets
95
- .filter((b) => b.sum_sold.value > 0 && b.sum_received.value > 0)
96
- .map((b) => {
97
- const soldAmt = b.sum_sold.value / soldScale;
98
- const recvAmt = b.sum_received.value / recvScale;
99
- const vwap = recvAmt / soldAmt;
100
- return [b.key, vwap, vwap, vwap, vwap, soldAmt];
101
- });
102
- }
103
37
  // ─── Public API ──────────────────────────────────────────────────────────────
104
38
  /**
105
39
  * Fetch bidirectional fill candles for an asset pair.
@@ -138,18 +72,5 @@ async function getMarketClosePrices(assetA, assetB, config = {}) {
138
72
  config,
139
73
  });
140
74
  }
141
- /**
142
- * Fetch candles for an MPA/BTS market using symbol strings.
143
- * Resolves asset objects internally using chain queries if available,
144
- * or accepts pre-resolved asset objects.
145
- *
146
- * @param {Object} baseAsset – { id, precision, symbol } for BTS
147
- * @param {Object} quoteAsset – { id, precision, symbol } for the MPA
148
- * @param {Object} [config]
149
- * @returns {Promise<Array>} OHLCV candles (quote-per-base, e.g. HONEST.USD per BTS)
150
- */
151
- async function getMpaCandles(baseAsset, quoteAsset, config = {}) {
152
- return getMarketCandles(baseAsset, quoteAsset, config);
153
- }
154
- export { getMarketCandles, getMarketClosePrices, getMpaCandles, buildFillCandleQuery, bucketsToCandles };
75
+ export { getMarketCandles, getMarketClosePrices };
155
76
  //# sourceMappingURL=kibana_market_candles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kibana_market_candles.js","sourceRoot":"","sources":["../../../market_adapter/core/kibana_market_candles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kibana_market_candles.js","sourceRoot":"","sources":["../../../market_adapter/core/kibana_market_candles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,CAAC;AAGb,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,cAAc,GAAG;IACrB,cAAc,EAAE,mDAAmD;IACnE,kBAAkB,EAAE,uDAAuD;IAC3E,eAAe,EAAE,yCAAyC;IAC1D,mBAAmB,EAAE,6CAA6C;CACnE,CAAC;AAEF,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAW,EAAE,MAAW,EAAE,SAAc,EAAE;IACxE,OAAO,kBAAkB,CAAC;QACxB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,cAAc;QACxB,MAAM;QACN,MAAM;QACN,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,oBAAoB,CAAC,MAAW,EAAE,MAAW,EAAE,SAAc,EAAE;IAC5E,OAAO,sBAAsB,CAAC;QAC5B,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,cAAc;QACxB,MAAM;QACN,MAAM;QACN,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAA"}
@@ -178,14 +178,6 @@ declare class MarketAdapterService {
178
178
  kalmanReady: any;
179
179
  };
180
180
  slopeResult: {
181
- isReady: boolean;
182
- slopeOffset: number;
183
- symmetricDelta: number;
184
- slopePct: number;
185
- clippedSlopePct: number;
186
- confidence: number;
187
- trend: string;
188
- } | {
189
181
  slopeOffset: number;
190
182
  rawSlopeOffset: number;
191
183
  symmetricDelta: number;
@@ -1 +1 @@
1
- {"version":3,"file":"market_adapter_service.d.ts","sourceRoot":"","sources":["../../../market_adapter/core/market_adapter_service.ts"],"names":[],"mappings":"AAiCA,QAAA,MAAM,8BAA8B,WAAW,CAAC;AAGhD,iBAAS,4BAA4B,CAAC,KAAK,EAAE,GAAG,8BAS/C;AAED,iBAAS,6BAA6B,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAE,GAAqD,OAIjH;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,iBAM5E;AA4DD,cAAM,oBAAoB;IACtB,IAAI,EAAE,GAAG,CAAC;gBACE,IAAI,GAAE,GAAQ;IAI1B,MAAM,CAAC,8BAA8B,CAAC,MAAM,EAAE,GAAG;IAOjD,QAAQ;IAIR,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,GAAE,GAAqB;;;;;;;IAgBpF,wBAAwB,CAAC,GAAG,EAAE,GAAG;IAajC,uBAAuB,CAAC,iBAAiB,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAE,GAAQ;;;;IAgB3F,mCAAmC,CAAC,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IAQ1E,oBAAoB,CAAC,GAAG,EAAE,GAAG;IAe7B,oCAAoC,CAAC,GAAG,EAAE,GAAG;IAM7C,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,GAAE,GAAqB;IAwBrH,+BAA+B,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;IAqB5D,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;;;;IA4D9G,6BAA6B,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAE,GAAO;IAoBzD,8BAA8B,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG;IA+BhI,sBAAsB,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAetE,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG;;;;;;;;;IA4B9E,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,GAAE,GAAQ;IA6ClD,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,GAAE,GAAQ;IAgDjD,oCAAoC,CAAC,GAAG,EAAE,GAAG;IAU7C,yBAAyB,CAAC,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;;;;;;;;IAsB/E,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;IAK3D,gCAAgC,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;;;;;;;;;;;;;IA+BjE,sBAAsB,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6Z5B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,GAAE,GAAQ;CAwhDtF;AAED,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,CAAA"}
1
+ {"version":3,"file":"market_adapter_service.d.ts","sourceRoot":"","sources":["../../../market_adapter/core/market_adapter_service.ts"],"names":[],"mappings":"AAkCA,QAAA,MAAM,8BAA8B,WAAW,CAAC;AAGhD,iBAAS,4BAA4B,CAAC,KAAK,EAAE,GAAG,8BAS/C;AAED,iBAAS,6BAA6B,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAE,GAAqD,OAIjH;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,iBAM5E;AA4DD,cAAM,oBAAoB;IACtB,IAAI,EAAE,GAAG,CAAC;gBACE,IAAI,GAAE,GAAQ;IAI1B,MAAM,CAAC,8BAA8B,CAAC,MAAM,EAAE,GAAG;IAOjD,QAAQ;IAIR,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,GAAE,GAAqB;;;;;;;IAgBpF,wBAAwB,CAAC,GAAG,EAAE,GAAG;IAajC,uBAAuB,CAAC,iBAAiB,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAE,GAAQ;;;;IAgB3F,mCAAmC,CAAC,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IAQ1E,oBAAoB,CAAC,GAAG,EAAE,GAAG;IAe7B,oCAAoC,CAAC,GAAG,EAAE,GAAG;IAM7C,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,GAAE,GAAqB;IAwBrH,+BAA+B,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;IAqB5D,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;;;;IA4D9G,6BAA6B,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAE,GAAO;IAoBzD,8BAA8B,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG;IA+BhI,sBAAsB,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAetE,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG;;;;;;;;;IA4B9E,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,GAAE,GAAQ;IA6ClD,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,GAAE,GAAQ;IAgDjD,oCAAoC,CAAC,GAAG,EAAE,GAAG;IAU7C,yBAAyB,CAAC,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;;;;;;;;IAsB/E,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;IAK3D,gCAAgC,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;;;;;;;;;;;;;IA+BjE,sBAAsB,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsV5B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,GAAE,GAAQ;CAihDtF;AAED,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,CAAA"}
@@ -2,7 +2,8 @@ import { calculateATR } from './strategies/atr/calculator.js';
2
2
  import { normalizeMarketSource, hasNumericStartPrice, resolveMarketSourceForBot } from '../utils/chain.js';
3
3
  import { computeRegimeMultiplier } from './strategies/regime_gate.js';
4
4
  import { calculateAMA, getAmaWarmupBars } from './strategies/ama.js';
5
- import { KalmanTrendAnalyzer } from '../../analysis/trend_detection/kalman_trend_analyzer.js';
5
+ import { computeDynamicWeightSeries } from './strategies/dynamic_weight_series.js';
6
+ import { KalmanTrendAnalyzer } from './signals/kalman_trend_analyzer.js';
6
7
  import { adjustCollateralRatio } from './strategies/collateral_manager.js';
7
8
  import { DEFAULT_CONFIG, MARKET_ADAPTER } from '../../modules/constants.js';
8
9
  import { resolveConfiguredPriceBound } from '../../modules/order/utils/order.js';
@@ -11,7 +12,7 @@ import { roundTo } from '../../modules/utils/math_utils.js';
11
12
  'use strict';
12
13
  import { computeAmaSlopeWeights, computeAverageAmaSlopePct, } from './strategies/ama_slope_model.js';
13
14
  import { normalizeAtrPeriod, normalizeMaxVolatilityOffset, normalizeVolatilityThreshold, } from './config_normalizers.js';
14
- import { buildKalmanVelocitySeries, computeAbsolutePercentileThreshold, } from '../../analysis/trend_detection/kalman_velocity_smoothing.js';
15
+ import { buildKalmanVelocitySeries, computeAbsolutePercentileThreshold, } from './signals/kalman_velocity_smoothing.js';
15
16
  import { resolveMaxAsymmetryFactor, computeAsymmetricBoundsMetrics, } from './asymmetric_bounds.js';
16
17
  import { getErrorMessage } from '../../modules/utils/errors.js';
17
18
  const marketAdapterServiceLogger = new Logger('MarketAdapterService');
@@ -560,15 +561,12 @@ class MarketAdapterService {
560
561
  const slopeCfg = {
561
562
  ...(cfg.amaSlope || {}),
562
563
  erPeriod: botAma.erPeriod,
563
- slowPeriod: botAma.slowPeriod,
564
- fastPeriod: botAma.fastPeriod,
565
564
  maxSlopeOffset: cfg.maxSlopeOffset,
566
565
  maxVolatilityOffset: volatilityClamp,
567
566
  volatilityExponent,
568
567
  volatilityScaleX,
569
568
  volatilityThreshold,
570
569
  neutralZonePct: nz,
571
- clipPercentile,
572
570
  clipThreshold: amaClipThreshold,
573
571
  };
574
572
  const slopeResult = computeAmaSlopeWeights(amaValues, weightVariance, slopeCfg);
@@ -623,12 +621,8 @@ class MarketAdapterService {
623
621
  const hasDirectionalOffset = mo > 0;
624
622
  const useAmaBlend = hasDirectionalOffset && alpha !== 0;
625
623
  const useKalmanBlend = hasDirectionalOffset && alpha !== 1;
626
- const useNeutralZone = nz > 0;
627
624
  const useClipThreshold = clipPercentile > 0;
628
- const zeroOutputThreshold = minOutputThreshold === 0;
629
625
  let kalmanSmoothedVelocityPct = new Array(kalmanHistory.length).fill(null);
630
- let amaOffsets = new Array(closes.length).fill(0);
631
- let kalmanOffsets = new Array(closes.length).fill(0);
632
626
  if (useKalmanBlend) {
633
627
  kalmanSmoothedVelocityPct = buildKalmanVelocitySeries(kalmanHistory, {
634
628
  kalmanSmoothPct,
@@ -639,109 +633,35 @@ class MarketAdapterService {
639
633
  kalClipThreshold = useClipThreshold
640
634
  ? computeAbsolutePercentileThreshold(kalmanSmoothedVelocityPct.slice(kalmanWarmupBars), clipPercentile, Infinity)
641
635
  : Infinity;
642
- for (let i = 0; i < kalmanHistory.length; i++) {
643
- const kr = kalmanHistory[i];
644
- const vp = kalmanSmoothedVelocityPct[i];
645
- if (!kr.isReady || vp == null || kr.displacementRawPct == null)
646
- continue;
647
- const dp = kr.displacementRawPct;
648
- const clippedV = Math.max(-kalClipThreshold, Math.min(kalClipThreshold, vp));
649
- if (useNeutralZone && Math.abs(clippedV) < nz)
650
- continue;
651
- const dispScale = Math.max(1e-6, dispScaleMinPct);
652
- const dispConf = Math.min(Math.abs(dp) / dispScale, 1.0);
653
- const momAlign = Math.max(0, (clippedV * dp) / (Math.abs(clippedV) * Math.abs(dp) + 1e-10));
654
- const composite = clippedV * (1 - dw + dw * dispConf * momAlign);
655
- kalmanOffsets[i] = Math.max(-mo, Math.min(mo, (composite / kalMaxS) * mo));
656
- }
657
- }
658
- if (useAmaBlend) {
659
- for (let i = 0; i < closes.length; i++) {
660
- if (!slopeResult.isReady || i < amaSlopeReadyBars)
661
- continue;
662
- const last = amaValues[i];
663
- const past = amaValues[i - lookbackBars];
664
- if (!Number.isFinite(last) || !Number.isFinite(past) || past === 0)
665
- continue;
666
- const sp = computeAverageAmaSlopePct(last, past, lookbackBars);
667
- if (!Number.isFinite(sp))
668
- continue;
669
- const csp = Math.max(-amaClipThreshold, Math.min(amaClipThreshold, sp));
670
- amaOffsets[i] = (!useNeutralZone || Math.abs(csp) >= nz)
671
- ? Math.max(-mo, Math.min(mo, (csp / amaMaxS) * mo))
672
- : 0;
673
- }
674
636
  }
675
637
  const offsetClamp = cfg.maxSlopeOffset ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP;
676
638
  const channelNorm = Math.max(Math.abs(offsetClamp), 1e-9);
677
639
  const outputThreshold = minOutputThreshold;
678
- const outputThresholdIsZero = zeroOutputThreshold;
679
- const combinedOffSeries = new Array(closes.length).fill(0);
680
- const gatedOffSeries = new Array(closes.length).fill(0);
681
- for (let i = 0; i < closes.length; i++) {
682
- let blendedOff;
683
- if (useAmaBlend && useKalmanBlend) {
684
- blendedOff = (alpha * (amaOffsets[i] / channelNorm) + (1 - alpha) * (kalmanOffsets[i] / channelNorm));
685
- }
686
- else if (useAmaBlend) {
687
- blendedOff = amaOffsets[i] / channelNorm;
688
- }
689
- else if (useKalmanBlend) {
690
- blendedOff = kalmanOffsets[i] / channelNorm;
691
- }
692
- else {
693
- blendedOff = 0;
694
- }
695
- const regimeAdjusted = blendedOff * regimeMultipliers[i];
696
- const gatedOff = outputThresholdIsZero
697
- ? regimeAdjusted
698
- : (Math.abs(regimeAdjusted) < outputThreshold ? 0 : regimeAdjusted);
699
- const off = Math.max(-offsetClamp, Math.min(offsetClamp, gatedOff * gain));
700
- gatedOffSeries[i] = gatedOff;
701
- combinedOffSeries[i] = roundTo(off, 1000);
702
- }
703
- const confirmBars = Math.max(0, Math.min(5, Math.round(signalConfirmBars)));
704
- let echoedOffSeries = new Array(closes.length).fill(0);
705
- let echoedGatedOffSeries = new Array(closes.length).fill(0);
706
- if (confirmBars === 0) {
707
- echoedOffSeries = combinedOffSeries;
708
- echoedGatedOffSeries = gatedOffSeries;
709
- }
710
- else {
711
- let latchedSign = 0;
712
- let pendingSign = 0;
713
- let pendingCount = 0;
714
- let latchedOff = 0;
715
- let latchedGatedOff = 0;
716
- for (let i = 0; i < closes.length; i++) {
717
- const raw = combinedOffSeries[i];
718
- const sign = raw > 0 ? 1 : raw < 0 ? -1 : 0;
719
- if (sign === latchedSign) {
720
- pendingSign = 0;
721
- pendingCount = 0;
722
- latchedOff = raw;
723
- latchedGatedOff = gatedOffSeries[i];
724
- }
725
- else {
726
- if (pendingSign !== sign) {
727
- pendingSign = sign;
728
- pendingCount = 1;
729
- }
730
- else {
731
- pendingCount++;
732
- }
733
- if (pendingCount >= confirmBars) {
734
- latchedSign = sign;
735
- pendingSign = 0;
736
- pendingCount = 0;
737
- latchedOff = raw;
738
- latchedGatedOff = gatedOffSeries[i];
739
- }
740
- }
741
- echoedOffSeries[i] = latchedOff;
742
- echoedGatedOffSeries[i] = latchedGatedOff;
743
- }
744
- }
640
+ // Per-bar directional offset series — canonical implementation shared
641
+ // with the research chart and test harness (see dynamic_weight_series.ts).
642
+ const seriesResult = computeDynamicWeightSeries({
643
+ amaValues,
644
+ kalmanVelocityPct: kalmanSmoothedVelocityPct,
645
+ kalmanDisplacementPct: kalmanHistory.map((kr) => kr.displacementRawPct),
646
+ kalmanIsReady: kalmanHistory.map((kr) => kr.isReady),
647
+ regimeMultipliers,
648
+ lookbackBars,
649
+ amaErPeriod: botAma.erPeriod,
650
+ amaClipThreshold,
651
+ kalClipThreshold,
652
+ neutralZonePct: nz,
653
+ amaMaxSlopePct: amaMaxS,
654
+ kalmanMaxSlopePct: kalMaxS,
655
+ offsetClamp,
656
+ dispScaleMinPct,
657
+ alpha,
658
+ dw,
659
+ gain,
660
+ minOutputThreshold,
661
+ signalConfirmBars,
662
+ clampFinalOutput: true,
663
+ });
664
+ const { amaOffsets, combinedOffSeries, gatedOffSeries, echoedOffSeries, echoedGatedOffSeries, } = seriesResult;
745
665
  const rawFinalOff = combinedOffSeries[combinedOffSeries.length - 1] ?? 0;
746
666
  const rawFinalPreGainOff = gatedOffSeries[gatedOffSeries.length - 1] ?? 0;
747
667
  const finalPreGainOff = echoedGatedOffSeries[echoedGatedOffSeries.length - 1] ?? rawFinalPreGainOff;
@@ -1837,8 +1757,6 @@ class MarketAdapterService {
1837
1757
  && deps.isBotDynamicWeightWhitelisted(bot.botKey));
1838
1758
  const isDynamicWeightWhitelisted = isAmaWhitelisted && isDynamicWeightFlagWhitelisted;
1839
1759
  const isGridRangeScalingWhitelisted = forceWhitelistAll
1840
- || (typeof deps.isBotGridRangeScalingWhitelisted === 'function'
1841
- && deps.isBotGridRangeScalingWhitelisted(bot.botKey))
1842
1760
  || (typeof deps.isBotAsymmetricBoundsWhitelisted === 'function'
1843
1761
  && deps.isBotAsymmetricBoundsWhitelisted(bot.botKey));
1844
1762
  const isAsymmetricBoundsWhitelisted = isGridRangeScalingWhitelisted;
@@ -1858,19 +1776,14 @@ class MarketAdapterService {
1858
1776
  let dynamicWeightsPayload = null;
1859
1777
  if (shouldComputeDynamicWeightSignal) {
1860
1778
  const dwResult = this._computeDynamicWeights({
1861
- analysisCandles,
1862
1779
  closes,
1863
1780
  amaValues,
1864
- amaWarmupBars,
1865
1781
  lookbackBars,
1866
1782
  botAma,
1867
1783
  weightVariance,
1868
- amaPrice,
1869
1784
  nowIso,
1870
1785
  cfg,
1871
1786
  bot,
1872
- ctx,
1873
- deps,
1874
1787
  atrPeriod,
1875
1788
  });
1876
1789
  slopeResult = dwResult.slopeResult;