dexbot 1.1.10

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 (807) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +287 -0
  3. package/claw/README.md +513 -0
  4. package/claw/scripts/memu_runner.py +385 -0
  5. package/claw/skills/bitshares-guide/SKILL.md +14 -0
  6. package/claw/skills/bitshares-guide/references/example-skill-shells.md +18 -0
  7. package/claw/skills/bitshares-guide/references/presentation-patterns.md +19 -0
  8. package/claw/skills/bitshares-guide/references/scope-guardrails.md +9 -0
  9. package/claw/skills/launcher-ops/SKILL.md +18 -0
  10. package/claw/skills/launcher-ops/references/launcher-workflow.md +23 -0
  11. package/claw/skills/margin-trading/SKILL.md +23 -0
  12. package/claw/skills/margin-trading/references/honest-asset-list.md +74 -0
  13. package/claw/skills/margin-trading/references/honest-assets.md +44 -0
  14. package/claw/skills/margin-trading/references/position-management.md +203 -0
  15. package/claw/skills/margin-trading/references/trading-concepts.md +80 -0
  16. package/claw/skills/memu-memory/SKILL.md +218 -0
  17. package/claw/skills/shared/references/js-automation-overview.md +24 -0
  18. package/claw/skills/shared/references/safety-and-staleness.md +11 -0
  19. package/claw/skills/shared/references/skill-boundaries.md +17 -0
  20. package/claw/skills/trend-detection/SKILL.md +33 -0
  21. package/claw/skills/trend-detection/agents/openai.yaml +3 -0
  22. package/claw/skills/trend-detection/references/service.md +45 -0
  23. package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts +3 -0
  24. package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts.map +1 -0
  25. package/dist/analysis/ama_fitting/analyze_ama_price_changes.js +149 -0
  26. package/dist/analysis/ama_fitting/analyze_ama_price_changes.js.map +1 -0
  27. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts +3 -0
  28. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts.map +1 -0
  29. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js +387 -0
  30. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js.map +1 -0
  31. package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts +3 -0
  32. package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts.map +1 -0
  33. package/dist/analysis/ama_fitting/calibrate_convergence_er.js +200 -0
  34. package/dist/analysis/ama_fitting/calibrate_convergence_er.js.map +1 -0
  35. package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts +3 -0
  36. package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts.map +1 -0
  37. package/dist/analysis/ama_fitting/fetch_lp_candles.js +212 -0
  38. package/dist/analysis/ama_fitting/fetch_lp_candles.js.map +1 -0
  39. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts +31 -0
  40. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts.map +1 -0
  41. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js +249 -0
  42. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js.map +1 -0
  43. package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts +2 -0
  44. package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts.map +1 -0
  45. package/dist/analysis/ama_fitting/optimizer_high_resolution.js +782 -0
  46. package/dist/analysis/ama_fitting/optimizer_high_resolution.js.map +1 -0
  47. package/dist/analysis/analyze_derivatives.d.ts +95 -0
  48. package/dist/analysis/analyze_derivatives.d.ts.map +1 -0
  49. package/dist/analysis/analyze_derivatives.js +295 -0
  50. package/dist/analysis/analyze_derivatives.js.map +1 -0
  51. package/dist/analysis/analyze_dynamic_weight.d.ts +14 -0
  52. package/dist/analysis/analyze_dynamic_weight.d.ts.map +1 -0
  53. package/dist/analysis/analyze_dynamic_weight.js +208 -0
  54. package/dist/analysis/analyze_dynamic_weight.js.map +1 -0
  55. package/dist/analysis/analyze_kalman.d.ts +13 -0
  56. package/dist/analysis/analyze_kalman.d.ts.map +1 -0
  57. package/dist/analysis/analyze_kalman.js +123 -0
  58. package/dist/analysis/analyze_kalman.js.map +1 -0
  59. package/dist/analysis/analyze_regime.d.ts +20 -0
  60. package/dist/analysis/analyze_regime.d.ts.map +1 -0
  61. package/dist/analysis/analyze_regime.js +139 -0
  62. package/dist/analysis/analyze_regime.js.map +1 -0
  63. package/dist/analysis/analyze_regime_windows.d.ts +19 -0
  64. package/dist/analysis/analyze_regime_windows.d.ts.map +1 -0
  65. package/dist/analysis/analyze_regime_windows.js +413 -0
  66. package/dist/analysis/analyze_regime_windows.js.map +1 -0
  67. package/dist/analysis/analyze_risk_profile.d.ts +3 -0
  68. package/dist/analysis/analyze_risk_profile.d.ts.map +1 -0
  69. package/dist/analysis/analyze_risk_profile.js +159 -0
  70. package/dist/analysis/analyze_risk_profile.js.map +1 -0
  71. package/dist/analysis/analyze_trade_heatmap.d.ts +3 -0
  72. package/dist/analysis/analyze_trade_heatmap.d.ts.map +1 -0
  73. package/dist/analysis/analyze_trade_heatmap.js +367 -0
  74. package/dist/analysis/analyze_trade_heatmap.js.map +1 -0
  75. package/dist/analysis/analyze_volatility.d.ts +22 -0
  76. package/dist/analysis/analyze_volatility.d.ts.map +1 -0
  77. package/dist/analysis/analyze_volatility.js +172 -0
  78. package/dist/analysis/analyze_volatility.js.map +1 -0
  79. package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts +99 -0
  80. package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts.map +1 -0
  81. package/dist/analysis/bot_fitting/backtest_ama_sweep.js +804 -0
  82. package/dist/analysis/bot_fitting/backtest_ama_sweep.js.map +1 -0
  83. package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts +2 -0
  84. package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts.map +1 -0
  85. package/dist/analysis/bot_fitting/backtest_bot_fitting.js +347 -0
  86. package/dist/analysis/bot_fitting/backtest_bot_fitting.js.map +1 -0
  87. package/dist/analysis/bot_fitting/shared_utils.d.ts +15 -0
  88. package/dist/analysis/bot_fitting/shared_utils.d.ts.map +1 -0
  89. package/dist/analysis/bot_fitting/shared_utils.js +48 -0
  90. package/dist/analysis/bot_fitting/shared_utils.js.map +1 -0
  91. package/dist/analysis/bot_key_utils.d.ts +16 -0
  92. package/dist/analysis/bot_key_utils.d.ts.map +1 -0
  93. package/dist/analysis/bot_key_utils.js +61 -0
  94. package/dist/analysis/bot_key_utils.js.map +1 -0
  95. package/dist/analysis/bot_usage/discover_bot_accounts.d.ts +3 -0
  96. package/dist/analysis/bot_usage/discover_bot_accounts.d.ts.map +1 -0
  97. package/dist/analysis/bot_usage/discover_bot_accounts.js +498 -0
  98. package/dist/analysis/bot_usage/discover_bot_accounts.js.map +1 -0
  99. package/dist/analysis/bot_usage/kibana_bot_queries.d.ts +546 -0
  100. package/dist/analysis/bot_usage/kibana_bot_queries.d.ts.map +1 -0
  101. package/dist/analysis/bot_usage/kibana_bot_queries.js +427 -0
  102. package/dist/analysis/bot_usage/kibana_bot_queries.js.map +1 -0
  103. package/dist/analysis/chart_utils.d.ts +13 -0
  104. package/dist/analysis/chart_utils.d.ts.map +1 -0
  105. package/dist/analysis/chart_utils.js +142 -0
  106. package/dist/analysis/chart_utils.js.map +1 -0
  107. package/dist/analysis/derivative_chart_generator.d.ts +18 -0
  108. package/dist/analysis/derivative_chart_generator.d.ts.map +1 -0
  109. package/dist/analysis/derivative_chart_generator.js +896 -0
  110. package/dist/analysis/derivative_chart_generator.js.map +1 -0
  111. package/dist/analysis/math_utils.d.ts +35 -0
  112. package/dist/analysis/math_utils.d.ts.map +1 -0
  113. package/dist/analysis/math_utils.js +121 -0
  114. package/dist/analysis/math_utils.js.map +1 -0
  115. package/dist/analysis/price_sources.d.ts +34 -0
  116. package/dist/analysis/price_sources.d.ts.map +1 -0
  117. package/dist/analysis/price_sources.js +103 -0
  118. package/dist/analysis/price_sources.js.map +1 -0
  119. package/dist/analysis/trade_profitability.d.ts +115 -0
  120. package/dist/analysis/trade_profitability.d.ts.map +1 -0
  121. package/dist/analysis/trade_profitability.js +1247 -0
  122. package/dist/analysis/trade_profitability.js.map +1 -0
  123. package/dist/analysis/tradingview/analyze_tradingview.d.ts +38 -0
  124. package/dist/analysis/tradingview/analyze_tradingview.d.ts.map +1 -0
  125. package/dist/analysis/tradingview/analyze_tradingview.js +212 -0
  126. package/dist/analysis/tradingview/analyze_tradingview.js.map +1 -0
  127. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts +9 -0
  128. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts.map +1 -0
  129. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +1717 -0
  130. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js.map +1 -0
  131. package/dist/analysis/trend_detection/derivative_analyzer.d.ts +250 -0
  132. package/dist/analysis/trend_detection/derivative_analyzer.d.ts.map +1 -0
  133. package/dist/analysis/trend_detection/derivative_analyzer.js +903 -0
  134. package/dist/analysis/trend_detection/derivative_analyzer.js.map +1 -0
  135. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts +6 -0
  136. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts.map +1 -0
  137. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js +1449 -0
  138. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js.map +1 -0
  139. package/dist/analysis/trend_detection/hurst_analyzer.d.ts +42 -0
  140. package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +1 -0
  141. package/dist/analysis/trend_detection/hurst_analyzer.js +159 -0
  142. package/dist/analysis/trend_detection/hurst_analyzer.js.map +1 -0
  143. package/dist/analysis/trend_detection/kalman_chart_generator.d.ts +6 -0
  144. package/dist/analysis/trend_detection/kalman_chart_generator.d.ts.map +1 -0
  145. package/dist/analysis/trend_detection/kalman_chart_generator.js +408 -0
  146. package/dist/analysis/trend_detection/kalman_chart_generator.js.map +1 -0
  147. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts +103 -0
  148. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +1 -0
  149. package/dist/analysis/trend_detection/kalman_trend_analyzer.js +229 -0
  150. package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +1 -0
  151. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts +34 -0
  152. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +1 -0
  153. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js +89 -0
  154. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +1 -0
  155. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts +39 -0
  156. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +1 -0
  157. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js +132 -0
  158. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +1 -0
  159. package/dist/analysis/trend_detection/regime_chart_generator.d.ts +6 -0
  160. package/dist/analysis/trend_detection/regime_chart_generator.d.ts.map +1 -0
  161. package/dist/analysis/trend_detection/regime_chart_generator.js +345 -0
  162. package/dist/analysis/trend_detection/regime_chart_generator.js.map +1 -0
  163. package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts +2 -0
  164. package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts.map +1 -0
  165. package/dist/analysis/trend_detection/tests/test_kalman_trend.js +130 -0
  166. package/dist/analysis/trend_detection/tests/test_kalman_trend.js.map +1 -0
  167. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts +2 -0
  168. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts.map +1 -0
  169. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js +38 -0
  170. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js.map +1 -0
  171. package/dist/analysis/trend_detection/volatility_chart_generator.d.ts +6 -0
  172. package/dist/analysis/trend_detection/volatility_chart_generator.d.ts.map +1 -0
  173. package/dist/analysis/trend_detection/volatility_chart_generator.js +732 -0
  174. package/dist/analysis/trend_detection/volatility_chart_generator.js.map +1 -0
  175. package/dist/bot.d.ts +49 -0
  176. package/dist/bot.d.ts.map +1 -0
  177. package/dist/bot.js +221 -0
  178. package/dist/bot.js.map +1 -0
  179. package/dist/credential-daemon.d.ts +64 -0
  180. package/dist/credential-daemon.d.ts.map +1 -0
  181. package/dist/credential-daemon.js +987 -0
  182. package/dist/credential-daemon.js.map +1 -0
  183. package/dist/dexbot.d.ts +87 -0
  184. package/dist/dexbot.d.ts.map +1 -0
  185. package/dist/dexbot.js +1222 -0
  186. package/dist/dexbot.js.map +1 -0
  187. package/dist/market_adapter/ama_signal_runner.d.ts +3 -0
  188. package/dist/market_adapter/ama_signal_runner.d.ts.map +1 -0
  189. package/dist/market_adapter/ama_signal_runner.js +175 -0
  190. package/dist/market_adapter/ama_signal_runner.js.map +1 -0
  191. package/dist/market_adapter/candle_utils.d.ts +57 -0
  192. package/dist/market_adapter/candle_utils.d.ts.map +1 -0
  193. package/dist/market_adapter/candle_utils.js +252 -0
  194. package/dist/market_adapter/candle_utils.js.map +1 -0
  195. package/dist/market_adapter/core/asymmetric_bounds.d.ts +20 -0
  196. package/dist/market_adapter/core/asymmetric_bounds.d.ts.map +1 -0
  197. package/dist/market_adapter/core/asymmetric_bounds.js +88 -0
  198. package/dist/market_adapter/core/asymmetric_bounds.js.map +1 -0
  199. package/dist/market_adapter/core/config_normalizers.d.ts +10 -0
  200. package/dist/market_adapter/core/config_normalizers.d.ts.map +1 -0
  201. package/dist/market_adapter/core/config_normalizers.js +24 -0
  202. package/dist/market_adapter/core/config_normalizers.js.map +1 -0
  203. package/dist/market_adapter/core/kibana_candles.d.ts +74 -0
  204. package/dist/market_adapter/core/kibana_candles.d.ts.map +1 -0
  205. package/dist/market_adapter/core/kibana_candles.js +249 -0
  206. package/dist/market_adapter/core/kibana_candles.js.map +1 -0
  207. package/dist/market_adapter/core/kibana_client.d.ts +27 -0
  208. package/dist/market_adapter/core/kibana_client.d.ts.map +1 -0
  209. package/dist/market_adapter/core/kibana_client.js +120 -0
  210. package/dist/market_adapter/core/kibana_client.js.map +1 -0
  211. package/dist/market_adapter/core/kibana_market_candles.d.ts +143 -0
  212. package/dist/market_adapter/core/kibana_market_candles.d.ts.map +1 -0
  213. package/dist/market_adapter/core/kibana_market_candles.js +170 -0
  214. package/dist/market_adapter/core/kibana_market_candles.js.map +1 -0
  215. package/dist/market_adapter/core/market_adapter_service.d.ts +210 -0
  216. package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -0
  217. package/dist/market_adapter/core/market_adapter_service.js +2328 -0
  218. package/dist/market_adapter/core/market_adapter_service.js.map +1 -0
  219. package/dist/market_adapter/core/strategies/ama.d.ts +2 -0
  220. package/dist/market_adapter/core/strategies/ama.d.ts.map +1 -0
  221. package/dist/market_adapter/core/strategies/ama.js +138 -0
  222. package/dist/market_adapter/core/strategies/ama.js.map +1 -0
  223. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts +50 -0
  224. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts.map +1 -0
  225. package/dist/market_adapter/core/strategies/ama_slope_model.js +143 -0
  226. package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -0
  227. package/dist/market_adapter/core/strategies/atr/calculator.d.ts +12 -0
  228. package/dist/market_adapter/core/strategies/atr/calculator.d.ts.map +1 -0
  229. package/dist/market_adapter/core/strategies/atr/calculator.js +47 -0
  230. package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -0
  231. package/dist/market_adapter/core/strategies/collateral_manager.d.ts +32 -0
  232. package/dist/market_adapter/core/strategies/collateral_manager.d.ts.map +1 -0
  233. package/dist/market_adapter/core/strategies/collateral_manager.js +68 -0
  234. package/dist/market_adapter/core/strategies/collateral_manager.js.map +1 -0
  235. package/dist/market_adapter/core/strategies/regime_gate.d.ts +66 -0
  236. package/dist/market_adapter/core/strategies/regime_gate.d.ts.map +1 -0
  237. package/dist/market_adapter/core/strategies/regime_gate.js +189 -0
  238. package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -0
  239. package/dist/market_adapter/index.d.ts +10 -0
  240. package/dist/market_adapter/index.d.ts.map +1 -0
  241. package/dist/market_adapter/index.js +71 -0
  242. package/dist/market_adapter/index.js.map +1 -0
  243. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.d.ts +3 -0
  244. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.d.ts.map +1 -0
  245. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +1165 -0
  246. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -0
  247. package/dist/market_adapter/inputs/fetch_lp_data.d.ts +54 -0
  248. package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -0
  249. package/dist/market_adapter/inputs/fetch_lp_data.js +743 -0
  250. package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -0
  251. package/dist/market_adapter/inputs/kibana_source.d.ts +68 -0
  252. package/dist/market_adapter/inputs/kibana_source.d.ts.map +1 -0
  253. package/dist/market_adapter/inputs/kibana_source.js +143 -0
  254. package/dist/market_adapter/inputs/kibana_source.js.map +1 -0
  255. package/dist/market_adapter/interval_utils.d.ts +6 -0
  256. package/dist/market_adapter/interval_utils.d.ts.map +1 -0
  257. package/dist/market_adapter/interval_utils.js +14 -0
  258. package/dist/market_adapter/interval_utils.js.map +1 -0
  259. package/dist/market_adapter/log_format.d.ts +16 -0
  260. package/dist/market_adapter/log_format.d.ts.map +1 -0
  261. package/dist/market_adapter/log_format.js +72 -0
  262. package/dist/market_adapter/log_format.js.map +1 -0
  263. package/dist/market_adapter/lp_chart_core.d.ts +6 -0
  264. package/dist/market_adapter/lp_chart_core.d.ts.map +1 -0
  265. package/dist/market_adapter/lp_chart_core.js +874 -0
  266. package/dist/market_adapter/lp_chart_core.js.map +1 -0
  267. package/dist/market_adapter/lp_chart_runner.d.ts +135 -0
  268. package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -0
  269. package/dist/market_adapter/lp_chart_runner.js +337 -0
  270. package/dist/market_adapter/lp_chart_runner.js.map +1 -0
  271. package/dist/market_adapter/lp_chart_strategy_loader.d.ts +23 -0
  272. package/dist/market_adapter/lp_chart_strategy_loader.d.ts.map +1 -0
  273. package/dist/market_adapter/lp_chart_strategy_loader.js +169 -0
  274. package/dist/market_adapter/lp_chart_strategy_loader.js.map +1 -0
  275. package/dist/market_adapter/market_adapter.d.ts +133 -0
  276. package/dist/market_adapter/market_adapter.d.ts.map +1 -0
  277. package/dist/market_adapter/market_adapter.js +1331 -0
  278. package/dist/market_adapter/market_adapter.js.map +1 -0
  279. package/dist/market_adapter/merge_lp_data.d.ts +3 -0
  280. package/dist/market_adapter/merge_lp_data.d.ts.map +1 -0
  281. package/dist/market_adapter/merge_lp_data.js +125 -0
  282. package/dist/market_adapter/merge_lp_data.js.map +1 -0
  283. package/dist/market_adapter/test_helpers.d.ts +14 -0
  284. package/dist/market_adapter/test_helpers.d.ts.map +1 -0
  285. package/dist/market_adapter/test_helpers.js +22 -0
  286. package/dist/market_adapter/test_helpers.js.map +1 -0
  287. package/dist/market_adapter/utils/adapter_client.d.ts +20 -0
  288. package/dist/market_adapter/utils/adapter_client.d.ts.map +1 -0
  289. package/dist/market_adapter/utils/adapter_client.js +88 -0
  290. package/dist/market_adapter/utils/adapter_client.js.map +1 -0
  291. package/dist/market_adapter/utils/atomic_write.d.ts +9 -0
  292. package/dist/market_adapter/utils/atomic_write.d.ts.map +1 -0
  293. package/dist/market_adapter/utils/atomic_write.js +13 -0
  294. package/dist/market_adapter/utils/atomic_write.js.map +1 -0
  295. package/dist/market_adapter/utils/chain.d.ts +50 -0
  296. package/dist/market_adapter/utils/chain.d.ts.map +1 -0
  297. package/dist/market_adapter/utils/chain.js +196 -0
  298. package/dist/market_adapter/utils/chain.js.map +1 -0
  299. package/dist/market_adapter/utils/data_discovery.d.ts +6 -0
  300. package/dist/market_adapter/utils/data_discovery.d.ts.map +1 -0
  301. package/dist/market_adapter/utils/data_discovery.js +35 -0
  302. package/dist/market_adapter/utils/data_discovery.js.map +1 -0
  303. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts +15 -0
  304. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -0
  305. package/dist/market_adapter/utils/dynamic_grid_snapshot.js +60 -0
  306. package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -0
  307. package/dist/market_adapter/utils/file_lock.d.ts +19 -0
  308. package/dist/market_adapter/utils/file_lock.d.ts.map +1 -0
  309. package/dist/market_adapter/utils/file_lock.js +191 -0
  310. package/dist/market_adapter/utils/file_lock.js.map +1 -0
  311. package/dist/market_adapter/utils/native_history.d.ts +19 -0
  312. package/dist/market_adapter/utils/native_history.d.ts.map +1 -0
  313. package/dist/market_adapter/utils/native_history.js +172 -0
  314. package/dist/market_adapter/utils/native_history.js.map +1 -0
  315. package/dist/market_adapter/utils/paths.d.ts +5 -0
  316. package/dist/market_adapter/utils/paths.d.ts.map +1 -0
  317. package/dist/market_adapter/utils/paths.js +7 -0
  318. package/dist/market_adapter/utils/paths.js.map +1 -0
  319. package/dist/modules/account_bots.d.ts +112 -0
  320. package/dist/modules/account_bots.d.ts.map +1 -0
  321. package/dist/modules/account_bots.js +1259 -0
  322. package/dist/modules/account_bots.js.map +1 -0
  323. package/dist/modules/account_orders.d.ts +273 -0
  324. package/dist/modules/account_orders.d.ts.map +1 -0
  325. package/dist/modules/account_orders.js +662 -0
  326. package/dist/modules/account_orders.js.map +1 -0
  327. package/dist/modules/authority_resolver.d.ts +2 -0
  328. package/dist/modules/authority_resolver.d.ts.map +1 -0
  329. package/dist/modules/authority_resolver.js +231 -0
  330. package/dist/modules/authority_resolver.js.map +1 -0
  331. package/dist/modules/bitshares-native/chain_client.d.ts +38 -0
  332. package/dist/modules/bitshares-native/chain_client.d.ts.map +1 -0
  333. package/dist/modules/bitshares-native/chain_client.js +322 -0
  334. package/dist/modules/bitshares-native/chain_client.js.map +1 -0
  335. package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts +59 -0
  336. package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts.map +1 -0
  337. package/dist/modules/bitshares-native/crypto/ecc.browser.js +456 -0
  338. package/dist/modules/bitshares-native/crypto/ecc.browser.js.map +1 -0
  339. package/dist/modules/bitshares-native/crypto/ecc.d.ts +66 -0
  340. package/dist/modules/bitshares-native/crypto/ecc.d.ts.map +1 -0
  341. package/dist/modules/bitshares-native/crypto/ecc.js +557 -0
  342. package/dist/modules/bitshares-native/crypto/ecc.js.map +1 -0
  343. package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts +2 -0
  344. package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts.map +1 -0
  345. package/dist/modules/bitshares-native/crypto/ecc_selector.js +20 -0
  346. package/dist/modules/bitshares-native/crypto/ecc_selector.js.map +1 -0
  347. package/dist/modules/bitshares-native/index.d.ts +3 -0
  348. package/dist/modules/bitshares-native/index.d.ts.map +1 -0
  349. package/dist/modules/bitshares-native/index.js +32 -0
  350. package/dist/modules/bitshares-native/index.js.map +1 -0
  351. package/dist/modules/bitshares-native/resolvers.d.ts +40 -0
  352. package/dist/modules/bitshares-native/resolvers.d.ts.map +1 -0
  353. package/dist/modules/bitshares-native/resolvers.js +161 -0
  354. package/dist/modules/bitshares-native/resolvers.js.map +1 -0
  355. package/dist/modules/bitshares-native/serial/chain_constants.d.ts +56 -0
  356. package/dist/modules/bitshares-native/serial/chain_constants.d.ts.map +1 -0
  357. package/dist/modules/bitshares-native/serial/chain_constants.js +92 -0
  358. package/dist/modules/bitshares-native/serial/chain_constants.js.map +1 -0
  359. package/dist/modules/bitshares-native/serial/index.d.ts +10 -0
  360. package/dist/modules/bitshares-native/serial/index.d.ts.map +1 -0
  361. package/dist/modules/bitshares-native/serial/index.js +14 -0
  362. package/dist/modules/bitshares-native/serial/index.js.map +1 -0
  363. package/dist/modules/bitshares-native/serial/operations.d.ts +102 -0
  364. package/dist/modules/bitshares-native/serial/operations.d.ts.map +1 -0
  365. package/dist/modules/bitshares-native/serial/operations.js +615 -0
  366. package/dist/modules/bitshares-native/serial/operations.js.map +1 -0
  367. package/dist/modules/bitshares-native/serial/serializer.d.ts +64 -0
  368. package/dist/modules/bitshares-native/serial/serializer.d.ts.map +1 -0
  369. package/dist/modules/bitshares-native/serial/serializer.js +252 -0
  370. package/dist/modules/bitshares-native/serial/serializer.js.map +1 -0
  371. package/dist/modules/bitshares-native/serial/types.d.ts +120 -0
  372. package/dist/modules/bitshares-native/serial/types.d.ts.map +1 -0
  373. package/dist/modules/bitshares-native/serial/types.js +837 -0
  374. package/dist/modules/bitshares-native/serial/types.js.map +1 -0
  375. package/dist/modules/bitshares-native/signing_client.d.ts +6 -0
  376. package/dist/modules/bitshares-native/signing_client.d.ts.map +1 -0
  377. package/dist/modules/bitshares-native/signing_client.js +141 -0
  378. package/dist/modules/bitshares-native/signing_client.js.map +1 -0
  379. package/dist/modules/bitshares-native/subscriptions.d.ts +6 -0
  380. package/dist/modules/bitshares-native/subscriptions.d.ts.map +1 -0
  381. package/dist/modules/bitshares-native/subscriptions.js +865 -0
  382. package/dist/modules/bitshares-native/subscriptions.js.map +1 -0
  383. package/dist/modules/bitshares-native/transport.d.ts +51 -0
  384. package/dist/modules/bitshares-native/transport.d.ts.map +1 -0
  385. package/dist/modules/bitshares-native/transport.js +447 -0
  386. package/dist/modules/bitshares-native/transport.js.map +1 -0
  387. package/dist/modules/bitshares-native/tx/builder.d.ts +30 -0
  388. package/dist/modules/bitshares-native/tx/builder.d.ts.map +1 -0
  389. package/dist/modules/bitshares-native/tx/builder.js +262 -0
  390. package/dist/modules/bitshares-native/tx/builder.js.map +1 -0
  391. package/dist/modules/bitshares_client.d.ts +129 -0
  392. package/dist/modules/bitshares_client.d.ts.map +1 -0
  393. package/dist/modules/bitshares_client.js +627 -0
  394. package/dist/modules/bitshares_client.js.map +1 -0
  395. package/dist/modules/bot_settings.d.ts +33 -0
  396. package/dist/modules/bot_settings.d.ts.map +1 -0
  397. package/dist/modules/bot_settings.js +328 -0
  398. package/dist/modules/bot_settings.js.map +1 -0
  399. package/dist/modules/bots_file_lock.d.ts +88 -0
  400. package/dist/modules/bots_file_lock.d.ts.map +1 -0
  401. package/dist/modules/bots_file_lock.js +161 -0
  402. package/dist/modules/bots_file_lock.js.map +1 -0
  403. package/dist/modules/chain_keys.d.ts +302 -0
  404. package/dist/modules/chain_keys.d.ts.map +1 -0
  405. package/dist/modules/chain_keys.js +1095 -0
  406. package/dist/modules/chain_keys.js.map +1 -0
  407. package/dist/modules/chain_orders.d.ts +423 -0
  408. package/dist/modules/chain_orders.d.ts.map +1 -0
  409. package/dist/modules/chain_orders.js +1201 -0
  410. package/dist/modules/chain_orders.js.map +1 -0
  411. package/dist/modules/cli_whitelist_args.d.ts +6 -0
  412. package/dist/modules/cli_whitelist_args.d.ts.map +1 -0
  413. package/dist/modules/cli_whitelist_args.js +13 -0
  414. package/dist/modules/cli_whitelist_args.js.map +1 -0
  415. package/dist/modules/config.d.ts +57 -0
  416. package/dist/modules/config.d.ts.map +1 -0
  417. package/dist/modules/config.js +107 -0
  418. package/dist/modules/config.js.map +1 -0
  419. package/dist/modules/constants.d.ts +635 -0
  420. package/dist/modules/constants.d.ts.map +1 -0
  421. package/dist/modules/constants.js +1464 -0
  422. package/dist/modules/constants.js.map +1 -0
  423. package/dist/modules/cr_planner.d.ts +51 -0
  424. package/dist/modules/cr_planner.d.ts.map +1 -0
  425. package/dist/modules/cr_planner.js +299 -0
  426. package/dist/modules/cr_planner.js.map +1 -0
  427. package/dist/modules/credential_policy.d.ts +188 -0
  428. package/dist/modules/credential_policy.d.ts.map +1 -0
  429. package/dist/modules/credential_policy.js +1452 -0
  430. package/dist/modules/credential_policy.js.map +1 -0
  431. package/dist/modules/credential_runtime.d.ts +42 -0
  432. package/dist/modules/credential_runtime.d.ts.map +1 -0
  433. package/dist/modules/credential_runtime.js +148 -0
  434. package/dist/modules/credential_runtime.js.map +1 -0
  435. package/dist/modules/credential_session_cache.d.ts +36 -0
  436. package/dist/modules/credential_session_cache.d.ts.map +1 -0
  437. package/dist/modules/credential_session_cache.js +106 -0
  438. package/dist/modules/credential_session_cache.js.map +1 -0
  439. package/dist/modules/credit_runtime.d.ts +412 -0
  440. package/dist/modules/credit_runtime.d.ts.map +1 -0
  441. package/dist/modules/credit_runtime.js +2866 -0
  442. package/dist/modules/credit_runtime.js.map +1 -0
  443. package/dist/modules/crypto/browser_provider.d.ts +15 -0
  444. package/dist/modules/crypto/browser_provider.d.ts.map +1 -0
  445. package/dist/modules/crypto/browser_provider.js +113 -0
  446. package/dist/modules/crypto/browser_provider.js.map +1 -0
  447. package/dist/modules/crypto/index.d.ts +9 -0
  448. package/dist/modules/crypto/index.d.ts.map +1 -0
  449. package/dist/modules/crypto/index.js +44 -0
  450. package/dist/modules/crypto/index.js.map +1 -0
  451. package/dist/modules/crypto/node_provider.d.ts +15 -0
  452. package/dist/modules/crypto/node_provider.d.ts.map +1 -0
  453. package/dist/modules/crypto/node_provider.js +74 -0
  454. package/dist/modules/crypto/node_provider.js.map +1 -0
  455. package/dist/modules/crypto/provider.d.ts +34 -0
  456. package/dist/modules/crypto/provider.d.ts.map +1 -0
  457. package/dist/modules/crypto/provider.js +3 -0
  458. package/dist/modules/crypto/provider.js.map +1 -0
  459. package/dist/modules/crypto/pure_ripemd160.d.ts +8 -0
  460. package/dist/modules/crypto/pure_ripemd160.d.ts.map +1 -0
  461. package/dist/modules/crypto/pure_ripemd160.js +142 -0
  462. package/dist/modules/crypto/pure_ripemd160.js.map +1 -0
  463. package/dist/modules/crypto/pure_scrypt.d.ts +23 -0
  464. package/dist/modules/crypto/pure_scrypt.d.ts.map +1 -0
  465. package/dist/modules/crypto/pure_scrypt.js +161 -0
  466. package/dist/modules/crypto/pure_scrypt.js.map +1 -0
  467. package/dist/modules/crypto/pure_secp256k1.d.ts +29 -0
  468. package/dist/modules/crypto/pure_secp256k1.d.ts.map +1 -0
  469. package/dist/modules/crypto/pure_secp256k1.js +195 -0
  470. package/dist/modules/crypto/pure_secp256k1.js.map +1 -0
  471. package/dist/modules/crypto/sync.d.ts +13 -0
  472. package/dist/modules/crypto/sync.d.ts.map +1 -0
  473. package/dist/modules/crypto/sync.js +37 -0
  474. package/dist/modules/crypto/sync.js.map +1 -0
  475. package/dist/modules/dexbot_class.d.ts +1074 -0
  476. package/dist/modules/dexbot_class.d.ts.map +1 -0
  477. package/dist/modules/dexbot_class.js +4613 -0
  478. package/dist/modules/dexbot_class.js.map +1 -0
  479. package/dist/modules/dexbot_credential_client.d.ts +71 -0
  480. package/dist/modules/dexbot_credential_client.d.ts.map +1 -0
  481. package/dist/modules/dexbot_credential_client.js +224 -0
  482. package/dist/modules/dexbot_credential_client.js.map +1 -0
  483. package/dist/modules/dexbot_fill_runtime.d.ts +173 -0
  484. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -0
  485. package/dist/modules/dexbot_fill_runtime.js +217 -0
  486. package/dist/modules/dexbot_fill_runtime.js.map +1 -0
  487. package/dist/modules/dexbot_maintenance_runtime.d.ts +279 -0
  488. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -0
  489. package/dist/modules/dexbot_maintenance_runtime.js +1613 -0
  490. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -0
  491. package/dist/modules/env.d.ts +12 -0
  492. package/dist/modules/env.d.ts.map +1 -0
  493. package/dist/modules/env.js +57 -0
  494. package/dist/modules/env.js.map +1 -0
  495. package/dist/modules/fund_registry.d.ts +96 -0
  496. package/dist/modules/fund_registry.d.ts.map +1 -0
  497. package/dist/modules/fund_registry.js +261 -0
  498. package/dist/modules/fund_registry.js.map +1 -0
  499. package/dist/modules/general_settings.d.ts +36 -0
  500. package/dist/modules/general_settings.d.ts.map +1 -0
  501. package/dist/modules/general_settings.js +63 -0
  502. package/dist/modules/general_settings.js.map +1 -0
  503. package/dist/modules/graceful_shutdown.d.ts +86 -0
  504. package/dist/modules/graceful_shutdown.d.ts.map +1 -0
  505. package/dist/modules/graceful_shutdown.js +164 -0
  506. package/dist/modules/graceful_shutdown.js.map +1 -0
  507. package/dist/modules/key_store.d.ts +60 -0
  508. package/dist/modules/key_store.d.ts.map +1 -0
  509. package/dist/modules/key_store.js +215 -0
  510. package/dist/modules/key_store.js.map +1 -0
  511. package/dist/modules/launcher/bot_supervisor.d.ts +84 -0
  512. package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -0
  513. package/dist/modules/launcher/bot_supervisor.js +1067 -0
  514. package/dist/modules/launcher/bot_supervisor.js.map +1 -0
  515. package/dist/modules/launcher/child_env.d.ts +9 -0
  516. package/dist/modules/launcher/child_env.d.ts.map +1 -0
  517. package/dist/modules/launcher/child_env.js +78 -0
  518. package/dist/modules/launcher/child_env.js.map +1 -0
  519. package/dist/modules/launcher/credential_bootstrap.d.ts +22 -0
  520. package/dist/modules/launcher/credential_bootstrap.d.ts.map +1 -0
  521. package/dist/modules/launcher/credential_bootstrap.js +303 -0
  522. package/dist/modules/launcher/credential_bootstrap.js.map +1 -0
  523. package/dist/modules/launcher/credential_daemon.d.ts +32 -0
  524. package/dist/modules/launcher/credential_daemon.d.ts.map +1 -0
  525. package/dist/modules/launcher/credential_daemon.js +173 -0
  526. package/dist/modules/launcher/credential_daemon.js.map +1 -0
  527. package/dist/modules/launcher/credential_secret.d.ts +6 -0
  528. package/dist/modules/launcher/credential_secret.d.ts.map +1 -0
  529. package/dist/modules/launcher/credential_secret.js +15 -0
  530. package/dist/modules/launcher/credential_secret.js.map +1 -0
  531. package/dist/modules/launcher/foreign_cred_daemon.d.ts +2 -0
  532. package/dist/modules/launcher/foreign_cred_daemon.d.ts.map +1 -0
  533. package/dist/modules/launcher/foreign_cred_daemon.js +166 -0
  534. package/dist/modules/launcher/foreign_cred_daemon.js.map +1 -0
  535. package/dist/modules/launcher/headless_password.d.ts +8 -0
  536. package/dist/modules/launcher/headless_password.d.ts.map +1 -0
  537. package/dist/modules/launcher/headless_password.js +33 -0
  538. package/dist/modules/launcher/headless_password.js.map +1 -0
  539. package/dist/modules/launcher/launch_modes.d.ts +36 -0
  540. package/dist/modules/launcher/launch_modes.d.ts.map +1 -0
  541. package/dist/modules/launcher/launch_modes.js +129 -0
  542. package/dist/modules/launcher/launch_modes.js.map +1 -0
  543. package/dist/modules/launcher/market_adapter_runtime.d.ts +43 -0
  544. package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -0
  545. package/dist/modules/launcher/market_adapter_runtime.js +217 -0
  546. package/dist/modules/launcher/market_adapter_runtime.js.map +1 -0
  547. package/dist/modules/launcher/market_adapter_watchdog.d.ts +26 -0
  548. package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -0
  549. package/dist/modules/launcher/market_adapter_watchdog.js +214 -0
  550. package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -0
  551. package/dist/modules/launcher/monolithic_runtime.d.ts +89 -0
  552. package/dist/modules/launcher/monolithic_runtime.d.ts.map +1 -0
  553. package/dist/modules/launcher/monolithic_runtime.js +425 -0
  554. package/dist/modules/launcher/monolithic_runtime.js.map +1 -0
  555. package/dist/modules/launcher/runtime_entry.d.ts +26 -0
  556. package/dist/modules/launcher/runtime_entry.d.ts.map +1 -0
  557. package/dist/modules/launcher/runtime_entry.js +49 -0
  558. package/dist/modules/launcher/runtime_entry.js.map +1 -0
  559. package/dist/modules/launcher/status_reporting.d.ts +48 -0
  560. package/dist/modules/launcher/status_reporting.d.ts.map +1 -0
  561. package/dist/modules/launcher/status_reporting.js +113 -0
  562. package/dist/modules/launcher/status_reporting.js.map +1 -0
  563. package/dist/modules/launcher/supervisor_control.d.ts +6 -0
  564. package/dist/modules/launcher/supervisor_control.d.ts.map +1 -0
  565. package/dist/modules/launcher/supervisor_control.js +59 -0
  566. package/dist/modules/launcher/supervisor_control.js.map +1 -0
  567. package/dist/modules/logger.d.ts +2 -0
  568. package/dist/modules/logger.d.ts.map +1 -0
  569. package/dist/modules/logger.js +71 -0
  570. package/dist/modules/logger.js.map +1 -0
  571. package/dist/modules/market_adapter_whitelist.d.ts +22 -0
  572. package/dist/modules/market_adapter_whitelist.d.ts.map +1 -0
  573. package/dist/modules/market_adapter_whitelist.js +82 -0
  574. package/dist/modules/market_adapter_whitelist.js.map +1 -0
  575. package/dist/modules/node_health_cache.d.ts +55 -0
  576. package/dist/modules/node_health_cache.d.ts.map +1 -0
  577. package/dist/modules/node_health_cache.js +134 -0
  578. package/dist/modules/node_health_cache.js.map +1 -0
  579. package/dist/modules/node_manager.d.ts +215 -0
  580. package/dist/modules/node_manager.d.ts.map +1 -0
  581. package/dist/modules/node_manager.js +628 -0
  582. package/dist/modules/node_manager.js.map +1 -0
  583. package/dist/modules/order/accounting.d.ts +349 -0
  584. package/dist/modules/order/accounting.d.ts.map +1 -0
  585. package/dist/modules/order/accounting.js +1191 -0
  586. package/dist/modules/order/accounting.js.map +1 -0
  587. package/dist/modules/order/async_lock.d.ts +126 -0
  588. package/dist/modules/order/async_lock.d.ts.map +1 -0
  589. package/dist/modules/order/async_lock.js +195 -0
  590. package/dist/modules/order/async_lock.js.map +1 -0
  591. package/dist/modules/order/export.d.ts +129 -0
  592. package/dist/modules/order/export.d.ts.map +1 -0
  593. package/dist/modules/order/export.js +316 -0
  594. package/dist/modules/order/export.js.map +1 -0
  595. package/dist/modules/order/format.d.ts +158 -0
  596. package/dist/modules/order/format.d.ts.map +1 -0
  597. package/dist/modules/order/format.js +232 -0
  598. package/dist/modules/order/format.js.map +1 -0
  599. package/dist/modules/order/grid.d.ts +549 -0
  600. package/dist/modules/order/grid.d.ts.map +1 -0
  601. package/dist/modules/order/grid.js +1746 -0
  602. package/dist/modules/order/grid.js.map +1 -0
  603. package/dist/modules/order/grid_reconcile.d.ts +154 -0
  604. package/dist/modules/order/grid_reconcile.d.ts.map +1 -0
  605. package/dist/modules/order/grid_reconcile.js +1192 -0
  606. package/dist/modules/order/grid_reconcile.js.map +1 -0
  607. package/dist/modules/order/index.d.ts +55 -0
  608. package/dist/modules/order/index.d.ts.map +1 -0
  609. package/dist/modules/order/index.js +79 -0
  610. package/dist/modules/order/index.js.map +1 -0
  611. package/dist/modules/order/logger.d.ts +136 -0
  612. package/dist/modules/order/logger.d.ts.map +1 -0
  613. package/dist/modules/order/logger.js +614 -0
  614. package/dist/modules/order/logger.js.map +1 -0
  615. package/dist/modules/order/logger_state.d.ts +133 -0
  616. package/dist/modules/order/logger_state.d.ts.map +1 -0
  617. package/dist/modules/order/logger_state.js +170 -0
  618. package/dist/modules/order/logger_state.js.map +1 -0
  619. package/dist/modules/order/manager.d.ts +413 -0
  620. package/dist/modules/order/manager.d.ts.map +1 -0
  621. package/dist/modules/order/manager.js +1605 -0
  622. package/dist/modules/order/manager.js.map +1 -0
  623. package/dist/modules/order/processed_fill_store.d.ts +135 -0
  624. package/dist/modules/order/processed_fill_store.d.ts.map +1 -0
  625. package/dist/modules/order/processed_fill_store.js +288 -0
  626. package/dist/modules/order/processed_fill_store.js.map +1 -0
  627. package/dist/modules/order/runner.d.ts +70 -0
  628. package/dist/modules/order/runner.d.ts.map +1 -0
  629. package/dist/modules/order/runner.js +140 -0
  630. package/dist/modules/order/runner.js.map +1 -0
  631. package/dist/modules/order/strategy.d.ts +196 -0
  632. package/dist/modules/order/strategy.d.ts.map +1 -0
  633. package/dist/modules/order/strategy.js +398 -0
  634. package/dist/modules/order/strategy.js.map +1 -0
  635. package/dist/modules/order/sync_engine.d.ts +386 -0
  636. package/dist/modules/order/sync_engine.d.ts.map +1 -0
  637. package/dist/modules/order/sync_engine.js +1459 -0
  638. package/dist/modules/order/sync_engine.js.map +1 -0
  639. package/dist/modules/order/utils/math.d.ts +677 -0
  640. package/dist/modules/order/utils/math.d.ts.map +1 -0
  641. package/dist/modules/order/utils/math.js +1172 -0
  642. package/dist/modules/order/utils/math.js.map +1 -0
  643. package/dist/modules/order/utils/order.d.ts +572 -0
  644. package/dist/modules/order/utils/order.d.ts.map +1 -0
  645. package/dist/modules/order/utils/order.js +1145 -0
  646. package/dist/modules/order/utils/order.js.map +1 -0
  647. package/dist/modules/order/utils/system.d.ts +268 -0
  648. package/dist/modules/order/utils/system.d.ts.map +1 -0
  649. package/dist/modules/order/utils/system.js +1261 -0
  650. package/dist/modules/order/utils/system.js.map +1 -0
  651. package/dist/modules/order/utils/validate.d.ts +280 -0
  652. package/dist/modules/order/utils/validate.d.ts.map +1 -0
  653. package/dist/modules/order/utils/validate.js +918 -0
  654. package/dist/modules/order/utils/validate.js.map +1 -0
  655. package/dist/modules/order/working_grid.d.ts +212 -0
  656. package/dist/modules/order/working_grid.d.ts.map +1 -0
  657. package/dist/modules/order/working_grid.js +279 -0
  658. package/dist/modules/order/working_grid.js.map +1 -0
  659. package/dist/modules/path_api.d.ts +32 -0
  660. package/dist/modules/path_api.d.ts.map +1 -0
  661. package/dist/modules/path_api.js +148 -0
  662. package/dist/modules/path_api.js.map +1 -0
  663. package/dist/modules/paths.d.ts +58 -0
  664. package/dist/modules/paths.d.ts.map +1 -0
  665. package/dist/modules/paths.js +82 -0
  666. package/dist/modules/paths.js.map +1 -0
  667. package/dist/modules/process_discovery.d.ts +58 -0
  668. package/dist/modules/process_discovery.d.ts.map +1 -0
  669. package/dist/modules/process_discovery.js +265 -0
  670. package/dist/modules/process_discovery.js.map +1 -0
  671. package/dist/modules/runtime.d.ts +34 -0
  672. package/dist/modules/runtime.d.ts.map +1 -0
  673. package/dist/modules/runtime.js +98 -0
  674. package/dist/modules/runtime.js.map +1 -0
  675. package/dist/modules/runtime_settings.d.ts +12 -0
  676. package/dist/modules/runtime_settings.d.ts.map +1 -0
  677. package/dist/modules/runtime_settings.js +122 -0
  678. package/dist/modules/runtime_settings.js.map +1 -0
  679. package/dist/modules/settings_merge.d.ts +38 -0
  680. package/dist/modules/settings_merge.d.ts.map +1 -0
  681. package/dist/modules/settings_merge.js +246 -0
  682. package/dist/modules/settings_merge.js.map +1 -0
  683. package/dist/modules/storage/browser_adapter.d.ts +56 -0
  684. package/dist/modules/storage/browser_adapter.d.ts.map +1 -0
  685. package/dist/modules/storage/browser_adapter.js +231 -0
  686. package/dist/modules/storage/browser_adapter.js.map +1 -0
  687. package/dist/modules/storage/index.d.ts +28 -0
  688. package/dist/modules/storage/index.d.ts.map +1 -0
  689. package/dist/modules/storage/index.js +52 -0
  690. package/dist/modules/storage/index.js.map +1 -0
  691. package/dist/modules/storage/node_adapter.d.ts +49 -0
  692. package/dist/modules/storage/node_adapter.d.ts.map +1 -0
  693. package/dist/modules/storage/node_adapter.js +167 -0
  694. package/dist/modules/storage/node_adapter.js.map +1 -0
  695. package/dist/modules/storage/types.d.ts +92 -0
  696. package/dist/modules/storage/types.d.ts.map +1 -0
  697. package/dist/modules/storage/types.js +3 -0
  698. package/dist/modules/storage/types.js.map +1 -0
  699. package/dist/modules/types.d.ts +1382 -0
  700. package/dist/modules/types.d.ts.map +1 -0
  701. package/dist/modules/types.js +11 -0
  702. package/dist/modules/types.js.map +1 -0
  703. package/dist/modules/utils/base58check.d.ts +12 -0
  704. package/dist/modules/utils/base58check.d.ts.map +1 -0
  705. package/dist/modules/utils/base58check.js +112 -0
  706. package/dist/modules/utils/base58check.js.map +1 -0
  707. package/dist/modules/utils/build_dir.d.ts +7 -0
  708. package/dist/modules/utils/build_dir.d.ts.map +1 -0
  709. package/dist/modules/utils/build_dir.js +8 -0
  710. package/dist/modules/utils/build_dir.js.map +1 -0
  711. package/dist/modules/utils/fs_utils.d.ts +25 -0
  712. package/dist/modules/utils/fs_utils.d.ts.map +1 -0
  713. package/dist/modules/utils/fs_utils.js +27 -0
  714. package/dist/modules/utils/fs_utils.js.map +1 -0
  715. package/dist/modules/utils/math_utils.d.ts +10 -0
  716. package/dist/modules/utils/math_utils.d.ts.map +1 -0
  717. package/dist/modules/utils/math_utils.js +17 -0
  718. package/dist/modules/utils/math_utils.js.map +1 -0
  719. package/dist/modules/validate_profiles.d.ts +37 -0
  720. package/dist/modules/validate_profiles.d.ts.map +1 -0
  721. package/dist/modules/validate_profiles.js +369 -0
  722. package/dist/modules/validate_profiles.js.map +1 -0
  723. package/dist/pm2.d.ts +167 -0
  724. package/dist/pm2.d.ts.map +1 -0
  725. package/dist/pm2.js +998 -0
  726. package/dist/pm2.js.map +1 -0
  727. package/dist/scripts/analyze-git.d.ts +11 -0
  728. package/dist/scripts/analyze-git.d.ts.map +1 -0
  729. package/dist/scripts/analyze-git.js +851 -0
  730. package/dist/scripts/analyze-git.js.map +1 -0
  731. package/dist/scripts/analyze-orders.d.ts +17 -0
  732. package/dist/scripts/analyze-orders.d.ts.map +1 -0
  733. package/dist/scripts/analyze-orders.js +1568 -0
  734. package/dist/scripts/analyze-orders.js.map +1 -0
  735. package/dist/scripts/diagnose-kibana-candles.d.ts +3 -0
  736. package/dist/scripts/diagnose-kibana-candles.d.ts.map +1 -0
  737. package/dist/scripts/diagnose-kibana-candles.js +82 -0
  738. package/dist/scripts/diagnose-kibana-candles.js.map +1 -0
  739. package/dist/scripts/diagnose-pool-history.d.ts +3 -0
  740. package/dist/scripts/diagnose-pool-history.d.ts.map +1 -0
  741. package/dist/scripts/diagnose-pool-history.js +296 -0
  742. package/dist/scripts/diagnose-pool-history.js.map +1 -0
  743. package/dist/scripts/divergence-calc.d.ts +26 -0
  744. package/dist/scripts/divergence-calc.d.ts.map +1 -0
  745. package/dist/scripts/divergence-calc.js +119 -0
  746. package/dist/scripts/divergence-calc.js.map +1 -0
  747. package/dist/scripts/generate_lp_chart.d.ts +31 -0
  748. package/dist/scripts/generate_lp_chart.d.ts.map +1 -0
  749. package/dist/scripts/generate_lp_chart.js +92 -0
  750. package/dist/scripts/generate_lp_chart.js.map +1 -0
  751. package/dist/scripts/generate_mainnet_corpus_report.d.ts +24 -0
  752. package/dist/scripts/generate_mainnet_corpus_report.d.ts.map +1 -0
  753. package/dist/scripts/generate_mainnet_corpus_report.js +237 -0
  754. package/dist/scripts/generate_mainnet_corpus_report.js.map +1 -0
  755. package/dist/scripts/generate_market_adapter_whitelist.d.ts +2 -0
  756. package/dist/scripts/generate_market_adapter_whitelist.d.ts.map +1 -0
  757. package/dist/scripts/generate_market_adapter_whitelist.js +111 -0
  758. package/dist/scripts/generate_market_adapter_whitelist.js.map +1 -0
  759. package/dist/scripts/migrate_bot_keys.d.ts +6 -0
  760. package/dist/scripts/migrate_bot_keys.d.ts.map +1 -0
  761. package/dist/scripts/migrate_bot_keys.js +301 -0
  762. package/dist/scripts/migrate_bot_keys.js.map +1 -0
  763. package/dist/scripts/native_release_gates.d.ts +3 -0
  764. package/dist/scripts/native_release_gates.d.ts.map +1 -0
  765. package/dist/scripts/native_release_gates.js +52 -0
  766. package/dist/scripts/native_release_gates.js.map +1 -0
  767. package/dist/scripts/print_grid.d.ts +16 -0
  768. package/dist/scripts/print_grid.d.ts.map +1 -0
  769. package/dist/scripts/print_grid.js +80 -0
  770. package/dist/scripts/print_grid.js.map +1 -0
  771. package/dist/scripts/run-tests.d.ts +2 -0
  772. package/dist/scripts/run-tests.d.ts.map +1 -0
  773. package/dist/scripts/run-tests.js +49 -0
  774. package/dist/scripts/run-tests.js.map +1 -0
  775. package/dist/scripts/sync-version.d.ts +14 -0
  776. package/dist/scripts/sync-version.d.ts.map +1 -0
  777. package/dist/scripts/sync-version.js +158 -0
  778. package/dist/scripts/sync-version.js.map +1 -0
  779. package/dist/scripts/test-credit-renewal.d.ts +2 -0
  780. package/dist/scripts/test-credit-renewal.d.ts.map +1 -0
  781. package/dist/scripts/test-credit-renewal.js +329 -0
  782. package/dist/scripts/test-credit-renewal.js.map +1 -0
  783. package/dist/scripts/update.d.ts +24 -0
  784. package/dist/scripts/update.d.ts.map +1 -0
  785. package/dist/scripts/update.js +650 -0
  786. package/dist/scripts/update.js.map +1 -0
  787. package/dist/scripts/validate_bots.d.ts +16 -0
  788. package/dist/scripts/validate_bots.d.ts.map +1 -0
  789. package/dist/scripts/validate_bots.js +106 -0
  790. package/dist/scripts/validate_bots.js.map +1 -0
  791. package/dist/scripts/verify-browser-bundle.d.ts +22 -0
  792. package/dist/scripts/verify-browser-bundle.d.ts.map +1 -0
  793. package/dist/scripts/verify-browser-bundle.js +339 -0
  794. package/dist/scripts/verify-browser-bundle.js.map +1 -0
  795. package/dist/unlock.d.ts +48 -0
  796. package/dist/unlock.d.ts.map +1 -0
  797. package/dist/unlock.js +925 -0
  798. package/dist/unlock.js.map +1 -0
  799. package/package.json +112 -0
  800. package/scripts/README.md +356 -0
  801. package/scripts/clear-all.sh +195 -0
  802. package/scripts/clear-logs.sh +95 -0
  803. package/scripts/clear-market-adapter.sh +196 -0
  804. package/scripts/clear-orders.sh +113 -0
  805. package/scripts/create-bot-symlinks.sh +51 -0
  806. package/scripts/postinstall.js +9 -0
  807. package/scripts/reset-settings.sh +118 -0
