@yuants/vendor-binance 0.14.13 → 0.14.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/orders/listOrders.js +2 -2
- package/dist/services/orders/listOrders.js.map +1 -1
- package/dist/services/orders/order-type-mapping.test.js +166 -0
- package/dist/services/orders/order-type-mapping.test.js.map +1 -0
- package/dist/services/orders/order-utils.js +29 -2
- package/dist/services/orders/order-utils.js.map +1 -1
- package/dist/services/orders/submitOrder.js +3 -3
- package/dist/services/orders/submitOrder.js.map +1 -1
- package/lib/services/orders/listOrders.js +2 -2
- package/lib/services/orders/listOrders.js.map +1 -1
- package/lib/services/orders/order-type-mapping.test.d.ts +2 -0
- package/lib/services/orders/order-type-mapping.test.d.ts.map +1 -0
- package/lib/services/orders/order-type-mapping.test.js +168 -0
- package/lib/services/orders/order-type-mapping.test.js.map +1 -0
- package/lib/services/orders/order-utils.d.ts +2 -1
- package/lib/services/orders/order-utils.d.ts.map +1 -1
- package/lib/services/orders/order-utils.js +31 -3
- package/lib/services/orders/order-utils.js.map +1 -1
- package/lib/services/orders/submitOrder.d.ts.map +1 -1
- package/lib/services/orders/submitOrder.js +2 -2
- package/lib/services/orders/submitOrder.js.map +1 -1
- package/package.json +9 -9
- package/temp/build/typescript/ts_tQj2bmGB.json +1 -1
- package/temp/package-deps.json +8 -7
- package/temp/test/jest/haste-map-f37bc94525b36254e573de220443d250-dc922b21f2d35e7315abf4c3159e25a5-63b40dbcff306581344a73f9073894a1 +0 -0
- package/temp/test/jest/perf-cache-f37bc94525b36254e573de220443d250-da39a3ee5e6b4b0d3255bfef95601890 +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-type-mapping.test.js","sourceRoot":"","sources":["../../../src/services/orders/order-type-mapping.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { encodePath } from '@yuants/utils';\n\njest.mock('../../api/private-api', () => ({\n getSpotOpenOrders: jest.fn(),\n getUnifiedUmOpenOrders: jest.fn(),\n postSpotOrder: jest.fn(),\n postUmOrder: jest.fn(),\n}));\n\njest.mock('../../api/client', () => ({\n isApiError: jest.fn(() => false),\n}));\n\njest.mock('../trade-history', () => ({\n fetchTradeHistory: jest.fn(),\n}));\n\nimport { getSpotOpenOrders, getUnifiedUmOpenOrders, postSpotOrder, postUmOrder } from '../../api/private-api';\nimport { mapBinanceOrderTypeToYuants, mapOrderTypeToOrdType, mapOrderTypeToTimeInForce } from './order-utils';\nimport { listSpotOrders, listUnifiedUmOrders } from './listOrders';\nimport { submitOrder } from './submitOrder';\n\nconst mockedGetSpotOpenOrders = jest.mocked(getSpotOpenOrders);\nconst mockedGetUnifiedUmOpenOrders = jest.mocked(getUnifiedUmOpenOrders);\nconst mockedPostSpotOrder = jest.mocked(postSpotOrder);\nconst mockedPostUmOrder = jest.mocked(postUmOrder);\n\ndescribe('Binance order type mappings', () => {\n beforeEach(() => {\n jest.resetAllMocks();\n\n mockedPostSpotOrder.mockResolvedValue({\n symbol: 'BTCUSDT',\n orderId: 1,\n clientOrderId: 'spot-order',\n transactTime: 1,\n });\n\n mockedPostUmOrder.mockResolvedValue({\n orderId: 2,\n symbol: 'BTCUSDT',\n status: 'NEW',\n clientOrderId: 'um-order',\n price: '12345',\n avgPrice: '0',\n origQty: '1',\n executedQty: '0',\n cumQty: '0',\n cumQuote: '0',\n timeInForce: 'GTC',\n type: 'LIMIT',\n reduceOnly: false,\n side: 'BUY',\n positionSide: 'LONG',\n selfTradePreventionMode: 'NONE',\n goodTillDate: 0,\n updateTime: 1,\n });\n });\n\n test('maps IOC and FOK order types to Binance LIMIT orders', () => {\n expect(mapOrderTypeToOrdType('IOC')).toBe('LIMIT');\n expect(mapOrderTypeToOrdType('FOK')).toBe('LIMIT');\n });\n\n test('maps Yuan order types to Binance timeInForce values', () => {\n expect(mapOrderTypeToTimeInForce('LIMIT')).toBe('GTC');\n expect(mapOrderTypeToTimeInForce('MAKER')).toBe('GTX');\n expect(mapOrderTypeToTimeInForce('IOC')).toBe('IOC');\n expect(mapOrderTypeToTimeInForce('FOK')).toBe('FOK');\n expect(mapOrderTypeToTimeInForce('MARKET')).toBeUndefined();\n });\n\n test('maps Binance type and timeInForce back to Yuan order types', () => {\n expect(mapBinanceOrderTypeToYuants('MARKET')).toBe('MARKET');\n expect(mapBinanceOrderTypeToYuants('LIMIT', 'GTC')).toBe('LIMIT');\n expect(mapBinanceOrderTypeToYuants('LIMIT', 'GTX')).toBe('MAKER');\n expect(mapBinanceOrderTypeToYuants('LIMIT', 'IOC')).toBe('IOC');\n expect(mapBinanceOrderTypeToYuants('LIMIT', 'FOK')).toBe('FOK');\n });\n\n test.each([\n ['SPOT', 'IOC', 'IOC'],\n ['SPOT', 'FOK', 'FOK'],\n ['USDT-FUTURE', 'IOC', 'IOC'],\n ['USDT-FUTURE', 'FOK', 'FOK'],\n ])('submitOrder sends %s %s orders with timeInForce=%s', async (marketType, orderType, tif) => {\n const productId = encodePath('BINANCE', marketType, 'BTCUSDT');\n\n await expect(\n submitOrder(\n { access_key: 'ak', secret_key: 'sk' },\n {\n account_id: 'BINANCE/test',\n product_id: productId,\n order_type: orderType as 'IOC' | 'FOK',\n order_direction: 'OPEN_LONG',\n volume: 1,\n price: 12345,\n },\n ),\n ).resolves.toEqual({ order_id: marketType === 'SPOT' ? '1' : '2' });\n\n if (marketType === 'SPOT') {\n expect(mockedPostSpotOrder).toHaveBeenCalledWith(\n { access_key: 'ak', secret_key: 'sk' },\n expect.objectContaining({ symbol: 'BTCUSDT', type: 'LIMIT', timeInForce: tif, price: 12345 }),\n );\n return;\n }\n\n expect(mockedPostUmOrder).toHaveBeenCalledWith(\n { access_key: 'ak', secret_key: 'sk' },\n expect.objectContaining({ symbol: 'BTCUSDT', type: 'LIMIT', timeInForce: tif, price: 12345 }),\n );\n });\n\n test('listOrders maps LIMIT+IOC/FOK/GTX readback values correctly', async () => {\n mockedGetSpotOpenOrders.mockResolvedValue([\n {\n symbol: 'BTCUSDT',\n orderId: 11,\n orderListId: -1,\n clientOrderId: 'spot-maker',\n price: '12345',\n origQty: '1',\n executedQty: '0',\n origQuoteOrderQty: '0',\n cummulativeQuoteQty: '0',\n status: 'NEW',\n timeInForce: 'GTX',\n type: 'LIMIT',\n side: 'BUY',\n stopPrice: '0',\n icebergQty: '0',\n time: 1,\n updateTime: 2,\n isWorking: true,\n },\n {\n symbol: 'ETHUSDT',\n orderId: 12,\n orderListId: -1,\n clientOrderId: 'spot-ioc',\n price: '2345',\n origQty: '2',\n executedQty: '0',\n origQuoteOrderQty: '0',\n cummulativeQuoteQty: '0',\n status: 'NEW',\n timeInForce: 'IOC',\n type: 'LIMIT',\n side: 'BUY',\n stopPrice: '0',\n icebergQty: '0',\n time: 3,\n updateTime: 4,\n isWorking: true,\n },\n ]);\n\n mockedGetUnifiedUmOpenOrders.mockResolvedValue([\n {\n avgPrice: '0',\n clientOrderId: 'um-fok',\n cumQuote: '0',\n executedQty: '0',\n orderId: 21,\n origQty: '3',\n origType: 'LIMIT',\n price: '3456',\n reduceOnly: false,\n side: 'SELL',\n positionSide: 'SHORT',\n status: 'NEW',\n symbol: 'BTCUSDT',\n time: 5,\n timeInForce: 'FOK',\n type: 'LIMIT',\n updateTime: 6,\n selfTradePreventionMode: 'NONE',\n goodTillDate: 0,\n },\n ]);\n\n await expect(listSpotOrders({ access_key: 'ak', secret_key: 'sk' })).resolves.toMatchObject([\n { order_id: '11', order_type: 'MAKER' },\n { order_id: '12', order_type: 'IOC' },\n ]);\n\n await expect(listUnifiedUmOrders({ access_key: 'ak', secret_key: 'sk' })).resolves.toMatchObject([\n { order_id: '21', order_type: 'FOK' },\n ]);\n });\n});\n"]}
|
|
@@ -4,7 +4,8 @@ export declare const decodeSpotSymbol: (product_id: string) => string;
|
|
|
4
4
|
export declare const mapOrderDirectionToSide: (direction?: IOrder["order_direction"]) => "BUY" | "SELL";
|
|
5
5
|
export declare const mapOrderDirectionToPositionSide: (direction?: IOrder["order_direction"]) => "LONG" | "SHORT";
|
|
6
6
|
export declare const mapOrderTypeToOrdType: (order_type?: IOrder["order_type"]) => "LIMIT" | "MARKET";
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const mapOrderTypeToTimeInForce: (order_type?: IOrder["order_type"]) => "IOC" | "FOK" | "GTC" | "GTX" | undefined;
|
|
8
|
+
export declare const mapBinanceOrderTypeToYuants: (binanceType?: string, timeInForce?: string) => IOrder["order_type"];
|
|
8
9
|
export declare const mapBinanceSideToYuantsDirection: (side?: string, positionSide?: string) => IOrder["order_direction"] | undefined;
|
|
9
10
|
export declare const mapSpotSideToOrderDirection: (side?: string) => IOrder["order_direction"];
|
|
10
11
|
export declare const deriveClientOrderId: (order: IOrder) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-utils.d.ts","sourceRoot":"","sources":["../../../src/services/orders/order-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,WAiBpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,WAsBlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,CAAC,iBAAiB,CAAC,mBAW5E,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAI,YAAY,MAAM,CAAC,iBAAiB,CAAC,qBAWpF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,MAAM,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"order-utils.d.ts","sourceRoot":"","sources":["../../../src/services/orders/order-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,WAiBpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,WAsBlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,CAAC,iBAAiB,CAAC,mBAW5E,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAI,YAAY,MAAM,CAAC,iBAAiB,CAAC,qBAWpF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,MAAM,CAAC,YAAY,CAAC,uBAYtE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,CAAC,YAAY,CAAC,8CAe1E,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,cAAc,MAAM,EACpB,cAAc,MAAM,KACnB,MAAM,CAAC,YAAY,CAkBrB,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,OAAO,MAAM,EACb,eAAe,MAAM,KACpB,MAAM,CAAC,iBAAiB,CAAC,GAAG,SAW9B,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,iBAAiB,CAKnF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,WAWhD,CAAC;AAcF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAAM,CAAC,cAAc,CAG5E,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapBinanceOrderStatus = exports.deriveClientOrderId = exports.mapSpotSideToOrderDirection = exports.mapBinanceSideToYuantsDirection = exports.mapBinanceOrderTypeToYuants = exports.mapOrderTypeToOrdType = exports.mapOrderDirectionToPositionSide = exports.mapOrderDirectionToSide = exports.decodeSpotSymbol = exports.decodeFutureSymbol = void 0;
|
|
3
|
+
exports.mapBinanceOrderStatus = exports.deriveClientOrderId = exports.mapSpotSideToOrderDirection = exports.mapBinanceSideToYuantsDirection = exports.mapBinanceOrderTypeToYuants = exports.mapOrderTypeToTimeInForce = exports.mapOrderTypeToOrdType = exports.mapOrderDirectionToPositionSide = exports.mapOrderDirectionToSide = exports.decodeSpotSymbol = exports.decodeFutureSymbol = void 0;
|
|
4
4
|
const utils_1 = require("@yuants/utils");
|
|
5
5
|
const crypto_1 = require("crypto");
|
|
6
6
|
const decodeFutureSymbol = (product_id) => {
|
|
@@ -79,6 +79,8 @@ const mapOrderTypeToOrdType = (order_type) => {
|
|
|
79
79
|
switch (order_type) {
|
|
80
80
|
case 'LIMIT':
|
|
81
81
|
case 'MAKER':
|
|
82
|
+
case 'IOC':
|
|
83
|
+
case 'FOK':
|
|
82
84
|
return 'LIMIT';
|
|
83
85
|
case 'MARKET':
|
|
84
86
|
return 'MARKET';
|
|
@@ -87,10 +89,36 @@ const mapOrderTypeToOrdType = (order_type) => {
|
|
|
87
89
|
}
|
|
88
90
|
};
|
|
89
91
|
exports.mapOrderTypeToOrdType = mapOrderTypeToOrdType;
|
|
90
|
-
const
|
|
92
|
+
const mapOrderTypeToTimeInForce = (order_type) => {
|
|
93
|
+
switch (order_type) {
|
|
94
|
+
case 'LIMIT':
|
|
95
|
+
return 'GTC';
|
|
96
|
+
case 'MAKER':
|
|
97
|
+
return 'GTX';
|
|
98
|
+
case 'IOC':
|
|
99
|
+
return 'IOC';
|
|
100
|
+
case 'FOK':
|
|
101
|
+
return 'FOK';
|
|
102
|
+
case 'MARKET':
|
|
103
|
+
return undefined;
|
|
104
|
+
default:
|
|
105
|
+
throw new Error(`Unsupported order_type: ${order_type}`);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
exports.mapOrderTypeToTimeInForce = mapOrderTypeToTimeInForce;
|
|
109
|
+
const mapBinanceOrderTypeToYuants = (binanceType, timeInForce) => {
|
|
91
110
|
switch (binanceType) {
|
|
92
111
|
case 'LIMIT':
|
|
93
|
-
|
|
112
|
+
switch (timeInForce) {
|
|
113
|
+
case 'GTX':
|
|
114
|
+
return 'MAKER';
|
|
115
|
+
case 'IOC':
|
|
116
|
+
return 'IOC';
|
|
117
|
+
case 'FOK':
|
|
118
|
+
return 'FOK';
|
|
119
|
+
default:
|
|
120
|
+
return 'LIMIT';
|
|
121
|
+
}
|
|
94
122
|
case 'MARKET':
|
|
95
123
|
return 'MARKET';
|
|
96
124
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-utils.js","sourceRoot":"","sources":["../../../src/services/orders/order-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOrder } from '@yuants/data-order';\nimport { decodePath } from '@yuants/utils';\nimport { createHash } from 'crypto';\n\nexport const decodeFutureSymbol = (product_id: string) => {\n const parts = decodePath(product_id);\n // Support both old format (usdt-future/symbol) and new format (BINANCE/USDT-FUTURE/symbol)\n if (parts.length === 2) {\n const [instType, symbol] = parts;\n if (instType !== 'usdt-future' || !symbol) {\n throw new Error(`Unsupported product_id for Binance futures: ${product_id}`);\n }\n return symbol;\n } else if (parts.length === 3) {\n const [datasource, instType, symbol] = parts;\n if (datasource !== 'BINANCE' || instType !== 'USDT-FUTURE' || !symbol) {\n throw new Error(`Unsupported product_id for Binance futures: ${product_id}`);\n }\n return symbol;\n }\n throw new Error(`Unsupported product_id for Binance futures: ${product_id}`);\n};\n\nexport const decodeSpotSymbol = (product_id: string) => {\n try {\n const parts = decodePath(product_id);\n // Support both old format (spot/symbol) and new format (BINANCE/SPOT/symbol)\n if (parts.length === 2) {\n const [instType, symbol] = parts;\n if (instType?.toLowerCase() === 'spot' && symbol) {\n return symbol;\n }\n } else if (parts.length === 3) {\n const [datasource, instType, symbol] = parts;\n if (datasource === 'BINANCE' && instType === 'SPOT' && symbol) {\n return symbol;\n }\n }\n } catch (err) {\n // ignore decode errors and fall back to raw product id\n }\n if (!product_id.includes('/')) {\n return product_id;\n }\n throw new Error(`Unsupported product_id for Binance spot: ${product_id}`);\n};\n\nexport const mapOrderDirectionToSide = (direction?: IOrder['order_direction']) => {\n switch (direction) {\n case 'OPEN_LONG':\n case 'CLOSE_SHORT':\n return 'BUY';\n case 'OPEN_SHORT':\n case 'CLOSE_LONG':\n return 'SELL';\n default:\n throw new Error(`Unsupported order_direction: ${direction}`);\n }\n};\n\nexport const mapOrderDirectionToPositionSide = (direction?: IOrder['order_direction']) => {\n switch (direction) {\n case 'OPEN_LONG':\n case 'CLOSE_LONG':\n return 'LONG';\n case 'OPEN_SHORT':\n case 'CLOSE_SHORT':\n return 'SHORT';\n default:\n throw new Error(`Unsupported order_direction for positionSide: ${direction}`);\n }\n};\n\nexport const mapOrderTypeToOrdType = (order_type?: IOrder['order_type']) => {\n switch (order_type) {\n case 'LIMIT':\n case 'MAKER':\n return 'LIMIT';\n case 'MARKET':\n return 'MARKET';\n default:\n throw new Error(`Unsupported order_type: ${order_type}`);\n }\n};\n\nexport const mapBinanceOrderTypeToYuants = (binanceType?: string): IOrder['order_type'] => {\n switch (binanceType) {\n case 'LIMIT':\n return 'LIMIT';\n case 'MARKET':\n return 'MARKET';\n default:\n return 'LIMIT';\n }\n};\n\nexport const mapBinanceSideToYuantsDirection = (\n side?: string,\n positionSide?: string,\n): IOrder['order_direction'] | undefined => {\n if (!side || !positionSide) {\n return undefined;\n }\n if (positionSide === 'LONG') {\n return side === 'BUY' ? 'OPEN_LONG' : 'CLOSE_LONG';\n }\n if (positionSide === 'SHORT') {\n return side === 'SELL' ? 'OPEN_SHORT' : 'CLOSE_SHORT';\n }\n return undefined;\n};\n\nexport const mapSpotSideToOrderDirection = (side?: string): IOrder['order_direction'] => {\n if (side === 'SELL') {\n return 'CLOSE_LONG';\n }\n return 'OPEN_LONG';\n};\n\nexport const deriveClientOrderId = (order: IOrder) => {\n if (order.order_id) return `${order.order_id}`;\n const payload = JSON.stringify({\n account_id: order.account_id,\n product_id: order.product_id,\n order_direction: order.order_direction,\n order_type: order.order_type,\n price: order.price,\n volume: order.volume,\n });\n return `YUANTS${createHash('sha256').update(payload).digest('hex').slice(0, 24)}`;\n};\n\nconst BinanceOrderStatusMap: Record<string, IOrder['order_status']> = {\n NEW: 'ACCEPTED',\n PARTIALLY_FILLED: 'TRADED',\n FILLED: 'TRADED',\n PENDING_NEW: 'ACCEPTED',\n PENDING_CANCEL: 'CANCELLED',\n CANCELED: 'CANCELLED',\n CANCELLED: 'CANCELLED',\n REJECTED: 'CANCELLED',\n EXPIRED: 'CANCELLED',\n};\n\nexport const mapBinanceOrderStatus = (status?: string): IOrder['order_status'] => {\n if (!status) return 'ACCEPTED';\n return BinanceOrderStatusMap[status] ?? 'ACCEPTED';\n};\n"]}
|
|
1
|
+
{"version":3,"file":"order-utils.js","sourceRoot":"","sources":["../../../src/services/orders/order-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOrder } from '@yuants/data-order';\nimport { decodePath } from '@yuants/utils';\nimport { createHash } from 'crypto';\n\nexport const decodeFutureSymbol = (product_id: string) => {\n const parts = decodePath(product_id);\n // Support both old format (usdt-future/symbol) and new format (BINANCE/USDT-FUTURE/symbol)\n if (parts.length === 2) {\n const [instType, symbol] = parts;\n if (instType !== 'usdt-future' || !symbol) {\n throw new Error(`Unsupported product_id for Binance futures: ${product_id}`);\n }\n return symbol;\n } else if (parts.length === 3) {\n const [datasource, instType, symbol] = parts;\n if (datasource !== 'BINANCE' || instType !== 'USDT-FUTURE' || !symbol) {\n throw new Error(`Unsupported product_id for Binance futures: ${product_id}`);\n }\n return symbol;\n }\n throw new Error(`Unsupported product_id for Binance futures: ${product_id}`);\n};\n\nexport const decodeSpotSymbol = (product_id: string) => {\n try {\n const parts = decodePath(product_id);\n // Support both old format (spot/symbol) and new format (BINANCE/SPOT/symbol)\n if (parts.length === 2) {\n const [instType, symbol] = parts;\n if (instType?.toLowerCase() === 'spot' && symbol) {\n return symbol;\n }\n } else if (parts.length === 3) {\n const [datasource, instType, symbol] = parts;\n if (datasource === 'BINANCE' && instType === 'SPOT' && symbol) {\n return symbol;\n }\n }\n } catch (err) {\n // ignore decode errors and fall back to raw product id\n }\n if (!product_id.includes('/')) {\n return product_id;\n }\n throw new Error(`Unsupported product_id for Binance spot: ${product_id}`);\n};\n\nexport const mapOrderDirectionToSide = (direction?: IOrder['order_direction']) => {\n switch (direction) {\n case 'OPEN_LONG':\n case 'CLOSE_SHORT':\n return 'BUY';\n case 'OPEN_SHORT':\n case 'CLOSE_LONG':\n return 'SELL';\n default:\n throw new Error(`Unsupported order_direction: ${direction}`);\n }\n};\n\nexport const mapOrderDirectionToPositionSide = (direction?: IOrder['order_direction']) => {\n switch (direction) {\n case 'OPEN_LONG':\n case 'CLOSE_LONG':\n return 'LONG';\n case 'OPEN_SHORT':\n case 'CLOSE_SHORT':\n return 'SHORT';\n default:\n throw new Error(`Unsupported order_direction for positionSide: ${direction}`);\n }\n};\n\nexport const mapOrderTypeToOrdType = (order_type?: IOrder['order_type']) => {\n switch (order_type) {\n case 'LIMIT':\n case 'MAKER':\n case 'IOC':\n case 'FOK':\n return 'LIMIT';\n case 'MARKET':\n return 'MARKET';\n default:\n throw new Error(`Unsupported order_type: ${order_type}`);\n }\n};\n\nexport const mapOrderTypeToTimeInForce = (order_type?: IOrder['order_type']) => {\n switch (order_type) {\n case 'LIMIT':\n return 'GTC';\n case 'MAKER':\n return 'GTX';\n case 'IOC':\n return 'IOC';\n case 'FOK':\n return 'FOK';\n case 'MARKET':\n return undefined;\n default:\n throw new Error(`Unsupported order_type: ${order_type}`);\n }\n};\n\nexport const mapBinanceOrderTypeToYuants = (\n binanceType?: string,\n timeInForce?: string,\n): IOrder['order_type'] => {\n switch (binanceType) {\n case 'LIMIT':\n switch (timeInForce) {\n case 'GTX':\n return 'MAKER';\n case 'IOC':\n return 'IOC';\n case 'FOK':\n return 'FOK';\n default:\n return 'LIMIT';\n }\n case 'MARKET':\n return 'MARKET';\n default:\n return 'LIMIT';\n }\n};\n\nexport const mapBinanceSideToYuantsDirection = (\n side?: string,\n positionSide?: string,\n): IOrder['order_direction'] | undefined => {\n if (!side || !positionSide) {\n return undefined;\n }\n if (positionSide === 'LONG') {\n return side === 'BUY' ? 'OPEN_LONG' : 'CLOSE_LONG';\n }\n if (positionSide === 'SHORT') {\n return side === 'SELL' ? 'OPEN_SHORT' : 'CLOSE_SHORT';\n }\n return undefined;\n};\n\nexport const mapSpotSideToOrderDirection = (side?: string): IOrder['order_direction'] => {\n if (side === 'SELL') {\n return 'CLOSE_LONG';\n }\n return 'OPEN_LONG';\n};\n\nexport const deriveClientOrderId = (order: IOrder) => {\n if (order.order_id) return `${order.order_id}`;\n const payload = JSON.stringify({\n account_id: order.account_id,\n product_id: order.product_id,\n order_direction: order.order_direction,\n order_type: order.order_type,\n price: order.price,\n volume: order.volume,\n });\n return `YUANTS${createHash('sha256').update(payload).digest('hex').slice(0, 24)}`;\n};\n\nconst BinanceOrderStatusMap: Record<string, IOrder['order_status']> = {\n NEW: 'ACCEPTED',\n PARTIALLY_FILLED: 'TRADED',\n FILLED: 'TRADED',\n PENDING_NEW: 'ACCEPTED',\n PENDING_CANCEL: 'CANCELLED',\n CANCELED: 'CANCELLED',\n CANCELLED: 'CANCELLED',\n REJECTED: 'CANCELLED',\n EXPIRED: 'CANCELLED',\n};\n\nexport const mapBinanceOrderStatus = (status?: string): IOrder['order_status'] => {\n if (!status) return 'ACCEPTED';\n return BinanceOrderStatusMap[status] ?? 'ACCEPTED';\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAA8B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAA8B,MAAM,uBAAuB,CAAC;AAoFhF,eAAO,MAAM,WAAW,EAAE,2BAA2B,CAAC,WAAW,CAWhE,CAAC"}
|
|
@@ -16,7 +16,7 @@ const submitUnifiedOrder = async (credential, order) => {
|
|
|
16
16
|
const side = (0, order_utils_1.mapOrderDirectionToSide)(order.order_direction);
|
|
17
17
|
const positionSide = isSingleSideMode ? undefined : (0, order_utils_1.mapOrderDirectionToPositionSide)(order.order_direction);
|
|
18
18
|
const type = (0, order_utils_1.mapOrderTypeToOrdType)(order.order_type);
|
|
19
|
-
const timeInForce =
|
|
19
|
+
const timeInForce = (0, order_utils_1.mapOrderTypeToTimeInForce)(order.order_type);
|
|
20
20
|
const reduceOnly = isSingleSideMode
|
|
21
21
|
? order.order_direction === 'CLOSE_LONG' || order.order_direction === 'CLOSE_SHORT'
|
|
22
22
|
? 'true'
|
|
@@ -48,7 +48,7 @@ const submitSpotOrder = async (credential, order) => {
|
|
|
48
48
|
}
|
|
49
49
|
const side = (0, order_utils_1.mapOrderDirectionToSide)(order.order_direction);
|
|
50
50
|
const type = (0, order_utils_1.mapOrderTypeToOrdType)(order.order_type);
|
|
51
|
-
const timeInForce =
|
|
51
|
+
const timeInForce = (0, order_utils_1.mapOrderTypeToTimeInForce)(order.order_type);
|
|
52
52
|
const params = {
|
|
53
53
|
symbol,
|
|
54
54
|
side,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":";;;AACA,yCAAqD;AACrD,6CAA8C;AAC9C,uDAAgF;AAChF,+
|
|
1
|
+
{"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":"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","sourcesContent":["import { IActionHandlerOfSubmitOrder } from '@yuants/data-order';\nimport { decodePath, newError } from '@yuants/utils';\nimport { isApiError } from '../../api/client';\nimport { ICredential, postSpotOrder, postUmOrder } from '../../api/private-api';\nimport {\n decodeFutureSymbol,\n decodeSpotSymbol,\n deriveClientOrderId,\n mapOrderDirectionToPositionSide,\n mapOrderDirectionToSide,\n mapOrderTypeToOrdType,\n mapOrderTypeToTimeInForce,\n} from './order-utils';\nimport { fetchTradeHistory } from '../trade-history';\n\nconst submitUnifiedOrder: IActionHandlerOfSubmitOrder<ICredential> = async (credential, order) => {\n const symbol = decodeFutureSymbol(order.product_id);\n if (!order.volume) {\n throw new Error('Binance submitOrder requires order.volume to be set');\n }\n // 单向持仓模式 (single side mode) 下\n const isSingleSideMode = false; // TODO: fetch from account info API and cache it\n const side = mapOrderDirectionToSide(order.order_direction);\n const positionSide = isSingleSideMode ? undefined : mapOrderDirectionToPositionSide(order.order_direction);\n const type = mapOrderTypeToOrdType(order.order_type);\n const timeInForce = mapOrderTypeToTimeInForce(order.order_type);\n const reduceOnly = isSingleSideMode\n ? order.order_direction === 'CLOSE_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? 'true'\n : undefined\n : undefined;\n\n const res = await postUmOrder(credential, {\n symbol,\n side,\n positionSide,\n type,\n quantity: order.volume,\n price: order.price,\n timeInForce,\n reduceOnly,\n newClientOrderId: deriveClientOrderId(order),\n });\n if (isApiError(res)) {\n throw new Error(`Binance submit unified order failed: ${res.code} ${res.msg}`);\n }\n if (type === 'MARKET') {\n fetchTradeHistory(credential, order.product_id, symbol);\n }\n return { order_id: `${res.orderId}` };\n};\n\nconst submitSpotOrder: IActionHandlerOfSubmitOrder<ICredential> = async (credential, order) => {\n const symbol = decodeSpotSymbol(order.product_id);\n if (!order.volume) {\n throw new Error('Binance submitOrder requires order.volume to be set');\n }\n const side = mapOrderDirectionToSide(order.order_direction);\n const type = mapOrderTypeToOrdType(order.order_type);\n const timeInForce = mapOrderTypeToTimeInForce(order.order_type);\n const params: Parameters<typeof postSpotOrder>[1] = {\n symbol,\n side,\n type,\n quantity: order.volume,\n newClientOrderId: deriveClientOrderId(order),\n };\n if (type === 'LIMIT') {\n if (order.price === undefined) {\n throw new Error('Binance spot LIMIT order requires price');\n }\n params.price = order.price;\n params.timeInForce = timeInForce;\n }\n if (order.price !== undefined && type === 'MARKET') {\n params.price = order.price;\n }\n const res = await postSpotOrder(credential, params);\n if (isApiError(res)) {\n throw new Error(`Binance submit spot order failed: ${res.code} ${res.msg}`);\n }\n if (type === 'MARKET') {\n fetchTradeHistory(credential, order.product_id, symbol);\n }\n return { order_id: `${res.orderId}` };\n};\n\nexport const submitOrder: IActionHandlerOfSubmitOrder<ICredential> = async (credential, order) => {\n const [, TYPE] = decodePath(order.product_id);\n\n if (TYPE === 'USDT-FUTURE') {\n return submitUnifiedOrder(credential, order);\n }\n if (TYPE === 'SPOT') {\n return submitSpotOrder(credential, order);\n }\n\n throw newError('BINANCE_SUBMIT_ORDER_UNSUPPORTED_PRODUCT_TYPE', { order });\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuants/vendor-binance",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.14",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -9,21 +9,21 @@
|
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"rxjs": "~7.5.6",
|
|
12
|
-
"@yuants/protocol": "0.55.0",
|
|
13
12
|
"@yuants/data-account": "0.11.12",
|
|
14
|
-
"@yuants/
|
|
13
|
+
"@yuants/protocol": "0.55.0",
|
|
15
14
|
"@yuants/cache": "0.3.15",
|
|
16
|
-
"@yuants/
|
|
15
|
+
"@yuants/data-quote": "0.4.12",
|
|
17
16
|
"@yuants/data-series": "0.3.65",
|
|
17
|
+
"@yuants/utils": "0.19.7",
|
|
18
18
|
"@yuants/sql": "0.9.43",
|
|
19
|
-
"@yuants/data-ohlc": "0.6.8",
|
|
20
19
|
"@yuants/data-product": "0.5.13",
|
|
21
|
-
"@yuants/data-
|
|
22
|
-
"@yuants/data-interest-rate": "0.2.13",
|
|
20
|
+
"@yuants/data-ohlc": "0.6.8",
|
|
23
21
|
"@yuants/transfer": "0.2.52",
|
|
22
|
+
"@yuants/data-interest-rate": "0.2.13",
|
|
23
|
+
"@yuants/data-order": "0.7.13",
|
|
24
24
|
"@yuants/exchange": "0.8.23",
|
|
25
|
-
"@yuants/
|
|
26
|
-
"@yuants/
|
|
25
|
+
"@yuants/data-trade": "0.1.38",
|
|
26
|
+
"@yuants/http-services": "0.5.3"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@microsoft/api-extractor": "~7.55.2",
|