dexbot 1.2.0 → 1.2.2
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/dist/credential-daemon.d.ts.map +1 -1
- package/dist/credential-daemon.js +6 -3
- package/dist/credential-daemon.js.map +1 -1
- package/dist/modules/bitshares-native/lru_cache.d.ts +9 -0
- package/dist/modules/bitshares-native/lru_cache.d.ts.map +1 -1
- package/dist/modules/bitshares-native/lru_cache.js +12 -0
- package/dist/modules/bitshares-native/lru_cache.js.map +1 -1
- package/dist/modules/bitshares-native/tx/builder.d.ts +4 -0
- package/dist/modules/bitshares-native/tx/builder.d.ts.map +1 -1
- package/dist/modules/bitshares-native/tx/builder.js +19 -0
- package/dist/modules/bitshares-native/tx/builder.js.map +1 -1
- package/dist/modules/bitshares-native/tx/tx_cache.d.ts +7 -0
- package/dist/modules/bitshares-native/tx/tx_cache.d.ts.map +1 -1
- package/dist/modules/bitshares-native/tx/tx_cache.js +11 -0
- package/dist/modules/bitshares-native/tx/tx_cache.js.map +1 -1
- package/dist/modules/bitshares_client.d.ts.map +1 -1
- package/dist/modules/bitshares_client.js +5 -0
- package/dist/modules/bitshares_client.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 +1 -0
- package/dist/modules/constants.js.map +1 -1
- package/dist/modules/credential_policy.d.ts.map +1 -1
- package/dist/modules/credential_policy.js +7 -5
- package/dist/modules/credential_policy.js.map +1 -1
- package/dist/modules/dexbot_class.d.ts +0 -1
- package/dist/modules/dexbot_class.d.ts.map +1 -1
- package/dist/modules/dexbot_class.js +119 -57
- package/dist/modules/dexbot_class.js.map +1 -1
- package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_fill_runtime.js +3 -0
- 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 +4 -0
- package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
- package/dist/modules/node_manager.d.ts +1 -0
- package/dist/modules/node_manager.d.ts.map +1 -1
- package/dist/modules/node_manager.js +11 -1
- package/dist/modules/node_manager.js.map +1 -1
- package/dist/modules/order/accounting.d.ts +8 -2
- package/dist/modules/order/accounting.d.ts.map +1 -1
- package/dist/modules/order/accounting.js +29 -16
- package/dist/modules/order/accounting.js.map +1 -1
- package/dist/modules/order/grid.js +1 -1
- package/dist/modules/order/grid.js.map +1 -1
- package/dist/modules/order/grid_reconcile_internal.js +13 -2
- package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
- package/dist/modules/order/index.d.ts +3 -8
- package/dist/modules/order/index.d.ts.map +1 -1
- package/dist/modules/order/index.js +3 -10
- package/dist/modules/order/index.js.map +1 -1
- package/dist/modules/order/manager.d.ts +84 -16
- package/dist/modules/order/manager.d.ts.map +1 -1
- package/dist/modules/order/manager.js +131 -235
- package/dist/modules/order/manager.js.map +1 -1
- package/dist/modules/order/strategy.js +1 -1
- package/dist/modules/order/strategy.js.map +1 -1
- package/dist/modules/order/sync_engine.d.ts +2 -3
- package/dist/modules/order/sync_engine.d.ts.map +1 -1
- package/dist/modules/order/sync_engine.js +53 -20
- package/dist/modules/order/sync_engine.js.map +1 -1
- package/dist/modules/order/utils/math.d.ts +28 -1
- package/dist/modules/order/utils/math.d.ts.map +1 -1
- package/dist/modules/order/utils/math.js +40 -2
- 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 +42 -6
- package/dist/modules/order/utils/order.js.map +1 -1
- package/dist/modules/types.d.ts +7 -12
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/modules/utils/math_utils.d.ts +3 -6
- package/dist/modules/utils/math_utils.d.ts.map +1 -1
- package/dist/modules/utils/math_utils.js +1 -14
- package/dist/modules/utils/math_utils.js.map +1 -1
- package/dist/{modules/order → scripts}/runner.d.ts +15 -9
- package/dist/scripts/runner.d.ts.map +1 -0
- package/dist/{modules/order → scripts}/runner.js +24 -45
- package/dist/scripts/runner.js.map +1 -0
- package/package.json +1 -2
- package/scripts/README.md +13 -0
- package/dist/modules/cli_whitelist_args.d.ts +0 -6
- package/dist/modules/cli_whitelist_args.d.ts.map +0 -1
- package/dist/modules/cli_whitelist_args.js +0 -13
- package/dist/modules/cli_whitelist_args.js.map +0 -1
- package/dist/modules/order/runner.d.ts.map +0 -1
- package/dist/modules/order/runner.js.map +0 -1
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* scripts/runner.ts - Grid Calculation Runner
|
|
4
4
|
*
|
|
5
5
|
* Standalone order grid calculation utility for testing and debugging.
|
|
6
6
|
* Provides command-line tools for grid verification without placing orders.
|
|
7
7
|
*
|
|
8
|
+
* NOTE: Requires a live BitShares connection — initializeGrid() performs
|
|
9
|
+
* on-chain asset metadata lookups and price derivation. Not offline-capable.
|
|
10
|
+
*
|
|
8
11
|
* Features:
|
|
9
12
|
* - Load bot configuration from profiles/bots.json
|
|
10
|
-
* - Derive market price from pool or market
|
|
13
|
+
* - Derive market price from pool or market (via initializeGrid)
|
|
11
14
|
* - Create and display order grid
|
|
12
15
|
* - Simulate multiple calculation cycles
|
|
13
16
|
* - Validate grid structure and fund calculations
|
|
@@ -25,8 +28,8 @@
|
|
|
25
28
|
*
|
|
26
29
|
* 1. runOrderManagerCalculation() - Main calculation runner (async)
|
|
27
30
|
* Loads bot config, derives market price, initializes grid, runs calculation cycles
|
|
28
|
-
* Validates config,
|
|
29
|
-
*
|
|
31
|
+
* Validates config, initializes OrderManager and Grid (price derivation handled
|
|
32
|
+
* internally by initializeGrid), runs configurable cycles with optional delays
|
|
30
33
|
* Displays grid status and metrics after each cycle
|
|
31
34
|
*
|
|
32
35
|
* Environment variables:
|
|
@@ -38,13 +41,15 @@
|
|
|
38
41
|
*
|
|
39
42
|
* USAGE:
|
|
40
43
|
* Command line:
|
|
41
|
-
* node -e "require('./runner').runOrderManagerCalculation()"
|
|
44
|
+
* node -e "require('./scripts/runner').runOrderManagerCalculation()"
|
|
45
|
+
* tsx scripts/runner.ts
|
|
42
46
|
*
|
|
43
47
|
* With env vars:
|
|
44
|
-
* CALC_CYCLES=5 CALC_DELAY_MS=1000 node -e "require('./runner').runOrderManagerCalculation()"
|
|
48
|
+
* CALC_CYCLES=5 CALC_DELAY_MS=1000 node -e "require('./scripts/runner').runOrderManagerCalculation()"
|
|
49
|
+
* CALC_CYCLES=5 CALC_DELAY_MS=1000 tsx scripts/runner.ts
|
|
45
50
|
*
|
|
46
51
|
* From code:
|
|
47
|
-
* const { runOrderManagerCalculation } = require('./runner');
|
|
52
|
+
* const { runOrderManagerCalculation } = require('./scripts/runner');
|
|
48
53
|
* await runOrderManagerCalculation();
|
|
49
54
|
*
|
|
50
55
|
* ===============================================================================
|
|
@@ -57,20 +62,18 @@
|
|
|
57
62
|
*
|
|
58
63
|
* ===============================================================================
|
|
59
64
|
*/
|
|
60
|
-
const {
|
|
61
|
-
const {
|
|
62
|
-
const {
|
|
63
|
-
const {
|
|
64
|
-
const {
|
|
65
|
-
const {
|
|
66
|
-
const { parseJsonWithComments, sleep } = require('./utils/system');
|
|
67
|
-
const { derivePrice } = require('./utils/system');
|
|
68
|
-
const { isNumeric } = require('./format');
|
|
65
|
+
const { OrderManager } = require('../modules/order/manager');
|
|
66
|
+
const { PATHS } = require('../modules/paths');
|
|
67
|
+
const { initializeGrid } = require('../modules/order/grid');
|
|
68
|
+
const { readBotsFileSync } = require('../modules/bots_file_lock');
|
|
69
|
+
const { Config } = require('../modules/config');
|
|
70
|
+
const { parseJsonWithComments, sleep } = require('../modules/order/utils/system');
|
|
69
71
|
/**
|
|
70
72
|
* Run a standalone order grid calculation for testing.
|
|
71
|
-
* Loads bot config,
|
|
73
|
+
* Loads bot config, initializes grid, and simulates sync cycles.
|
|
74
|
+
* Price derivation is handled internally by initializeGrid.
|
|
72
75
|
* @returns {Promise<void>}
|
|
73
|
-
* @throws {Error} If config invalid or
|
|
76
|
+
* @throws {Error} If config invalid, BitShares unavailable, or grid init fails
|
|
74
77
|
*/
|
|
75
78
|
async function runOrderManagerCalculation() {
|
|
76
79
|
const cfgFile = PATHS.PROFILES.BOTS_JSON;
|
|
@@ -94,42 +97,18 @@ async function runOrderManagerCalculation() {
|
|
|
94
97
|
console.warn('Failed to read bot configuration:', err.message);
|
|
95
98
|
throw err;
|
|
96
99
|
}
|
|
97
|
-
const
|
|
98
|
-
// Auto-derive price ONLY if not a fixed numeric value
|
|
99
|
-
if (!isNumeric(rawMarketPrice)) {
|
|
100
|
-
try {
|
|
101
|
-
const { BitShares } = require('../bitshares_client');
|
|
102
|
-
const mode = botConfig.priceMode || (rawMarketPrice === 'book' || rawMarketPrice === 'market' ? 'book' : (rawMarketPrice === 'pool' ? 'pool' : 'auto'));
|
|
103
|
-
console.log(`Deriving startPrice using mode: ${mode}...`);
|
|
104
|
-
const derived = await derivePrice(BitShares, botConfig.assetA, botConfig.assetB, mode);
|
|
105
|
-
if (derived) {
|
|
106
|
-
botConfig.startPrice = Number(derived);
|
|
107
|
-
console.log(`✓ Derived startPrice from on-chain: ${botConfig.startPrice}`);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
throw new Error(`Failed to derive price using mode "${mode}" and no numeric fallback available.`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
console.error('Price derivation failed:', err.message);
|
|
115
|
-
throw err;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
100
|
+
const manager = new OrderManager(botConfig);
|
|
118
101
|
try {
|
|
119
|
-
|
|
120
|
-
if (!Number.isFinite(mp))
|
|
121
|
-
throw new Error('Invalid startPrice (not a number)');
|
|
102
|
+
await initializeGrid(manager);
|
|
122
103
|
}
|
|
123
104
|
catch (err) {
|
|
105
|
+
console.error('Grid initialization failed — ensure BitShares nodes are reachable and asset symbols are valid:', err.message);
|
|
124
106
|
throw err;
|
|
125
107
|
}
|
|
126
|
-
const manager = new OrderManager(botConfig);
|
|
127
|
-
await initializeGrid(manager);
|
|
128
108
|
const cycles = Config.CALC_CYCLES;
|
|
129
109
|
const delayMs = Config.CALC_DELAY_MS;
|
|
130
110
|
for (let cycle = 1; cycle <= cycles; cycle++) {
|
|
131
111
|
manager.logger.log(`\n----- Cycle ${cycle}/${cycles} -----`, 'info');
|
|
132
|
-
// Use syncFromOpenOrders([]) to simulate a sync check in the test runner
|
|
133
112
|
await manager.syncFromOpenOrders([]);
|
|
134
113
|
manager.logger && manager.logger.displayStatus && manager.logger.displayStatus(manager);
|
|
135
114
|
if (cycle < cycles)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../scripts/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dexbot",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "The first open source trading bot with zero runtime dependencies and a fully adaptive market making strategy.",
|
|
5
5
|
"main": "dist/modules/dexbot_class.js",
|
|
6
6
|
"bin": {
|
|
@@ -109,7 +109,6 @@
|
|
|
109
109
|
"./dist/modules/key_store.js": false,
|
|
110
110
|
"./dist/modules/order/logger.js": false,
|
|
111
111
|
"./dist/modules/order/export.js": false,
|
|
112
|
-
"./dist/modules/order/runner.js": false,
|
|
113
112
|
"./dist/market_adapter/lp_chart_runner.js": false,
|
|
114
113
|
"./dist/market_adapter/ama_signal_runner.js": false
|
|
115
114
|
},
|
package/scripts/README.md
CHANGED
|
@@ -150,6 +150,19 @@ tsx scripts/diagnose-pool-history.ts --pool 1.19.x --limit 100 --hours 48 --maxP
|
|
|
150
150
|
tsx scripts/print_grid.ts
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
+
### Grid Calculation Runner
|
|
154
|
+
**File:** `runner.ts`
|
|
155
|
+
**Purpose:** Standalone order grid calculation debugger — loads a bot config, initializes the grid, and simulates sync cycles.
|
|
156
|
+
```bash
|
|
157
|
+
# Default (first bot, 3 cycles)
|
|
158
|
+
tsx scripts/runner.ts
|
|
159
|
+
|
|
160
|
+
# Specific bot, 10 cycles with 1s delay
|
|
161
|
+
LIVE_BOT_NAME=my-bot CALC_CYCLES=10 CALC_DELAY_MS=1000 tsx scripts/runner.ts
|
|
162
|
+
```
|
|
163
|
+
Useful for verifying config produces the expected grid, testing price derivation, and debugging fund allocation.
|
|
164
|
+
Requires a live BitShares connection (asset metadata lookups and price derivation are on-chain).
|
|
165
|
+
|
|
153
166
|
---
|
|
154
167
|
|
|
155
168
|
## 🔍 GIT & DEVELOPMENT WORKFLOW
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli_whitelist_args.d.ts","sourceRoot":"","sources":["../../modules/cli_whitelist_args.ts"],"names":[],"mappings":"AAEA,iBAAS,kCAAkC,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAOzE;;;;AAED,kBAEE"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
function buildMarketAdapterWhitelistNpmArgs(args = []) {
|
|
3
|
-
const forwardedArgs = Array.isArray(args) ? args.filter((arg) => typeof arg === 'string' && arg.length > 0) : [];
|
|
4
|
-
return [
|
|
5
|
-
'run',
|
|
6
|
-
'market-adapter:whitelist',
|
|
7
|
-
...(forwardedArgs.length > 0 ? ['--', ...forwardedArgs] : []),
|
|
8
|
-
];
|
|
9
|
-
}
|
|
10
|
-
module.exports = {
|
|
11
|
-
buildMarketAdapterWhitelistNpmArgs,
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=cli_whitelist_args.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli_whitelist_args.js","sourceRoot":"","sources":["../../modules/cli_whitelist_args.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,SAAS,kCAAkC,CAAC,OAAiB,EAAE;IAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjH,OAAO;QACH,KAAK;QACL,0BAA0B;QAC1B,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;AACN,CAAC;AAED,iBAAS;IACL,kCAAkC;CACrC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../modules/order/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAYH;;;;;GAKG;AACH,iBAAe,0BAA0B,kBAiExC;;;;AAED,kBAAwC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../modules/order/runner.ts"],"names":[],"mappings":"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"}
|