@@ -0,0 +1,896 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { escapeHtml, serializeJsonForScript, toEpochSeconds, UPLOT_SHARED_SCRIPT } = require('./chart_utils');
6
+ const { ensureDir, readJSON } = require('../modules/utils/fs_utils');
7
+ const { fixedTo } = require('../modules/utils/math_utils');
8
+ function parseArgs(argv = process.argv.slice(2)) {
9
+ const cfg = {
10
+ inputFile: null,
11
+ outputFile: 'analysis/charts/derivative_chart.html',
12
+ title: 'Derivative Trend Analysis',
13
+ quiet: false,
14
+ };
15
+ for (let i = 0; i < argv.length; i++) {
16
+ const arg = argv[i];
17
+ if (arg === '--input')
18
+ cfg.inputFile = argv[++i];
19
+ else if (arg === '--output')
20
+ cfg.outputFile = argv[++i];
21
+ else if (arg === '--title')
22
+ cfg.title = argv[++i];
23
+ else if (arg === '--quiet')
24
+ cfg.quiet = true;
25
+ else if (arg === '--help' || arg === '-h') {
26
+ showHelp();
27
+ process.exit(0);
28
+ }
29
+ }
30
+ if (!cfg.inputFile) {
31
+ console.error('Error: --input required');
32
+ showHelp();
33
+ process.exit(1);
34
+ }
35
+ return cfg;
36
+ }
37
+ function showHelp() {
38
+ console.log(`
39
+ Derivative Chart Generator (uPlot)
40
+ Usage:
41
+ tsx analysis/derivative_chart_generator.ts --input <file.json> [options]
42
+ Options:
43
+ --output FILE Output HTML (default: analysis/charts/derivative_chart.html)
44
+ --title TEXT Chart title
45
+ --quiet Suppress output
46
+ `);
47
+ }
48
+ function trendToNum(trend) {
49
+ if (trend === 'UP')
50
+ return 1;
51
+ if (trend === 'DOWN')
52
+ return -1;
53
+ return 0;
54
+ }
55
+ function countTrend(arr) {
56
+ return arr.reduce((acc, v) => {
57
+ acc.total += 1;
58
+ if (v > 0)
59
+ acc.up += 1;
60
+ else if (v < 0)
61
+ acc.down += 1;
62
+ else
63
+ acc.neutral += 1;
64
+ return acc;
65
+ }, { total: 0, up: 0, down: 0, neutral: 0 });
66
+ }
67
+ function countStates(arr, positive, negative) {
68
+ return arr.reduce((acc, v) => {
69
+ acc.total += 1;
70
+ if (v === positive)
71
+ acc.positive += 1;
72
+ else if (v === negative)
73
+ acc.negative += 1;
74
+ else
75
+ acc.neutral += 1;
76
+ return acc;
77
+ }, { total: 0, positive: 0, negative: 0, neutral: 0 });
78
+ }
79
+ function generateHTML(data, title) {
80
+ const results = data.allResults || [];
81
+ if (results.length === 0)
82
+ throw new Error('No analysis results in input');
83
+ const source = data.config?.source || 'Unknown';
84
+ const smaPeriod = data.config?.slowSmaPeriod || 'N/A';
85
+ const fastSmaPeriod = data.config?.fastSmaPeriod || null;
86
+ const hasFastSma = fastSmaPeriod !== null && results.some((r) => r.fastSmaValue !== null && r.fastSmaValue !== undefined);
87
+ const macdFast = data.config?.macdFastPeriod ?? 12;
88
+ const macdSlow = data.config?.macdSlowPeriod ?? 26;
89
+ const macdSig = data.config?.macdSignalPeriod ?? 9;
90
+ const rsiPeriod = data.config?.rsiPeriod ?? 14;
91
+ const rsiOB = data.config?.rsiExtreme ?? 90;
92
+ const rsiOS = 100 - rsiOB;
93
+ const dates = results.map((r, idx) => toEpochSeconds(r.timestamp || Date.now(), idx));
94
+ const prices = results.map((r) => r.price);
95
+ const smaValues = results.map((r) => r.slowSma);
96
+ const fastSmaValues = results.map((r) => r.fastSmaValue);
97
+ const smaNum = results.map((r) => trendToNum(r.smaRawTrend));
98
+ const smaUp = smaNum.map((v) => (v > 0 ? 1 : 0));
99
+ const smaDown = smaNum.map((v) => (v < 0 ? -1 : 0));
100
+ const smaConf = results.map((r) => r.smaConfidence ?? 0);
101
+ const fastSmaNum = results.map((r) => trendToNum(r.fastSmaRawTrend));
102
+ const fastSmaUp = fastSmaNum.map((v) => (v > 0 ? 1 : 0));
103
+ const fastSmaDown = fastSmaNum.map((v) => (v < 0 ? -1 : 0));
104
+ const fastSmaConf = results.map((r) => r.fastSmaConfidence || 0);
105
+ const macdHistogram = results.map((r) => r.macdHistogram ?? null);
106
+ const macdLine = results.map((r) => r.macdLine ?? null);
107
+ const macdSignal = results.map((r) => r.macdSignal ?? null);
108
+ const macdHistUp = macdHistogram.map((v) => (v !== null && v > 0 ? v : null));
109
+ const macdHistDown = macdHistogram.map((v) => (v !== null && v < 0 ? v : null));
110
+ const rsiValues = results.map((r) => r.rsi ?? null);
111
+ const interpState = results.map((r) => r.interpretation || 'NEUTRAL');
112
+ const interpBars = results.map((r) => r.interpretationBars ?? 0);
113
+ const interpValues = interpState.map((s) => (s === 'BULL' ? 0.75
114
+ : s === 'BULL_WEAK' ? 0.35
115
+ : s === 'OVERBOUGHT' ? 0.95
116
+ : s === 'BEAR' ? -0.75
117
+ : s === 'BEAR_WEAK' ? -0.35
118
+ : s === 'OVERSOLD' ? -0.95
119
+ : 0));
120
+ const interpBull = interpState.map((s) => (s === 'BULL' ? 1 : 0));
121
+ const interpBullWeak = interpState.map((s) => (s === 'BULL_WEAK' ? 0.5 : 0));
122
+ const interpOB = interpState.map((s) => (s === 'OVERBOUGHT' ? 0.75 : 0));
123
+ const interpBear = interpState.map((s) => (s === 'BEAR' ? -1 : 0));
124
+ const interpBearWeak = interpState.map((s) => (s === 'BEAR_WEAK' ? -0.5 : 0));
125
+ const interpOS = interpState.map((s) => (s === 'OVERSOLD' ? -0.75 : 0));
126
+ const interpBullBlock = interpState.map((s) => (s === 'BULL' ? 1 : 0));
127
+ const interpBullWeakBlock = interpState.map((s) => (s === 'BULL_WEAK' ? 1 : 0));
128
+ const interpOBBlock = interpState.map((s) => (s === 'OVERBOUGHT' ? 1 : 0));
129
+ const interpBearBlock = interpState.map((s) => (s === 'BEAR' ? -1 : 0));
130
+ const interpBearWeakBlock = interpState.map((s) => (s === 'BEAR_WEAK' ? -1 : 0));
131
+ const interpOSBlock = interpState.map((s) => (s === 'OVERSOLD' ? -1 : 0));
132
+ const entryBias = results.map((r) => r.entryBias || 'NONE');
133
+ const entryLabelMap = {
134
+ NONE: 'No fresh entry',
135
+ EARLY_LONG: 'Early long entry',
136
+ CONFIRM_LONG: 'Confirmed long entry',
137
+ LATE_LONG: 'Late long entry',
138
+ EARLY_SHORT: 'Early short entry',
139
+ CONFIRM_SHORT: 'Confirmed short entry',
140
+ LATE_SHORT: 'Late short entry',
141
+ };
142
+ const entryBiasLabel = entryBias.map((v) => entryLabelMap[v] || v);
143
+ const signalPhase = results.map((r, i) => {
144
+ if (entryBias[i] !== 'NONE')
145
+ return entryLabelMap[entryBias[i]] || entryBias[i];
146
+ switch (interpState[i]) {
147
+ case 'BULL':
148
+ return 'Bull trend active';
149
+ case 'BULL_WEAK':
150
+ return 'Bull setup active';
151
+ case 'BEAR':
152
+ return 'Bear trend active';
153
+ case 'BEAR_WEAK':
154
+ return 'Bear setup active';
155
+ case 'OVERBOUGHT':
156
+ return 'Overbought exit pressure';
157
+ case 'OVERSOLD':
158
+ return 'Oversold exit pressure';
159
+ default:
160
+ return 'No active setup';
161
+ }
162
+ });
163
+ const bullWeakEntryMarkers = results.map((r) => (r.isBullWeakEntry ? 0.38 : null));
164
+ const bullConfirmationMarkers = results.map((r) => (r.isBullConfirmation ? 0.88 : null));
165
+ const lateBullMarkers = results.map((r) => (r.isLateBullWithoutWeak ? 0.88 : null));
166
+ const bearWeakEntryMarkers = results.map((r) => (r.isBearWeakEntry ? -0.38 : null));
167
+ const bearConfirmationMarkers = results.map((r) => (r.isBearConfirmation ? -0.88 : null));
168
+ const lateBearMarkers = results.map((r) => (r.isLateBearWithoutWeak ? -0.88 : null));
169
+ const priceSeries = prices.filter((v) => Number.isFinite(v));
170
+ const priceStart = priceSeries.length ? priceSeries[0] : null;
171
+ const priceEnd = priceSeries.length ? priceSeries[priceSeries.length - 1] : null;
172
+ const priceHigh = priceSeries.length ? Math.max(...priceSeries) : null;
173
+ const priceLow = priceSeries.length ? Math.min(...priceSeries) : null;
174
+ const priceChange = priceStart !== null && priceEnd !== null ? priceEnd - priceStart : null;
175
+ const priceChangePct = priceStart !== null && priceEnd !== null && priceStart !== 0
176
+ ? ((priceEnd - priceStart) / priceStart) * 100
177
+ : null;
178
+ const smaTotals = countTrend(smaNum);
179
+ const fastSmaTotals = countTrend(fastSmaNum);
180
+ const macdTotals = countTrend(results.map((r) => (r.macdTrend === 'BULL' ? 1 : r.macdTrend === 'BEAR' ? -1 : 0)));
181
+ const rsiTotals = countStates(results.map((r) => r.rsiZone || 'NEUTRAL'), 'OVERBOUGHT', 'OVERSOLD');
182
+ const signalTotals = (() => {
183
+ let up = 0, down = 0, prev = null;
184
+ for (const state of interpState) {
185
+ const isBull = state === 'BULL' || state === 'BULL_WEAK';
186
+ const isBear = state === 'BEAR' || state === 'BEAR_WEAK';
187
+ if (isBull) {
188
+ if (state !== prev)
189
+ up += 1;
190
+ }
191
+ else if (isBear) {
192
+ if (state !== prev)
193
+ down += 1;
194
+ }
195
+ prev = state;
196
+ }
197
+ return { up, down };
198
+ })();
199
+ const candleCount = results.length;
200
+ const fmtPrice = (v) => (v === null ? 'n/a' : fixedTo(v, 6));
201
+ const fmtSignedPrice = (v) => (v === null ? 'n/a' : `${v >= 0 ? '+' : ''}${Math.round(Number(v))}`);
202
+ const fmtPct = (v) => (v === null ? 'n/a' : `${v >= 0 ? '+' : ''}${Math.round(Number(v))}%`);
203
+ const fmtShare = (count) => (candleCount > 0 ? `${Math.round((count / candleCount) * 100)}%` : 'n/a');
204
+ const headerParts = [];
205
+ if (smaPeriod !== 'N/A')
206
+ headerParts.push(`SMA(${smaPeriod})`);
207
+ if (hasFastSma)
208
+ headerParts.push(`fastSMA(${fastSmaPeriod})`);
209
+ headerParts.push(`MACD(${macdFast},${macdSlow},${macdSig})`);
210
+ headerParts.push(`RSI(${rsiPeriod})`);
211
+ const headerSub = headerParts.join(' &middot; ');
212
+ const statsPanel = `
213
+ <div><span class="label">Candles</span> <span class="val">${results.length}</span></div>
214
+ <div style="margin-top:6px"><span class="label">&#x2500;&#x2500; Price summary &#x2500;&#x2500;</span></div>
215
+ <div><span class="label">Start</span> <span class="val">${fmtPrice(priceStart)}</span></div>
216
+ <div><span class="label">End</span> <span class="val">${fmtPrice(priceEnd)}</span></div>
217
+ <div style="margin-top:4px"></div>
218
+ <div><span class="label">High</span> <span class="val">${fmtPrice(priceHigh)}</span></div>
219
+ <div><span class="label">Low</span> <span class="val">${fmtPrice(priceLow)}</span></div>
220
+ <div style="margin-top:4px"></div>
221
+ <div><span class="label">Abs change</span> <span class="val">${fmtSignedPrice(priceChange)}</span></div>
222
+ <div><span class="label">Rel change</span> <span class="val">${fmtPct(priceChangePct)}</span></div>
223
+ <div style="margin-top:6px"><span class="label">&#x2500;&#x2500; Totals &#x2500;&#x2500;</span></div>
224
+ <div><span class="label">SMA(${smaPeriod})</span> <span class="val"><span class="pos">&#x25B2;</span>${fmtShare(smaTotals.up)} <span class="neg">&#x25BC;</span>${fmtShare(smaTotals.down)} <span class="muted">&#x25CF;</span>${fmtShare(smaTotals.neutral)}</span></div>
225
+ ${hasFastSma ? `<div><span class="label">fastSMA(${fastSmaPeriod})</span> <span class="val"><span class="pos">&#x25B2;</span>${fmtShare(fastSmaTotals.up)} <span class="neg">&#x25BC;</span>${fmtShare(fastSmaTotals.down)} <span class="muted">&#x25CF;</span>${fmtShare(fastSmaTotals.neutral)}</span></div>` : ''}
226
+ <div style="margin-top:4px"></div>
227
+ <div><span class="label">MACD(${macdFast},${macdSlow},${macdSig})</span> <span class="val"><span class="pos">&#x25B2;</span>${fmtShare(macdTotals.up)} <span class="neg">&#x25BC;</span>${fmtShare(macdTotals.down)} <span class="muted">&#x25CF;</span>${fmtShare(macdTotals.neutral)}</span></div>
228
+ <div><span class="label">RSI(${rsiPeriod})</span> <span class="val"><span class="pos">&#x25B2;</span>${fmtShare(rsiTotals.positive)} <span class="neg">&#x25BC;</span>${fmtShare(rsiTotals.negative)} <span class="muted">&#x25CF;</span>${fmtShare(rsiTotals.neutral)}</span></div>
229
+ <div style="margin-top:4px"></div>
230
+ <div><span class="label">Signals</span> <span class="val"><span class="pos">&#x25B2;</span>${signalTotals.up} <span class="neg">&#x25BC;</span>${signalTotals.down}</span></div>
231
+ `;
232
+ const chartId = `deriv-uplot-${Date.now()}-${Math.random().toString(36).slice(2)}`;
233
+ return `<!DOCTYPE html>
234
+ <html lang="en">
235
+ <head>
236
+ <meta charset="UTF-8">
237
+ <meta name="darkreader-lock">
238
+ <meta name="color-scheme" content="dark">
239
+ <title>${escapeHtml(title)}</title>
240
+ <link rel="stylesheet" href="../uplot/uPlot.min.css">
241
+ <script src="../uplot/uPlot.iife.min.js"></script>
242
+ <style>
243
+ :root { color-scheme: dark; }
244
+ * { box-sizing: border-box; margin: 0; padding: 0; }
245
+ body {
246
+ background: #0e1117;
247
+ color: #e0e0e0;
248
+ font-family: 'Segoe UI', sans-serif;
249
+ overflow: hidden;
250
+ }
251
+ #header {
252
+ position: fixed;
253
+ top: 0;
254
+ left: 0;
255
+ right: 0;
256
+ z-index: 100;
257
+ background: rgba(14,17,23,0.92);
258
+ backdrop-filter: blur(4px);
259
+ border-bottom: 1px solid #2a2e3e;
260
+ padding: 8px 20px;
261
+ display: flex;
262
+ align-items: center;
263
+ gap: 18px;
264
+ }
265
+ #header h1 { font-size: 16px; font-weight: 600; color: #fff; white-space: nowrap; }
266
+ #header .sub { font-size: 11px; color: #888; white-space: nowrap; }
267
+ #stats {
268
+ position: fixed;
269
+ top: 160px;
270
+ right: 10px;
271
+ z-index: 100;
272
+ background: rgba(20,24,32,0.92);
273
+ backdrop-filter: blur(4px);
274
+ border: 1px solid #2a2e3e;
275
+ border-radius: 6px;
276
+ padding: 10px 14px;
277
+ font-size: 12px;
278
+ line-height: 1.85;
279
+ min-width: 230px;
280
+ }
281
+ #stats .label { color: #888; }
282
+ #stats .val { color: #e0e0e0; font-weight: 600; font-variant-numeric: tabular-nums; }
283
+ #stats .pos { color: #26a69a; }
284
+ #stats .neg { color: #ef5350; }
285
+ #stats .muted { color: #9ca3b8; }
286
+ #charts {
287
+ position: fixed;
288
+ top: 44px;
289
+ left: 0;
290
+ right: 276px;
291
+ bottom: 0;
292
+ padding-top: 0;
293
+ display: flex;
294
+ flex-direction: column;
295
+ gap: 0;
296
+ border-right: 1px solid #2a2e3e;
297
+ }
298
+ .chart {
299
+ width: 100%;
300
+ min-height: 0;
301
+ position: relative;
302
+ padding-top: 18px;
303
+ }
304
+ .chart::before {
305
+ content: attr(data-panel-title);
306
+ position: absolute;
307
+ top: 4px;
308
+ left: 10px;
309
+ z-index: 2;
310
+ pointer-events: none;
311
+ font-size: 10px;
312
+ letter-spacing: 0.08em;
313
+ text-transform: uppercase;
314
+ color: #8ea3be;
315
+ background: rgba(14,17,23,0.84);
316
+ border: 1px solid #263042;
317
+ border-radius: 999px;
318
+ padding: 2px 8px;
319
+ }
320
+ #price-chart { flex: 2.35; }
321
+ #deriv-chart { flex: 0.78; }
322
+ #interp-chart { flex: 1.22; }
323
+ #macd-chart { flex: 1.05; }
324
+ #rsi-chart { flex: 1.28; min-height: 0; }
325
+ .uplot { background: #0e1117; }
326
+ .u-cursor-y { display: none !important; border-top: 1px dashed rgba(255,255,255,0.35) !important; background: transparent !important; }
327
+ .uplot.is-hovered .u-cursor-y { display: block !important; }
328
+ .u-cursor-x { border-left: 1px dashed rgba(255,255,255,0.35) !important; background: transparent !important; }
329
+ .u-legend { display: none !important; }
330
+ #global-tooltip {
331
+ position: fixed;
332
+ z-index: 200;
333
+ pointer-events: none;
334
+ background: rgba(14,17,23,0.96);
335
+ border: 1px solid #2a2e3e;
336
+ border-radius: 6px;
337
+ padding: 8px 12px;
338
+ font-size: 11px;
339
+ line-height: 1.6;
340
+ color: #e0e0e0;
341
+ box-shadow: 0 4px 16px rgba(0,0,0,0.4);
342
+ display: none;
343
+ max-width: 260px;
344
+ white-space: nowrap;
345
+ }
346
+ #global-tooltip .tt-row { display: flex; justify-content: space-between; gap: 16px; }
347
+ #global-tooltip .tt-label { color: #888; }
348
+ #global-tooltip .tt-val { font-weight: 600; font-variant-numeric: tabular-nums; }
349
+ #global-tooltip .tt-sep { border-top: 1px solid #263042; margin: 4px 0; }
350
+ #global-tooltip .tt-head { color: #fff; font-weight: 700; margin-bottom: 4px; }
351
+ </style>
352
+ </head>
353
+ <body>
354
+ <div id="global-tooltip"></div>
355
+ <div id="header">
356
+ <h1>&#x1F4CA; ${escapeHtml(title)}</h1>
357
+ <span class="sub">Source: ${escapeHtml(source)}</span>
358
+ <span class="sub">${headerSub}</span>
359
+ <button id="reset-zoom-btn" onclick="resetZoom()" title="Reset x-axis zoom on all panels" style="background:#1e2330;color:#ccc;border:1px solid #2a2e3e;border-radius:4px;padding:3px 10px;font-size:11px;cursor:pointer;white-space:nowrap;">&#x21BA; Reset Zoom</button>
360
+ <span class="sub" style="margin-left:auto">Generated: ${new Date().toLocaleString()}</span>
361
+ </div>
362
+ <div id="stats">${statsPanel}</div>
363
+ <div id="charts">
364
+ <div id="price-chart" class="chart" data-panel-title="Price / AMA"></div>
365
+ <div id="deriv-chart" class="chart" data-panel-title="Trend Blocks"></div>
366
+ <div id="interp-chart" class="chart" data-panel-title="Signal State"></div>
367
+ <div id="macd-chart" class="chart" data-panel-title="MACD"></div>
368
+ <div id="rsi-chart" class="chart" data-panel-title="RSI"></div>
369
+ </div>
370
+ <script type="application/json" id="deriv-payload">${serializeJsonForScript({
371
+ dates,
372
+ prices,
373
+ smaValues,
374
+ fastSmaValues: hasFastSma ? fastSmaValues : null,
375
+ macdHistogram,
376
+ macdLine,
377
+ macdSignal,
378
+ macdHistUp,
379
+ macdHistDown,
380
+ rsiValues,
381
+ interpBull,
382
+ interpBullWeak,
383
+ interpOB,
384
+ interpBear,
385
+ interpBearWeak,
386
+ interpOS,
387
+ interpBullBlock,
388
+ interpBullWeakBlock,
389
+ interpOBBlock,
390
+ interpBearBlock,
391
+ interpBearWeakBlock,
392
+ interpOSBlock,
393
+ interpValues,
394
+ interpState,
395
+ interpBars,
396
+ entryBias,
397
+ entryBiasLabel,
398
+ signalPhase,
399
+ bullWeakEntryMarkers,
400
+ bullConfirmationMarkers,
401
+ lateBullMarkers,
402
+ bearWeakEntryMarkers,
403
+ bearConfirmationMarkers,
404
+ lateBearMarkers,
405
+ smaUp,
406
+ smaDown,
407
+ smaConf,
408
+ smaNum,
409
+ fastSmaUp: hasFastSma ? fastSmaUp : null,
410
+ fastSmaDown: hasFastSma ? fastSmaDown : null,
411
+ fastSmaConf: hasFastSma ? fastSmaConf : null,
412
+ fastSmaNum: hasFastSma ? fastSmaNum : null,
413
+ rsiOB,
414
+ rsiOS,
415
+ })}</script>
416
+ <script>
417
+ const payload = JSON.parse(document.getElementById('deriv-payload').textContent);
418
+ const dates = payload.dates;
419
+ const prices = payload.prices;
420
+ const smaValues = payload.smaValues;
421
+ const fastSmaValues = payload.fastSmaValues || [];
422
+ const macdHistogram = payload.macdHistogram;
423
+ const macdLine = payload.macdLine;
424
+ const macdSignal = payload.macdSignal;
425
+ const macdHistUp = payload.macdHistUp;
426
+ const macdHistDown = payload.macdHistDown;
427
+ const rsiValues = payload.rsiValues;
428
+ const interpBull = payload.interpBull;
429
+ const interpBullWeak = payload.interpBullWeak;
430
+ const interpOB = payload.interpOB;
431
+ const interpBear = payload.interpBear;
432
+ const interpBearWeak = payload.interpBearWeak;
433
+ const interpOS = payload.interpOS;
434
+ const interpBullBlock = payload.interpBullBlock;
435
+ const interpBullWeakBlock = payload.interpBullWeakBlock;
436
+ const interpOBBlock = payload.interpOBBlock;
437
+ const interpBearBlock = payload.interpBearBlock;
438
+ const interpBearWeakBlock = payload.interpBearWeakBlock;
439
+ const interpOSBlock = payload.interpOSBlock;
440
+ const interpValues = payload.interpValues;
441
+ const interpState = payload.interpState;
442
+ const interpBars = payload.interpBars;
443
+ const entryBias = payload.entryBias;
444
+ const entryBiasLabel = payload.entryBiasLabel;
445
+ const signalPhase = payload.signalPhase;
446
+ const bullWeakEntryMarkers = payload.bullWeakEntryMarkers;
447
+ const bullConfirmationMarkers = payload.bullConfirmationMarkers;
448
+ const lateBullMarkers = payload.lateBullMarkers;
449
+ const bearWeakEntryMarkers = payload.bearWeakEntryMarkers;
450
+ const bearConfirmationMarkers = payload.bearConfirmationMarkers;
451
+ const lateBearMarkers = payload.lateBearMarkers;
452
+ const smaUp = payload.smaUp;
453
+ const smaDown = payload.smaDown;
454
+ const smaConf = payload.smaConf;
455
+ const smaNum = payload.smaNum;
456
+ const hasFastSma = Array.isArray(payload.fastSmaValues) && payload.fastSmaValues.length > 0;
457
+ const fastSmaUp = payload.fastSmaUp || [];
458
+ const fastSmaDown = payload.fastSmaDown || [];
459
+ const fastSmaConf = payload.fastSmaConf || [];
460
+ const fastSmaNum = payload.fastSmaNum || [];
461
+ const rsiOB = payload.rsiOB;
462
+ const rsiOS = payload.rsiOS;
463
+ const chartGroupId = ${JSON.stringify(chartId)};
464
+ const THEME = {
465
+ text: '#ccc',
466
+ muted: '#888',
467
+ background: '#0e1117',
468
+ grid: '#1e2330',
469
+ axis: '#2a2e3e',
470
+ };
471
+ const SIGNAL_GREEN = 'rgba(38,166,154,0.45)';
472
+ const SIGNAL_GREEN_WEAK = 'rgba(38,166,154,0.22)';
473
+ const SIGNAL_GREEN_LIGHT = 'rgba(38,166,154,0.18)';
474
+ const SIGNAL_RED = 'rgba(239,83,80,0.45)';
475
+ const SIGNAL_RED_WEAK = 'rgba(239,83,80,0.22)';
476
+ const SIGNAL_RED_LIGHT = 'rgba(239,83,80,0.18)';
477
+ function initChart(domId, opts, data) {
478
+ if (typeof uPlot === 'undefined') throw new Error('uPlot library did not load');
479
+ const el = document.getElementById(domId);
480
+ const rect = el.getBoundingClientRect();
481
+ const chart = new uPlot({
482
+ ...opts,
483
+ width: Math.max(320, Math.floor(rect.width)),
484
+ height: Math.max(110, Math.floor(rect.height)),
485
+ }, data, el);
486
+ chart.root.style.background = THEME.background;
487
+ return chart;
488
+ }
489
+ function fmtShortDate(sec) {
490
+ const d = new Date(sec * 1000);
491
+ return d.toLocaleDateString(undefined, { month: '2-digit', day: '2-digit' });
492
+ }
493
+ function padRange(min, max, lower = 0.04, upper = 0.04) {
494
+ if (!Number.isFinite(min) || !Number.isFinite(max)) return null;
495
+ if (min === max) {
496
+ const delta = Math.abs(min) * 0.03 || 1;
497
+ return [min - delta, max + delta];
498
+ }
499
+ const span = max - min;
500
+ return [min - span * lower, max + span * upper];
501
+ }
502
+ function makeAxis(show, type) {
503
+ return {
504
+ show,
505
+ scale: type,
506
+ stroke: THEME.axis,
507
+ grid: { show: false },
508
+ ticks: { show: true, stroke: THEME.axis, width: 1 },
509
+ size: show ? 34 : 0,
510
+ space: 50,
511
+ font: '10px Segoe UI, sans-serif',
512
+ label: '',
513
+ values: show ? (u, splits) => splits.map((v) => fmtShortDate(v)) : () => [],
514
+ };
515
+ }
516
+ function makeYAxis(show, formatter, size = 58, label = '') {
517
+ return {
518
+ show,
519
+ scale: 'y',
520
+ stroke: THEME.axis,
521
+ grid: { show: true, stroke: THEME.grid },
522
+ ticks: { show: true, stroke: THEME.axis, width: 1 },
523
+ size,
524
+ space: 60,
525
+ font: '10px Segoe UI, sans-serif',
526
+ values: formatter,
527
+ label,
528
+ labelSize: label ? 14 : 0,
529
+ labelGap: 4,
530
+ labelFont: '10px Segoe UI, sans-serif',
531
+ };
532
+ }
533
+ function makeCursor() {
534
+ return {
535
+ show: true,
536
+ x: true,
537
+ y: true,
538
+ points: { show: false },
539
+ drag: { x: false, y: false, setScale: false },
540
+ sync: { key: chartGroupId, setSeries: false, scales: ['x', null] },
541
+ focus: { prox: -1 },
542
+ };
543
+ }
544
+ function makePlotBase(showX, yFormatter, yScale) {
545
+ return {
546
+ width: 0,
547
+ height: 0,
548
+ title: null,
549
+ legend: { show: false },
550
+ cursor: makeCursor(),
551
+ select: { show: false },
552
+ scales: {
553
+ x: { time: true },
554
+ y: yScale,
555
+ },
556
+ axes: [
557
+ makeAxis(showX, 'x'),
558
+ makeYAxis(true, yFormatter),
559
+ ],
560
+ series: [
561
+ { label: 'Time' },
562
+ ],
563
+ padding: [10, 16, 0, 0],
564
+ hooks: {
565
+ ready: [
566
+ (u) => {
567
+ u.root.style.background = THEME.background;
568
+ },
569
+ ],
570
+ },
571
+ };
572
+ }
573
+ function lineSeries(name, color, width, extra = {}) {
574
+ return {
575
+ label: name,
576
+ stroke: color,
577
+ width,
578
+ points: { show: false },
579
+ fill: null,
580
+ ...extra,
581
+ };
582
+ }
583
+ function barSeries(name, color, fill) {
584
+ return {
585
+ label: name,
586
+ stroke: color,
587
+ fill,
588
+ width: 1,
589
+ points: { show: false },
590
+ paths: uPlot.paths.bars({ align: 0, gap: 1, size: [0.72, 14, 1] }),
591
+ };
592
+ }
593
+ function blockSeries(name, color, fill) {
594
+ return {
595
+ label: name,
596
+ stroke: color,
597
+ fill,
598
+ width: 1,
599
+ points: { show: false },
600
+ paths: uPlot.paths.bars({ align: 0, gap: 0, size: [0.96, 18, 1] }),
601
+ };
602
+ }
603
+ function markerSeries(name, color, size = 7) {
604
+ return {
605
+ label: name,
606
+ stroke: 'transparent',
607
+ width: 0,
608
+ points: { show: true, size, space: 0, fill: color, stroke: color },
609
+ };
610
+ }
611
+ function tooltipPlugin() {
612
+ const tooltip = document.getElementById('global-tooltip');
613
+ let lastIdx = -1;
614
+ function updateTooltip(u) {
615
+ const idx = u.cursor.idx;
616
+ if (idx == null || idx === lastIdx) return;
617
+ lastIdx = idx;
618
+ const d = new Date(dates[idx] * 1000);
619
+ const dateStr = d.toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' })
620
+ + ' ' + d.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
621
+ const priceVal = prices[idx];
622
+ const smaVal = smaValues[idx];
623
+ const fsVal = hasFastSma ? fastSmaValues[idx] : null;
624
+ const macdL = macdLine[idx];
625
+ const macdS = macdSignal[idx];
626
+ const macdH = macdHistogram[idx];
627
+ const rsiVal = rsiValues[idx];
628
+ const state = interpState[idx];
629
+ const entry = entryBiasLabel[idx];
630
+ const bars = interpBars[idx];
631
+ const rows = [
632
+ '<div class="tt-head">' + dateStr + '</div>',
633
+ ];
634
+ if (Number.isFinite(priceVal)) {
635
+ rows.push('<div class="tt-row"><span class="tt-label">Price</span><span class="tt-val">' + priceVal.toFixed(6) + '</span></div>');
636
+ }
637
+ if (Number.isFinite(smaVal)) {
638
+ rows.push('<div class="tt-row"><span class="tt-label">SMA(' + smaPeriod + ')</span><span class="tt-val">' + smaVal.toFixed(6) + '</span></div>');
639
+ }
640
+ if (hasFastSma && Number.isFinite(fsVal)) {
641
+ rows.push('<div class="tt-row"><span class="tt-label">fastSMA</span><span class="tt-val">' + fsVal.toFixed(6) + '</span></div>');
642
+ }
643
+ rows.push('<div class="tt-sep"></div>');
644
+ if (entry && entry !== 'No fresh entry') {
645
+ const entryColor = entry.includes('Long') ? '#26a69a' : entry.includes('Short') ? '#ef5350' : '#ccc';
646
+ rows.push('<div class="tt-row"><span class="tt-label">Entry</span><span class="tt-val" style="color:' + entryColor + '">' + entry + '</span></div>');
647
+ }
648
+ if (state && state !== 'NEUTRAL') {
649
+ const stateColor = state.startsWith('BULL') || state === 'OVERBOUGHT' ? '#26a69a' : state.startsWith('BEAR') || state === 'OVERSOLD' ? '#ef5350' : '#ccc';
650
+ rows.push('<div class="tt-row"><span class="tt-label">State</span><span class="tt-val" style="color:' + stateColor + '">' + state + (bars > 0 ? ' (' + bars + ' bars)' : '') + '</span></div>');
651
+ }
652
+ rows.push('<div class="tt-sep"></div>');
653
+ if (Number.isFinite(macdL) && Number.isFinite(macdS)) {
654
+ rows.push('<div class="tt-row"><span class="tt-label">MACD</span><span class="tt-val">' + macdL.toFixed(4) + '</span></div>');
655
+ rows.push('<div class="tt-row"><span class="tt-label">Signal</span><span class="tt-val">' + macdS.toFixed(4) + '</span></div>');
656
+ rows.push('<div class="tt-row"><span class="tt-label">Hist</span><span class="tt-val">' + (macdH >= 0 ? '+' : '') + macdH.toFixed(4) + '</span></div>');
657
+ }
658
+ if (Number.isFinite(rsiVal)) {
659
+ rows.push('<div class="tt-row"><span class="tt-label">RSI</span><span class="tt-val">' + rsiVal.toFixed(1) + '</span></div>');
660
+ }
661
+ tooltip.innerHTML = rows.join('');
662
+ }
663
+ return {
664
+ hooks: {
665
+ init: [(u) => {
666
+ u.over.addEventListener('mouseenter', () => { tooltip.style.display = 'block'; });
667
+ u.over.addEventListener('mouseleave', () => { tooltip.style.display = 'none'; lastIdx = -1; });
668
+ }],
669
+ setCursor: [(u) => {
670
+ updateTooltip(u);
671
+ const { left, top } = u.cursor;
672
+ const rect = u.root.getBoundingClientRect();
673
+ const ttWidth = tooltip.offsetWidth || 220;
674
+ const ttHeight = tooltip.offsetHeight || 180;
675
+ let x = rect.left + left + 16;
676
+ let y = rect.top + top + 16;
677
+ if (x + ttWidth > window.innerWidth - 12) x = rect.left + left - ttWidth - 16;
678
+ if (y + ttHeight > window.innerHeight - 12) y = rect.top + top - ttHeight - 16;
679
+ tooltip.style.left = x + 'px';
680
+ tooltip.style.top = y + 'px';
681
+ }],
682
+ },
683
+ };
684
+ }
685
+ function applyChartHeights() {
686
+ const available = Math.max(window.innerHeight - 44, 300);
687
+ const specs = [
688
+ ['price-chart', 2.35],
689
+ ['deriv-chart', 0.78],
690
+ ['interp-chart', 1.22],
691
+ ['macd-chart', 1.05],
692
+ ['rsi-chart', 1.28],
693
+ ];
694
+ const minHeight = 60;
695
+ const extraAvailable = Math.max(0, available - (minHeight * specs.length));
696
+ const totalWeight = specs.reduce((sum, [, weight]) => sum + weight, 0);
697
+ let assignedExtra = 0;
698
+ specs.forEach(([id, weight], idx) => {
699
+ const extra = idx === specs.length - 1
700
+ ? extraAvailable - assignedExtra
701
+ : Math.floor((extraAvailable * weight) / totalWeight);
702
+ assignedExtra += extra;
703
+ document.getElementById(id).style.height = (minHeight + extra) + 'px';
704
+ });
705
+ }
706
+ function syncHoverState(chart) {
707
+ const root = chart.root;
708
+ root.addEventListener('mouseenter', () => root.classList.add('is-hovered'));
709
+ root.addEventListener('mouseleave', () => root.classList.remove('is-hovered'));
710
+ }
711
+ let priceChart;
712
+ let derivChart;
713
+ let interpChart;
714
+ let macdChart;
715
+ let rsiChart;
716
+ let charts: any[] = [];
717
+ let pendingRange: any = null;
718
+ let pendingRangeRaf = 0;
719
+ const [xMin, xMax] = [dates[0], dates[dates.length - 1]];
720
+ try {
721
+ priceChart = initChart('price-chart', {
722
+ ...makePlotBase(false, (u, vals) => vals.map((v) => fixedTo(v, 6)), {
723
+ auto: true,
724
+ distr: 3,
725
+ log: 10,
726
+ range: (u, min, max) => {
727
+ if (!Number.isFinite(min) || !Number.isFinite(max) || min <= 0 || max <= 0) {
728
+ return [min, max];
729
+ }
730
+ return [min * 0.98, max * 1.03];
731
+ },
732
+ }),
733
+ axes: [
734
+ makeAxis(false, 'x'),
735
+ makeYAxis(true, (u, vals) => vals.map((v) => fixedTo(v, 6)), 62, 'Price'),
736
+ ],
737
+ plugins: [tooltipPlugin()],
738
+ series: [
739
+ { label: 'Time' },
740
+ lineSeries('Price', '#67a8ff', 2.35, { fill: 'rgba(103,168,255,0.08)' }),
741
+ lineSeries('SMA(${smaPeriod})', '#f2b94d', 2),
742
+ ${hasFastSma ? `lineSeries('fastSMA(${fastSmaPeriod})', '#ff9d4d', 1.9),` : ''}
743
+ ],
744
+ }, [dates, prices, smaValues${hasFastSma ? ', fastSmaValues' : ''}]);
745
+ derivChart = initChart('deriv-chart', {
746
+ ...makePlotBase(false, (u, vals) => vals.map((v) => (v === 1 ? 'UP' : v === -1 ? 'DOWN' : '—')), {
747
+ auto: true,
748
+ range: (u, min, max) => [-1.15, 1.15],
749
+ }),
750
+ axes: [
751
+ makeAxis(false, 'x'),
752
+ makeYAxis(true, (u, vals) => vals.map((v) => (v === 1 ? 'UP' : v === -1 ? 'DOWN' : '—')), 56, 'Trend'),
753
+ ],
754
+ series: [
755
+ { label: 'Time' },
756
+ blockSeries('SMA Up', 'rgba(83,214,184,0.88)', 'rgba(83,214,184,0.88)'),
757
+ blockSeries('SMA Down', 'rgba(255,114,105,0.88)', 'rgba(255,114,105,0.88)'),
758
+ ${hasFastSma ? `blockSeries('fastSMA Up', 'rgba(251,146,60,0.35)', 'rgba(251,146,60,0.35)'),
759
+ blockSeries('fastSMA Down', 'rgba(251,146,60,0.35)', 'rgba(251,146,60,0.35)'),` : ''}
760
+ lineSeries('Zero', 'rgba(255,255,255,0.20)', 1),
761
+ ],
762
+ }, [dates, smaUp, smaDown, ${hasFastSma ? 'fastSmaUp, fastSmaDown, ' : ''}dates.map(() => 0)]);
763
+ interpChart = initChart('interp-chart', {
764
+ ...makePlotBase(false, (u, vals) => vals.map((v) => {
765
+ if (v === 1) return 'BULL';
766
+ if (v === 0.75) return 'OS';
767
+ if (v === 0.5) return 'WEAK';
768
+ if (v === 0.35) return 'WEAK';
769
+ if (v === -0.35) return 'WEAK';
770
+ if (v === -0.5) return 'WEAK';
771
+ if (v === -0.75) return 'OB';
772
+ if (v === -1) return 'BEAR';
773
+ return '—';
774
+ }), {
775
+ auto: true,
776
+ range: (u, min, max) => [-1.15, 1.15],
777
+ }),
778
+ axes: [
779
+ makeAxis(false, 'x'),
780
+ makeYAxis(true, (u, vals) => vals.map((v) => {
781
+ if (v === 1) return 'BULL';
782
+ if (v === 0.75) return 'OS';
783
+ if (v === 0.5 || v === -0.5) return 'WEAK';
784
+ if (v === -0.75) return 'OB';
785
+ if (v === -1) return 'BEAR';
786
+ return '—';
787
+ }), 56, 'Signal'),
788
+ ],
789
+ series: [
790
+ { label: 'Time' },
791
+ blockSeries('Bull', SIGNAL_GREEN, SIGNAL_GREEN),
792
+ blockSeries('Bull Weak', SIGNAL_GREEN_WEAK, SIGNAL_GREEN_WEAK),
793
+ blockSeries('Overbought', SIGNAL_GREEN_LIGHT, SIGNAL_GREEN_LIGHT),
794
+ blockSeries('Bear', SIGNAL_RED, SIGNAL_RED),
795
+ blockSeries('Bear Weak', SIGNAL_RED_WEAK, SIGNAL_RED_WEAK),
796
+ blockSeries('Oversold', SIGNAL_RED_LIGHT, SIGNAL_RED_LIGHT),
797
+ lineSeries('Interp', 'rgba(255,255,255,0.35)', 1, { dash: [4, 4] }),
798
+ markerSeries('Early Long', '#67e8f9', 7),
799
+ markerSeries('Confirm Long', '#34d399', 8),
800
+ markerSeries('Late Long', '#f59e0b', 8),
801
+ markerSeries('Early Short', '#fca5a5', 7),
802
+ markerSeries('Confirm Short', '#ef4444', 8),
803
+ markerSeries('Late Short', '#fb7185', 8),
804
+ ],
805
+ }, [dates, interpBullBlock, interpBullWeakBlock, interpOBBlock, interpBearBlock, interpBearWeakBlock, interpOSBlock, interpValues, bullWeakEntryMarkers, bullConfirmationMarkers, lateBullMarkers, bearWeakEntryMarkers, bearConfirmationMarkers, lateBearMarkers]);
806
+ macdChart = initChart('macd-chart', {
807
+ ...makePlotBase(false, (u, vals) => vals.map((v) => fixedTo(v, 4)), {
808
+ auto: true,
809
+ range: (u, min, max) => {
810
+ const base = padRange(min, max, 0.12, 0.12);
811
+ return base || [min, max];
812
+ },
813
+ }),
814
+ axes: [
815
+ makeAxis(false, 'x'),
816
+ makeYAxis(true, (u, vals) => vals.map((v) => fixedTo(v, 4)), 62, 'MACD %'),
817
+ ],
818
+ series: [
819
+ { label: 'Time' },
820
+ barSeries('Hist+', 'rgba(83,214,184,0.40)', 'rgba(83,214,184,0.40)'),
821
+ barSeries('Hist-', 'rgba(255,114,105,0.40)', 'rgba(255,114,105,0.40)'),
822
+ lineSeries('MACD', '#67a8ff', 1.5),
823
+ lineSeries('Signal', '#ff9d4d', 1.5),
824
+ lineSeries('Zero', 'rgba(255,255,255,0.22)', 1),
825
+ ],
826
+ }, [dates, macdHistUp, macdHistDown, macdLine, macdSignal, dates.map(() => 0)]);
827
+ rsiChart = initChart('rsi-chart', {
828
+ ...makePlotBase(true, (u, vals) => vals.map((v) => fixedTo(v, 1)), {
829
+ range: (u, min, max) => [0, 100],
830
+ }),
831
+ axes: [
832
+ makeAxis(true, 'x'),
833
+ makeYAxis(true, (u, vals) => vals.map((v) => fixedTo(v, 1)), 56, 'RSI'),
834
+ ],
835
+ series: [
836
+ { label: 'Time' },
837
+ lineSeries('OB', 'rgba(255,114,105,0.35)', 1),
838
+ lineSeries('OS', 'rgba(83,214,184,0.35)', 1),
839
+ lineSeries('Mid', 'rgba(255,255,255,0.18)', 1),
840
+ lineSeries('RSI(${rsiPeriod})', '#c4a5ff', 1.55),
841
+ ],
842
+ }, [dates, dates.map(() => rsiOB), dates.map(() => rsiOS), dates.map(() => 50), rsiValues]);
843
+ } catch (err) {
844
+ console.error(err);
845
+ document.getElementById('charts').innerHTML = '<div style="padding:20px;color:#ef5350;white-space:pre-wrap;">' + String(err && err.message ? err.message : err) + '</div>';
846
+ throw err;
847
+ }
848
+ charts = [priceChart, derivChart, interpChart, macdChart, rsiChart];
849
+ ${UPLOT_SHARED_SCRIPT}
850
+ function bindHoverState(chart) {
851
+ const root = chart.root;
852
+ root.addEventListener('mouseenter', () => root.classList.add('is-hovered'));
853
+ root.addEventListener('mouseleave', () => root.classList.remove('is-hovered'));
854
+ }
855
+ function resetZoom() {
856
+ syncXRange(xMin, xMax);
857
+ }
858
+ function sizeCharts() {
859
+ applyChartHeights();
860
+ for (const chart of charts) {
861
+ const rect = chart.root.parentElement.getBoundingClientRect();
862
+ chart.setSize({ width: Math.max(320, Math.floor(rect.width)), height: Math.max(100, Math.floor(rect.height)) });
863
+ }
864
+ }
865
+ window.addEventListener('resize', sizeCharts);
866
+ window.addEventListener('keydown', (e) => {
867
+ if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === '0') resetZoom();
868
+ });
869
+ charts.forEach((chart) => {
870
+ bindWheelZoom(chart);
871
+ bindPan(chart);
872
+ bindHoverState(chart);
873
+ });
874
+ const raf = window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : (fn) => setTimeout(fn, 0);
875
+ raf(() => sizeCharts());
876
+ </script>
877
+ </body>
878
+ </html>`;
879
+ }
880
+ async function main() {
881
+ const cfg = parseArgs();
882
+ const data = readJSON(cfg.inputFile);
883
+ const html = generateHTML(data, cfg.title);
884
+ ensureDir(path.dirname(cfg.outputFile));
885
+ fs.writeFileSync(cfg.outputFile, html, 'utf8');
886
+ if (!cfg.quiet)
887
+ console.log(`Chart written to ${cfg.outputFile}`);
888
+ }
889
+ if (require.main === module) {
890
+ main().catch((err) => {
891
+ console.error(err);
892
+ process.exit(1);
893
+ });
894
+ }
895
+ module.exports = { generateHTML, parseArgs, showHelp, trendToNum };
896
+ //# sourceMappingURL=derivative_chart_generator.js.map