@yuants/vendor-turboflow 1.2.8 → 1.2.9

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.
@@ -9,15 +9,15 @@
9
9
  {"kind":"O","text":" ---- Pre-compile finished (0ms) ---- \n"}
10
10
  {"kind":"O","text":" ---- Compile started ---- \n"}
11
11
  {"kind":"O","text":"[typescript] Using TypeScript version 4.7.4\n"}
12
- {"kind":"O","text":" ---- Compile finished (4181ms) ---- \n"}
12
+ {"kind":"O","text":" ---- Compile finished (1555ms) ---- \n"}
13
13
  {"kind":"O","text":" ---- Bundle started ---- \n"}
14
14
  {"kind":"O","text":" ---- Bundle finished (1ms) ---- \n"}
15
15
  {"kind":"O","text":" ---- Post-build started ---- \n"}
16
16
  {"kind":"O","text":" ---- Post-build finished (0ms) ---- \n"}
17
17
  {"kind":"O","text":" ---- Test started ---- \n"}
18
- {"kind":"O","text":" ---- Test finished (3ms) ---- \n"}
19
- {"kind":"O","text":"-------------------- Finished (4.562s) --------------------\n"}
20
- {"kind":"O","text":"Project: @yuants/vendor-turboflow@1.2.8\n"}
18
+ {"kind":"O","text":" ---- Test finished (1ms) ---- \n"}
19
+ {"kind":"O","text":"-------------------- Finished (1.857s) --------------------\n"}
20
+ {"kind":"O","text":"Project: @yuants/vendor-turboflow@1.2.9\n"}
21
21
  {"kind":"O","text":"Heft version: 0.47.11\n"}
22
22
  {"kind":"O","text":"Node version: v22.14.0\n"}
23
- {"kind":"O","text":"2025-12-03T18:21:53.580Z no Dockerfile found, skip building docker image\n"}
23
+ {"kind":"O","text":"2025-12-04T03:12:53.643Z no Dockerfile found, skip building docker image\n"}
@@ -9,15 +9,15 @@ Starting test
9
9
  ---- Pre-compile finished (0ms) ----
10
10
  ---- Compile started ----
11
11
  [typescript] Using TypeScript version 4.7.4
12
- ---- Compile finished (4181ms) ----
12
+ ---- Compile finished (1555ms) ----
13
13
  ---- Bundle started ----
14
14
  ---- Bundle finished (1ms) ----
15
15
  ---- Post-build started ----
16
16
  ---- Post-build finished (0ms) ----
17
17
  ---- Test started ----
18
- ---- Test finished (3ms) ----
19
- -------------------- Finished (4.562s) --------------------
20
- Project: @yuants/vendor-turboflow@1.2.8
18
+ ---- Test finished (1ms) ----
19
+ -------------------- Finished (1.857s) --------------------
20
+ Project: @yuants/vendor-turboflow@1.2.9
21
21
  Heft version: 0.47.11
22
22
  Node version: v22.14.0
23
- 2025-12-03T18:21:53.580Z no Dockerfile found, skip building docker image
23
+ 2025-12-04T03:12:53.643Z no Dockerfile found, skip building docker image
@@ -9,15 +9,15 @@
9
9
  {"kind":"O","text":" ---- Pre-compile finished (0ms) ---- \n"}
10
10
  {"kind":"O","text":" ---- Compile started ---- \n"}
11
11
  {"kind":"O","text":"[typescript] Using TypeScript version 4.7.4\n"}
12
- {"kind":"O","text":" ---- Compile finished (4181ms) ---- \n"}
12
+ {"kind":"O","text":" ---- Compile finished (1555ms) ---- \n"}
13
13
  {"kind":"O","text":" ---- Bundle started ---- \n"}
14
14
  {"kind":"O","text":" ---- Bundle finished (1ms) ---- \n"}
15
15
  {"kind":"O","text":" ---- Post-build started ---- \n"}
16
16
  {"kind":"O","text":" ---- Post-build finished (0ms) ---- \n"}
17
17
  {"kind":"O","text":" ---- Test started ---- \n"}
18
- {"kind":"O","text":" ---- Test finished (3ms) ---- \n"}
19
- {"kind":"O","text":"-------------------- Finished (4.562s) --------------------\n"}
20
- {"kind":"O","text":"Project: @yuants/vendor-turboflow@1.2.8\n"}
18
+ {"kind":"O","text":" ---- Test finished (1ms) ---- \n"}
19
+ {"kind":"O","text":"-------------------- Finished (1.857s) --------------------\n"}
20
+ {"kind":"O","text":"Project: @yuants/vendor-turboflow@1.2.9\n"}
21
21
  {"kind":"O","text":"Heft version: 0.47.11\n"}
