@3rd-eye-labs/openmm 0.1.5 → 0.1.7
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/api/index.d.ts +3 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +9 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/openapi.d.ts +3 -0
- package/dist/api/openapi.d.ts.map +1 -0
- package/dist/api/openapi.js +214 -0
- package/dist/api/openapi.js.map +1 -0
- package/dist/api/routes/balance.d.ts +3 -0
- package/dist/api/routes/balance.d.ts.map +1 -0
- package/dist/api/routes/balance.js +101 -0
- package/dist/api/routes/balance.js.map +1 -0
- package/dist/api/routes/cardano.d.ts +3 -0
- package/dist/api/routes/cardano.d.ts.map +1 -0
- package/dist/api/routes/cardano.js +177 -0
- package/dist/api/routes/cardano.js.map +1 -0
- package/dist/api/routes/health.d.ts +3 -0
- package/dist/api/routes/health.d.ts.map +1 -0
- package/dist/api/routes/health.js +115 -0
- package/dist/api/routes/health.js.map +1 -0
- package/dist/api/routes/index.d.ts +3 -0
- package/dist/api/routes/index.d.ts.map +1 -0
- package/dist/api/routes/index.js +39 -0
- package/dist/api/routes/index.js.map +1 -0
- package/dist/api/routes/orderbook.d.ts +3 -0
- package/dist/api/routes/orderbook.d.ts.map +1 -0
- package/dist/api/routes/orderbook.js +123 -0
- package/dist/api/routes/orderbook.js.map +1 -0
- package/dist/api/routes/orders.d.ts +3 -0
- package/dist/api/routes/orders.d.ts.map +1 -0
- package/dist/api/routes/orders.js +214 -0
- package/dist/api/routes/orders.js.map +1 -0
- package/dist/api/routes/price.d.ts +3 -0
- package/dist/api/routes/price.d.ts.map +1 -0
- package/dist/api/routes/price.js +124 -0
- package/dist/api/routes/price.js.map +1 -0
- package/dist/api/routes/strategy.d.ts +3 -0
- package/dist/api/routes/strategy.d.ts.map +1 -0
- package/dist/api/routes/strategy.js +345 -0
- package/dist/api/routes/strategy.js.map +1 -0
- package/dist/api/routes/ticker.d.ts +3 -0
- package/dist/api/routes/ticker.d.ts.map +1 -0
- package/dist/api/routes/ticker.js +91 -0
- package/dist/api/routes/ticker.js.map +1 -0
- package/dist/api/routes/trades.d.ts +3 -0
- package/dist/api/routes/trades.d.ts.map +1 -0
- package/dist/api/routes/trades.js +129 -0
- package/dist/api/routes/trades.js.map +1 -0
- package/dist/api/server.d.ts +11 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +65 -0
- package/dist/api/server.js.map +1 -0
- package/dist/cli/cli.js +3 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/grid.d.ts +3 -0
- package/dist/cli/commands/grid.d.ts.map +1 -0
- package/dist/cli/commands/grid.js +103 -0
- package/dist/cli/commands/grid.js.map +1 -0
- package/dist/cli/commands/multi-trade.d.ts +3 -0
- package/dist/cli/commands/multi-trade.d.ts.map +1 -0
- package/dist/cli/commands/multi-trade.js +175 -0
- package/dist/cli/commands/multi-trade.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +3 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +53 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/pool-discovery.d.ts +56 -0
- package/dist/cli/pool-discovery.d.ts.map +1 -0
- package/dist/cli/pool-discovery.js +283 -0
- package/dist/cli/pool-discovery.js.map +1 -0
- package/dist/config/environment.d.ts +19 -0
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +87 -51
- package/dist/config/environment.js.map +1 -1
- package/dist/core/price-aggregation/price-cache.d.ts +55 -0
- package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
- package/dist/core/price-aggregation/price-cache.js +152 -0
- package/dist/core/price-aggregation/price-cache.js.map +1 -0
- package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
- package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
- package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
- package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
- package/dist/examples/mexc-order-update-test.d.ts +4 -0
- package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
- package/dist/examples/mexc-order-update-test.js +186 -0
- package/dist/examples/mexc-order-update-test.js.map +1 -0
- package/dist/examples/mexc-test.d.ts +9 -0
- package/dist/examples/mexc-test.d.ts.map +1 -0
- package/dist/examples/mexc-test.js +218 -0
- package/dist/examples/mexc-test.js.map +1 -0
- package/dist/examples/mexc-trades-debug.d.ts +2 -0
- package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
- package/dist/examples/mexc-trades-debug.js +101 -0
- package/dist/examples/mexc-trades-debug.js.map +1 -0
- package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
- package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
- package/dist/examples/mexc-trades-subscription-debug.js +150 -0
- package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
- package/dist/examples/mexc-websocket-test.d.ts +8 -0
- package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
- package/dist/examples/mexc-websocket-test.js +115 -0
- package/dist/examples/mexc-websocket-test.js.map +1 -0
- package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
- package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
- package/dist/examples/test-protobuf-status-detection.js +83 -0
- package/dist/examples/test-protobuf-status-detection.js.map +1 -0
- package/dist/exchanges/base-exchange-connector.d.ts +33 -0
- package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
- package/dist/exchanges/base-exchange-connector.js +55 -0
- package/dist/exchanges/base-exchange-connector.js.map +1 -0
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
- package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
- package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/resources/index.d.ts +3 -0
- package/dist/mcp/resources/index.d.ts.map +1 -0
- package/dist/mcp/resources/index.js +11 -0
- package/dist/mcp/resources/index.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +29 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +12 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/tests/fixtures/test-helpers.d.ts +5 -0
- package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
- package/dist/tests/fixtures/test-helpers.js +8 -0
- package/dist/tests/fixtures/test-helpers.js.map +1 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
- package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
- package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
- package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
- package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
- package/dist/tests/unit/config/environment.test.d.ts +2 -0
- package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
- package/dist/tests/unit/config/environment.test.js +158 -0
- package/dist/tests/unit/config/environment.test.js.map +1 -0
- package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
- package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
- package/dist/tests/unit/config/launcher-config.test.js +117 -0
- package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
- package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
- package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
- package/dist/tests/unit/config/price-aggregation.test.js +144 -0
- package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
- package/dist/tests/unit/utils/logger.test.d.ts +2 -0
- package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/logger.test.js +260 -0
- package/dist/tests/unit/utils/logger.test.js.map +1 -0
- package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
- package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
- package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
- package/dist/types/price-aggregation.d.ts +31 -0
- package/dist/types/price-aggregation.d.ts.map +1 -0
- package/dist/types/price-aggregation.js +6 -0
- package/dist/types/price-aggregation.js.map +1 -0
- package/dist/utils/crypto.d.ts +15 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +50 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/validation.d.ts +36 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +174 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testMexcOrderUpdates = testMexcOrderUpdates;
|
|
4
|
+
require("dotenv/config");
|
|
5
|
+
const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
|
|
6
|
+
async function testMexcOrderUpdates() {
|
|
7
|
+
const testCredentials = {
|
|
8
|
+
apiKey: process.env.MEXC_API_KEY || '',
|
|
9
|
+
secret: process.env.MEXC_SECRET || '',
|
|
10
|
+
uid: process.env.MEXC_UID
|
|
11
|
+
};
|
|
12
|
+
if (!testCredentials.apiKey || !testCredentials.secret) {
|
|
13
|
+
console.error('❌ MEXC API credentials not found. Please check your .env file.');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const mexc = new mexc_connector_1.MexcConnector();
|
|
17
|
+
let orderUpdateCount = 0;
|
|
18
|
+
const receivedOrderUpdates = [];
|
|
19
|
+
try {
|
|
20
|
+
console.log('🔧 Setting up MEXC connector...');
|
|
21
|
+
mexc.setCredentials(testCredentials);
|
|
22
|
+
console.log('🔌 Connecting to MEXC REST API...');
|
|
23
|
+
await mexc.connect();
|
|
24
|
+
console.log('🔌 Connecting to MEXC WebSocket...');
|
|
25
|
+
await mexc.connectWebSocket();
|
|
26
|
+
console.log('🔌 Connecting to MEXC User Data Stream...');
|
|
27
|
+
await mexc.connectUserDataStream();
|
|
28
|
+
console.log('✅ All connections established successfully!');
|
|
29
|
+
console.log('📊 WebSocket Status:', mexc.getWebSocketStatus());
|
|
30
|
+
console.log('📊 User Data Stream Connected:', mexc.isUserDataStreamConnected());
|
|
31
|
+
console.log('');
|
|
32
|
+
// Subscribe to user order updates
|
|
33
|
+
console.log('👤 Subscribing to user order updates...');
|
|
34
|
+
const userOrdersId = await mexc.subscribeUserOrders((order) => {
|
|
35
|
+
orderUpdateCount++;
|
|
36
|
+
const timestamp = new Date(order.timestamp).toISOString();
|
|
37
|
+
console.log(`📋 Order Update #${orderUpdateCount} [${timestamp}]:`, {
|
|
38
|
+
orderId: order.id,
|
|
39
|
+
symbol: order.symbol,
|
|
40
|
+
type: order.type,
|
|
41
|
+
side: order.side,
|
|
42
|
+
amount: order.amount,
|
|
43
|
+
price: order.price,
|
|
44
|
+
filled: order.filled,
|
|
45
|
+
remaining: order.remaining,
|
|
46
|
+
status: order.status
|
|
47
|
+
});
|
|
48
|
+
receivedOrderUpdates.push({
|
|
49
|
+
updateNumber: orderUpdateCount,
|
|
50
|
+
timestamp: order.timestamp,
|
|
51
|
+
order: { ...order }
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
console.log('✅ User orders subscription ID:', userOrdersId);
|
|
55
|
+
console.log('');
|
|
56
|
+
// Get current balance and market data
|
|
57
|
+
console.log('💰 Getting current balances...');
|
|
58
|
+
const balance = await mexc.getBalance('USDT');
|
|
59
|
+
console.log('💰 USDT Balance:', balance);
|
|
60
|
+
console.log('📊 Getting current ticker...');
|
|
61
|
+
const ticker = await mexc.getTicker('INDY/USDT');
|
|
62
|
+
console.log('📊 Current INDY/USDT ticker:', {
|
|
63
|
+
last: ticker.last,
|
|
64
|
+
bid: ticker.bid,
|
|
65
|
+
ask: ticker.ask
|
|
66
|
+
});
|
|
67
|
+
console.log('');
|
|
68
|
+
// Test 1: Create a limit buy order well below market price (unlikely to fill)
|
|
69
|
+
console.log('🛒 Test 1: Creating limit buy order below market...');
|
|
70
|
+
const testBuyPrice = ticker.bid * 0.8; // 20% below current bid
|
|
71
|
+
const testAmount = 100; // 100 INDY
|
|
72
|
+
if (balance.available < testBuyPrice * testAmount) {
|
|
73
|
+
console.log('⚠️ Insufficient USDT balance for test order. Required:', testBuyPrice * testAmount, 'Available:', balance.available);
|
|
74
|
+
console.log('📝 Skipping order creation test...');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.log(`📝 Creating limit buy order: ${testAmount} INDY at $${testBuyPrice.toFixed(6)}`);
|
|
78
|
+
try {
|
|
79
|
+
const buyOrder = await mexc.createOrder('INDY/USDT', 'limit', 'buy', testAmount, testBuyPrice);
|
|
80
|
+
console.log('✅ Buy order created:', {
|
|
81
|
+
id: buyOrder.id,
|
|
82
|
+
symbol: buyOrder.symbol,
|
|
83
|
+
type: buyOrder.type,
|
|
84
|
+
side: buyOrder.side,
|
|
85
|
+
amount: buyOrder.amount,
|
|
86
|
+
price: buyOrder.price,
|
|
87
|
+
status: buyOrder.status
|
|
88
|
+
});
|
|
89
|
+
// Wait for order update via WebSocket
|
|
90
|
+
console.log('⏰ Waiting 10 seconds for order creation update...');
|
|
91
|
+
await new Promise(resolve => setTimeout(resolve, 10000));
|
|
92
|
+
// Cancel the order
|
|
93
|
+
console.log('❌ Cancelling the test order...');
|
|
94
|
+
await mexc.cancelOrder(buyOrder.id, 'INDY/USDT');
|
|
95
|
+
console.log('✅ Order cancellation request sent');
|
|
96
|
+
// Wait for cancellation update
|
|
97
|
+
console.log('⏰ Waiting 10 seconds for order cancellation update...');
|
|
98
|
+
await new Promise(resolve => setTimeout(resolve, 10000));
|
|
99
|
+
}
|
|
100
|
+
catch (orderError) {
|
|
101
|
+
console.log('⚠️ Order creation/cancellation failed:', orderError instanceof Error ? orderError.message : orderError);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
console.log('');
|
|
105
|
+
// Test 2: Create and immediately cancel a limit sell order above market price
|
|
106
|
+
console.log('💰 Test 2: Creating limit sell order above market...');
|
|
107
|
+
const testSellPrice = ticker.ask * 1.2; // 20% above current ask
|
|
108
|
+
const testSellAmount = 10; // 10 INDY
|
|
109
|
+
try {
|
|
110
|
+
// Check INDY balance first
|
|
111
|
+
const indyBalance = await mexc.getBalance('INDY');
|
|
112
|
+
console.log('💰 INDY Balance:', indyBalance);
|
|
113
|
+
if (indyBalance.available >= testSellAmount) {
|
|
114
|
+
console.log(`📝 Creating limit sell order: ${testSellAmount} INDY at $${testSellPrice.toFixed(6)}`);
|
|
115
|
+
const sellOrder = await mexc.createOrder('INDY/USDT', 'limit', 'sell', testSellAmount, testSellPrice);
|
|
116
|
+
console.log('✅ Sell order created:', {
|
|
117
|
+
id: sellOrder.id,
|
|
118
|
+
symbol: sellOrder.symbol,
|
|
119
|
+
type: sellOrder.type,
|
|
120
|
+
side: sellOrder.side,
|
|
121
|
+
amount: sellOrder.amount,
|
|
122
|
+
price: sellOrder.price,
|
|
123
|
+
status: sellOrder.status
|
|
124
|
+
});
|
|
125
|
+
// Wait for order update
|
|
126
|
+
console.log('⏰ Waiting 5 seconds for order creation update...');
|
|
127
|
+
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
128
|
+
// Cancel the order quickly
|
|
129
|
+
console.log('❌ Cancelling the test sell order...');
|
|
130
|
+
await mexc.cancelOrder(sellOrder.id, 'INDY/USDT');
|
|
131
|
+
console.log('✅ Sell order cancellation request sent');
|
|
132
|
+
// Wait for cancellation update
|
|
133
|
+
console.log('⏰ Waiting 10 seconds for final order updates...');
|
|
134
|
+
await new Promise(resolve => setTimeout(resolve, 10000));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log(`⚠️ Insufficient INDY balance for sell test. Required: ${testSellAmount}, Available: ${indyBalance.available}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (sellError) {
|
|
141
|
+
console.log('⚠️ Sell order test failed:', sellError instanceof Error ? sellError.message : sellError);
|
|
142
|
+
}
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log('📊 Test Summary:');
|
|
145
|
+
console.log(` - Total order updates received: ${orderUpdateCount}`);
|
|
146
|
+
console.log(` - User data stream connected: ${mexc.isUserDataStreamConnected()}`);
|
|
147
|
+
if (receivedOrderUpdates.length > 0) {
|
|
148
|
+
console.log('');
|
|
149
|
+
console.log('📋 All Received Order Updates:');
|
|
150
|
+
receivedOrderUpdates.forEach((update, index) => {
|
|
151
|
+
console.log(` ${index + 1}. [${new Date(update.timestamp).toISOString()}] Order ${update.order.id}: ${update.order.status}`);
|
|
152
|
+
});
|
|
153
|
+
console.log('✅ User data stream is working correctly!');
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log('⚠️ No order updates received via WebSocket');
|
|
157
|
+
console.log('🔍 This could indicate:');
|
|
158
|
+
console.log(' 1. User data stream authentication issue');
|
|
159
|
+
console.log(' 2. WebSocket message parsing problem');
|
|
160
|
+
console.log(' 3. MEXC user data stream configuration issue');
|
|
161
|
+
console.log(' 4. Orders may have been processed too quickly');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
console.error('❌ Error during order update test:', error);
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
console.log('');
|
|
169
|
+
console.log('🧹 Cleaning up connections...');
|
|
170
|
+
try {
|
|
171
|
+
await mexc.disconnectUserDataStream();
|
|
172
|
+
console.log('✅ User data stream disconnected');
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.log('⚠️ Error disconnecting user data stream:', error);
|
|
176
|
+
}
|
|
177
|
+
await mexc.disconnect();
|
|
178
|
+
console.log('✅ Order update test completed!');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Run the test
|
|
182
|
+
if (require.main === module) {
|
|
183
|
+
console.log('🚀 Starting MEXC Order Update Test with INDY Analytics approach...\n');
|
|
184
|
+
testMexcOrderUpdates().catch(console.error);
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=mexc-order-update-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-order-update-test.js","sourceRoot":"","sources":["../../src/examples/mexc-order-update-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive test script to verify ALL MEXC connector functionality
|
|
4
|
+
* Tests every method in the MexcConnector class including order creation/cancellation
|
|
5
|
+
* Based on the pattern from your existing INDY Analytics setup
|
|
6
|
+
*/
|
|
7
|
+
declare function testMexcConnector(): Promise<void>;
|
|
8
|
+
export { testMexcConnector };
|
|
9
|
+
//# sourceMappingURL=mexc-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-test.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-test.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAKvB;;;;GAIG;AAEH,iBAAe,iBAAiB,kBA0N/B;AAYD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testMexcConnector = testMexcConnector;
|
|
4
|
+
require("dotenv/config");
|
|
5
|
+
const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
|
|
6
|
+
const logger_1 = require("../utils/logger");
|
|
7
|
+
/**
|
|
8
|
+
* Comprehensive test script to verify ALL MEXC connector functionality
|
|
9
|
+
* Tests every method in the MexcConnector class including order creation/cancellation
|
|
10
|
+
* Based on the pattern from your existing INDY Analytics setup
|
|
11
|
+
*/
|
|
12
|
+
async function testMexcConnector() {
|
|
13
|
+
const logger = (0, logger_1.createLogger)({
|
|
14
|
+
level: 'info',
|
|
15
|
+
service: 'mexc-test'
|
|
16
|
+
});
|
|
17
|
+
// Test credentials loaded from .env
|
|
18
|
+
const testCredentials = {
|
|
19
|
+
apiKey: process.env.MEXC_API_KEY || '',
|
|
20
|
+
secret: process.env.MEXC_SECRET || '',
|
|
21
|
+
uid: process.env.MEXC_UID
|
|
22
|
+
};
|
|
23
|
+
// Validate credentials
|
|
24
|
+
if (!testCredentials.apiKey || !testCredentials.secret) {
|
|
25
|
+
logger.error('MEXC API credentials not found. Please check your .env file.');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const mexc = new mexc_connector_1.MexcConnector();
|
|
29
|
+
let testOrderId = null;
|
|
30
|
+
try {
|
|
31
|
+
logger.info('Setting up MEXC connector', { exchangeId: 'mexc' });
|
|
32
|
+
mexc.setCredentials(testCredentials);
|
|
33
|
+
logger.info('Connecting to MEXC', { exchangeId: 'mexc' });
|
|
34
|
+
await mexc.connect();
|
|
35
|
+
if (!mexc.isConnected()) {
|
|
36
|
+
throw new Error('Failed to connect to MEXC');
|
|
37
|
+
}
|
|
38
|
+
logger.info('Connected to MEXC successfully', {
|
|
39
|
+
exchangeId: mexc.id,
|
|
40
|
+
exchangeName: mexc.name
|
|
41
|
+
});
|
|
42
|
+
// Test 1: Get Ticker
|
|
43
|
+
logger.info('Test 1: Getting ticker', { symbol: 'INDY/USDT', test: 'ticker' });
|
|
44
|
+
const ticker = await mexc.getTicker('INDY/USDT');
|
|
45
|
+
logger.info('Ticker retrieved successfully', {
|
|
46
|
+
symbol: 'INDY/USDT',
|
|
47
|
+
price: ticker.last,
|
|
48
|
+
bid: ticker.bid,
|
|
49
|
+
ask: ticker.ask
|
|
50
|
+
});
|
|
51
|
+
// Test 2: Get Account Balance
|
|
52
|
+
logger.info('Test 2: Getting account balance', { test: 'balance' });
|
|
53
|
+
const balances = await mexc.getBalance();
|
|
54
|
+
logger.info('Account balances retrieved', {
|
|
55
|
+
assetsCount: Object.keys(balances).length
|
|
56
|
+
});
|
|
57
|
+
Object.entries(balances).forEach(([asset, balance]) => {
|
|
58
|
+
logger.debug('Asset balance', {
|
|
59
|
+
asset,
|
|
60
|
+
free: balance.free,
|
|
61
|
+
used: balance.used,
|
|
62
|
+
total: balance.total
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
// Test 3: Get Order Book
|
|
66
|
+
logger.info('Test 3: Getting order book', { symbol: 'INDY/USDT', test: 'orderbook' });
|
|
67
|
+
const orderBook = await mexc.getOrderBook('INDY/USDT');
|
|
68
|
+
logger.info('Order book retrieved', {
|
|
69
|
+
symbol: 'INDY/USDT',
|
|
70
|
+
bidsCount: orderBook.bids.length,
|
|
71
|
+
asksCount: orderBook.asks.length,
|
|
72
|
+
bestBid: orderBook.bids[0]?.price,
|
|
73
|
+
bestAsk: orderBook.asks[0]?.price
|
|
74
|
+
});
|
|
75
|
+
// Test 4: Get Recent Trades
|
|
76
|
+
logger.info('Test 4: Getting recent trades', { symbol: 'INDY/USDT', test: 'trades' });
|
|
77
|
+
const recentTrades = await mexc.getRecentTrades('INDY/USDT');
|
|
78
|
+
logger.info('Recent trades retrieved', {
|
|
79
|
+
symbol: 'INDY/USDT',
|
|
80
|
+
tradesCount: recentTrades.length
|
|
81
|
+
});
|
|
82
|
+
if (recentTrades.length > 0) {
|
|
83
|
+
logger.debug('Latest trade details', {
|
|
84
|
+
symbol: 'INDY/USDT',
|
|
85
|
+
price: recentTrades[0].price,
|
|
86
|
+
amount: recentTrades[0].amount,
|
|
87
|
+
side: recentTrades[0].side
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// Test 5: Get Open Orders (before creating new ones)
|
|
91
|
+
logger.info('Test 5: Getting initial open orders', { symbol: 'INDY/USDT', test: 'openorders' });
|
|
92
|
+
const initialOpenOrders = await mexc.getOpenOrders('INDY/USDT');
|
|
93
|
+
logger.info('Initial open orders retrieved', {
|
|
94
|
+
symbol: 'INDY/USDT',
|
|
95
|
+
openOrdersCount: initialOpenOrders.length
|
|
96
|
+
});
|
|
97
|
+
// Test 6: Create a Limit Order (Buy order with low price to avoid accidental execution)
|
|
98
|
+
logger.info('Test 6: Creating limit buy order', { test: 'createorder' });
|
|
99
|
+
const lowBuyPrice = ticker.last * 0.5; // 50% below current price to avoid execution
|
|
100
|
+
const testAmount = 10; // Small amount for testing
|
|
101
|
+
logger.info('Creating test buy order', {
|
|
102
|
+
symbol: 'INDY/USDT',
|
|
103
|
+
amount: testAmount,
|
|
104
|
+
price: lowBuyPrice,
|
|
105
|
+
type: 'limit',
|
|
106
|
+
side: 'buy'
|
|
107
|
+
});
|
|
108
|
+
const createdOrder = await mexc.createOrder('INDY/USDT', 'limit', 'buy', testAmount, lowBuyPrice);
|
|
109
|
+
testOrderId = createdOrder.id;
|
|
110
|
+
logger.info('Order created successfully', {
|
|
111
|
+
orderId: testOrderId,
|
|
112
|
+
symbol: createdOrder.symbol,
|
|
113
|
+
type: createdOrder.type,
|
|
114
|
+
side: createdOrder.side,
|
|
115
|
+
amount: createdOrder.amount,
|
|
116
|
+
price: createdOrder.price,
|
|
117
|
+
status: createdOrder.status
|
|
118
|
+
});
|
|
119
|
+
// Test 7: Get Order Details
|
|
120
|
+
logger.info('Test 7: Getting order details', { orderId: testOrderId, test: 'getorder' });
|
|
121
|
+
const orderDetails = await mexc.getOrder(testOrderId, 'INDY/USDT');
|
|
122
|
+
logger.info('Order details retrieved', {
|
|
123
|
+
orderId: orderDetails.id,
|
|
124
|
+
status: orderDetails.status,
|
|
125
|
+
filled: orderDetails.filled,
|
|
126
|
+
remaining: orderDetails.remaining
|
|
127
|
+
});
|
|
128
|
+
// Test 8: Get Open Orders (after creating new one)
|
|
129
|
+
logger.info('Test 8: Getting open orders after creation', { test: 'openorders_after' });
|
|
130
|
+
const openOrdersAfterCreate = await mexc.getOpenOrders('INDY/USDT');
|
|
131
|
+
logger.info('Open orders after creation retrieved', {
|
|
132
|
+
openOrdersCount: openOrdersAfterCreate.length
|
|
133
|
+
});
|
|
134
|
+
// Find our test order
|
|
135
|
+
const ourOrder = openOrdersAfterCreate.find(order => order.id === testOrderId);
|
|
136
|
+
if (ourOrder) {
|
|
137
|
+
logger.info('Test order found in open orders list', { orderId: testOrderId });
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
logger.warn('Test order not found in open orders', {
|
|
141
|
+
orderId: testOrderId,
|
|
142
|
+
reason: 'might be filled or cancelled'
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
// Test 9: Cancel the Order
|
|
146
|
+
if (testOrderId) {
|
|
147
|
+
logger.info('Test 9: Cancelling test order', { orderId: testOrderId, test: 'cancelorder' });
|
|
148
|
+
await mexc.cancelOrder(testOrderId, 'INDY/USDT');
|
|
149
|
+
logger.info('Order cancelled successfully', { orderId: testOrderId });
|
|
150
|
+
// Test 10: Verify order was cancelled
|
|
151
|
+
logger.info('Test 10: Verifying order cancellation', { orderId: testOrderId, test: 'verify_cancel' });
|
|
152
|
+
const openOrdersAfterCancel = await mexc.getOpenOrders('INDY/USDT');
|
|
153
|
+
const cancelledOrderExists = openOrdersAfterCancel.find(order => order.id === testOrderId);
|
|
154
|
+
if (!cancelledOrderExists) {
|
|
155
|
+
logger.info('Order successfully removed from open orders list', { orderId: testOrderId });
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
logger.warn('Order still appears in open orders', {
|
|
159
|
+
orderId: testOrderId,
|
|
160
|
+
reason: 'might take time to update'
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Test 12: Test Market Order (commented out for safety)
|
|
165
|
+
logger.info('Test 12: Market order test (SKIPPED for safety)', { test: 'market_order_skip' });
|
|
166
|
+
logger.debug('Market order test skipped to avoid accidental execution');
|
|
167
|
+
// Uncomment below to test market orders (will execute immediately!)
|
|
168
|
+
// const marketOrder = await mexc.createOrder("INDY/USDT", "market", "buy", 10);
|
|
169
|
+
// logger.info('Market order created', marketOrder);
|
|
170
|
+
// await mexc.cancelOrder(marketOrder.id, 'INDY/USDT');
|
|
171
|
+
logger.info('ALL TESTS COMPLETED SUCCESSFULLY');
|
|
172
|
+
logger.info('Test Summary', {
|
|
173
|
+
connectionAuth: true,
|
|
174
|
+
tickerRetrieval: true,
|
|
175
|
+
balanceRetrieval: true,
|
|
176
|
+
orderBookData: true,
|
|
177
|
+
tradesData: true,
|
|
178
|
+
openOrdersListing: true,
|
|
179
|
+
limitOrderCreation: true,
|
|
180
|
+
orderDetailsRetrieval: true,
|
|
181
|
+
orderCancellation: true,
|
|
182
|
+
orderStatusVerification: true,
|
|
183
|
+
whitelistedUidAccess: !!testCredentials.uid
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
logger.logError(error instanceof Error ? error : new Error(String(error)), {
|
|
188
|
+
exchangeId: 'mexc',
|
|
189
|
+
testOrderId: testOrderId || 'none'
|
|
190
|
+
});
|
|
191
|
+
// Cleanup: Try to cancel test order if it was created
|
|
192
|
+
if (testOrderId) {
|
|
193
|
+
try {
|
|
194
|
+
logger.info('Attempting to cleanup test order', { orderId: testOrderId });
|
|
195
|
+
await mexc.cancelOrder(testOrderId, 'INDY/USDT');
|
|
196
|
+
logger.info('Test order cleaned up successfully', { orderId: testOrderId });
|
|
197
|
+
}
|
|
198
|
+
catch (cleanupError) {
|
|
199
|
+
logger.logError(cleanupError instanceof Error ? cleanupError : new Error(String(cleanupError)), { orderId: testOrderId, operation: 'cleanup' });
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
logger.info('Disconnecting from MEXC', { exchangeId: 'mexc' });
|
|
205
|
+
await mexc.disconnect();
|
|
206
|
+
logger.info('Test completed and disconnected', { exchangeId: 'mexc' });
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Run the test if this file is executed directly
|
|
210
|
+
if (require.main === module) {
|
|
211
|
+
const mainLogger = (0, logger_1.createLogger)({ service: 'mexc-test-main' });
|
|
212
|
+
mainLogger.info('Starting comprehensive MEXC connector tests');
|
|
213
|
+
testMexcConnector().catch((error) => {
|
|
214
|
+
mainLogger.logError(error instanceof Error ? error : new Error(String(error)));
|
|
215
|
+
process.exit(1);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=mexc-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-test.js","sourceRoot":"","sources":["../../src/examples/mexc-test.ts"],"names":[],"mappings":";;AAiPS,8CAAiB;AAjP1B,yBAAuB;AACvB,qEAAiE;AAEjE,4CAA+C;AAE/C;;;;GAIG;AAEH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC;QAC1B,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,WAAW;KACrB,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,eAAe,GAAwB;QAC3C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE;QACtC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACrC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;KAC1B,CAAC;IAEF,uBAAuB;IACvB,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,8BAAa,EAAE,CAAC;IACjC,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,YAAY,EAAE,IAAI,CAAC,IAAI;SACxB,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;YAC3C,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACxC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;SAC1C,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC5B,KAAK;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClC,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;YAChC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;YAChC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK;YACjC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK;SAClC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACrC,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,YAAY,CAAC,MAAM;SACjC,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;gBACnC,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;gBAC5B,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM;gBAC9B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAChG,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;YAC3C,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,iBAAiB,CAAC,MAAM;SAC1C,CAAC,CAAC;QAEH,wFAAwF;QACxF,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,6CAA6C;QACpF,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,2BAA2B;QAElD,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACrC,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAClG,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACxC,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACzF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACrC,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;SAClC,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACxF,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE;YAClD,eAAe,EAAE,qBAAqB,CAAC,MAAM;SAC9C,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QAC/E,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;gBACjD,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,8BAA8B;aACvC,CAAC,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5F,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAEtE,sCAAsC;YACtC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YACtG,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;YAE3F,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;oBAChD,OAAO,EAAE,WAAW;oBACpB,MAAM,EAAE,2BAA2B;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,MAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,oEAAoE;QACpE,gFAAgF;QAChF,oDAAoD;QACpD,uDAAuD;QAEvD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;YAC1B,cAAc,EAAE,IAAI;YACpB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,IAAI;YACxB,qBAAqB,EAAE,IAAI;YAC3B,iBAAiB,EAAE,IAAI;YACvB,uBAAuB,EAAE,IAAI;YAC7B,oBAAoB,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG;SAC5C,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACzE,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,WAAW,IAAI,MAAM;SACnC,CAAC,CAAC;QAEH,sDAAsD;QACtD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,MAAM,CAAC,QAAQ,CACb,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAC9E,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/D,UAAU,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,UAAU,CAAC,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-trades-debug.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-trades-debug.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ws_1 = __importDefault(require("ws"));
|
|
7
|
+
const mexc_protobuf_decoder_1 = require("../exchanges/mexc/mexc-protobuf-decoder");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
/**
|
|
10
|
+
* Debug trades subscription specifically
|
|
11
|
+
*/
|
|
12
|
+
async function debugTradesSubscription() {
|
|
13
|
+
const logger = (0, utils_1.createLogger)('mexc-trades-debug');
|
|
14
|
+
try {
|
|
15
|
+
logger.info('=== MEXC Trades Subscription Debug ===');
|
|
16
|
+
const ws = new ws_1.default('wss://wbs-api.mexc.com/ws');
|
|
17
|
+
ws.on('open', () => {
|
|
18
|
+
logger.info('✅ WebSocket connected');
|
|
19
|
+
// Subscribe to INDYUSDT trades
|
|
20
|
+
const tradesSubscription = {
|
|
21
|
+
method: 'SUBSCRIPTION',
|
|
22
|
+
params: ['spot@public.aggre.deals.v3.api.pb@100ms@INDYUSDT']
|
|
23
|
+
};
|
|
24
|
+
logger.info('📤 Subscribing to trades:', tradesSubscription);
|
|
25
|
+
ws.send(JSON.stringify(tradesSubscription));
|
|
26
|
+
});
|
|
27
|
+
let messageCount = 0;
|
|
28
|
+
ws.on('message', (data) => {
|
|
29
|
+
messageCount++;
|
|
30
|
+
const messageStr = data.toString();
|
|
31
|
+
logger.info(`📥 Message #${messageCount} received (${data.length} bytes)`);
|
|
32
|
+
// Try to parse as JSON first
|
|
33
|
+
try {
|
|
34
|
+
const jsonData = JSON.parse(messageStr);
|
|
35
|
+
if (jsonData.id !== undefined) {
|
|
36
|
+
if (jsonData.code === 0) {
|
|
37
|
+
logger.info(' ✅ Subscription confirmed:', jsonData.msg);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
logger.error(' ❌ Subscription failed:', jsonData);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (jsonError) {
|
|
45
|
+
// Check if it's a trade protobuf message
|
|
46
|
+
if (messageStr.includes('spot@public.aggre.deals.v3.api.p')) {
|
|
47
|
+
logger.info(' 📦 Trade protobuf message detected!');
|
|
48
|
+
logger.info(` Raw preview: ${messageStr.substring(0, 100)}...`);
|
|
49
|
+
try {
|
|
50
|
+
const decoded = mexc_protobuf_decoder_1.MexcProtobufDecoder.decode(messageStr);
|
|
51
|
+
logger.info(' 🔓 Decode result:', {
|
|
52
|
+
type: decoded.type,
|
|
53
|
+
symbol: decoded.symbol,
|
|
54
|
+
hasDecoded: !!decoded.decoded,
|
|
55
|
+
error: decoded.error
|
|
56
|
+
});
|
|
57
|
+
if (decoded.decoded) {
|
|
58
|
+
logger.info(' 📊 Decoded trade data:', decoded.decoded);
|
|
59
|
+
// Check if dealsList format is correct
|
|
60
|
+
if (decoded.decoded.dealsList && Array.isArray(decoded.decoded.dealsList)) {
|
|
61
|
+
logger.info(` ✅ Found ${decoded.decoded.dealsList.length} deals`);
|
|
62
|
+
decoded.decoded.dealsList.forEach((deal, index) => {
|
|
63
|
+
logger.info(` Deal ${index + 1}:`, {
|
|
64
|
+
price: deal.price,
|
|
65
|
+
quantity: deal.quantity,
|
|
66
|
+
time: deal.time,
|
|
67
|
+
tradetype: deal.tradetype
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
logger.warn(' ❌ No valid dealsList found');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (decodingError) {
|
|
77
|
+
logger.error(' ❌ Protobuf decoding failed:', decodingError);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
logger.info(''); // Empty line for readability
|
|
82
|
+
});
|
|
83
|
+
ws.on('error', (error) => {
|
|
84
|
+
logger.error('❌ WebSocket error:', error);
|
|
85
|
+
});
|
|
86
|
+
ws.on('close', () => {
|
|
87
|
+
logger.info('🔌 WebSocket connection closed');
|
|
88
|
+
});
|
|
89
|
+
// Keep connection alive for 30 seconds
|
|
90
|
+
logger.info('⏰ Listening for trades for 30 seconds...');
|
|
91
|
+
await new Promise(resolve => setTimeout(resolve, 30000));
|
|
92
|
+
logger.info(`\\n=== TRADES DEBUG SUMMARY ===`);
|
|
93
|
+
logger.info(`Total messages received: ${messageCount}`);
|
|
94
|
+
ws.close();
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger.error('❌ Debug test failed:', error);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
debugTradesSubscription().catch(console.error);
|
|
101
|
+
//# sourceMappingURL=mexc-trades-debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-trades-debug.js","sourceRoot":"","sources":["../../src/examples/mexc-trades-debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-trades-subscription-debug.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-trades-subscription-debug.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC"}
|