dexbot 1.4.20 → 1.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/README.md +23 -13
- package/analysis/ama_fitting/analyze_ama_price_changes.ts +7 -3
- package/analysis/ama_fitting/analyze_lambda_vs_slow.ts +3 -3
- package/analysis/ama_fitting/calibrate_convergence_er.ts +8 -6
- package/analysis/ama_fitting/fetch_lp_candles.ts +8 -3
- package/analysis/ama_fitting/generate_unified_comparison_chart.ts +30 -67
- package/analysis/ama_fitting/optimizer_high_resolution.ts +22 -13
- package/analysis/ama_fitting/package.json +1 -1
- package/analysis/analyze_derivatives.ts +4 -4
- package/analysis/analyze_dynamic_weight.ts +21 -5
- package/analysis/analyze_kalman.ts +54 -25
- package/analysis/analyze_regime.ts +2 -2
- package/analysis/analyze_regime_windows.ts +27 -19
- package/analysis/analyze_risk_profile.ts +3 -3
- package/analysis/analyze_trade_heatmap.ts +3 -3
- package/analysis/analyze_volatility.ts +2 -2
- package/analysis/bot_fitting/README.md +93 -19
- package/analysis/bot_fitting/backtest_ama_sweep.ts +316 -199
- package/analysis/bot_fitting/backtest_bot_fitting.ts +520 -85
- package/analysis/bot_fitting/shared_utils.ts +16 -10
- package/analysis/bot_key_utils.ts +14 -11
- package/analysis/bot_usage/discover_bot_accounts.ts +5 -3
- package/analysis/bot_usage/kibana_bot_queries.ts +2 -257
- package/analysis/chart_css.ts +6 -4
- package/analysis/chart_ui.ts +0 -1
- package/analysis/chart_utils.ts +11 -2
- package/analysis/derivative_chart_generator.ts +2 -2
- package/analysis/math_utils.ts +1 -8
- package/analysis/price_sources.ts +8 -2
- package/analysis/resolve_source.ts +1 -1
- package/analysis/results/ama_sweep_results_lp_pool_133_1h.json +2455 -0
- package/analysis/results/bot_fitting_results_lp_pool_133_1h.json +218 -0
- package/analysis/trade_profitability.ts +61 -28
- package/analysis/tradingview/analyze_tradingview.ts +1 -1
- package/analysis/tradingview/h-bts_tradingview.html +1570 -0
- package/analysis/tradingview/t-bts_tradingview.html +1570 -0
- package/analysis/tradingview/tradingview_uplot_chart_generator.ts +302 -74
- package/analysis/trend_detection/DYNAMIC_WEIGHT_RESEARCH.md +1 -1
- package/analysis/trend_detection/derivative_analyzer.ts +12 -3
- package/analysis/trend_detection/dynamic_weight_chart_generator.ts +25 -27
- package/analysis/trend_detection/hurst_analyzer.ts +1 -1
- package/analysis/trend_detection/kalman_chart_generator.ts +42 -14
- package/analysis/trend_detection/package.json +1 -1
- package/analysis/trend_detection/regime_chart_generator.ts +39 -19
- package/analysis/trend_detection/tests/test_kalman_trend.ts +1 -1
- package/analysis/trend_detection/tests/test_kalman_velocity_smoothing.ts +1 -1
- package/analysis/trend_detection/volatility_chart_generator.ts +1 -1
- package/claw/ecosystem.config.cjs +2 -3
- package/claw/examples/memu_integration_example.ts +17 -17
- package/claw/index.ts +1 -1
- package/claw/modules/chain_actions.ts +51 -54
- package/claw/modules/chain_broadcast.ts +66 -104
- package/claw/modules/claw_bridge.ts +63 -83
- package/claw/modules/claw_catalog.ts +48 -17
- package/claw/modules/claw_infra.ts +1 -5
- package/claw/modules/claw_launcher.ts +48 -50
- package/claw/modules/claw_skill_md.ts +15 -21
- package/claw/modules/credit_runtime_adapter.ts +3 -19
- package/claw/modules/decision_loop.ts +9 -9
- package/claw/modules/dexbot_bridge.ts +8 -8
- package/claw/modules/dexbot_profiles.ts +5 -21
- package/claw/modules/feed_price_source.ts +1 -1
- package/claw/modules/honest_ecosystem.ts +24 -8
- package/claw/modules/kibana_price_source.ts +1 -1
- package/claw/modules/launcher_mode_detector.ts +1 -1
- package/claw/modules/launcher_paths.ts +1 -1
- package/claw/modules/liquidity_pools.ts +10 -3
- package/claw/modules/mcp_utils.ts +109 -0
- package/claw/modules/memu_bridge.ts +76 -54
- package/claw/modules/mpa_utils.ts +26 -3
- package/claw/modules/position_discovery.ts +17 -28
- package/claw/modules/position_health.ts +1 -1
- package/claw/modules/position_manager.ts +32 -41
- package/claw/modules/position_manager_watch.ts +3 -2
- package/claw/modules/short_mpa_strategy.ts +1 -9
- package/claw/modules/skill_utils.ts +5 -3
- package/claw/modules/utils.ts +9 -1
- package/claw/package.json +3 -3
- package/claw/runtimes/openclaw-plugin/index.ts +27 -10
- package/claw/runtimes/openclaw-plugin/openclaw.plugin.json +1 -1
- package/claw/runtimes/openclaw-plugin/package.json +1 -1
- package/claw/scripts/claw_bridge.ts +1 -1
- package/claw/scripts/claw_mcp_server.ts +19 -78
- package/claw/scripts/honest_assets_report.ts +19 -84
- package/claw/scripts/memu_mcp_server.ts +57 -155
- package/claw/skills/launcher-ops/references/launcher-workflow.md +2 -2
- package/claw/tests/package.json +1 -1
- package/claw/tests/test_claw_bridge.ts +47 -19
- package/claw/tests/test_claw_catalog_and_credentials.ts +8 -4
- package/claw/tests/test_claw_chain_layer.ts +39 -19
- package/claw/tests/test_claw_data_flow.ts +28 -20
- package/claw/tests/test_claw_domain_logic.ts +25 -19
- package/claw/tests/test_claw_manifest_and_matrix.ts +23 -3
- package/claw/tests/test_claw_mcp_transport.ts +13 -8
- package/claw/tests/test_claw_regressions.ts +254 -128
- package/claw/tests/test_claw_skill_generation.ts +1 -1
- package/claw/tests/test_nullclaw_tmp_integration.ts +2 -3
- package/claw/tests/test_position_health.ts +1 -77
- package/claw/tests/test_position_manager.ts +20 -18
- package/claw/tests/test_position_manager_watch_health.ts +39 -43
- package/claw/tests/test_short_mpa_strategy.ts +20 -17
- package/claw/tsconfig.json +4 -3
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.js +7 -3
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.js.map +1 -1
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js +3 -3
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js.map +1 -1
- package/dist/analysis/ama_fitting/calibrate_convergence_er.js +8 -6
- package/dist/analysis/ama_fitting/calibrate_convergence_er.js.map +1 -1
- package/dist/analysis/ama_fitting/fetch_lp_candles.js +8 -3
- package/dist/analysis/ama_fitting/fetch_lp_candles.js.map +1 -1
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts +2 -2
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts.map +1 -1
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js +31 -75
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js.map +1 -1
- package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts.map +1 -1
- package/dist/analysis/ama_fitting/optimizer_high_resolution.js +21 -13
- package/dist/analysis/ama_fitting/optimizer_high_resolution.js.map +1 -1
- package/dist/analysis/analyze_derivatives.d.ts +0 -18
- package/dist/analysis/analyze_derivatives.d.ts.map +1 -1
- package/dist/analysis/analyze_derivatives.js +4 -4
- package/dist/analysis/analyze_derivatives.js.map +1 -1
- package/dist/analysis/analyze_dynamic_weight.d.ts +0 -11
- package/dist/analysis/analyze_dynamic_weight.d.ts.map +1 -1
- package/dist/analysis/analyze_dynamic_weight.js +19 -5
- package/dist/analysis/analyze_dynamic_weight.js.map +1 -1
- package/dist/analysis/analyze_kalman.d.ts +0 -10
- package/dist/analysis/analyze_kalman.d.ts.map +1 -1
- package/dist/analysis/analyze_kalman.js +51 -26
- package/dist/analysis/analyze_kalman.js.map +1 -1
- package/dist/analysis/analyze_regime.d.ts +0 -17
- package/dist/analysis/analyze_regime.d.ts.map +1 -1
- package/dist/analysis/analyze_regime.js +2 -2
- package/dist/analysis/analyze_regime.js.map +1 -1
- package/dist/analysis/analyze_regime_windows.d.ts +0 -16
- package/dist/analysis/analyze_regime_windows.d.ts.map +1 -1
- package/dist/analysis/analyze_regime_windows.js +28 -21
- package/dist/analysis/analyze_regime_windows.js.map +1 -1
- package/dist/analysis/analyze_risk_profile.js +3 -3
- package/dist/analysis/analyze_risk_profile.js.map +1 -1
- package/dist/analysis/analyze_trade_heatmap.js +3 -3
- package/dist/analysis/analyze_trade_heatmap.js.map +1 -1
- package/dist/analysis/analyze_volatility.d.ts +0 -19
- package/dist/analysis/analyze_volatility.d.ts.map +1 -1
- package/dist/analysis/analyze_volatility.js +2 -2
- package/dist/analysis/analyze_volatility.js.map +1 -1
- package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts +30 -14
- package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts.map +1 -1
- package/dist/analysis/bot_fitting/backtest_ama_sweep.js +330 -193
- package/dist/analysis/bot_fitting/backtest_ama_sweep.js.map +1 -1
- package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts +136 -1
- package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts.map +1 -1
- package/dist/analysis/bot_fitting/backtest_bot_fitting.js +527 -83
- package/dist/analysis/bot_fitting/backtest_bot_fitting.js.map +1 -1
- package/dist/analysis/bot_fitting/shared_utils.d.ts +2 -13
- package/dist/analysis/bot_fitting/shared_utils.d.ts.map +1 -1
- package/dist/analysis/bot_fitting/shared_utils.js +15 -9
- package/dist/analysis/bot_fitting/shared_utils.js.map +1 -1
- package/dist/analysis/bot_key_utils.d.ts +1 -1
- package/dist/analysis/bot_key_utils.d.ts.map +1 -1
- package/dist/analysis/bot_key_utils.js +14 -11
- package/dist/analysis/bot_key_utils.js.map +1 -1
- package/dist/analysis/bot_usage/discover_bot_accounts.js +5 -3
- package/dist/analysis/bot_usage/discover_bot_accounts.js.map +1 -1
- package/dist/analysis/bot_usage/kibana_bot_queries.d.ts +1 -337
- package/dist/analysis/bot_usage/kibana_bot_queries.d.ts.map +1 -1
- package/dist/analysis/bot_usage/kibana_bot_queries.js +2 -242
- package/dist/analysis/bot_usage/kibana_bot_queries.js.map +1 -1
- package/dist/analysis/chart_css.d.ts +2 -14
- package/dist/analysis/chart_css.d.ts.map +1 -1
- package/dist/analysis/chart_css.js +6 -3
- package/dist/analysis/chart_css.js.map +1 -1
- package/dist/analysis/chart_ui.d.ts.map +1 -1
- package/dist/analysis/chart_ui.js.map +1 -1
- package/dist/analysis/chart_utils.d.ts.map +1 -1
- package/dist/analysis/chart_utils.js +15 -2
- package/dist/analysis/chart_utils.js.map +1 -1
- package/dist/analysis/derivative_chart_generator.js +2 -2
- package/dist/analysis/derivative_chart_generator.js.map +1 -1
- package/dist/analysis/math_utils.d.ts +3 -5
- package/dist/analysis/math_utils.d.ts.map +1 -1
- package/dist/analysis/math_utils.js +3 -5
- package/dist/analysis/math_utils.js.map +1 -1
- package/dist/analysis/price_sources.d.ts +1 -0
- package/dist/analysis/price_sources.d.ts.map +1 -1
- package/dist/analysis/price_sources.js +8 -2
- package/dist/analysis/price_sources.js.map +1 -1
- package/dist/analysis/resolve_source.d.ts.map +1 -1
- package/dist/analysis/resolve_source.js +1 -1
- package/dist/analysis/resolve_source.js.map +1 -1
- package/dist/analysis/trade_profitability.d.ts.map +1 -1
- package/dist/analysis/trade_profitability.js +58 -29
- package/dist/analysis/trade_profitability.js.map +1 -1
- package/dist/analysis/tradingview/analyze_tradingview.js +1 -1
- package/dist/analysis/tradingview/analyze_tradingview.js.map +1 -1
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts.map +1 -1
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +302 -74
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js.map +1 -1
- package/dist/analysis/trend_detection/derivative_analyzer.d.ts +1 -0
- package/dist/analysis/trend_detection/derivative_analyzer.d.ts.map +1 -1
- package/dist/analysis/trend_detection/derivative_analyzer.js +12 -3
- package/dist/analysis/trend_detection/derivative_analyzer.js.map +1 -1
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts.map +1 -1
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js +26 -27
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js.map +1 -1
- package/dist/analysis/trend_detection/hurst_analyzer.d.ts +1 -1
- package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +1 -1
- package/dist/analysis/trend_detection/hurst_analyzer.js +1 -1
- package/dist/analysis/trend_detection/hurst_analyzer.js.map +1 -1
- package/dist/analysis/trend_detection/kalman_chart_generator.d.ts.map +1 -1
- package/dist/analysis/trend_detection/kalman_chart_generator.js +41 -13
- package/dist/analysis/trend_detection/kalman_chart_generator.js.map +1 -1
- package/dist/analysis/trend_detection/regime_chart_generator.d.ts.map +1 -1
- package/dist/analysis/trend_detection/regime_chart_generator.js +38 -19
- package/dist/analysis/trend_detection/regime_chart_generator.js.map +1 -1
- package/dist/analysis/trend_detection/tests/test_kalman_trend.js +1 -1
- package/dist/analysis/trend_detection/tests/test_kalman_trend.js.map +1 -1
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js +1 -1
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js.map +1 -1
- package/dist/analysis/trend_detection/volatility_chart_generator.js +1 -1
- package/dist/analysis/trend_detection/volatility_chart_generator.js.map +1 -1
- package/dist/bot.js +3 -3
- package/dist/bot.js.map +1 -1
- package/dist/credential-daemon.d.ts +1 -1
- package/dist/credential-daemon.js +2 -2
- package/dist/credential-daemon.js.map +1 -1
- package/dist/dexbot.d.ts.map +1 -1
- package/dist/dexbot.js +25 -22
- package/dist/dexbot.js.map +1 -1
- package/dist/market_adapter/ama_signal_runner.js +6 -4
- package/dist/market_adapter/ama_signal_runner.js.map +1 -1
- package/dist/market_adapter/candle_utils.d.ts +1 -3
- package/dist/market_adapter/candle_utils.d.ts.map +1 -1
- package/dist/market_adapter/candle_utils.js +1 -11
- package/dist/market_adapter/candle_utils.js.map +1 -1
- package/dist/market_adapter/core/asymmetric_bounds.d.ts.map +1 -1
- package/dist/market_adapter/core/asymmetric_bounds.js +33 -30
- package/dist/market_adapter/core/asymmetric_bounds.js.map +1 -1
- package/dist/market_adapter/core/config_normalizers.d.ts.map +1 -1
- package/dist/market_adapter/core/config_normalizers.js +10 -1
- package/dist/market_adapter/core/config_normalizers.js.map +1 -1
- package/dist/market_adapter/core/kibana_candles.d.ts +18 -42
- package/dist/market_adapter/core/kibana_candles.d.ts.map +1 -1
- package/dist/market_adapter/core/kibana_candles.js +101 -7
- package/dist/market_adapter/core/kibana_candles.js.map +1 -1
- package/dist/market_adapter/core/kibana_client.d.ts +1 -17
- package/dist/market_adapter/core/kibana_client.d.ts.map +1 -1
- package/dist/market_adapter/core/kibana_client.js +40 -7
- package/dist/market_adapter/core/kibana_client.js.map +1 -1
- package/dist/market_adapter/core/kibana_market_candles.d.ts +0 -27
- package/dist/market_adapter/core/kibana_market_candles.d.ts.map +1 -1
- package/dist/market_adapter/core/kibana_market_candles.js +1 -1
- package/dist/market_adapter/core/kibana_market_candles.js.map +1 -1
- package/dist/market_adapter/core/market_adapter_service.d.ts +22 -13
- package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -1
- package/dist/market_adapter/core/market_adapter_service.js +96 -38
- package/dist/market_adapter/core/market_adapter_service.js.map +1 -1
- package/dist/market_adapter/core/signals/hurst_analyzer.d.ts +10 -1
- package/dist/market_adapter/core/signals/hurst_analyzer.d.ts.map +1 -1
- package/dist/market_adapter/core/signals/hurst_analyzer.js +28 -17
- package/dist/market_adapter/core/signals/hurst_analyzer.js.map +1 -1
- package/dist/market_adapter/core/signals/kalman_trend_analyzer.d.ts +5 -0
- package/dist/market_adapter/core/signals/kalman_trend_analyzer.d.ts.map +1 -1
- package/dist/market_adapter/core/signals/kalman_trend_analyzer.js +24 -24
- package/dist/market_adapter/core/signals/kalman_trend_analyzer.js.map +1 -1
- package/dist/market_adapter/core/signals/kalman_velocity_smoothing.d.ts.map +1 -1
- package/dist/market_adapter/core/signals/kalman_velocity_smoothing.js +5 -1
- package/dist/market_adapter/core/signals/kalman_velocity_smoothing.js.map +1 -1
- package/dist/market_adapter/core/signals/permutation_entropy_analyzer.d.ts.map +1 -1
- package/dist/market_adapter/core/signals/permutation_entropy_analyzer.js +20 -3
- package/dist/market_adapter/core/signals/permutation_entropy_analyzer.js.map +1 -1
- package/dist/market_adapter/core/strategies/ama.js +1 -1
- package/dist/market_adapter/core/strategies/ama.js.map +1 -1
- package/dist/market_adapter/core/strategies/ama_slope_model.d.ts +2 -2
- package/dist/market_adapter/core/strategies/ama_slope_model.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/ama_slope_model.js +16 -4
- package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -1
- package/dist/market_adapter/core/strategies/atr/calculator.d.ts +4 -3
- package/dist/market_adapter/core/strategies/atr/calculator.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/atr/calculator.js +16 -8
- package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -1
- package/dist/market_adapter/core/strategies/collateral_manager.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/collateral_manager.js +8 -3
- package/dist/market_adapter/core/strategies/collateral_manager.js.map +1 -1
- package/dist/market_adapter/core/strategies/dynamic_weight_series.d.ts +40 -1
- package/dist/market_adapter/core/strategies/dynamic_weight_series.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/dynamic_weight_series.js +116 -2
- package/dist/market_adapter/core/strategies/dynamic_weight_series.js.map +1 -1
- package/dist/market_adapter/core/strategies/regime_gate.d.ts +1 -2
- package/dist/market_adapter/core/strategies/regime_gate.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/regime_gate.js +27 -21
- package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -1
- package/dist/market_adapter/core/strategies/volatility_shift.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/volatility_shift.js +3 -0
- package/dist/market_adapter/core/strategies/volatility_shift.js.map +1 -1
- package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +71 -57
- package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -1
- package/dist/market_adapter/inputs/fetch_lp_data.d.ts +0 -26
- package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -1
- package/dist/market_adapter/inputs/fetch_lp_data.js +72 -19
- package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -1
- package/dist/market_adapter/inputs/kibana_source.d.ts +5 -30
- package/dist/market_adapter/inputs/kibana_source.d.ts.map +1 -1
- package/dist/market_adapter/inputs/kibana_source.js +6 -3
- package/dist/market_adapter/inputs/kibana_source.js.map +1 -1
- package/dist/market_adapter/lp_chart_core.js +1 -1
- package/dist/market_adapter/lp_chart_core.js.map +1 -1
- package/dist/market_adapter/lp_chart_runner.d.ts +10 -1
- package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -1
- package/dist/market_adapter/lp_chart_runner.js +2 -2
- package/dist/market_adapter/lp_chart_runner.js.map +1 -1
- package/dist/market_adapter/lp_chart_strategy_loader.d.ts +1 -2
- package/dist/market_adapter/lp_chart_strategy_loader.d.ts.map +1 -1
- package/dist/market_adapter/lp_chart_strategy_loader.js +5 -5
- package/dist/market_adapter/lp_chart_strategy_loader.js.map +1 -1
- package/dist/market_adapter/market_adapter.d.ts +1 -2
- package/dist/market_adapter/market_adapter.d.ts.map +1 -1
- package/dist/market_adapter/market_adapter.js +5 -7
- package/dist/market_adapter/market_adapter.js.map +1 -1
- package/dist/market_adapter/test_helpers.d.ts +3 -3
- package/dist/market_adapter/test_helpers.d.ts.map +1 -1
- package/dist/market_adapter/test_helpers.js +3 -3
- package/dist/market_adapter/test_helpers.js.map +1 -1
- package/dist/market_adapter/utils/adapter_client.js +1 -1
- package/dist/market_adapter/utils/adapter_client.js.map +1 -1
- package/dist/market_adapter/utils/atomic_write.js +1 -1
- package/dist/market_adapter/utils/atomic_write.js.map +1 -1
- package/dist/market_adapter/utils/chain.d.ts +0 -2
- package/dist/market_adapter/utils/chain.d.ts.map +1 -1
- package/dist/market_adapter/utils/chain.js +2 -3
- package/dist/market_adapter/utils/chain.js.map +1 -1
- package/dist/market_adapter/utils/data_discovery.d.ts.map +1 -1
- package/dist/market_adapter/utils/data_discovery.js +24 -8
- package/dist/market_adapter/utils/data_discovery.js.map +1 -1
- package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -1
- package/dist/market_adapter/utils/dynamic_grid_snapshot.js +2 -5
- package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -1
- package/dist/market_adapter/utils/file_lock.d.ts +4 -1
- package/dist/market_adapter/utils/file_lock.d.ts.map +1 -1
- package/dist/market_adapter/utils/file_lock.js +89 -25
- package/dist/market_adapter/utils/file_lock.js.map +1 -1
- package/dist/market_adapter/utils/native_history.d.ts.map +1 -1
- package/dist/market_adapter/utils/native_history.js +5 -1
- package/dist/market_adapter/utils/native_history.js.map +1 -1
- package/dist/modules/account_bots.d.ts +3 -0
- package/dist/modules/account_bots.d.ts.map +1 -1
- package/dist/modules/account_bots.js +157 -47
- package/dist/modules/account_bots.js.map +1 -1
- package/dist/modules/account_orders.d.ts +1 -7
- package/dist/modules/account_orders.d.ts.map +1 -1
- package/dist/modules/account_orders.js +9 -17
- package/dist/modules/account_orders.js.map +1 -1
- package/dist/modules/authority_resolver.js +1 -1
- package/dist/modules/authority_resolver.js.map +1 -1
- package/dist/modules/bitshares-native/chain_client.js +1 -1
- package/dist/modules/bitshares-native/chain_client.js.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts +0 -12
- package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.browser.js +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.browser.js.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc_selector.js +1 -1
- package/dist/modules/bitshares-native/crypto/ecc_selector.js.map +1 -1
- package/dist/modules/bitshares-native/index.d.ts.map +1 -1
- package/dist/modules/bitshares-native/index.js +1 -1
- package/dist/modules/bitshares-native/index.js.map +1 -1
- package/dist/modules/bitshares-native/lru_cache.js +1 -1
- package/dist/modules/bitshares-native/lru_cache.js.map +1 -1
- package/dist/modules/bitshares-native/resolvers.d.ts +0 -2
- package/dist/modules/bitshares-native/resolvers.d.ts.map +1 -1
- package/dist/modules/bitshares-native/resolvers.js +18 -4
- package/dist/modules/bitshares-native/resolvers.js.map +1 -1
- package/dist/modules/bitshares-native/serial/chain_constants.js +1 -1
- package/dist/modules/bitshares-native/serial/chain_constants.js.map +1 -1
- package/dist/modules/bitshares-native/serial/index.d.ts.map +1 -1
- package/dist/modules/bitshares-native/serial/index.js +1 -1
- package/dist/modules/bitshares-native/serial/index.js.map +1 -1
- package/dist/modules/bitshares-native/serial/operations.js +1 -1
- package/dist/modules/bitshares-native/serial/operations.js.map +1 -1
- package/dist/modules/bitshares-native/serial/serializer.js +1 -1
- package/dist/modules/bitshares-native/serial/serializer.js.map +1 -1
- package/dist/modules/bitshares-native/serial/types.js +1 -1
- package/dist/modules/bitshares-native/serial/types.js.map +1 -1
- package/dist/modules/bitshares-native/signing_client.js +2 -2
- package/dist/modules/bitshares-native/signing_client.js.map +1 -1
- package/dist/modules/bitshares-native/subscriptions.d.ts.map +1 -1
- package/dist/modules/bitshares-native/subscriptions.js +5 -14
- package/dist/modules/bitshares-native/subscriptions.js.map +1 -1
- package/dist/modules/bitshares-native/transport.js +1 -1
- package/dist/modules/bitshares-native/transport.js.map +1 -1
- package/dist/modules/bitshares-native/tx/builder.js +1 -1
- package/dist/modules/bitshares-native/tx/builder.js.map +1 -1
- package/dist/modules/bitshares-native/tx/tx_cache.d.ts +3 -2
- package/dist/modules/bitshares-native/tx/tx_cache.d.ts.map +1 -1
- package/dist/modules/bitshares-native/tx/tx_cache.js +7 -4
- package/dist/modules/bitshares-native/tx/tx_cache.js.map +1 -1
- package/dist/modules/bitshares_client.d.ts +2 -14
- package/dist/modules/bitshares_client.d.ts.map +1 -1
- package/dist/modules/bitshares_client.js +32 -41
- package/dist/modules/bitshares_client.js.map +1 -1
- package/dist/modules/bot_settings.d.ts.map +1 -1
- package/dist/modules/bot_settings.js +12 -19
- package/dist/modules/bot_settings.js.map +1 -1
- package/dist/modules/bots_file_lock.d.ts +1 -1
- package/dist/modules/bots_file_lock.js +1 -1
- package/dist/modules/broadcast_failure.d.ts +13 -0
- package/dist/modules/broadcast_failure.d.ts.map +1 -1
- package/dist/modules/broadcast_failure.js +0 -13
- package/dist/modules/broadcast_failure.js.map +1 -1
- package/dist/modules/chain_keys.js +2 -2
- package/dist/modules/chain_keys.js.map +1 -1
- package/dist/modules/chain_orders.d.ts +2 -3
- package/dist/modules/chain_orders.d.ts.map +1 -1
- package/dist/modules/chain_orders.js +23 -42
- package/dist/modules/chain_orders.js.map +1 -1
- package/dist/modules/config.d.ts.map +1 -1
- package/dist/modules/config.js +5 -2
- package/dist/modules/config.js.map +1 -1
- package/dist/modules/constants.d.ts +21 -21
- package/dist/modules/constants.d.ts.map +1 -1
- package/dist/modules/constants.js +53 -60
- package/dist/modules/constants.js.map +1 -1
- package/dist/modules/cr_planner.d.ts +1 -7
- package/dist/modules/cr_planner.d.ts.map +1 -1
- package/dist/modules/cr_planner.js +3 -77
- package/dist/modules/cr_planner.js.map +1 -1
- package/dist/modules/credential_policy.d.ts +0 -4
- package/dist/modules/credential_policy.d.ts.map +1 -1
- package/dist/modules/credential_policy.js +18 -3
- package/dist/modules/credential_policy.js.map +1 -1
- package/dist/modules/credit_runtime.d.ts +0 -7
- package/dist/modules/credit_runtime.d.ts.map +1 -1
- package/dist/modules/credit_runtime.js +21 -60
- package/dist/modules/credit_runtime.js.map +1 -1
- package/dist/modules/crypto/index.d.ts +0 -2
- package/dist/modules/crypto/index.d.ts.map +1 -1
- package/dist/modules/crypto/index.js +0 -2
- package/dist/modules/crypto/index.js.map +1 -1
- package/dist/modules/crypto/sync.js.map +1 -1
- package/dist/modules/daemon_node_health.js +1 -1
- package/dist/modules/daemon_node_health.js.map +1 -1
- package/dist/modules/dexbot_class.d.ts +8 -134
- package/dist/modules/dexbot_class.d.ts.map +1 -1
- package/dist/modules/dexbot_class.js +39 -199
- package/dist/modules/dexbot_class.js.map +1 -1
- package/dist/modules/dexbot_credential_client.js +1 -1
- package/dist/modules/dexbot_credential_client.js.map +1 -1
- package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_fill_runtime.js +3 -6
- package/dist/modules/dexbot_fill_runtime.js.map +1 -1
- package/dist/modules/dexbot_maintenance_runtime.d.ts +6 -34
- package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_maintenance_runtime.js +27 -19
- package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
- package/dist/modules/dexbot_startup_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_startup_runtime.js +31 -15
- package/dist/modules/dexbot_startup_runtime.js.map +1 -1
- package/dist/modules/dexbot_state_recovery.d.ts +2 -2
- package/dist/modules/dexbot_state_recovery.d.ts.map +1 -1
- package/dist/modules/dexbot_state_recovery.js +11 -7
- package/dist/modules/dexbot_state_recovery.js.map +1 -1
- package/dist/modules/fund_registry.d.ts.map +1 -1
- package/dist/modules/fund_registry.js +24 -6
- package/dist/modules/fund_registry.js.map +1 -1
- package/dist/modules/general_settings.d.ts +1 -2
- package/dist/modules/general_settings.d.ts.map +1 -1
- package/dist/modules/general_settings.js +1 -2
- package/dist/modules/general_settings.js.map +1 -1
- package/dist/modules/graceful_shutdown.d.ts.map +1 -1
- package/dist/modules/graceful_shutdown.js +10 -1
- package/dist/modules/graceful_shutdown.js.map +1 -1
- package/dist/modules/grid_price_source.d.ts +19 -0
- package/dist/modules/grid_price_source.d.ts.map +1 -0
- package/dist/modules/grid_price_source.js +23 -0
- package/dist/modules/grid_price_source.js.map +1 -0
- package/dist/modules/key_store.d.ts +0 -5
- package/dist/modules/key_store.d.ts.map +1 -1
- package/dist/modules/key_store.js +1 -14
- package/dist/modules/key_store.js.map +1 -1
- package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -1
- package/dist/modules/launcher/bot_supervisor.js +15 -26
- package/dist/modules/launcher/bot_supervisor.js.map +1 -1
- package/dist/modules/launcher/child_env.d.ts +1 -2
- package/dist/modules/launcher/child_env.d.ts.map +1 -1
- package/dist/modules/launcher/child_env.js +1 -1
- package/dist/modules/launcher/child_env.js.map +1 -1
- package/dist/modules/launcher/foreign_cred_daemon.d.ts.map +1 -1
- package/dist/modules/launcher/foreign_cred_daemon.js +7 -13
- package/dist/modules/launcher/foreign_cred_daemon.js.map +1 -1
- package/dist/modules/launcher/market_adapter_runtime.d.ts +3 -4
- package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -1
- package/dist/modules/launcher/market_adapter_runtime.js +10 -29
- package/dist/modules/launcher/market_adapter_runtime.js.map +1 -1
- package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -1
- package/dist/modules/launcher/market_adapter_watchdog.js +3 -2
- package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -1
- package/dist/modules/launcher/monolithic_runtime.d.ts +0 -1
- package/dist/modules/launcher/monolithic_runtime.d.ts.map +1 -1
- package/dist/modules/launcher/monolithic_runtime.js +4 -18
- package/dist/modules/launcher/monolithic_runtime.js.map +1 -1
- package/dist/modules/launcher/runtime_entry.d.ts.map +1 -1
- package/dist/modules/launcher/runtime_entry.js +4 -5
- package/dist/modules/launcher/runtime_entry.js.map +1 -1
- package/dist/modules/launcher/status_reporting.d.ts +1 -2
- package/dist/modules/launcher/status_reporting.d.ts.map +1 -1
- package/dist/modules/launcher/status_reporting.js +2 -5
- package/dist/modules/launcher/status_reporting.js.map +1 -1
- package/dist/modules/launcher/supervisor_control.js +1 -1
- package/dist/modules/launcher/supervisor_control.js.map +1 -1
- package/dist/modules/market_adapter_whitelist.d.ts +2 -2
- package/dist/modules/market_adapter_whitelist.d.ts.map +1 -1
- package/dist/modules/market_adapter_whitelist.js +12 -6
- package/dist/modules/market_adapter_whitelist.js.map +1 -1
- package/dist/modules/node_failure_ledger.d.ts +23 -0
- package/dist/modules/node_failure_ledger.d.ts.map +1 -1
- package/dist/modules/node_failure_ledger.js +0 -23
- package/dist/modules/node_failure_ledger.js.map +1 -1
- package/dist/modules/node_manager.d.ts.map +1 -1
- package/dist/modules/node_manager.js +3 -3
- package/dist/modules/node_manager.js.map +1 -1
- package/dist/modules/order/accounting.js +3 -3
- package/dist/modules/order/accounting.js.map +1 -1
- package/dist/modules/order/async_lock.d.ts +6 -0
- package/dist/modules/order/async_lock.d.ts.map +1 -1
- package/dist/modules/order/async_lock.js +11 -0
- package/dist/modules/order/async_lock.js.map +1 -1
- package/dist/modules/order/export.d.ts +1 -1
- package/dist/modules/order/export.js +10 -10
- package/dist/modules/order/export.js.map +1 -1
- package/dist/modules/order/format.d.ts +1 -8
- package/dist/modules/order/format.d.ts.map +1 -1
- package/dist/modules/order/format.js +0 -14
- package/dist/modules/order/format.js.map +1 -1
- package/dist/modules/order/grid.d.ts +2 -12
- package/dist/modules/order/grid.d.ts.map +1 -1
- package/dist/modules/order/grid.js +23 -24
- package/dist/modules/order/grid.js.map +1 -1
- package/dist/modules/order/grid_reconcile.d.ts +1 -1
- package/dist/modules/order/grid_reconcile.js +1 -1
- package/dist/modules/order/grid_reconcile_internal.js +1 -1
- package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
- package/dist/modules/order/logger.d.ts +3 -0
- package/dist/modules/order/logger.d.ts.map +1 -1
- package/dist/modules/order/logger.js +23 -14
- package/dist/modules/order/logger.js.map +1 -1
- package/dist/modules/order/logger_state.d.ts +5 -22
- package/dist/modules/order/logger_state.d.ts.map +1 -1
- package/dist/modules/order/logger_state.js +6 -25
- package/dist/modules/order/logger_state.js.map +1 -1
- package/dist/modules/order/manager.d.ts +1 -4
- package/dist/modules/order/manager.d.ts.map +1 -1
- package/dist/modules/order/manager.js +34 -33
- package/dist/modules/order/manager.js.map +1 -1
- package/dist/modules/order/processed_fill_store.d.ts +0 -5
- package/dist/modules/order/processed_fill_store.d.ts.map +1 -1
- package/dist/modules/order/processed_fill_store.js +10 -15
- package/dist/modules/order/processed_fill_store.js.map +1 -1
- package/dist/modules/order/strategy.d.ts +6 -4
- package/dist/modules/order/strategy.d.ts.map +1 -1
- package/dist/modules/order/strategy.js +6 -4
- package/dist/modules/order/strategy.js.map +1 -1
- package/dist/modules/order/sync_engine.d.ts.map +1 -1
- package/dist/modules/order/sync_engine.js +17 -10
- package/dist/modules/order/sync_engine.js.map +1 -1
- package/dist/modules/order/utils/math.d.ts +7 -1
- package/dist/modules/order/utils/math.d.ts.map +1 -1
- package/dist/modules/order/utils/math.js +19 -1
- package/dist/modules/order/utils/math.js.map +1 -1
- package/dist/modules/order/utils/order.d.ts.map +1 -1
- package/dist/modules/order/utils/order.js +11 -4
- package/dist/modules/order/utils/order.js.map +1 -1
- package/dist/modules/order/utils/system.d.ts +3 -8
- package/dist/modules/order/utils/system.d.ts.map +1 -1
- package/dist/modules/order/utils/system.js +14 -4
- package/dist/modules/order/utils/system.js.map +1 -1
- package/dist/modules/order/utils/validate.js +1 -1
- package/dist/modules/order/utils/validate.js.map +1 -1
- package/dist/modules/path_api.js +1 -1
- package/dist/modules/path_api.js.map +1 -1
- package/dist/modules/paths.d.ts +1 -7
- package/dist/modules/paths.d.ts.map +1 -1
- package/dist/modules/paths.js +1 -1
- package/dist/modules/paths.js.map +1 -1
- package/dist/modules/process_discovery.d.ts +3 -0
- package/dist/modules/process_discovery.d.ts.map +1 -1
- package/dist/modules/process_discovery.js +15 -1
- package/dist/modules/process_discovery.js.map +1 -1
- package/dist/modules/runtime_settings.js +4 -2
- package/dist/modules/runtime_settings.js.map +1 -1
- package/dist/modules/settings_merge.d.ts +5 -1
- package/dist/modules/settings_merge.d.ts.map +1 -1
- package/dist/modules/settings_merge.js +17 -4
- package/dist/modules/settings_merge.js.map +1 -1
- package/dist/modules/socket_json_client.d.ts.map +1 -1
- package/dist/modules/socket_json_client.js +12 -2
- package/dist/modules/socket_json_client.js.map +1 -1
- package/dist/modules/storage/browser_adapter.d.ts +8 -3
- package/dist/modules/storage/browser_adapter.d.ts.map +1 -1
- package/dist/modules/storage/browser_adapter.js +58 -7
- package/dist/modules/storage/browser_adapter.js.map +1 -1
- package/dist/modules/storage/index.d.ts +1 -1
- package/dist/modules/storage/index.js +1 -1
- package/dist/modules/types.d.ts +1 -1
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/modules/utils/sanitize_key.d.ts +7 -0
- package/dist/modules/utils/sanitize_key.d.ts.map +1 -0
- package/dist/modules/utils/sanitize_key.js +15 -0
- package/dist/modules/utils/sanitize_key.js.map +1 -0
- package/dist/modules/validate_profiles.d.ts.map +1 -1
- package/dist/modules/validate_profiles.js +6 -8
- package/dist/modules/validate_profiles.js.map +1 -1
- package/dist/pm2.d.ts.map +1 -1
- package/dist/pm2.js +8 -9
- package/dist/pm2.js.map +1 -1
- package/dist/scripts/analyze-git.d.ts +1 -1
- package/dist/scripts/analyze-git.js +1 -1
- package/dist/scripts/analyze-orders.d.ts +2 -2
- package/dist/scripts/analyze-orders.d.ts.map +1 -1
- package/dist/scripts/analyze-orders.js +39 -28
- package/dist/scripts/analyze-orders.js.map +1 -1
- package/dist/scripts/diagnose-pool-history.js +1 -1
- package/dist/scripts/divergence-calc.d.ts +1 -1
- package/dist/scripts/divergence-calc.js +3 -3
- package/dist/scripts/native_release_gates.js +4 -2
- package/dist/scripts/native_release_gates.js.map +1 -1
- package/dist/scripts/print_grid.d.ts +1 -1
- package/dist/scripts/print_grid.js +1 -1
- package/dist/scripts/run-tests.js +38 -19
- package/dist/scripts/run-tests.js.map +1 -1
- package/dist/scripts/runner.d.ts +3 -5
- package/dist/scripts/runner.d.ts.map +1 -1
- package/dist/scripts/runner.js +4 -6
- package/dist/scripts/runner.js.map +1 -1
- package/dist/scripts/sync-version.d.ts +2 -2
- package/dist/scripts/sync-version.js +2 -2
- package/dist/scripts/update.d.ts +1 -1
- package/dist/scripts/update.js +2 -2
- package/dist/scripts/update.js.map +1 -1
- package/dist/scripts/validate_bots.d.ts +1 -1
- package/dist/scripts/validate_bots.js +1 -1
- package/dist/scripts/verify-browser-bundle.d.ts +1 -1
- package/dist/scripts/verify-browser-bundle.js +1 -1
- package/dist/unlock.js +4 -4
- package/dist/unlock.js.map +1 -1
- package/docs/BITSHARES_ONBOARDING.md +63 -18
- package/docs/COPY_ON_WRITE_MASTER_PLAN.md +14 -23
- package/docs/COW_INVARIANTS.md +4 -4
- package/docs/CREDENTIAL_SECURITY.md +0 -11
- package/docs/DEXBOT_COMPARISON.md +12 -12
- package/docs/EVOLUTION.md +17 -43
- package/docs/FUND_MOVEMENT_AND_ACCOUNTING.md +27 -83
- package/docs/GRID_RECALCULATION.md +1 -13
- package/docs/GRID_RECONCILE.md +24 -24
- package/docs/LIFECYCLE.md +4 -4
- package/docs/LOGGING.md +1 -1
- package/docs/MPA_CREDIT_USAGE.md +3 -3
- package/docs/README.md +2 -2
- package/docs/WORKFLOW.md +2 -2
- package/docs/architecture.md +48 -43
- package/docs/developer_guide.md +22 -24
- package/market_adapter/README.md +0 -2
- package/modules/README.md +2 -1
- package/package.json +22 -14
- package/scripts/README.md +34 -8
- package/scripts/clean-dist.js +10 -2
- package/tests/README.md +4 -3
- package/claw/openclaw.plugin.json +0 -13
- package/dist/market_adapter/merge_lp_data.d.ts +0 -3
- package/dist/market_adapter/merge_lp_data.d.ts.map +0 -1
- package/dist/market_adapter/merge_lp_data.js +0 -125
- package/dist/market_adapter/merge_lp_data.js.map +0 -1
- package/dist/market_adapter/utils/paths.d.ts +0 -3
- package/dist/market_adapter/utils/paths.d.ts.map +0 -1
- package/dist/market_adapter/utils/paths.js +0 -5
- package/dist/market_adapter/utils/paths.js.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
1
2
|
import fs from 'node:fs';
|
|
2
3
|
import { MARKET_ADAPTER } from '../../modules/constants.js';
|
|
3
|
-
import { escapeHtml, serializeJsonForScript } from '../chart_utils.js';
|
|
4
|
+
import { escapeHtml, serializeJsonForScript, UPLOT_SHARED_SCRIPT } from '../chart_utils.js';
|
|
5
|
+
import { cursorCSS, uplotBgCSS } from '../chart_css.js';
|
|
6
|
+
import { zoomResetScript } from '../chart_ui.js';
|
|
4
7
|
import { normalizeCandle } from '../math_utils.js';
|
|
5
8
|
import { PATHS } from '../../modules/paths.js';
|
|
6
9
|
import { getStorage } from '../../modules/storage/index.js';
|
|
7
10
|
const { readJSON } = getStorage();
|
|
8
11
|
import { getErrorMessage } from '../../modules/utils/errors.js';
|
|
9
|
-
'use strict';
|
|
10
12
|
function inferBaseIntervalSeconds(candles, fallback = 3600) {
|
|
11
13
|
if (!Array.isArray(candles) || candles.length < 2)
|
|
12
14
|
return fallback;
|
|
@@ -390,10 +392,8 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
390
392
|
.legend-value { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; color: #eef4fb; font-weight: 700; }
|
|
391
393
|
.status { display: inline-flex; align-items: center; gap: 8px; font-size: 10px; color: #8290a2; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
392
394
|
.pill { border: 1px solid rgba(255,255,255,0.06); border-radius: 999px; padding: 4px 8px; background: rgba(255,255,255,0.03); }
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
.u-cursor-y { border-top: 1px dashed rgba(255,255,255,0.3) !important; display: none; }
|
|
396
|
-
.is-hovered .u-cursor-y { display: block; }
|
|
395
|
+
${uplotBgCSS('#0b0f14')}
|
|
396
|
+
${cursorCSS()}
|
|
397
397
|
@media (max-width: 980px) {
|
|
398
398
|
#topbar { flex-direction: column; align-items: flex-start; }
|
|
399
399
|
#toolbar { justify-content: flex-start; }
|
|
@@ -494,7 +494,7 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
494
494
|
<span class="legend-item"><span class="legend-dot" style="background:#93c5fd"></span><span class="legend-label">VWMA</span> <span class="legend-value" id="legend-vwap">-</span></span>
|
|
495
495
|
</div>
|
|
496
496
|
</div>
|
|
497
|
-
<div id="price-chart"></div>
|
|
497
|
+
<div id="price-chart" title="Wheel: zoom time (ulos = tyhjaa tilaa datan ymparilla) · Drag: siirra aika- ja hintanakymaa · Wheel/drag hinta-akselilla: zoomaa hintaa · Double-click hinta-akselia: autofit"></div>
|
|
498
498
|
<div id="volume-chart"></div>
|
|
499
499
|
</div>
|
|
500
500
|
</div>
|
|
@@ -553,8 +553,12 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
553
553
|
let lastRenderedPriceScale = null;
|
|
554
554
|
let charts = [];
|
|
555
555
|
let chartEventsBound = false;
|
|
556
|
+
let manualYRange = null;
|
|
557
|
+
let lastCandleKey = null;
|
|
556
558
|
let pendingRange = null;
|
|
557
559
|
let pendingRangeRaf = 0;
|
|
560
|
+
let xMin = 0;
|
|
561
|
+
let xMax = 0;
|
|
558
562
|
let smaWorker = null;
|
|
559
563
|
let smaWorkerJob = null;
|
|
560
564
|
let smaWorkerStartRaf = 0;
|
|
@@ -566,6 +570,50 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
566
570
|
const vwapCache = new Map();
|
|
567
571
|
const seriesCache = new Map();
|
|
568
572
|
|
|
573
|
+
${UPLOT_SHARED_SCRIPT}
|
|
574
|
+
|
|
575
|
+
// TradingView-exporter interaction overrides (PR #3 / #11 feature):
|
|
576
|
+
// redeclare after UPLOT_SHARED_SCRIPT so these hoisted declarations win
|
|
577
|
+
// for this page only, without mutating the shared stack used by other charts.
|
|
578
|
+
function clampXRange(min, max) {
|
|
579
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return { min: xMin, max: xMax };
|
|
580
|
+
// Salli tyhjaa tilaa datan molemmin puolin (TradingView-tyyli):
|
|
581
|
+
// enintaan 75 % datan pituudesta reunapuskurina kummallekin puolelle.
|
|
582
|
+
const dataSpan = Math.max(1, xMax - xMin);
|
|
583
|
+
const maxPad = dataSpan * 0.75;
|
|
584
|
+
let lo = Math.max(xMin - maxPad, min);
|
|
585
|
+
let hi = Math.min(xMax + maxPad, max);
|
|
586
|
+
if (lo < xMin && hi <= lo) lo = xMin;
|
|
587
|
+
if (hi > xMax + maxPad) hi = xMax + maxPad;
|
|
588
|
+
if (hi <= lo) return { min: xMin, max: xMax };
|
|
589
|
+
return { min: lo, max: hi };
|
|
590
|
+
}
|
|
591
|
+
function bindWheelZoom(chart) {
|
|
592
|
+
chart.root.addEventListener('wheel', (e) => {
|
|
593
|
+
if (e.ctrlKey || e.metaKey || e.altKey) return;
|
|
594
|
+
e.preventDefault();
|
|
595
|
+
const rect = chart.root.getBoundingClientRect();
|
|
596
|
+
if (chart === priceChart && inYAxisZone(chart, e.clientX)) {
|
|
597
|
+
const centerY = chart.posToVal(e.clientY - rect.top, 'y');
|
|
598
|
+
zoomYAt(chart, centerY, e.deltaY < 0 ? 0.91 : 1.10);
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
e.stopPropagation();
|
|
602
|
+
const left = e.clientX - rect.left - (chart.bbox.left / (chart.pxRatio || 1));
|
|
603
|
+
const center = chart.posToVal(left, 'x');
|
|
604
|
+
const s = chart.scales.x || {};
|
|
605
|
+
const currMin = Number.isFinite(s.min) ? s.min : xMin;
|
|
606
|
+
const currMax = Number.isFinite(s.max) ? s.max : xMax;
|
|
607
|
+
const span = currMax - currMin;
|
|
608
|
+
if (!Number.isFinite(span) || span <= 0) return;
|
|
609
|
+
const factor = e.deltaY < 0 ? 0.85 : 1.15;
|
|
610
|
+
// Uloszoomaus datan reunojen yli: kokonaisnakyyma enintaan 2.5x datan pituus
|
|
611
|
+
const fullSpan = Math.max(1, xMax - xMin);
|
|
612
|
+
const nextSpan = Math.max(1, Math.min(fullSpan * 2.5, span * factor));
|
|
613
|
+
const ratio = (center - currMin) / span;
|
|
614
|
+
syncXRange(center - nextSpan * ratio, center - nextSpan * ratio + nextSpan);
|
|
615
|
+
}, { passive: false });
|
|
616
|
+
}
|
|
569
617
|
function clamp(v, lo, hi) { return Math.max(lo, Math.min(hi, v)); }
|
|
570
618
|
function fmtPrice(v) {
|
|
571
619
|
if (v == null || !Number.isFinite(v)) return '-';
|
|
@@ -575,6 +623,27 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
575
623
|
if (abs >= 1) return v.toFixed(4);
|
|
576
624
|
return v.toPrecision(6);
|
|
577
625
|
}
|
|
626
|
+
function fmtPriceAxis(vals) {
|
|
627
|
+
if (!Array.isArray(vals) || vals.length === 0) return [];
|
|
628
|
+
let step = Infinity;
|
|
629
|
+
for (let i = 1; i < vals.length; i++) {
|
|
630
|
+
const d = Math.abs(Number(vals[i]) - Number(vals[i - 1]));
|
|
631
|
+
if (Number.isFinite(d) && d > 0 && d < step) step = d;
|
|
632
|
+
}
|
|
633
|
+
let decimals = 4;
|
|
634
|
+
if (Number.isFinite(step) && step > 0) decimals = Math.ceil(-Math.log10(step));
|
|
635
|
+
decimals = Math.max(0, Math.min(10, decimals));
|
|
636
|
+
return vals.map((v) => (v == null || !Number.isFinite(v)) ? '' : Number(v).toFixed(decimals));
|
|
637
|
+
}
|
|
638
|
+
function fmtPriceLabel(v) {
|
|
639
|
+
if (v == null || !Number.isFinite(v)) return '-';
|
|
640
|
+
const abs = Math.abs(v);
|
|
641
|
+
if (abs >= 1000) return v.toFixed(2);
|
|
642
|
+
if (abs >= 1) return v.toFixed(4);
|
|
643
|
+
let s = v.toPrecision(6);
|
|
644
|
+
if (s.indexOf('e') >= 0) s = v.toFixed(10).replace(/0+$/, '').replace(/\.$/, '');
|
|
645
|
+
return s;
|
|
646
|
+
}
|
|
578
647
|
function fmtVolume(v) {
|
|
579
648
|
if (v == null || !Number.isFinite(v)) return '-';
|
|
580
649
|
const abs = Math.abs(v);
|
|
@@ -1004,8 +1073,9 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1004
1073
|
if (Number.isFinite(v)) { if (v < min) min = v; if (v > max) max = v; }
|
|
1005
1074
|
}
|
|
1006
1075
|
if (!Number.isFinite(min) || !Number.isFinite(max) || min <= 0 || max <= 0) return null;
|
|
1007
|
-
if (min === max) return [min * 0.
|
|
1008
|
-
|
|
1076
|
+
if (min === max) return [min * 0.96, max * 1.04];
|
|
1077
|
+
// ~7 % hengitystilaa yla- ja alapuolelle (TradingView-tyyli)
|
|
1078
|
+
return [min * 0.93, max * 1.07];
|
|
1009
1079
|
}
|
|
1010
1080
|
function visibleVolumeRange(u) {
|
|
1011
1081
|
if (!currentCandles.length) return null;
|
|
@@ -1261,6 +1331,10 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1261
1331
|
currentSeriesCloseValues = currentSeriesState.closeValues;
|
|
1262
1332
|
const aggregated = aggregateCandles(currentSeriesCandles, tf?.seconds || 3600);
|
|
1263
1333
|
currentCandles = aggregated.candles;
|
|
1334
|
+
if (currentCandles.length) {
|
|
1335
|
+
xMin = currentCandles[0].time;
|
|
1336
|
+
xMax = currentCandles[currentCandles.length - 1].time;
|
|
1337
|
+
}
|
|
1264
1338
|
currentDisplayCandles = deriveDisplayCandles(currentCandles);
|
|
1265
1339
|
currentOpen = currentDisplayCandles.map((c) => c.open);
|
|
1266
1340
|
currentHigh = currentCandles.map((c) => c.high);
|
|
@@ -1339,6 +1413,7 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1339
1413
|
distr: isLogScale ? 3 : 1,
|
|
1340
1414
|
log: isLogScale ? 10 : undefined,
|
|
1341
1415
|
range: (u, min, max) => {
|
|
1416
|
+
if (manualYRange) return [manualYRange.min, manualYRange.max];
|
|
1342
1417
|
const vis = visiblePriceRange(u);
|
|
1343
1418
|
if (vis) return vis;
|
|
1344
1419
|
if (isLogScale) {
|
|
@@ -1365,8 +1440,21 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1365
1440
|
],
|
|
1366
1441
|
axes: [
|
|
1367
1442
|
makeTimeAxis(false),
|
|
1368
|
-
{
|
|
1443
|
+
{
|
|
1444
|
+
scale: 'y',
|
|
1445
|
+
side: 1,
|
|
1446
|
+
size: 84,
|
|
1447
|
+
space: 26,
|
|
1448
|
+
stroke: '#ffffff',
|
|
1449
|
+
grid: { stroke: '#272f3a' },
|
|
1450
|
+
ticks: { stroke: '#414b57', width: 1 },
|
|
1451
|
+
font: '600 13px Segoe UI, sans-serif',
|
|
1452
|
+
values: (u, vals) => fmtPriceAxis(vals),
|
|
1453
|
+
},
|
|
1369
1454
|
],
|
|
1455
|
+
hooks: {
|
|
1456
|
+
draw: [(u) => positionPriceMarker(u)],
|
|
1457
|
+
},
|
|
1370
1458
|
};
|
|
1371
1459
|
|
|
1372
1460
|
const plugin = candlePlugin();
|
|
@@ -1400,7 +1488,7 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1400
1488
|
],
|
|
1401
1489
|
axes: [
|
|
1402
1490
|
makeTimeAxis(true),
|
|
1403
|
-
{ scale: 'y', size:
|
|
1491
|
+
{ scale: 'y', side: 1, size: 84, space: 22, stroke: '#ffffff', grid: { stroke: '#1c2128' }, ticks: { stroke: '#30363d', width: 1 }, font: '600 12px Segoe UI, sans-serif', values: (u, vals) => vals.map((v) => (v == null ? '' : fmtVolume(v))) },
|
|
1404
1492
|
],
|
|
1405
1493
|
};
|
|
1406
1494
|
|
|
@@ -1414,65 +1502,181 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1414
1502
|
lastRenderedPriceScale = currentPriceScale;
|
|
1415
1503
|
return priceChart;
|
|
1416
1504
|
}
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
if (
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
if (
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1505
|
+
// True when clientX sits over the price-axis gutter (outside the plot
|
|
1506
|
+
// proper). uPlot's .u-over spans the full canvas incl. axis gutters,
|
|
1507
|
+
// so hit-testing must use chart.bbox (plot area) rather than the
|
|
1508
|
+
// overlay rect. Tolerance pulls the boundary slightly into the plot.
|
|
1509
|
+
function inYAxisZone(chart, clientX) {
|
|
1510
|
+
const rootRect = chart.root.getBoundingClientRect();
|
|
1511
|
+
if (!rootRect || rootRect.width <= 0 || !chart.bbox) return false;
|
|
1512
|
+
const pr = chart.pxRatio || 1;
|
|
1513
|
+
const plotLeft = chart.bbox.left / pr;
|
|
1514
|
+
const plotRight = chart.bbox.right / pr;
|
|
1515
|
+
return clientX - rootRect.left < plotLeft - 6 || clientX - rootRect.left > plotRight + 6;
|
|
1516
|
+
}
|
|
1517
|
+
let priceMarkerLabel = null;
|
|
1518
|
+
let priceMarkerLine = null;
|
|
1519
|
+
function ensurePriceMarker(u) {
|
|
1520
|
+
if (priceMarkerLabel && priceMarkerLabel.parentNode === u.root) return;
|
|
1521
|
+
if (priceMarkerLabel && priceMarkerLabel.parentNode) priceMarkerLabel.parentNode.removeChild(priceMarkerLabel);
|
|
1522
|
+
if (priceMarkerLine && priceMarkerLine.parentNode) priceMarkerLine.parentNode.removeChild(priceMarkerLine);
|
|
1523
|
+
try { if (getComputedStyle(u.root).position === 'static') u.root.style.position = 'relative'; } catch (e) {}
|
|
1524
|
+
priceMarkerLabel = document.createElement('div');
|
|
1525
|
+
priceMarkerLabel.style.cssText = 'position:absolute;z-index:30;pointer-events:none;font:600 12px Segoe UI, sans-serif;line-height:19px;height:19px;padding:0 7px;border-radius:3px;color:#ffffff;white-space:nowrap;box-sizing:border-box;text-align:center;overflow:hidden;';
|
|
1526
|
+
priceMarkerLine = document.createElement('div');
|
|
1527
|
+
priceMarkerLine.style.cssText = 'position:absolute;z-index:1;pointer-events:none;height:0;border-top:1px dashed currentColor;opacity:0.6;';
|
|
1528
|
+
u.root.appendChild(priceMarkerLine);
|
|
1529
|
+
u.root.appendChild(priceMarkerLabel);
|
|
1530
|
+
}
|
|
1531
|
+
function positionPriceMarker(u) {
|
|
1532
|
+
if (!u || !u.over || !currentCandles.length) return;
|
|
1533
|
+
ensurePriceMarker(u);
|
|
1534
|
+
const last = currentCandles[currentCandles.length - 1];
|
|
1535
|
+
const prev = currentCandles.length > 1 ? currentCandles[currentCandles.length - 2] : last;
|
|
1536
|
+
const price = last.close;
|
|
1537
|
+
if (!Number.isFinite(price)) {
|
|
1538
|
+
priceMarkerLabel.style.display = 'none';
|
|
1539
|
+
priceMarkerLine.style.display = 'none';
|
|
1540
|
+
return;
|
|
1541
|
+
}
|
|
1542
|
+
const up = price >= (Number.isFinite(prev.close) ? prev.close : price);
|
|
1543
|
+
const color = up ? '#26a69a' : '#ef5350';
|
|
1544
|
+
const s = u.scales.y || {};
|
|
1545
|
+
const sMin = Number.isFinite(s.min) ? s.min : null;
|
|
1546
|
+
const sMax = Number.isFinite(s.max) ? s.max : null;
|
|
1547
|
+
if (sMin == null || sMax == null || sMax <= sMin) {
|
|
1548
|
+
priceMarkerLabel.style.display = 'none';
|
|
1549
|
+
priceMarkerLine.style.display = 'none';
|
|
1550
|
+
return;
|
|
1551
|
+
}
|
|
1552
|
+
let frac;
|
|
1553
|
+
if (currentPriceScale === 'log') {
|
|
1554
|
+
const lmin = Math.log10(sMin);
|
|
1555
|
+
const lmax = Math.log10(sMax);
|
|
1556
|
+
const lp = Math.log10(Math.max(price, 1e-12));
|
|
1557
|
+
frac = (lp - lmin) / (lmax - lmin);
|
|
1558
|
+
} else {
|
|
1559
|
+
frac = (price - sMin) / (sMax - sMin);
|
|
1560
|
+
}
|
|
1561
|
+
const rootRect = u.root.getBoundingClientRect();
|
|
1562
|
+
const overRect = u.over.getBoundingClientRect();
|
|
1563
|
+
if (!overRect || overRect.height <= 0) return;
|
|
1564
|
+
const plotTop = overRect.top - rootRect.top;
|
|
1565
|
+
const yRel = (1 - frac) * overRect.height;
|
|
1566
|
+
const inRange = frac >= 0 && frac <= 1;
|
|
1567
|
+
priceMarkerLabel.style.display = 'block';
|
|
1568
|
+
priceMarkerLabel.textContent = fmtPriceLabel(price);
|
|
1569
|
+
priceMarkerLabel.style.background = color;
|
|
1570
|
+
priceMarkerLabel.style.top = (plotTop + Math.max(0, Math.min(overRect.height, yRel)) - 10) + 'px';
|
|
1571
|
+
const leftAxisW = overRect.left - rootRect.left;
|
|
1572
|
+
const rightAxisW = rootRect.right - overRect.right;
|
|
1573
|
+
if (leftAxisW >= rightAxisW) {
|
|
1574
|
+
priceMarkerLabel.style.left = '0px';
|
|
1575
|
+
priceMarkerLabel.style.right = '';
|
|
1576
|
+
priceMarkerLabel.style.width = Math.max(40, leftAxisW - 4) + 'px';
|
|
1577
|
+
} else {
|
|
1578
|
+
priceMarkerLabel.style.left = '';
|
|
1579
|
+
priceMarkerLabel.style.right = '0px';
|
|
1580
|
+
priceMarkerLabel.style.width = Math.max(40, rightAxisW - 4) + 'px';
|
|
1581
|
+
}
|
|
1582
|
+
if (inRange) {
|
|
1583
|
+
priceMarkerLine.style.display = 'block';
|
|
1584
|
+
priceMarkerLine.style.color = color;
|
|
1585
|
+
priceMarkerLine.style.top = (plotTop + yRel) + 'px';
|
|
1586
|
+
priceMarkerLine.style.left = (overRect.left - rootRect.left) + 'px';
|
|
1587
|
+
priceMarkerLine.style.width = overRect.width + 'px';
|
|
1588
|
+
} else {
|
|
1589
|
+
priceMarkerLine.style.display = 'none';
|
|
1590
|
+
}
|
|
1440
1591
|
}
|
|
1441
|
-
function
|
|
1442
|
-
chart.
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
const
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
const first = currentCandles[0]?.time;
|
|
1452
|
-
const last = currentCandles[currentCandles.length - 1]?.time;
|
|
1453
|
-
const fullSpan = Number.isFinite(first) && Number.isFinite(last) ? Math.max(1, last - first) : span;
|
|
1454
|
-
if (!Number.isFinite(span) || span <= 0) return;
|
|
1455
|
-
const factor = e.deltaY < 0 ? 0.85 : 1.15;
|
|
1456
|
-
const nextSpan = Math.max(1, Math.min(fullSpan, span * factor));
|
|
1457
|
-
const ratio = (center - currMin) / span;
|
|
1458
|
-
syncXRange(center - nextSpan * ratio, center - nextSpan * ratio + nextSpan);
|
|
1459
|
-
}, { passive: false });
|
|
1592
|
+
function currentYRange(chart) {
|
|
1593
|
+
const s = chart.scales.y || {};
|
|
1594
|
+
let min = Number.isFinite(s.min) ? s.min : null;
|
|
1595
|
+
let max = Number.isFinite(s.max) ? s.max : null;
|
|
1596
|
+
if (min == null || max == null) {
|
|
1597
|
+
const vis = visiblePriceRange(chart);
|
|
1598
|
+
if (vis) { min = vis[0]; max = vis[1]; }
|
|
1599
|
+
}
|
|
1600
|
+
if (min == null || max == null || !Number.isFinite(min) || !Number.isFinite(max) || max <= min) return null;
|
|
1601
|
+
return { min: min, max: max };
|
|
1460
1602
|
}
|
|
1461
|
-
|
|
1603
|
+
let priceBounds = null;
|
|
1604
|
+
function computePriceBounds() {
|
|
1605
|
+
let min = Infinity;
|
|
1606
|
+
let max = -Infinity;
|
|
1607
|
+
for (let i = 0; i < currentCandles.length; i++) {
|
|
1608
|
+
const lo = currentLow[i];
|
|
1609
|
+
const hi = currentHigh[i];
|
|
1610
|
+
if (Number.isFinite(lo) && lo > 0 && lo < min) min = lo;
|
|
1611
|
+
if (Number.isFinite(hi) && hi > max) max = hi;
|
|
1612
|
+
}
|
|
1613
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || min <= 0 || max <= min) {
|
|
1614
|
+
priceBounds = null;
|
|
1615
|
+
return;
|
|
1616
|
+
}
|
|
1617
|
+
const range = max - min;
|
|
1618
|
+
// Uloszoomauksen rajat: alin naytettava hinta voi painua viimeistaan
|
|
1619
|
+
// ~35 % datan minimin alapuolelle, ylin ~1.6x datan maksimin, ja
|
|
1620
|
+
// kokonaisvali saa olla enintaan ~1.6x datan hintahaarukasta —
|
|
1621
|
+
// ei siis paase "lipsahtamaan" candleita nakyvasta kadottaen.
|
|
1622
|
+
priceBounds = { min: min, max: max, floor: min * 0.35, ceil: max * 1.6, maxSpan: range * 1.6 };
|
|
1623
|
+
}
|
|
1624
|
+
function applyYRange(chart, min, max) {
|
|
1625
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return false;
|
|
1626
|
+
const ref = Math.max(Math.abs(min), Math.abs(max), 1e-12);
|
|
1627
|
+
if (max - min < ref * 1e-9) return false;
|
|
1628
|
+
if (currentPriceScale === 'log' && min <= 0) {
|
|
1629
|
+
min = max > 0 ? max * 1e-6 : 1e-6;
|
|
1630
|
+
if (max <= min) return false;
|
|
1631
|
+
}
|
|
1632
|
+
if (priceBounds) {
|
|
1633
|
+
let nMin = Math.max(min, priceBounds.floor);
|
|
1634
|
+
let nMax = Math.min(max, priceBounds.ceil);
|
|
1635
|
+
if (nMax - nMin > priceBounds.maxSpan) {
|
|
1636
|
+
const c = (nMin + nMax) / 2;
|
|
1637
|
+
nMin = c - priceBounds.maxSpan / 2;
|
|
1638
|
+
nMax = c + priceBounds.maxSpan / 2;
|
|
1639
|
+
nMin = Math.max(nMin, priceBounds.floor);
|
|
1640
|
+
nMax = Math.min(nMax, priceBounds.ceil);
|
|
1641
|
+
}
|
|
1642
|
+
if (nMax <= nMin) return false;
|
|
1643
|
+
min = nMin;
|
|
1644
|
+
max = nMax;
|
|
1645
|
+
}
|
|
1646
|
+
manualYRange = { min: min, max: max };
|
|
1647
|
+
chart.setScale('y', { min: min, max: max });
|
|
1648
|
+
return true;
|
|
1649
|
+
}
|
|
1650
|
+
function zoomYAt(chart, centerY, factor) {
|
|
1651
|
+
const r = currentYRange(chart);
|
|
1652
|
+
if (!r) return;
|
|
1653
|
+
const span = r.max - r.min;
|
|
1654
|
+
let ratio = (centerY - r.min) / span;
|
|
1655
|
+
if (!Number.isFinite(ratio)) ratio = 0.5;
|
|
1656
|
+
ratio = Math.max(0.05, Math.min(0.95, ratio));
|
|
1657
|
+
const nextSpan = span * factor;
|
|
1658
|
+
const nextMin = centerY - nextSpan * ratio;
|
|
1659
|
+
applyYRange(chart, nextMin, nextMin + nextSpan);
|
|
1660
|
+
}
|
|
1661
|
+
function bindYAxisDrag(chart) {
|
|
1462
1662
|
let dragging = false;
|
|
1463
|
-
let
|
|
1464
|
-
let
|
|
1465
|
-
let startMax = 0;
|
|
1663
|
+
let startClientY = 0;
|
|
1664
|
+
let startRange = null;
|
|
1466
1665
|
const onMove = (e) => {
|
|
1467
|
-
if (!dragging) return;
|
|
1666
|
+
if (!dragging || !startRange) return;
|
|
1468
1667
|
e.preventDefault();
|
|
1469
|
-
const
|
|
1470
|
-
|
|
1471
|
-
|
|
1668
|
+
const deltaPx = e.clientY - startClientY;
|
|
1669
|
+
if (!Number.isFinite(deltaPx) || deltaPx === 0) return;
|
|
1670
|
+
const factor = Math.exp(deltaPx / 350);
|
|
1671
|
+
const span = startRange.max - startRange.min;
|
|
1672
|
+
const center = (startRange.min + startRange.max) / 2;
|
|
1673
|
+
const nextSpan = span * factor;
|
|
1674
|
+
applyYRange(chart, center - nextSpan / 2, center + nextSpan / 2);
|
|
1472
1675
|
};
|
|
1473
1676
|
const endDrag = () => {
|
|
1474
1677
|
if (!dragging) return;
|
|
1475
1678
|
dragging = false;
|
|
1679
|
+
startRange = null;
|
|
1476
1680
|
document.body.style.cursor = '';
|
|
1477
1681
|
window.removeEventListener('mousemove', onMove);
|
|
1478
1682
|
window.removeEventListener('mouseup', endDrag);
|
|
@@ -1481,18 +1685,27 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1481
1685
|
if (!e || e.button !== 0 || e.ctrlKey || e.metaKey || e.altKey) return;
|
|
1482
1686
|
const rect = chart.root.getBoundingClientRect();
|
|
1483
1687
|
if (e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom) return;
|
|
1688
|
+
if (chart !== priceChart || !inYAxisZone(chart, e.clientX)) return;
|
|
1689
|
+
const range = currentYRange(chart);
|
|
1690
|
+
if (!range) return;
|
|
1484
1691
|
e.preventDefault();
|
|
1485
1692
|
e.stopPropagation();
|
|
1486
1693
|
dragging = true;
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
startMax = Number.isFinite(s.max) ? s.max : currentCandles[currentCandles.length - 1].time;
|
|
1491
|
-
document.body.style.cursor = 'grabbing';
|
|
1694
|
+
startClientY = e.clientY;
|
|
1695
|
+
startRange = range;
|
|
1696
|
+
document.body.style.cursor = 'ns-resize';
|
|
1492
1697
|
window.addEventListener('mousemove', onMove);
|
|
1493
1698
|
window.addEventListener('mouseup', endDrag, { once: true });
|
|
1494
1699
|
});
|
|
1495
1700
|
}
|
|
1701
|
+
function bindYAxisReset(chart) {
|
|
1702
|
+
chart.root.addEventListener('dblclick', (e) => {
|
|
1703
|
+
if (chart !== priceChart || !inYAxisZone(chart, e.clientX)) return;
|
|
1704
|
+
manualYRange = null;
|
|
1705
|
+
const vis = visiblePriceRange(chart);
|
|
1706
|
+
if (vis) chart.setScale('y', { min: vis[0], max: vis[1] });
|
|
1707
|
+
});
|
|
1708
|
+
}
|
|
1496
1709
|
function refreshLegend() {
|
|
1497
1710
|
updateLegend(Math.max(0, currentCandles.length - 1));
|
|
1498
1711
|
}
|
|
@@ -1518,6 +1731,9 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1518
1731
|
const oldRange = keepRange && priceChart ? priceChart.scales.x : null;
|
|
1519
1732
|
const needsRebuild = !priceChart || !volumeChart || lastRenderedPriceScale !== currentPriceScale;
|
|
1520
1733
|
if (needsRebuild) {
|
|
1734
|
+
manualYRange = null;
|
|
1735
|
+
priceMarkerLabel = null;
|
|
1736
|
+
priceMarkerLine = null;
|
|
1521
1737
|
if (priceEl) priceEl.innerHTML = '';
|
|
1522
1738
|
if (volumeEl) volumeEl.innerHTML = '';
|
|
1523
1739
|
priceChart = null;
|
|
@@ -1526,6 +1742,16 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1526
1742
|
chartEventsBound = false;
|
|
1527
1743
|
}
|
|
1528
1744
|
const data = buildData();
|
|
1745
|
+
// Dataset changed (timeframe switch, fresh candles): drop any manual
|
|
1746
|
+
// price scale so auto-fit takes over again for the new data shape.
|
|
1747
|
+
const candleKey = currentCandles.length
|
|
1748
|
+
? currentCandles[0].time + ':' + currentCandles[currentCandles.length - 1].time + ':' + currentCandles.length
|
|
1749
|
+
: '';
|
|
1750
|
+
if (candleKey !== lastCandleKey) {
|
|
1751
|
+
lastCandleKey = candleKey;
|
|
1752
|
+
manualYRange = null;
|
|
1753
|
+
}
|
|
1754
|
+
computePriceBounds();
|
|
1529
1755
|
if (needsRebuild) {
|
|
1530
1756
|
makeChart();
|
|
1531
1757
|
} else {
|
|
@@ -1538,6 +1764,13 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1538
1764
|
charts.forEach((chart) => {
|
|
1539
1765
|
bindWheelZoom(chart);
|
|
1540
1766
|
bindPan(chart);
|
|
1767
|
+
if (chart === priceChart) {
|
|
1768
|
+
bindYAxisDrag(chart);
|
|
1769
|
+
bindYAxisReset(chart);
|
|
1770
|
+
chart.root.addEventListener('mousemove', (e) => {
|
|
1771
|
+
chart.root.style.cursor = inYAxisZone(chart, e.clientX) ? 'ns-resize' : '';
|
|
1772
|
+
});
|
|
1773
|
+
}
|
|
1541
1774
|
chart.over.addEventListener('mousemove', () => {
|
|
1542
1775
|
if (chart.cursor.idx != null) updateLegend(chart.cursor.idx);
|
|
1543
1776
|
});
|
|
@@ -1548,7 +1781,7 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1548
1781
|
chartEventsBound = true;
|
|
1549
1782
|
}
|
|
1550
1783
|
if (oldRange && Number.isFinite(oldRange.min) && Number.isFinite(oldRange.max)) {
|
|
1551
|
-
const next =
|
|
1784
|
+
const next = clampXRange(oldRange.min, oldRange.max);
|
|
1552
1785
|
if (next) charts.forEach((chart) => chart.batch(() => chart.setScale('x', next)));
|
|
1553
1786
|
}
|
|
1554
1787
|
refreshLegend();
|
|
@@ -1581,6 +1814,7 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1581
1814
|
if (pairToggle) {
|
|
1582
1815
|
pairToggle.addEventListener('click', () => {
|
|
1583
1816
|
currentPairMode = currentPairMode === 'inverse' ? 'normal' : 'inverse';
|
|
1817
|
+
manualYRange = null;
|
|
1584
1818
|
setControls();
|
|
1585
1819
|
rerender(true);
|
|
1586
1820
|
});
|
|
@@ -1698,13 +1932,7 @@ function generateHTML(data, title = 'TradingView Style Research') {
|
|
|
1698
1932
|
});
|
|
1699
1933
|
});
|
|
1700
1934
|
|
|
1701
|
-
|
|
1702
|
-
if ((e.ctrlKey || e.metaKey) && e.key === '0' && charts.length) {
|
|
1703
|
-
const first = currentCandles[0]?.time;
|
|
1704
|
-
const last = currentCandles[currentCandles.length - 1]?.time;
|
|
1705
|
-
if (Number.isFinite(first) && Number.isFinite(last)) syncXRange(first, last);
|
|
1706
|
-
}
|
|
1707
|
-
});
|
|
1935
|
+
${zoomResetScript()}
|
|
1708
1936
|
})();
|
|
1709
1937
|
</script>
|
|
1710
1938
|
</body>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tradingview_uplot_chart_generator.js","sourceRoot":"","sources":["../../../analysis/tradingview/tradingview_uplot_chart_generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tradingview_uplot_chart_generator.js","sourceRoot":"","sources":["../../../analysis/tradingview/tradingview_uplot_chart_generator.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,SAAS,wBAAwB,CAAC,OAAc,EAAE,WAAgB,IAAI;IAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/D,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAgB,KAAK,CAAC,QAAQ,CAAC,oBAAoB;IAC3E,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,QAAQ,KAAK,eAAe,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACpH,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAa,EAAE,OAAY,EAAE;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;IACrE,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;mBACnG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,eAAe,EAAE,CAAC;YAC/G,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,IAAI,IAAI,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,KAAU,EAAE;IAChE,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACzF,CAAC,CAAC,OAAO,CAAC,UAAU;QACpB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,EAAE,WAAW,IAAI,UAAU,IAAI,iBAAiB,CAAC;IACpE,OAAO;QACH,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACpD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACpD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;KAClC,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,IAAS,EAAE,QAAa,4BAA4B;IACtE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QACxD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG;QACf,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;KACnC,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAElF,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC;WACtG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;WAC5C,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,kBAAkB,EAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;QACzD,WAAW,EAAE,gBAAgB;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI;QACpC,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI;QACpC,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI;QACtC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;QACvD,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;KAC9D,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,SAAS,CAAC;IACxE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,SAAS,CAAC;IACxE,MAAM,eAAe,GAAG,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3F,MAAM,aAAa,GAAG,mBAAmB,IAAI,KAAK;QAC9C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,GAAG;QAC/C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC;IACnD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAElF,MAAM,OAAO,GAAG;QACZ,OAAO;QACP,UAAU;QACV,gBAAgB,EAAE,gBAAgB,CAAC,KAAK;QACxC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,WAAW,EAAE,gBAAgB;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,eAAe;QACf,WAAW;QACX,WAAW;QACX,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,aAAa;QACb,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW;KACtE,CAAC;IAEF,OAAO;;;;;;;aAOE,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAoPpB,UAAU,CAAC,SAAS,CAAC;UACrB,SAAS,EAAE;;;;;;;;;;;;;kCAaa,UAAU,CAAC,KAAK,CAAC;qCACd,UAAU,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC;;;;sBAIpG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,0BAA0B,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;;;kEAK/L,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,uGAAuG,UAAU,CAAC,eAAe,CAAC;;;;;;;;mEAQnL,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,mCAAmC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,gEAAgE,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;;;uEAGrO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;wFAEpB,QAAQ,CAAC,SAAS;;;;;;;wEAOlC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;uFAEvB,QAAQ,CAAC,QAAQ;;;;;;;uEAOjC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;oFAExB,QAAQ,CAAC,WAAW,CAAC,QAAQ;;;;;;sFAM3B,QAAQ,CAAC,WAAW,CAAC,UAAU;;;;;;sFAM/B,QAAQ,CAAC,WAAW,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAwClE,sBAAsB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;wDAmB1B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;;;0DAG/B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;;;0DAGnC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA8CnF,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2EAyhB8C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;+EAC7B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;+EACnC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uGA2sBX,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;qJACa,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;qJACnC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA0G9K,eAAe,EAAE;;;;QAInB,CAAC;AACT,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -118,6 +118,7 @@ declare class DerivativeAnalyzer {
|
|
|
118
118
|
rsiBullThreshold: number;
|
|
119
119
|
rsiBearThreshold: number;
|
|
120
120
|
macdMinHist: number;
|
|
121
|
+
macdLineGateThreshold: number;
|
|
121
122
|
fastSmaCommitmentBars: number;
|
|
122
123
|
trendFilterEnabled: boolean;
|
|
123
124
|
trendFilterMinBars: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivative_analyzer.d.ts","sourceRoot":"","sources":["../../../analysis/trend_detection/derivative_analyzer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"derivative_analyzer.d.ts","sourceRoot":"","sources":["../../../analysis/trend_detection/derivative_analyzer.ts"],"names":[],"mappings":"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"}
|