22
22
  {"kind":"O","text":"Node version: v22.14.0\n"}
23
- {"kind":"O","text":"2025-12-03T18:21:53.580Z no Dockerfile found, skip building docker image\n"}
23
+ {"kind":"O","text":"2025-12-04T03:12:53.643Z no Dockerfile found, skip building docker image\n"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "nonCachedDurationMs": 6366.671459000001
2
+ "nonCachedDurationMs": 2564.4591490000003
3
3
  }
package/CHANGELOG.json CHANGED
@@ -1,6 +1,23 @@
1
1
  {
2
2
  "name": "@yuants/vendor-turboflow",
3
3
  "entries": [
4
+ {
5
+ "version": "1.2.9",
6
+ "tag": "@yuants/vendor-turboflow_v1.2.9",
7
+ "date": "Thu, 04 Dec 2025 03:10:55 GMT",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "comment": "fix close position"
12
+ }
13
+ ],
14
+ "none": [
15
+ {
16
+ "comment": "Bump Version"
17
+ }
18
+ ]
19
+ }
20
+ },
4
21
  {
5
22
  "version": "1.2.8",
6
23
  "tag": "@yuants/vendor-turboflow_v1.2.8",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @yuants/vendor-turboflow
2
2
 
3
- This log was last generated on Wed, 03 Dec 2025 18:20:00 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 04 Dec 2025 03:10:55 GMT and should not be manually modified.
4
+
5
+ ## 1.2.9
6
+ Thu, 04 Dec 2025 03:10:55 GMT
7
+
8
+ ### Patches
9
+
10
+ - fix close position
4
11
 
5
12
  ## 1.2.8
6
13
  Wed, 03 Dec 2025 18:20:00 GMT
@@ -1 +1 @@
1
- {"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAiC,MAAM,uBAAuB,CAAC;AAEnF,eAAO,MAAM,WAAW,eAAsB,WAAW,SAAS,MAAM,KAAG,QAAQ;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAqEtG,CAAC"}
1
+ {"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAiC,MAAM,uBAAuB,CAAC;AAEnF,eAAO,MAAM,WAAW,eAAsB,WAAW,SAAS,MAAM,KAAG,QAAQ;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAsEtG,CAAC"}
@@ -45,7 +45,8 @@ const submitOrder = async (credential, order) => {
45
45
  const leverage = order.volume > 100 ? 100 : Math.floor(order.volume);
46
46
  // 开仓时,保证金不得低于 1 USDC
47
47
  const vol = order.order_direction.includes('OPEN') ? order.volume / leverage : undefined; // usdc 保证金数量
48
- const size = order.order_direction.includes('CLOSE') ? order.volume.toString() : undefined; // 头寸名义价值
48
+ // 平仓时,剩余小于 1 USDC 时会自动平仓
49
+ const size = order.order_direction.includes('CLOSE') ? Math.floor(order.volume).toString() : undefined; // 头寸名义价值
49
50
  const response = await (0, private_api_1.submitOrder)(credential, {
50
51
  request_id: Date.now(),
51
52
  pair_id,
@@ -1 +1 @@
1
- {"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":";;;AACA,yCAAqD;AACrD,uDAAmF;AAE5E,MAAM,WAAW,GAAG,KAAK,EAAE,UAAuB,EAAE,KAAa,EAAiC,EAAE;;IACzG,kCAAkC;IAClC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE/D,+CAA+C;IAC/C,iFAAiF;IACjF,IAAI,SAAwB,CAAC;IAC7B,QAAQ,KAAK,CAAC,eAAe,EAAE;QAC7B,KAAK,WAAW;YACd,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,KAAK,aAAa;YAChB,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,KAAK,YAAY;YACf,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,KAAK,YAAY;YACf,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;KAC5E;IAED,uBAAuB;IACvB,IAAI,UAA6D,CAAC;IAClE,QAAQ,KAAK,CAAC,UAAU,EAAE;QACxB,KAAK,OAAO;YACV,UAAU,GAAG,OAAO,CAAC;YACrB,MAAM;QACR,KAAK,QAAQ;YACX,UAAU,GAAG,QAAQ,CAAC;YACtB,MAAM;QACR;YACE,UAAU,GAAG,OAAO,CAAC;KACxB;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,IAAA,gBAAQ,EAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KACxE;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,qBAAqB;IACrB,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa;IACvG,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;IAErG,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAc,EAAC,UAAU,EAAE;QAChD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,OAAO;QACP,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,GAAG;QACd,UAAU;QACV,SAAS;QACT,WAAW,EAAE,CAAC;QACd,QAAQ;QACR,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,KAAc;QAC7B,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAU;QACtB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,0CAAE,QAAQ,EAAE;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAC;IAEH,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,KAAK,CAAA;QAAE,MAAM,IAAA,gBAAQ,EAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAC9C,CAAC,CAAC;AArEW,QAAA,WAAW,eAqEtB","sourcesContent":["import { IOrder } from '@yuants/data-order';\nimport { decodePath, newError } from '@yuants/utils';\nimport { ICredential, submitOrder as submitOrderApi } from '../../api/private-api';\n\nexport const submitOrder = async (credential: ICredential, order: IOrder): Promise<{ order_id: string }> => {\n // Parse product_id to get pair_id\n const [, _SWAP, _NAME, pair_id] = decodePath(order.product_id);\n\n // Determine order_way based on order_direction\n // 1: 开多 (Open Long), 2: 平空 (Close Short), 3: 开空 (Open Short), 4: 平多 (Close Long)\n let order_way: 1 | 2 | 3 | 4;\n switch (order.order_direction) {\n case 'OPEN_LONG':\n order_way = 1;\n break;\n case 'CLOSE_SHORT':\n order_way = 2;\n break;\n case 'OPEN_SHORT':\n order_way = 3;\n break;\n case 'CLOSE_LONG':\n order_way = 4;\n break;\n default:\n throw new Error(`Unsupported order direction: ${order.order_direction}`);\n }\n\n // Determine order_type\n let order_type: 'limit' | 'market' | 'stop_limit' | 'stop_market';\n switch (order.order_type) {\n case 'LIMIT':\n order_type = 'limit';\n break;\n case 'MARKET':\n order_type = 'market';\n break;\n default:\n order_type = 'limit';\n }\n\n if (order.volume < 1) {\n throw newError('TURBOFLOW_MIN_ORDER_VOLUME', { volume: order.volume });\n }\n\n // Build the order request\n const leverage = order.volume > 100 ? 100 : Math.floor(order.volume);\n // 开仓时,保证金不得低于 1 USDC\n const vol = order.order_direction.includes('OPEN') ? order.volume / leverage : undefined; // usdc 保证金数量\n const size = order.order_direction.includes('CLOSE') ? order.volume.toString() : undefined; // 头寸名义价值\n\n const response = await submitOrderApi(credential, {\n request_id: Date.now(),\n pair_id,\n pool_id: 2, // usdc\n coin_code: '2', // usdc\n order_type,\n order_way,\n margin_type: 2, // Default to cross margin\n leverage,\n vol: vol, // usdc 保证金数量\n size: size, // 头寸名义价值\n position_mode: 1, // Default to one-way\n time_in_force: 'GTC' as const,\n fee_mode: 1,\n order_mode: 1 as const, // Normal order\n price: order.price?.toString(),\n position_id: order.position_id,\n });\n\n if (!response.data?.order) throw newError('TURBOFLOW_SUBMIT_ORDER_FAILED', { response });\n\n return { order_id: response.data.order.id };\n};\n"]}
1
+ {"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":";;;AACA,yCAAkE;AAClE,uDAAmF;AAE5E,MAAM,WAAW,GAAG,KAAK,EAAE,UAAuB,EAAE,KAAa,EAAiC,EAAE;;IACzG,kCAAkC;IAClC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE/D,+CAA+C;IAC/C,iFAAiF;IACjF,IAAI,SAAwB,CAAC;IAC7B,QAAQ,KAAK,CAAC,eAAe,EAAE;QAC7B,KAAK,WAAW;YACd,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,KAAK,aAAa;YAChB,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,KAAK,YAAY;YACf,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,KAAK,YAAY;YACf,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;KAC5E;IAED,uBAAuB;IACvB,IAAI,UAA6D,CAAC;IAClE,QAAQ,KAAK,CAAC,UAAU,EAAE;QACxB,KAAK,OAAO;YACV,UAAU,GAAG,OAAO,CAAC;YACrB,MAAM;QACR,KAAK,QAAQ;YACX,UAAU,GAAG,QAAQ,CAAC;YACtB,MAAM;QACR;YACE,UAAU,GAAG,OAAO,CAAC;KACxB;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,IAAA,gBAAQ,EAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KACxE;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,qBAAqB;IACrB,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa;IACvG,yBAAyB;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;IAEjH,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAc,EAAC,UAAU,EAAE;QAChD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,OAAO;QACP,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,GAAG;QACd,UAAU;QACV,SAAS;QACT,WAAW,EAAE,CAAC;QACd,QAAQ;QACR,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,KAAc;QAC7B,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAU;QACtB,KAAK,EAAE,MAAA,KAAK,CAAC,KAAK,0CAAE,QAAQ,EAAE;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAC;IAEH,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,KAAK,CAAA;QAAE,MAAM,IAAA,gBAAQ,EAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAC9C,CAAC,CAAC;AAtEW,QAAA,WAAW,eAsEtB","sourcesContent":["import { IOrder } from '@yuants/data-order';\nimport { decodePath, newError, roundToStep } from '@yuants/utils';\nimport { ICredential, submitOrder as submitOrderApi } from '../../api/private-api';\n\nexport const submitOrder = async (credential: ICredential, order: IOrder): Promise<{ order_id: string }> => {\n // Parse product_id to get pair_id\n const [, _SWAP, _NAME, pair_id] = decodePath(order.product_id);\n\n // Determine order_way based on order_direction\n // 1: 开多 (Open Long), 2: 平空 (Close Short), 3: 开空 (Open Short), 4: 平多 (Close Long)\n let order_way: 1 | 2 | 3 | 4;\n switch (order.order_direction) {\n case 'OPEN_LONG':\n order_way = 1;\n break;\n case 'CLOSE_SHORT':\n order_way = 2;\n break;\n case 'OPEN_SHORT':\n order_way = 3;\n break;\n case 'CLOSE_LONG':\n order_way = 4;\n break;\n default:\n throw new Error(`Unsupported order direction: ${order.order_direction}`);\n }\n\n // Determine order_type\n let order_type: 'limit' | 'market' | 'stop_limit' | 'stop_market';\n switch (order.order_type) {\n case 'LIMIT':\n order_type = 'limit';\n break;\n case 'MARKET':\n order_type = 'market';\n break;\n default:\n order_type = 'limit';\n }\n\n if (order.volume < 1) {\n throw newError('TURBOFLOW_MIN_ORDER_VOLUME', { volume: order.volume });\n }\n\n // Build the order request\n const leverage = order.volume > 100 ? 100 : Math.floor(order.volume);\n // 开仓时,保证金不得低于 1 USDC\n const vol = order.order_direction.includes('OPEN') ? order.volume / leverage : undefined; // usdc 保证金数量\n // 平仓时,剩余小于 1 USDC 时会自动平仓\n const size = order.order_direction.includes('CLOSE') ? Math.floor(order.volume).toString() : undefined; // 头寸名义价值\n\n const response = await submitOrderApi(credential, {\n request_id: Date.now(),\n pair_id,\n pool_id: 2, // usdc\n coin_code: '2', // usdc\n order_type,\n order_way,\n margin_type: 2, // Default to cross margin\n leverage,\n vol: vol, // usdc 保证金数量\n size: size, // 头寸名义价值\n position_mode: 1, // Default to one-way\n time_in_force: 'GTC' as const,\n fee_mode: 1,\n order_mode: 1 as const, // Normal order\n price: order.price?.toString(),\n position_id: order.position_id,\n });\n\n if (!response.data?.order) throw newError('TURBOFLOW_SUBMIT_ORDER_FAILED', { response });\n\n return { order_id: response.data.order.id };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-turboflow",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "main": "lib/index.js",
5
5
  "dependencies": {
6
6
  "@yuants/protocol": "0.53.2",
@@ -9,15 +9,15 @@ Starting test
9
9
  ---- Pre-compile finished (0ms) ----
10
10
  ---- Compile started ----
11
11
  [typescript] Using TypeScript version 4.7.4
12
- ---- Compile finished (4181ms) ----
12
+ ---- Compile finished (1555ms) ----
13
13
  ---- Bundle started ----
14
14
  ---- Bundle finished (1ms) ----
15
15
  ---- Post-build started ----
16
16
  ---- Post-build finished (0ms) ----
17
17
  ---- Test started ----
18
- ---- Test finished (3ms) ----
19
- -------------------- Finished (4.562s) --------------------
20
- Project: @yuants/vendor-turboflow@1.2.8
18
+ ---- Test finished (1ms) ----
19
+ -------------------- Finished (1.857s) --------------------
20
+ Project: @yuants/vendor-turboflow@1.2.9
21
21
  Heft version: 0.47.11
22
22
  Node version: v22.14.0
23
- 2025-12-03T18:21:53.580Z no Dockerfile found, skip building docker image
23
+ 2025-12-04T03:12:53.643Z no Dockerfile found, skip building docker image
@@ -1,5 +1,5 @@
1
1
  import { IOrder } from '@yuants/data-order';
2
- import { decodePath, newError } from '@yuants/utils';
2
+ import { decodePath, newError, roundToStep } from '@yuants/utils';
3
3
  import { ICredential, submitOrder as submitOrderApi } from '../../api/private-api';
4
4
 
5
5
  export const submitOrder = async (credential: ICredential, order: IOrder): Promise<{ order_id: string }> => {
@@ -47,7 +47,8 @@ export const submitOrder = async (credential: ICredential, order: IOrder): Promi
47
47
  const leverage = order.volume > 100 ? 100 : Math.floor(order.volume);
48
48
  // 开仓时,保证金不得低于 1 USDC
49
49
  const vol = order.order_direction.includes('OPEN') ? order.volume / leverage : undefined; // usdc 保证金数量
50
- const size = order.order_direction.includes('CLOSE') ? order.volume.toString() : undefined; // 头寸名义价值
50
+ // 平仓时,剩余小于 1 USDC 时会自动平仓
51
+ const size = order.order_direction.includes('CLOSE') ? Math.floor(order.volume).toString() : undefined; // 头寸名义价值
51
52
 
52
53
  const response = await submitOrderApi(credential, {
53
54
  request_id: Date.now(),
@@ -1,8 +1,8 @@
1
1
  {
2
- "apps/vendor-turboflow/CHANGELOG.json": "fe3de1a152b2acd2dca70b0ea311ea0ab810ee62",
3
- "apps/vendor-turboflow/CHANGELOG.md": "1685f0091094ff7aa5de2ee0e5b49ada9f679555",
2
+ "apps/vendor-turboflow/CHANGELOG.json": "530f445eb514be3301b141cf0be91759e7145c43",
3
+ "apps/vendor-turboflow/CHANGELOG.md": "f5095878f317f8b6a898d243b93ea5ffc4c44274",
4
4
  "apps/vendor-turboflow/README.md": "084c5960ccac11196467867e63c790f6b14ca3a5",
5
- "apps/vendor-turboflow/package.json": "7c584f57e329f987b585118b2f7e82e7e0d3ca43",
5
+ "apps/vendor-turboflow/package.json": "36afa6ee1e1e0b84a320a57524462bf5363debd5",
6
6
  "apps/vendor-turboflow/src/api/private-api.ts": "6a949c20722aa31c077bc0da085a97f58445d638",
7
7
  "apps/vendor-turboflow/src/api/public-api.ts": "e5a8e21bf4797e56fdd6b1948b761ede54aa34eb",
8
8
  "apps/vendor-turboflow/src/index.ts": "44b85b7532783f7734eaab6f90e426cb84da16eb",
@@ -11,7 +11,7 @@
11
11
  "apps/vendor-turboflow/src/services/orders/cancelOrder.ts": "722b2cecb9d103df9e68ea54e7e0556d597d0da7",
12
12
  "apps/vendor-turboflow/src/services/orders/listOrders.ts": "99a65bc427cc84e9ee9482110f2665076bb9fc91",
13
13
  "apps/vendor-turboflow/src/services/orders/modifyOrder.ts": "b833093cf61948efe6007cfc95583ef525201cd1",
14
- "apps/vendor-turboflow/src/services/orders/submitOrder.ts": "e2bba48413568e872bb3c73539e6f30972338789",
14
+ "apps/vendor-turboflow/src/services/orders/submitOrder.ts": "d7f2d601bee9368514f4cb0650888fb54f19fb17",
15
15
  "apps/vendor-turboflow/tsconfig.json": "5d15ec8bd54da210724db6ed27c0f925f86ee153",
16
16
  "apps/vendor-turboflow/.rush/temp/shrinkwrap-deps.json": "4db58413c55e23c69bcd2319c8fd3f010f5487e4",
17
17
  "libraries/protocol/temp/package-deps.json": "0bd43721e96039b52d7b59c834dc6df45cf75e3f",