dexbot 1.4.17 → 1.4.19
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 +17 -0
- package/README.md +1 -0
- package/analysis/README.md +43 -43
- package/analysis/ama_fitting/README.md +8 -8
- package/analysis/ama_fitting/package.json +1 -1
- package/analysis/bot_fitting/README.md +4 -4
- package/analysis/bot_fitting/backtest_ama_sweep.ts +1 -1
- package/analysis/bot_usage/discover_bot_accounts.ts +11 -11
- package/analysis/tradingview/README.md +4 -4
- package/analysis/trend_detection/DYNAMIC_WEIGHT_RESEARCH.md +2 -2
- package/analysis/trend_detection/SIGNAL_DOCUMENTATION.md +1 -1
- package/analysis/trend_detection/package.json +1 -1
- package/claw/README.md +45 -45
- package/claw/docs/AI_BOT_LIBRARY_API.md +6 -6
- package/claw/examples/short_mpa_bts_strategy.ts +3 -3
- package/claw/package.json +21 -21
- 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 +2 -2
- package/claw/scripts/claw_skill_md.ts +1 -1
- package/claw/skills/launcher-ops/references/launcher-workflow.md +5 -5
- package/claw/skills/margin-trading/references/honest-asset-list.md +1 -1
- package/claw/skills/memu-memory/SKILL.md +3 -3
- package/claw/tests/test_claw_mcp_transport.ts +2 -2
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts +3 -0
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts.map +1 -0
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.js +148 -0
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.js.map +1 -0
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts +12 -0
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts.map +1 -0
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js +389 -0
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js.map +1 -0
- package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts +3 -0
- package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts.map +1 -0
- package/dist/analysis/ama_fitting/calibrate_convergence_er.js +200 -0
- package/dist/analysis/ama_fitting/calibrate_convergence_er.js.map +1 -0
- package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts +3 -0
- package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts.map +1 -0
- package/dist/analysis/ama_fitting/fetch_lp_candles.js +213 -0
- package/dist/analysis/ama_fitting/fetch_lp_candles.js.map +1 -0
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts +25 -0
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts.map +1 -0
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js +247 -0
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js.map +1 -0
- package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts +35 -0
- package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts.map +1 -0
- package/dist/analysis/ama_fitting/optimizer_high_resolution.js +782 -0
- package/dist/analysis/ama_fitting/optimizer_high_resolution.js.map +1 -0
- package/dist/analysis/analyze_derivatives.d.ts +86 -0
- package/dist/analysis/analyze_derivatives.d.ts.map +1 -0
- package/dist/analysis/analyze_derivatives.js +285 -0
- package/dist/analysis/analyze_derivatives.js.map +1 -0
- package/dist/analysis/analyze_dynamic_weight.d.ts +14 -0
- package/dist/analysis/analyze_dynamic_weight.d.ts.map +1 -0
- package/dist/analysis/analyze_dynamic_weight.js +197 -0
- package/dist/analysis/analyze_dynamic_weight.js.map +1 -0
- package/dist/analysis/analyze_kalman.d.ts +13 -0
- package/dist/analysis/analyze_kalman.d.ts.map +1 -0
- package/dist/analysis/analyze_kalman.js +118 -0
- package/dist/analysis/analyze_kalman.js.map +1 -0
- package/dist/analysis/analyze_regime.d.ts +20 -0
- package/dist/analysis/analyze_regime.d.ts.map +1 -0
- package/dist/analysis/analyze_regime.js +139 -0
- package/dist/analysis/analyze_regime.js.map +1 -0
- package/dist/analysis/analyze_regime_windows.d.ts +19 -0
- package/dist/analysis/analyze_regime_windows.d.ts.map +1 -0
- package/dist/analysis/analyze_regime_windows.js +414 -0
- package/dist/analysis/analyze_regime_windows.js.map +1 -0
- package/dist/analysis/analyze_risk_profile.d.ts +3 -0
- package/dist/analysis/analyze_risk_profile.d.ts.map +1 -0
- package/dist/analysis/analyze_risk_profile.js +186 -0
- package/dist/analysis/analyze_risk_profile.js.map +1 -0
- package/dist/analysis/analyze_trade_heatmap.d.ts +3 -0
- package/dist/analysis/analyze_trade_heatmap.d.ts.map +1 -0
- package/dist/analysis/analyze_trade_heatmap.js +358 -0
- package/dist/analysis/analyze_trade_heatmap.js.map +1 -0
- package/dist/analysis/analyze_volatility.d.ts +22 -0
- package/dist/analysis/analyze_volatility.d.ts.map +1 -0
- package/dist/analysis/analyze_volatility.js +165 -0
- package/dist/analysis/analyze_volatility.js.map +1 -0
- package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts +91 -0
- package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts.map +1 -0
- package/dist/analysis/bot_fitting/backtest_ama_sweep.js +792 -0
- package/dist/analysis/bot_fitting/backtest_ama_sweep.js.map +1 -0
- package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts +2 -0
- package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts.map +1 -0
- package/dist/analysis/bot_fitting/backtest_bot_fitting.js +380 -0
- package/dist/analysis/bot_fitting/backtest_bot_fitting.js.map +1 -0
- package/dist/analysis/bot_fitting/shared_utils.d.ts +26 -0
- package/dist/analysis/bot_fitting/shared_utils.d.ts.map +1 -0
- package/dist/analysis/bot_fitting/shared_utils.js +42 -0
- package/dist/analysis/bot_fitting/shared_utils.js.map +1 -0
- package/dist/analysis/bot_key_utils.d.ts +11 -0
- package/dist/analysis/bot_key_utils.d.ts.map +1 -0
- package/dist/analysis/bot_key_utils.js +153 -0
- package/dist/analysis/bot_key_utils.js.map +1 -0
- package/dist/analysis/bot_usage/discover_bot_accounts.d.ts +3 -0
- package/dist/analysis/bot_usage/discover_bot_accounts.d.ts.map +1 -0
- package/dist/analysis/bot_usage/discover_bot_accounts.js +499 -0
- package/dist/analysis/bot_usage/discover_bot_accounts.js.map +1 -0
- package/dist/analysis/bot_usage/kibana_bot_queries.d.ts +531 -0
- package/dist/analysis/bot_usage/kibana_bot_queries.d.ts.map +1 -0
- package/dist/analysis/bot_usage/kibana_bot_queries.js +399 -0
- package/dist/analysis/bot_usage/kibana_bot_queries.js.map +1 -0
- package/dist/analysis/chart_css.d.ts +17 -0
- package/dist/analysis/chart_css.d.ts.map +1 -0
- package/dist/analysis/chart_css.js +49 -0
- package/dist/analysis/chart_css.js.map +1 -0
- package/dist/analysis/chart_ui.d.ts +45 -0
- package/dist/analysis/chart_ui.d.ts.map +1 -0
- package/dist/analysis/chart_ui.js +97 -0
- package/dist/analysis/chart_ui.js.map +1 -0
- package/dist/analysis/chart_utils.d.ts +27 -0
- package/dist/analysis/chart_utils.d.ts.map +1 -0
- package/dist/analysis/chart_utils.js +153 -0
- package/dist/analysis/chart_utils.js.map +1 -0
- package/dist/analysis/derivative_chart_generator.d.ts +12 -0
- package/dist/analysis/derivative_chart_generator.d.ts.map +1 -0
- package/dist/analysis/derivative_chart_generator.js +891 -0
- package/dist/analysis/derivative_chart_generator.js.map +1 -0
- package/dist/analysis/math_utils.d.ts +22 -0
- package/dist/analysis/math_utils.d.ts.map +1 -0
- package/dist/analysis/math_utils.js +43 -0
- package/dist/analysis/math_utils.js.map +1 -0
- package/dist/analysis/price_sources.d.ts +40 -0
- package/dist/analysis/price_sources.d.ts.map +1 -0
- package/dist/analysis/price_sources.js +94 -0
- package/dist/analysis/price_sources.js.map +1 -0
- package/dist/analysis/resolve_source.d.ts +25 -0
- package/dist/analysis/resolve_source.d.ts.map +1 -0
- package/dist/analysis/resolve_source.js +69 -0
- package/dist/analysis/resolve_source.js.map +1 -0
- package/dist/analysis/trade_profitability.d.ts +115 -0
- package/dist/analysis/trade_profitability.d.ts.map +1 -0
- package/dist/analysis/trade_profitability.js +1240 -0
- package/dist/analysis/trade_profitability.js.map +1 -0
- package/dist/analysis/tradingview/analyze_tradingview.d.ts +31 -0
- package/dist/analysis/tradingview/analyze_tradingview.d.ts.map +1 -0
- package/dist/analysis/tradingview/analyze_tradingview.js +146 -0
- package/dist/analysis/tradingview/analyze_tradingview.js.map +1 -0
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts +5 -0
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts.map +1 -0
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +1714 -0
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js.map +1 -0
- package/dist/analysis/trend_detection/derivative_analyzer.d.ts +247 -0
- package/dist/analysis/trend_detection/derivative_analyzer.d.ts.map +1 -0
- package/dist/analysis/trend_detection/derivative_analyzer.js +901 -0
- package/dist/analysis/trend_detection/derivative_analyzer.js.map +1 -0
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts +3 -0
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts.map +1 -0
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js +1361 -0
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js.map +1 -0
- package/dist/analysis/trend_detection/hurst_analyzer.d.ts +6 -0
- package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +1 -0
- package/dist/analysis/trend_detection/hurst_analyzer.js +7 -0
- package/dist/analysis/trend_detection/hurst_analyzer.js.map +1 -0
- package/dist/analysis/trend_detection/kalman_chart_generator.d.ts +3 -0
- package/dist/analysis/trend_detection/kalman_chart_generator.d.ts.map +1 -0
- package/dist/analysis/trend_detection/kalman_chart_generator.js +360 -0
- package/dist/analysis/trend_detection/kalman_chart_generator.js.map +1 -0
- package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts +8 -0
- package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +1 -0
- package/dist/analysis/trend_detection/kalman_trend_analyzer.js +8 -0
- package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +1 -0
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts +6 -0
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +1 -0
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.js +7 -0
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +1 -0
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts +6 -0
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +1 -0
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.js +7 -0
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +1 -0
- package/dist/analysis/trend_detection/regime_chart_generator.d.ts +3 -0
- package/dist/analysis/trend_detection/regime_chart_generator.d.ts.map +1 -0
- package/dist/analysis/trend_detection/regime_chart_generator.js +310 -0
- package/dist/analysis/trend_detection/regime_chart_generator.js.map +1 -0
- package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts +2 -0
- package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts.map +1 -0
- package/dist/analysis/trend_detection/tests/test_kalman_trend.js +128 -0
- package/dist/analysis/trend_detection/tests/test_kalman_trend.js.map +1 -0
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts +2 -0
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts.map +1 -0
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js +37 -0
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js.map +1 -0
- package/dist/analysis/trend_detection/volatility_chart_generator.d.ts +3 -0
- package/dist/analysis/trend_detection/volatility_chart_generator.d.ts.map +1 -0
- package/dist/analysis/trend_detection/volatility_chart_generator.js +646 -0
- package/dist/analysis/trend_detection/volatility_chart_generator.js.map +1 -0
- package/dist/bot.js +1 -1
- package/dist/bot.js.map +1 -1
- package/dist/market_adapter/ama_signal_runner.js +1 -1
- package/dist/market_adapter/ama_signal_runner.js.map +1 -1
- package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +1 -1
- package/dist/modules/account_bots.d.ts +1 -0
- package/dist/modules/account_bots.d.ts.map +1 -1
- package/dist/modules/account_bots.js +27 -5
- package/dist/modules/account_bots.js.map +1 -1
- package/dist/modules/constants.d.ts +1 -0
- package/dist/modules/constants.d.ts.map +1 -1
- package/dist/modules/constants.js +12 -3
- package/dist/modules/constants.js.map +1 -1
- package/dist/modules/dexbot_class.d.ts +22 -0
- package/dist/modules/dexbot_class.d.ts.map +1 -1
- package/dist/modules/dexbot_class.js +27 -1
- package/dist/modules/dexbot_class.js.map +1 -1
- package/dist/modules/dexbot_cow_runtime.d.ts +48 -1
- package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_cow_runtime.js +168 -4
- package/dist/modules/dexbot_cow_runtime.js.map +1 -1
- package/dist/modules/order/grid_reconcile_internal.d.ts.map +1 -1
- package/dist/modules/order/grid_reconcile_internal.js +6 -27
- package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
- package/dist/modules/order/strategy.d.ts.map +1 -1
- package/dist/modules/order/strategy.js +6 -15
- package/dist/modules/order/strategy.js.map +1 -1
- package/dist/modules/order/utils/math.d.ts +29 -1
- package/dist/modules/order/utils/math.d.ts.map +1 -1
- package/dist/modules/order/utils/math.js +46 -1
- package/dist/modules/order/utils/math.js.map +1 -1
- package/dist/modules/order/utils/system.d.ts +2 -0
- package/dist/modules/order/utils/system.d.ts.map +1 -1
- package/dist/modules/order/utils/system.js +30 -2
- package/dist/modules/order/utils/system.js.map +1 -1
- package/dist/modules/runtime_settings.d.ts +1 -0
- package/dist/modules/runtime_settings.d.ts.map +1 -1
- package/dist/modules/runtime_settings.js +13 -2
- package/dist/modules/runtime_settings.js.map +1 -1
- package/dist/scripts/generate_lp_chart.js +1 -1
- package/dist/scripts/test-credit-renewal.js +1 -1
- package/docs/DEXBOT_COMPARISON.md +3 -3
- package/docs/EVOLUTION.md +26 -95
- package/docs/FUND_MOVEMENT_AND_ACCOUNTING.md +1 -1
- package/docs/GRID_RECALCULATION.md +2 -2
- package/docs/LIFECYCLE.md +207 -0
- package/docs/README.md +9 -1
- package/docs/developer_guide.md +4 -3
- package/market_adapter/README.md +23 -23
- package/package.json +18 -21
- package/scripts/README.md +12 -12
- package/scripts/bots +5 -7
- package/scripts/clear-market-adapter.sh +1 -1
- package/scripts/dexbot +5 -7
- package/scripts/keys +5 -7
- package/scripts/pm2 +5 -7
- package/scripts/unlock +5 -7
- package/scripts/update.js +6 -7
- package/scripts/repo-stats.html +0 -480
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backtest_ama_sweep.js","sourceRoot":"","sources":["../../../analysis/bot_fitting/backtest_ama_sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backtest_bot_fitting.d.ts","sourceRoot":"","sources":["../../../analysis/bot_fitting/backtest_bot_fitting.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { calculateAMA } from '../../market_adapter/core/strategies/ama.js';
|
|
4
|
+
import { range } from '../math_utils.js';
|
|
5
|
+
import { parseListOrRange, loadLpData, fmt } from './shared_utils.js';
|
|
6
|
+
import { getStorage } from '../../modules/storage/index.js';
|
|
7
|
+
const { ensureDir, readJSON, writeJSON } = getStorage();
|
|
8
|
+
'use strict';
|
|
9
|
+
const DEFAULT_ACTIVE_ORDERS = 5;
|
|
10
|
+
const DEFAULT_FEE_ROUNDTRIP_PCT = 0.20;
|
|
11
|
+
const DEFAULT_MIN_SPREAD_FACTOR = 2.1;
|
|
12
|
+
// Inventory-risk penalty weights (in score points)
|
|
13
|
+
const RISK_W_DURATION = 1.0; // avg open bars
|
|
14
|
+
const RISK_W_PEAK_OPEN = 2.0; // peak simultaneous open orders
|
|
15
|
+
const RISK_W_IMBALANCE = 1.2; // avg |openBuy-openSell|
|
|
16
|
+
const RISK_W_CANCEL = 0.15; // canceled on reposition
|
|
17
|
+
const DEFAULT_SPREAD_VALUES = range(0.4, 1.6, 0.1);
|
|
18
|
+
const DEFAULT_INCREMENT_VALUES = range(0.2, 0.8, 0.1);
|
|
19
|
+
const DEFAULT_RATIO_VALUES = [1.5, 1.75, 2, 2.5, 3, 4, 5, 8, 10];
|
|
20
|
+
function parseArgs() {
|
|
21
|
+
const args = process.argv.slice(2);
|
|
22
|
+
const out = {
|
|
23
|
+
dataPath: null,
|
|
24
|
+
resultsPath: null,
|
|
25
|
+
spreadValues: DEFAULT_SPREAD_VALUES,
|
|
26
|
+
incrementValues: DEFAULT_INCREMENT_VALUES,
|
|
27
|
+
ratioValues: DEFAULT_RATIO_VALUES,
|
|
28
|
+
activeOrders: DEFAULT_ACTIVE_ORDERS,
|
|
29
|
+
feeRoundtripPct: DEFAULT_FEE_ROUNDTRIP_PCT,
|
|
30
|
+
minSpreadFactor: DEFAULT_MIN_SPREAD_FACTOR,
|
|
31
|
+
riskWDuration: RISK_W_DURATION,
|
|
32
|
+
riskWPeakOpen: RISK_W_PEAK_OPEN,
|
|
33
|
+
riskWImbalance: RISK_W_IMBALANCE,
|
|
34
|
+
riskWCancel: RISK_W_CANCEL,
|
|
35
|
+
};
|
|
36
|
+
for (let i = 0; i < args.length; i++) {
|
|
37
|
+
const arg = args[i];
|
|
38
|
+
const val = args[i + 1];
|
|
39
|
+
if (!val)
|
|
40
|
+
continue;
|
|
41
|
+
switch (arg) {
|
|
42
|
+
case '--data':
|
|
43
|
+
out.dataPath = path.resolve(val);
|
|
44
|
+
i++;
|
|
45
|
+
break;
|
|
46
|
+
case '--results':
|
|
47
|
+
out.resultsPath = path.resolve(val);
|
|
48
|
+
i++;
|
|
49
|
+
break;
|
|
50
|
+
case '--spread':
|
|
51
|
+
out.spreadValues = parseListOrRange(val, DEFAULT_SPREAD_VALUES);
|
|
52
|
+
i++;
|
|
53
|
+
break;
|
|
54
|
+
case '--increment':
|
|
55
|
+
out.incrementValues = parseListOrRange(val, DEFAULT_INCREMENT_VALUES);
|
|
56
|
+
i++;
|
|
57
|
+
break;
|
|
58
|
+
case '--ratio':
|
|
59
|
+
out.ratioValues = parseListOrRange(val, DEFAULT_RATIO_VALUES);
|
|
60
|
+
i++;
|
|
61
|
+
break;
|
|
62
|
+
case '--active-orders':
|
|
63
|
+
out.activeOrders = Number(val);
|
|
64
|
+
i++;
|
|
65
|
+
break;
|
|
66
|
+
case '--fee':
|
|
67
|
+
out.feeRoundtripPct = Number(val);
|
|
68
|
+
i++;
|
|
69
|
+
break;
|
|
70
|
+
case '--min-spread-factor':
|
|
71
|
+
out.minSpreadFactor = Number(val);
|
|
72
|
+
i++;
|
|
73
|
+
break;
|
|
74
|
+
case '--risk-duration':
|
|
75
|
+
out.riskWDuration = Number(val);
|
|
76
|
+
i++;
|
|
77
|
+
break;
|
|
78
|
+
case '--risk-peak-open':
|
|
79
|
+
out.riskWPeakOpen = Number(val);
|
|
80
|
+
i++;
|
|
81
|
+
break;
|
|
82
|
+
case '--risk-imbalance':
|
|
83
|
+
out.riskWImbalance = Number(val);
|
|
84
|
+
i++;
|
|
85
|
+
break;
|
|
86
|
+
case '--risk-cancel':
|
|
87
|
+
out.riskWCancel = Number(val);
|
|
88
|
+
i++;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!out.dataPath) {
|
|
93
|
+
throw new Error('--data <path-to-lp-candles.json> is required');
|
|
94
|
+
}
|
|
95
|
+
if (!out.resultsPath) {
|
|
96
|
+
out.resultsPath = resolveAutoResultsPath(out.dataPath);
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Auto-derive the AMA optimizer results file for a given LP candle data file.
|
|
102
|
+
*
|
|
103
|
+
* The optimizer names results `optimization_results_<base>_w<λ1>_<λ2>_<λ3>_<λ4>.json`
|
|
104
|
+
* (per-AMA distance weights appended as a `_w...` suffix). To stay robust against
|
|
105
|
+
* weight overrides, pick the most recently written `optimization_results_<base>_w*.json`
|
|
106
|
+
* in `ama_fitting/`; fall back to the legacy `optimization_results_<base>.json` name
|
|
107
|
+
* if no suffixed file exists.
|
|
108
|
+
*/
|
|
109
|
+
function resolveAutoResultsPath(dataPath) {
|
|
110
|
+
const base = path.basename(dataPath, '.json');
|
|
111
|
+
const dir = path.join(__dirname, '..', 'ama_fitting');
|
|
112
|
+
const prefix = `optimization_results_${base}_w`;
|
|
113
|
+
let newest = null;
|
|
114
|
+
try {
|
|
115
|
+
for (const entry of fs.readdirSync(dir)) {
|
|
116
|
+
if (!entry.startsWith(prefix) || !entry.endsWith('.json'))
|
|
117
|
+
continue;
|
|
118
|
+
const full = path.join(dir, entry);
|
|
119
|
+
const stat = fs.statSync(full);
|
|
120
|
+
if (!newest || stat.mtimeMs > newest.mtimeMs) {
|
|
121
|
+
newest = { file: full, mtimeMs: stat.mtimeMs };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// dir unreadable — fall through to legacy name check
|
|
127
|
+
}
|
|
128
|
+
if (newest)
|
|
129
|
+
return newest.file;
|
|
130
|
+
return path.join(dir, `optimization_results_${base}.json`);
|
|
131
|
+
}
|
|
132
|
+
function loadAmaStrategies(resultsPath) {
|
|
133
|
+
const json = readJSON(resultsPath);
|
|
134
|
+
const amas = (json.meta?.amas ?? {});
|
|
135
|
+
const labels = { AMA1: 'AMA1', AMA2: 'AMA2', AMA3: 'AMA3', AMA4: 'AMA4' };
|
|
136
|
+
const out = [];
|
|
137
|
+
for (const [key, val] of Object.entries(amas)) {
|
|
138
|
+
const a = val;
|
|
139
|
+
if (!a || !Number.isFinite(a.er) || !Number.isFinite(a.fast) || !Number.isFinite(a.slow))
|
|
140
|
+
continue;
|
|
141
|
+
out.push({
|
|
142
|
+
id: key,
|
|
143
|
+
name: labels[key] ?? key,
|
|
144
|
+
er: a.er,
|
|
145
|
+
fast: a.fast,
|
|
146
|
+
slow: a.slow,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (out.length !== 4) {
|
|
150
|
+
throw new Error(`Expected 4 AMA strategies in results meta.amas, found ${out.length}`);
|
|
151
|
+
}
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
function levelGrossSpreadPct(levelRatio) {
|
|
155
|
+
return (((1 + levelRatio) / (1 - levelRatio)) - 1) * 100;
|
|
156
|
+
}
|
|
157
|
+
function simulateForParams(candles, amaValues, params) {
|
|
158
|
+
const { spreadPct, incrementPct, maxMinRatio, activeOrders, feeRoundtripPct, risk } = params;
|
|
159
|
+
const skip = Math.max(20, Math.floor(candles.length * 0.1));
|
|
160
|
+
const levels = Array.from({ length: activeOrders }, (_, i) => incrementPct * (i + 1));
|
|
161
|
+
const openBuy = new Map(); // lvl -> openedAtBarIdx
|
|
162
|
+
const openSell = new Map(); // lvl -> openedAtBarIdx
|
|
163
|
+
let touchedOrders = 0;
|
|
164
|
+
let matchedPairs = 0;
|
|
165
|
+
let canceledOnReposition = 0;
|
|
166
|
+
let totalGrossCapturePct = 0;
|
|
167
|
+
let totalNetCapturePct = 0;
|
|
168
|
+
let activeLevelTouches = 0;
|
|
169
|
+
let peakOpenOrders = 0;
|
|
170
|
+
let imbalanceSum = 0;
|
|
171
|
+
let imbalanceSamples = 0;
|
|
172
|
+
let matchedOpenDurationBars = 0;
|
|
173
|
+
for (let i = skip + 1; i < candles.length; i++) {
|
|
174
|
+
const ama = amaValues[i];
|
|
175
|
+
const prevAma = amaValues[i - 1];
|
|
176
|
+
const hi = candles[i].high;
|
|
177
|
+
const lo = candles[i].low;
|
|
178
|
+
if (Math.abs(ama - prevAma) / prevAma > incrementPct) {
|
|
179
|
+
canceledOnReposition += openBuy.size + openSell.size;
|
|
180
|
+
openBuy.clear();
|
|
181
|
+
openSell.clear();
|
|
182
|
+
}
|
|
183
|
+
const currentOpen = openBuy.size + openSell.size;
|
|
184
|
+
if (currentOpen > peakOpenOrders)
|
|
185
|
+
peakOpenOrders = currentOpen;
|
|
186
|
+
imbalanceSum += Math.abs(openBuy.size - openSell.size);
|
|
187
|
+
imbalanceSamples++;
|
|
188
|
+
const minBound = ama / maxMinRatio;
|
|
189
|
+
const maxBound = ama * maxMinRatio;
|
|
190
|
+
for (let lvl = 0; lvl < levels.length; lvl++) {
|
|
191
|
+
const r = levels[lvl];
|
|
192
|
+
if (r >= 0.95)
|
|
193
|
+
continue;
|
|
194
|
+
const buyPrice = ama * (1 - r);
|
|
195
|
+
const sellPrice = ama * (1 + r);
|
|
196
|
+
if (buyPrice < minBound || sellPrice > maxBound)
|
|
197
|
+
continue;
|
|
198
|
+
const grossPct = levelGrossSpreadPct(r);
|
|
199
|
+
if (grossPct < spreadPct)
|
|
200
|
+
continue;
|
|
201
|
+
const touchBuy = lo <= buyPrice;
|
|
202
|
+
const touchSell = hi >= sellPrice;
|
|
203
|
+
if (!touchBuy && !touchSell)
|
|
204
|
+
continue;
|
|
205
|
+
activeLevelTouches++;
|
|
206
|
+
if (touchBuy && !openBuy.has(lvl)) {
|
|
207
|
+
touchedOrders++;
|
|
208
|
+
if (openSell.has(lvl)) {
|
|
209
|
+
const openedAt = openSell.get(lvl);
|
|
210
|
+
matchedOpenDurationBars += (i - openedAt);
|
|
211
|
+
matchedPairs++;
|
|
212
|
+
openSell.delete(lvl);
|
|
213
|
+
totalGrossCapturePct += grossPct;
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
openBuy.set(lvl, i);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (touchSell && !openSell.has(lvl)) {
|
|
220
|
+
touchedOrders++;
|
|
221
|
+
if (openBuy.has(lvl)) {
|
|
222
|
+
const openedAt = openBuy.get(lvl);
|
|
223
|
+
matchedOpenDurationBars += (i - openedAt);
|
|
224
|
+
matchedPairs++;
|
|
225
|
+
openBuy.delete(lvl);
|
|
226
|
+
totalGrossCapturePct += grossPct;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
openSell.set(lvl, i);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Profit model requested: totalProfit = fills * (spread - increment)
|
|
235
|
+
// (all values in percentage points)
|
|
236
|
+
const incrementPctPoints = incrementPct * 100;
|
|
237
|
+
const netPerFillPct = Math.max(0, spreadPct - incrementPctPoints - feeRoundtripPct);
|
|
238
|
+
totalNetCapturePct = matchedPairs * netPerFillPct;
|
|
239
|
+
const fillEfficiency = touchedOrders > 0 ? (matchedPairs / touchedOrders) * 100 : 0;
|
|
240
|
+
const avgNetPerPair = matchedPairs > 0 ? totalNetCapturePct / matchedPairs : 0;
|
|
241
|
+
const utilization = (activeLevelTouches / Math.max(1, (candles.length - skip))) * 100;
|
|
242
|
+
const baseScore = totalNetCapturePct * (fillEfficiency / 100);
|
|
243
|
+
const avgOpenDurationBars = matchedPairs > 0 ? (matchedOpenDurationBars / matchedPairs) : 0;
|
|
244
|
+
const avgImbalance = imbalanceSamples > 0 ? (imbalanceSum / imbalanceSamples) : 0;
|
|
245
|
+
const riskPenalty = (avgOpenDurationBars * risk.duration) +
|
|
246
|
+
(peakOpenOrders * risk.peakOpen) +
|
|
247
|
+
(avgImbalance * risk.imbalance) +
|
|
248
|
+
(canceledOnReposition * risk.cancel);
|
|
249
|
+
const score = baseScore - riskPenalty;
|
|
250
|
+
return {
|
|
251
|
+
spreadPct,
|
|
252
|
+
incrementPct,
|
|
253
|
+
maxMinRatio,
|
|
254
|
+
touchedOrders,
|
|
255
|
+
matchedPairs,
|
|
256
|
+
fillEfficiency,
|
|
257
|
+
totalGrossCapturePct,
|
|
258
|
+
totalNetCapturePct,
|
|
259
|
+
avgNetPerPair,
|
|
260
|
+
canceledOnReposition,
|
|
261
|
+
avgOpenDurationBars,
|
|
262
|
+
peakOpenOrders,
|
|
263
|
+
avgImbalance,
|
|
264
|
+
riskPenalty,
|
|
265
|
+
baseScore,
|
|
266
|
+
utilization,
|
|
267
|
+
score,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
function run() {
|
|
271
|
+
const cfg = parseArgs();
|
|
272
|
+
if (!Number.isFinite(cfg.minSpreadFactor) || cfg.minSpreadFactor <= 0) {
|
|
273
|
+
throw new Error(`Invalid min spread factor: ${cfg.minSpreadFactor}`);
|
|
274
|
+
}
|
|
275
|
+
for (const [k, v] of Object.entries({
|
|
276
|
+
riskDuration: cfg.riskWDuration,
|
|
277
|
+
riskPeakOpen: cfg.riskWPeakOpen,
|
|
278
|
+
riskImbalance: cfg.riskWImbalance,
|
|
279
|
+
riskCancel: cfg.riskWCancel,
|
|
280
|
+
})) {
|
|
281
|
+
if (!Number.isFinite(v) || v < 0)
|
|
282
|
+
throw new Error(`Invalid ${k}: ${v}`);
|
|
283
|
+
}
|
|
284
|
+
const loaded = loadLpData(cfg.dataPath);
|
|
285
|
+
const candles = loaded.candles;
|
|
286
|
+
const closes = candles.map((c) => c.close);
|
|
287
|
+
const strategies = loadAmaStrategies(cfg.resultsPath);
|
|
288
|
+
const totalCombos = cfg.spreadValues.length * cfg.incrementValues.length * cfg.ratioValues.length;
|
|
289
|
+
console.log('================================================================================');
|
|
290
|
+
console.log(' BOT FITTING BACKTEST (1h LP candles)');
|
|
291
|
+
console.log('================================================================================');
|
|
292
|
+
console.log(` Data: ${path.basename(cfg.dataPath)} (${candles.length} candles)`);
|
|
293
|
+
console.log(` Results file: ${path.basename(cfg.resultsPath)}`);
|
|
294
|
+
console.log(` Spread grid: ${cfg.spreadValues[0]}..${cfg.spreadValues[cfg.spreadValues.length - 1]}% (${cfg.spreadValues.length})`);
|
|
295
|
+
console.log(` Increment: ${cfg.incrementValues[0]}..${cfg.incrementValues[cfg.incrementValues.length - 1]}% (${cfg.incrementValues.length})`);
|
|
296
|
+
console.log(` Max/Min ratio:${cfg.ratioValues[0]}..${cfg.ratioValues[cfg.ratioValues.length - 1]} (${cfg.ratioValues.length})`);
|
|
297
|
+
console.log(` Active orders:${cfg.activeOrders} per side`);
|
|
298
|
+
console.log(` Fee RT: ${cfg.feeRoundtripPct}%`);
|
|
299
|
+
console.log(` Spread floor: spread >= ${cfg.minSpreadFactor} x increment`);
|
|
300
|
+
console.log(` Risk W: duration=${cfg.riskWDuration}, peakOpen=${cfg.riskWPeakOpen}, imbalance=${cfg.riskWImbalance}, cancel=${cfg.riskWCancel}`);
|
|
301
|
+
console.log(` Combos/AMA: ${totalCombos}\n`);
|
|
302
|
+
const byAma = [];
|
|
303
|
+
for (const s of strategies) {
|
|
304
|
+
const amaValues = calculateAMA(closes, { erPeriod: s.er, fastPeriod: s.fast, slowPeriod: s.slow });
|
|
305
|
+
let best = null;
|
|
306
|
+
for (const spreadPct of cfg.spreadValues) {
|
|
307
|
+
for (const incrementPct of cfg.incrementValues) {
|
|
308
|
+
for (const maxMinRatio of cfg.ratioValues) {
|
|
309
|
+
if (spreadPct + Number.EPSILON < (cfg.minSpreadFactor * incrementPct))
|
|
310
|
+
continue;
|
|
311
|
+
const sim = simulateForParams(candles, amaValues, {
|
|
312
|
+
spreadPct,
|
|
313
|
+
incrementPct: incrementPct / 100,
|
|
314
|
+
maxMinRatio,
|
|
315
|
+
activeOrders: cfg.activeOrders,
|
|
316
|
+
feeRoundtripPct: cfg.feeRoundtripPct,
|
|
317
|
+
risk: {
|
|
318
|
+
duration: cfg.riskWDuration,
|
|
319
|
+
peakOpen: cfg.riskWPeakOpen,
|
|
320
|
+
imbalance: cfg.riskWImbalance,
|
|
321
|
+
cancel: cfg.riskWCancel,
|
|
322
|
+
},
|
|
323
|
+
});
|
|
324
|
+
if (!best || sim.score > best.score)
|
|
325
|
+
best = sim;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
byAma.push({ strategy: s, best });
|
|
330
|
+
}
|
|
331
|
+
console.log('BEST PARAMS PER AMA');
|
|
332
|
+
console.log('--------------------------------------------------------------------------------');
|
|
333
|
+
console.log('AMA | spread | incr | ratio | pairs | fill% | net% | risk | score');
|
|
334
|
+
console.log('---------------------------------|--------|------|-------|-------|-------|--------|-------|-------');
|
|
335
|
+
for (const row of byAma) {
|
|
336
|
+
const b = row.best;
|
|
337
|
+
if (!b)
|
|
338
|
+
continue;
|
|
339
|
+
console.log(`${row.strategy.name.padEnd(33)}| ` +
|
|
340
|
+
`${fmt(b.spreadPct, 2).padStart(6)} | ` +
|
|
341
|
+
`${fmt(b.incrementPct * 100, 2).padStart(4)} | ` +
|
|
342
|
+
`${fmt(b.maxMinRatio, 2).padStart(5)} | ` +
|
|
343
|
+
`${String(b.matchedPairs).padStart(5)} | ` +
|
|
344
|
+
`${fmt(b.fillEfficiency, 1).padStart(5)} | ` +
|
|
345
|
+
`${fmt(b.totalNetCapturePct, 1).padStart(6)} | ` +
|
|
346
|
+
`${fmt(b.riskPenalty, 1).padStart(5)} | ` +
|
|
347
|
+
`${fmt(b.score, 1).padStart(5)}`);
|
|
348
|
+
}
|
|
349
|
+
console.log();
|
|
350
|
+
const outName = `bot_fitting_results_${path.basename(cfg.dataPath, '.json')}.json`;
|
|
351
|
+
const outPath = path.join(__dirname, outName);
|
|
352
|
+
ensureDir(__dirname);
|
|
353
|
+
writeJSON(outPath, {
|
|
354
|
+
meta: {
|
|
355
|
+
generatedAt: new Date().toISOString(),
|
|
356
|
+
dataPath: path.relative(process.cwd(), cfg.dataPath),
|
|
357
|
+
resultsPath: path.relative(process.cwd(), cfg.resultsPath),
|
|
358
|
+
candles: candles.length,
|
|
359
|
+
activeOrders: cfg.activeOrders,
|
|
360
|
+
feeRoundtripPct: cfg.feeRoundtripPct,
|
|
361
|
+
search: {
|
|
362
|
+
spreadValues: cfg.spreadValues,
|
|
363
|
+
incrementValues: cfg.incrementValues,
|
|
364
|
+
ratioValues: cfg.ratioValues,
|
|
365
|
+
minSpreadFactor: cfg.minSpreadFactor,
|
|
366
|
+
combosPerAma: totalCombos,
|
|
367
|
+
},
|
|
368
|
+
scoring: {
|
|
369
|
+
baseScore: 'totalNetCapturePct * (fillEfficiency / 100)',
|
|
370
|
+
totalNetCapturePct: 'matchedPairs * (spread - increment - fee)',
|
|
371
|
+
riskPenalty: `avgOpenDurationBars*${cfg.riskWDuration} + peakOpenOrders*${cfg.riskWPeakOpen} + avgImbalance*${cfg.riskWImbalance} + canceledOnReposition*${cfg.riskWCancel}`,
|
|
372
|
+
finalScore: 'baseScore - riskPenalty',
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
results: byAma,
|
|
376
|
+
});
|
|
377
|
+
console.log(`Saved: ${path.relative(process.cwd(), outPath)}`);
|
|
378
|
+
}
|
|
379
|
+
run();
|
|
380
|
+
//# sourceMappingURL=backtest_bot_fitting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backtest_bot_fitting.js","sourceRoot":"","sources":["../../../analysis/bot_fitting/backtest_bot_fitting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for bot-fitting scripts.
|
|
3
|
+
*/
|
|
4
|
+
declare function toCandles(arr: any[]): {
|
|
5
|
+
timestamp: any;
|
|
6
|
+
open: any;
|
|
7
|
+
high: any;
|
|
8
|
+
low: any;
|
|
9
|
+
close: any;
|
|
10
|
+
volume: any;
|
|
11
|
+
}[];
|
|
12
|
+
declare function parseListOrRange(spec: any, fallback: any): any;
|
|
13
|
+
declare function loadLpData(filePath: string): {
|
|
14
|
+
candles: {
|
|
15
|
+
timestamp: any;
|
|
16
|
+
open: any;
|
|
17
|
+
high: any;
|
|
18
|
+
low: any;
|
|
19
|
+
close: any;
|
|
20
|
+
volume: any;
|
|
21
|
+
}[];
|
|
22
|
+
meta: any;
|
|
23
|
+
};
|
|
24
|
+
declare function fmt(x: number, d?: number): string;
|
|
25
|
+
export { toCandles, parseListOrRange, loadLpData, fmt };
|
|
26
|
+
//# sourceMappingURL=shared_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared_utils.d.ts","sourceRoot":"","sources":["../../../analysis/bot_fitting/shared_utils.ts"],"names":[],"mappings":"AAKA;;GAEG;AAGH,iBAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;;;;;;;IAS5B;AAED,iBAAS,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAWjD;AAED,iBAAS,UAAU,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;EAGnC;AAED,iBAAS,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,UAG5B;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { getStorage } from '../../modules/storage/index.js';
|
|
2
|
+
const { readJSON } = getStorage();
|
|
3
|
+
'use strict';
|
|
4
|
+
/**
|
|
5
|
+
* Shared utilities for bot-fitting scripts.
|
|
6
|
+
*/
|
|
7
|
+
function toCandles(arr) {
|
|
8
|
+
return arr.map((c) => ({
|
|
9
|
+
timestamp: c[0],
|
|
10
|
+
open: c[1],
|
|
11
|
+
high: c[2],
|
|
12
|
+
low: c[3],
|
|
13
|
+
close: c[4],
|
|
14
|
+
volume: c[5],
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
function parseListOrRange(spec, fallback) {
|
|
18
|
+
if (!spec)
|
|
19
|
+
return fallback;
|
|
20
|
+
if (spec.includes(':')) {
|
|
21
|
+
const [a, b, s] = spec.split(':').map(Number);
|
|
22
|
+
if (!Number.isFinite(a) || !Number.isFinite(b) || !Number.isFinite(s) || s <= 0)
|
|
23
|
+
return fallback;
|
|
24
|
+
const out = [];
|
|
25
|
+
for (let v = a; v <= b + 1e-9; v += s)
|
|
26
|
+
out.push(Number(v.toFixed(4)));
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
const vals = spec.split(',').map((x) => Number(x.trim())).filter(Number.isFinite);
|
|
30
|
+
return vals.length ? vals : fallback;
|
|
31
|
+
}
|
|
32
|
+
function loadLpData(filePath) {
|
|
33
|
+
const json = readJSON(filePath);
|
|
34
|
+
return { candles: toCandles(json.candles ?? json), meta: json.meta ?? null };
|
|
35
|
+
}
|
|
36
|
+
function fmt(x, d = 2) {
|
|
37
|
+
if (!Number.isFinite(x))
|
|
38
|
+
return ' n/a';
|
|
39
|
+
return Number(x).toFixed(d);
|
|
40
|
+
}
|
|
41
|
+
export { toCandles, parseListOrRange, loadLpData, fmt };
|
|
42
|
+
//# sourceMappingURL=shared_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared_utils.js","sourceRoot":"","sources":["../../../analysis/bot_fitting/shared_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;AAClC,YAAY,CAAC;AAEb;;GAEG;AAGH,SAAS,SAAS,CAAC,GAAU;IACzB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACV,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACV,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACT,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;KACf,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAS,EAAE,QAAa;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;QACjG,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,GAAG,CAAC,CAAS,EAAE,CAAC,GAAG,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare function loadBotSettings(filePath?: string): any;
|
|
2
|
+
declare function sanitizeKey(source: any): string;
|
|
3
|
+
declare function computeBotKey(bot: any, index: number): string;
|
|
4
|
+
declare function resolveBotKey(botName: any, filePath?: string): string | null;
|
|
5
|
+
declare function candleFileForBot(botKey: string, intervalLabel: string, dataDir?: string): string;
|
|
6
|
+
declare function resolveCandleFile(botKey: string, intervalLabel: string, dataDir?: string, botsFile?: string): string | null;
|
|
7
|
+
declare function loadBotMeta(botKey: any, filePath?: string): any;
|
|
8
|
+
declare function resolveAmaConfig(botKey: any): any;
|
|
9
|
+
declare function resolveAmaKey(botKey: any): string;
|
|
10
|
+
export { loadBotSettings, sanitizeKey, computeBotKey, resolveBotKey, candleFileForBot, resolveCandleFile, loadBotMeta, resolveAmaConfig, resolveAmaKey };
|
|
11
|
+
//# sourceMappingURL=bot_key_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot_key_utils.d.ts","sourceRoot":"","sources":["../../analysis/bot_key_utils.ts"],"names":[],"mappings":"AAeA,iBAAS,eAAe,CAAC,QAAQ,SAA2B,OAO3D;AAED,iBAAS,WAAW,CAAC,MAAM,EAAE,GAAG,UAG/B;AAED,iBAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAK7C;AAED,iBAAS,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,SAA2B,iBAQvE;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,SAAgC,UAEvG;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,SAAgC,EAAE,QAAQ,SAA2B,iBAS7I;AAED,iBAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,SAA2B,OASpE;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,GAAG,OAoEpC;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,GAAG,UAQjC;AAED,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAA"}
|