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