@yuants/vendor-huobi 0.13.0 → 0.14.0

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.
Files changed (61) hide show
  1. package/dist/account-actions-with-credentials.js +30 -0
  2. package/dist/account-actions-with-credentials.js.map +1 -0
  3. package/dist/account-info.js +13 -173
  4. package/dist/account-info.js.map +1 -1
  5. package/dist/accounts/list.js +8 -0
  6. package/dist/accounts/list.js.map +1 -0
  7. package/dist/accounts/spot.js +20 -0
  8. package/dist/accounts/spot.js.map +1 -0
  9. package/dist/accounts/super-margin.js +74 -0
  10. package/dist/accounts/super-margin.js.map +1 -0
  11. package/dist/accounts/swap.js +87 -0
  12. package/dist/accounts/swap.js.map +1 -0
  13. package/dist/api/private-api.js +0 -8
  14. package/dist/api/private-api.js.map +1 -1
  15. package/dist/index.js +5 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/orders/submitOrder.js +3 -2
  18. package/dist/orders/submitOrder.js.map +1 -1
  19. package/dist/uid.js +0 -1
  20. package/dist/uid.js.map +1 -1
  21. package/lib/account-actions-with-credentials.d.ts +2 -0
  22. package/lib/account-actions-with-credentials.d.ts.map +1 -0
  23. package/lib/account-actions-with-credentials.js +32 -0
  24. package/lib/account-actions-with-credentials.js.map +1 -0
  25. package/lib/account-info.d.ts +1 -1
  26. package/lib/account-info.d.ts.map +1 -1
  27. package/lib/account-info.js +11 -171
  28. package/lib/account-info.js.map +1 -1
  29. package/lib/accounts/list.d.ts +4 -0
  30. package/lib/accounts/list.d.ts.map +1 -0
  31. package/lib/accounts/list.js +12 -0
  32. package/lib/accounts/list.js.map +1 -0
  33. package/lib/accounts/spot.d.ts +4 -0
  34. package/lib/accounts/spot.d.ts.map +1 -0
  35. package/lib/accounts/spot.js +24 -0
  36. package/lib/accounts/spot.js.map +1 -0
  37. package/lib/accounts/super-margin.d.ts +7 -0
  38. package/lib/accounts/super-margin.d.ts.map +1 -0
  39. package/lib/accounts/super-margin.js +78 -0
  40. package/lib/accounts/super-margin.js.map +1 -0
  41. package/lib/accounts/swap.d.ts +4 -0
  42. package/lib/accounts/swap.d.ts.map +1 -0
  43. package/lib/accounts/swap.js +91 -0
  44. package/lib/accounts/swap.js.map +1 -0
  45. package/lib/api/private-api.d.ts +0 -13
  46. package/lib/api/private-api.d.ts.map +1 -1
  47. package/lib/api/private-api.js +1 -10
  48. package/lib/api/private-api.js.map +1 -1
  49. package/lib/index.d.ts +1 -0
  50. package/lib/index.d.ts.map +1 -1
  51. package/lib/index.js +4 -3
  52. package/lib/index.js.map +1 -1
  53. package/lib/orders/submitOrder.d.ts.map +1 -1
  54. package/lib/orders/submitOrder.js +2 -1
  55. package/lib/orders/submitOrder.js.map +1 -1
  56. package/lib/uid.d.ts +0 -1
  57. package/lib/uid.d.ts.map +1 -1
  58. package/lib/uid.js +0 -1
  59. package/lib/uid.js.map +1 -1
  60. package/package.json +3 -3
  61. package/temp/package-deps.json +15 -10
package/lib/index.js CHANGED
@@ -3,14 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const data_account_1 = require("@yuants/data-account");
4
4
  const protocol_1 = require("@yuants/protocol");
5
5
  const utils_1 = require("@yuants/utils");
6
+ require("./account-actions-with-credentials");
6
7
  const account_info_1 = require("./account-info");
8
+ const super_margin_1 = require("./accounts/super-margin");
7
9
  const private_api_1 = require("./api/private-api");
8
10
  require("./interest_rate");
9
11
  const order_actions_1 = require("./order-actions");
10
12
  require("./order-actions-with-credentials");
11
13
  require("./quote");
12
14
  const transfer_1 = require("./transfer");
13
- const uid_1 = require("./uid");
14
15
  const terminal = protocol_1.Terminal.fromNodeEnv();
15
16
  const credential = (0, private_api_1.getDefaultCredential)();
16
17
  (async () => {
@@ -25,7 +26,6 @@ const credential = (0, private_api_1.getDefaultCredential)();
25
26
  const huobiUid = (await (0, private_api_1.getUid)(credential)).data;
26
27
  console.info((0, utils_1.formatTime)(Date.now()), 'UID', huobiUid);
27
28
  const huobiAccounts = await (0, private_api_1.getAccount)(credential);
28
- const spotAccountUid = (await uid_1.spotAccountUidCache.query(JSON.stringify(credential)));
29
29
  console.info((0, utils_1.formatTime)(Date.now()), 'huobiAccount', JSON.stringify(huobiAccounts));
30
30
  const account_id = `huobi/${huobiUid}`;
31
31
  const SPOT_ACCOUNT_ID = `${account_id}/spot/usdt`;
@@ -37,7 +37,8 @@ const credential = (0, private_api_1.getDefaultCredential)();
37
37
  console.info((0, utils_1.formatTime)(Date.now()), 'subAccounts', JSON.stringify(subAccounts));
38
38
  // 设置账户信息服务
39
39
  (0, account_info_1.provideSwapAccountInfoService)(terminal, SWAP_ACCOUNT_ID, credential);
40
- (0, account_info_1.provideSpotAccountInfoService)(terminal, SPOT_ACCOUNT_ID, credential, spotAccountUid);
40
+ (0, data_account_1.provideAccountInfoService)(terminal, SUPER_MARGIN_ACCOUNT_ID, async () => (0, super_margin_1.getSuperMarginAccountInfo)(credential, SUPER_MARGIN_ACCOUNT_ID), { auto_refresh_interval: 1000 });
41
+ (0, account_info_1.provideSpotAccountInfoService)(terminal, SPOT_ACCOUNT_ID, credential);
41
42
  // 设置账户市场关联
42
43
  (0, data_account_1.addAccountMarket)(terminal, { account_id: SPOT_ACCOUNT_ID, market_id: 'HUOBI/SPOT' });
43
44
  (0, data_account_1.addAccountMarket)(terminal, { account_id: SUPER_MARGIN_ACCOUNT_ID, market_id: 'HUOBI/SUPER-MARGIN' });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { addAccountMarket } from '@yuants/data-account';\nimport { Terminal } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\nimport { provideSpotAccountInfoService, provideSwapAccountInfoService } from './account-info';\nimport {\n getAccount,\n getDefaultCredential,\n getSubUserList,\n getSwapUnifiedAccountType,\n getUid,\n postSwapSwitchAccountType,\n} from './api/private-api';\nimport './interest_rate';\nimport { provideOrderSubmitService } from './order-actions';\nimport './order-actions-with-credentials';\nimport './quote';\nimport {\n setupSpotSuperMarginTransfer,\n setupSpotSwapTransfer,\n setupSubAccountTransfers,\n setupTrc20WithdrawalAddresses,\n} from './transfer';\nimport { spotAccountUidCache } from './uid';\n\nconst terminal = Terminal.fromNodeEnv();\nconst credential = getDefaultCredential();\n\n(async () => {\n // 账户类型切换\n const swapAccountTypeRes = await getSwapUnifiedAccountType(credential);\n if (swapAccountTypeRes.data?.account_type === 1) {\n console.info(\n formatTime(Date.now()),\n 'SwitchingAccountType',\n `previous: ${swapAccountTypeRes.data.account_type}, switching to 2 (unified account)`,\n );\n const switchRes = await postSwapSwitchAccountType(credential, { account_type: 2 });\n console.info(formatTime(Date.now()), 'SwitchingAccountType', `current: ${switchRes.data.account_type}`);\n }\n\n const huobiUid: number = (await getUid(credential)).data;\n console.info(formatTime(Date.now()), 'UID', huobiUid);\n\n const huobiAccounts = await getAccount(credential);\n const spotAccountUid = (await spotAccountUidCache.query(JSON.stringify(credential)))!;\n console.info(formatTime(Date.now()), 'huobiAccount', JSON.stringify(huobiAccounts));\n\n const account_id = `huobi/${huobiUid}`;\n const SPOT_ACCOUNT_ID = `${account_id}/spot/usdt`;\n const SUPER_MARGIN_ACCOUNT_ID = `${account_id}/super-margin`;\n const SWAP_ACCOUNT_ID = `${account_id}/swap`;\n\n const subUsersRes = await getSubUserList(credential);\n const subAccounts = subUsersRes.data;\n const isMainAccount = subUsersRes.ok;\n console.info(formatTime(Date.now()), 'subAccounts', JSON.stringify(subAccounts));\n\n // 设置账户信息服务\n\n provideSwapAccountInfoService(terminal, SWAP_ACCOUNT_ID, credential);\n\n provideSpotAccountInfoService(terminal, SPOT_ACCOUNT_ID, credential, spotAccountUid);\n\n // 设置账户市场关联\n addAccountMarket(terminal, { account_id: SPOT_ACCOUNT_ID, market_id: 'HUOBI/SPOT' });\n addAccountMarket(terminal, { account_id: SUPER_MARGIN_ACCOUNT_ID, market_id: 'HUOBI/SUPER-MARGIN' });\n addAccountMarket(terminal, { account_id: SWAP_ACCOUNT_ID, market_id: 'HUOBI/SWAP' });\n\n // 设置订单提交服务\n provideOrderSubmitService(terminal, SWAP_ACCOUNT_ID, SUPER_MARGIN_ACCOUNT_ID, credential);\n\n // 设置转账功能\n await setupTrc20WithdrawalAddresses(terminal, SPOT_ACCOUNT_ID, credential, isMainAccount);\n setupSpotSuperMarginTransfer(terminal, SPOT_ACCOUNT_ID, SUPER_MARGIN_ACCOUNT_ID, credential, huobiUid);\n setupSpotSwapTransfer(terminal, SPOT_ACCOUNT_ID, SWAP_ACCOUNT_ID, credential, huobiUid);\n setupSubAccountTransfers(terminal, SPOT_ACCOUNT_ID, credential, huobiUid, subAccounts, isMainAccount);\n})();\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { addAccountMarket, provideAccountInfoService } from '@yuants/data-account';\nimport { Terminal } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\nimport './account-actions-with-credentials';\nimport { provideSpotAccountInfoService, provideSwapAccountInfoService } from './account-info';\nimport { getSuperMarginAccountInfo } from './accounts/super-margin';\nimport {\n getAccount,\n getDefaultCredential,\n getSubUserList,\n getSwapUnifiedAccountType,\n getUid,\n postSwapSwitchAccountType,\n} from './api/private-api';\nimport './interest_rate';\nimport { provideOrderSubmitService } from './order-actions';\nimport './order-actions-with-credentials';\nimport './quote';\nimport {\n setupSpotSuperMarginTransfer,\n setupSpotSwapTransfer,\n setupSubAccountTransfers,\n setupTrc20WithdrawalAddresses,\n} from './transfer';\n\nconst terminal = Terminal.fromNodeEnv();\nconst credential = getDefaultCredential();\n\n(async () => {\n // 账户类型切换\n const swapAccountTypeRes = await getSwapUnifiedAccountType(credential);\n if (swapAccountTypeRes.data?.account_type === 1) {\n console.info(\n formatTime(Date.now()),\n 'SwitchingAccountType',\n `previous: ${swapAccountTypeRes.data.account_type}, switching to 2 (unified account)`,\n );\n const switchRes = await postSwapSwitchAccountType(credential, { account_type: 2 });\n console.info(formatTime(Date.now()), 'SwitchingAccountType', `current: ${switchRes.data.account_type}`);\n }\n\n const huobiUid: number = (await getUid(credential)).data;\n console.info(formatTime(Date.now()), 'UID', huobiUid);\n\n const huobiAccounts = await getAccount(credential);\n console.info(formatTime(Date.now()), 'huobiAccount', JSON.stringify(huobiAccounts));\n\n const account_id = `huobi/${huobiUid}`;\n const SPOT_ACCOUNT_ID = `${account_id}/spot/usdt`;\n const SUPER_MARGIN_ACCOUNT_ID = `${account_id}/super-margin`;\n const SWAP_ACCOUNT_ID = `${account_id}/swap`;\n\n const subUsersRes = await getSubUserList(credential);\n const subAccounts = subUsersRes.data;\n const isMainAccount = subUsersRes.ok;\n console.info(formatTime(Date.now()), 'subAccounts', JSON.stringify(subAccounts));\n\n // 设置账户信息服务\n\n provideSwapAccountInfoService(terminal, SWAP_ACCOUNT_ID, credential);\n\n provideAccountInfoService(\n terminal,\n SUPER_MARGIN_ACCOUNT_ID,\n async () => getSuperMarginAccountInfo(credential, SUPER_MARGIN_ACCOUNT_ID),\n { auto_refresh_interval: 1000 },\n );\n\n provideSpotAccountInfoService(terminal, SPOT_ACCOUNT_ID, credential);\n\n // 设置账户市场关联\n addAccountMarket(terminal, { account_id: SPOT_ACCOUNT_ID, market_id: 'HUOBI/SPOT' });\n addAccountMarket(terminal, { account_id: SUPER_MARGIN_ACCOUNT_ID, market_id: 'HUOBI/SUPER-MARGIN' });\n addAccountMarket(terminal, { account_id: SWAP_ACCOUNT_ID, market_id: 'HUOBI/SWAP' });\n\n // 设置订单提交服务\n provideOrderSubmitService(terminal, SWAP_ACCOUNT_ID, SUPER_MARGIN_ACCOUNT_ID, credential);\n\n // 设置转账功能\n await setupTrc20WithdrawalAddresses(terminal, SPOT_ACCOUNT_ID, credential, isMainAccount);\n setupSpotSuperMarginTransfer(terminal, SPOT_ACCOUNT_ID, SUPER_MARGIN_ACCOUNT_ID, credential, huobiUid);\n setupSpotSwapTransfer(terminal, SPOT_ACCOUNT_ID, SWAP_ACCOUNT_ID, credential, huobiUid);\n setupSubAccountTransfers(terminal, SPOT_ACCOUNT_ID, credential, huobiUid, subAccounts, isMainAccount);\n})();\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../src/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EACL,WAAW,EAOZ,MAAM,oBAAoB,CAAC;AAoG5B,eAAO,MAAM,WAAW,eAAgB,WAAW,SAAS,MAAM,KAAG,QAAQ;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAQhG,CAAC"}
1
+ {"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../src/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EACL,WAAW,EAMZ,MAAM,oBAAoB,CAAC;AAqG5B,eAAO,MAAM,WAAW,eAAgB,WAAW,SAAS,MAAM,KAAG,QAAQ;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAQhG,CAAC"}
@@ -4,6 +4,7 @@ exports.submitOrder = void 0;
4
4
  const utils_1 = require("@yuants/utils");
5
5
  const rxjs_1 = require("rxjs");
6
6
  const private_api_1 = require("../api/private-api");
7
+ const public_api_1 = require("../api/public-api");
7
8
  const product_1 = require("../product");
8
9
  const uid_1 = require("../uid");
9
10
  /**
@@ -50,7 +51,7 @@ async function handleSuperMarginOrder(order, credential) {
50
51
  const [balanceRes, mapProductIdToProduct, priceRes] = await Promise.all([
51
52
  (0, private_api_1.getSpotAccountBalance)(credential, superMarginAccountUid),
52
53
  (0, rxjs_1.firstValueFrom)(product_1.spotProductService.mapProductIdToProduct$),
53
- (0, private_api_1.getSpotTick)(credential, { symbol: order.product_id }),
54
+ (0, public_api_1.getSpotTick)({ symbol: order.product_id }),
54
55
  ]);
55
56
  const balance = balanceRes.data.list
56
57
  .filter((v) => v.currency === 'usdt' && v.type === 'trade')
@@ -1 +1 @@
1
- {"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../src/orders/submitOrder.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOrder } from '@yuants/data-order';\nimport { formatTime, roundToStep } from '@yuants/utils';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ICredential,\n getCrossMarginLoanInfo,\n getSpotAccountBalance,\n getSpotTick,\n getSwapCrossPositionInfo,\n postSpotOrder,\n postSwapOrder,\n} from '../api/private-api';\nimport { spotProductService } from '../product';\nimport { superMarginAccountUidCache } from '../uid';\n\n/**\n * 处理 swap 账户订单提交\n */\nasync function handleSwapOrder(order: IOrder, credential: ICredential): Promise<{ order_id: string }> {\n // 获取仓位信息\n const positionInfo = await getSwapCrossPositionInfo(credential);\n const mapContractCodeToRate = Object.fromEntries(\n positionInfo.data.map((v) => [v.contract_code, v.lever_rate]),\n );\n\n const lever_rate = mapContractCodeToRate[order.product_id] ?? 20;\n const params = {\n contract_code: order.product_id,\n contract_type: 'swap',\n price: order.price,\n volume: order.volume,\n offset:\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'OPEN_SHORT' ? 'open' : 'close',\n direction:\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT' ? 'buy' : 'sell',\n // dynamically adjust the leverage\n lever_rate,\n order_price_type: order.order_type === 'MARKET' ? 'market' : 'limit',\n };\n\n const result = await postSwapOrder(credential, params);\n console.info(formatTime(Date.now()), 'SubmitOrder', JSON.stringify(result), JSON.stringify(params));\n\n if (result.status !== 'ok') {\n throw new Error(`Failed to submit swap order: status=${result.status}`);\n }\n return { order_id: result.data.order_id_str };\n}\n\n/**\n * 处理 super-margin 账户订单提交\n */\nasync function handleSuperMarginOrder(order: IOrder, credential: ICredential): Promise<{ order_id: string }> {\n // 获取可贷款金额\n const superMarginAccountUid = await superMarginAccountUidCache.query(JSON.stringify(credential));\n if (!superMarginAccountUid) throw new Error('Super margin account UID not found');\n const loanInfo = await getCrossMarginLoanInfo(credential);\n const usdtLoanable = loanInfo.data.find((v) => v.currency === 'usdt');\n if (!usdtLoanable) throw new Error('USDT loanable amount not found');\n const loanable = +usdtLoanable['loanable-amt'];\n\n // 获取账户余额, 产品信息和价格\n const [balanceRes, mapProductIdToProduct, priceRes] = await Promise.all([\n getSpotAccountBalance(credential, superMarginAccountUid),\n firstValueFrom(spotProductService.mapProductIdToProduct$),\n getSpotTick(credential, { symbol: order.product_id }),\n ]);\n\n const balance = balanceRes.data.list\n .filter((v) => v.currency === 'usdt' && v.type === 'trade')\n .reduce((acc, cur) => acc + +cur.balance, 0);\n\n if (!mapProductIdToProduct) throw new Error('Product map not found');\n\n const theProduct = mapProductIdToProduct.get(order.product_id);\n const price = priceRes.tick.close;\n const borrow_amount =\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? Math.max(Math.min(loanable, order.volume * price - balance), 0)\n : undefined;\n\n const params = {\n symbol: order.product_id,\n 'account-id': '' + superMarginAccountUid,\n amount:\n '' +\n (order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? roundToStep(order.volume * price, theProduct?.volume_step!)\n : order.volume),\n 'borrow-amount': '' + borrow_amount,\n type: `${\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT' ? 'buy' : 'sell'\n }-${'LIMIT' === order.order_type ? 'limit' : 'market'}`,\n 'trade-purpose':\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? '1' // auto borrow\n : '2', // auto repay\n price: order.order_type === 'MARKET' ? undefined : '' + order.price,\n source: 'super-margin-api',\n };\n\n const result = await postSpotOrder(credential, params);\n console.info(formatTime(Date.now()), 'SubmitOrder', JSON.stringify(result), JSON.stringify(params));\n\n if (result.success === false) {\n throw new Error(`Failed to submit super margin order: code=${result.code} message=${result.message}`);\n }\n\n return { order_id: result.data.orderId.toString() };\n}\n\nexport const submitOrder = (credential: ICredential, order: IOrder): Promise<{ order_id: string }> => {\n if (order.account_id.includes('swap')) {\n return handleSwapOrder(order, credential);\n }\n if (order.account_id.includes('super-margin')) {\n return handleSuperMarginOrder(order, credential);\n }\n throw new Error(`Unsupported account_id for order submission: ${order.account_id}`);\n};\n"]}
1
+ {"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../src/orders/submitOrder.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOrder } from '@yuants/data-order';\nimport { formatTime, roundToStep } from '@yuants/utils';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ICredential,\n getCrossMarginLoanInfo,\n getSpotAccountBalance,\n getSwapCrossPositionInfo,\n postSpotOrder,\n postSwapOrder,\n} from '../api/private-api';\nimport { getSpotTick } from '../api/public-api';\nimport { spotProductService } from '../product';\nimport { superMarginAccountUidCache } from '../uid';\n\n/**\n * 处理 swap 账户订单提交\n */\nasync function handleSwapOrder(order: IOrder, credential: ICredential): Promise<{ order_id: string }> {\n // 获取仓位信息\n const positionInfo = await getSwapCrossPositionInfo(credential);\n const mapContractCodeToRate = Object.fromEntries(\n positionInfo.data.map((v) => [v.contract_code, v.lever_rate]),\n );\n\n const lever_rate = mapContractCodeToRate[order.product_id] ?? 20;\n const params = {\n contract_code: order.product_id,\n contract_type: 'swap',\n price: order.price,\n volume: order.volume,\n offset:\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'OPEN_SHORT' ? 'open' : 'close',\n direction:\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT' ? 'buy' : 'sell',\n // dynamically adjust the leverage\n lever_rate,\n order_price_type: order.order_type === 'MARKET' ? 'market' : 'limit',\n };\n\n const result = await postSwapOrder(credential, params);\n console.info(formatTime(Date.now()), 'SubmitOrder', JSON.stringify(result), JSON.stringify(params));\n\n if (result.status !== 'ok') {\n throw new Error(`Failed to submit swap order: status=${result.status}`);\n }\n return { order_id: result.data.order_id_str };\n}\n\n/**\n * 处理 super-margin 账户订单提交\n */\nasync function handleSuperMarginOrder(order: IOrder, credential: ICredential): Promise<{ order_id: string }> {\n // 获取可贷款金额\n const superMarginAccountUid = await superMarginAccountUidCache.query(JSON.stringify(credential));\n if (!superMarginAccountUid) throw new Error('Super margin account UID not found');\n const loanInfo = await getCrossMarginLoanInfo(credential);\n const usdtLoanable = loanInfo.data.find((v) => v.currency === 'usdt');\n if (!usdtLoanable) throw new Error('USDT loanable amount not found');\n const loanable = +usdtLoanable['loanable-amt'];\n\n // 获取账户余额, 产品信息和价格\n const [balanceRes, mapProductIdToProduct, priceRes] = await Promise.all([\n getSpotAccountBalance(credential, superMarginAccountUid),\n firstValueFrom(spotProductService.mapProductIdToProduct$),\n getSpotTick({ symbol: order.product_id }),\n ]);\n\n const balance = balanceRes.data.list\n .filter((v) => v.currency === 'usdt' && v.type === 'trade')\n .reduce((acc, cur) => acc + +cur.balance, 0);\n\n if (!mapProductIdToProduct) throw new Error('Product map not found');\n\n const theProduct = mapProductIdToProduct.get(order.product_id);\n const price = priceRes.tick.close;\n const borrow_amount =\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? Math.max(Math.min(loanable, order.volume * price - balance), 0)\n : undefined;\n\n const params = {\n symbol: order.product_id,\n 'account-id': '' + superMarginAccountUid,\n amount:\n '' +\n (order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? roundToStep(order.volume * price, theProduct?.volume_step!)\n : order.volume),\n 'borrow-amount': '' + borrow_amount,\n type: `${\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT' ? 'buy' : 'sell'\n }-${'LIMIT' === order.order_type ? 'limit' : 'market'}`,\n 'trade-purpose':\n order.order_direction === 'OPEN_LONG' || order.order_direction === 'CLOSE_SHORT'\n ? '1' // auto borrow\n : '2', // auto repay\n price: order.order_type === 'MARKET' ? undefined : '' + order.price,\n source: 'super-margin-api',\n };\n\n const result = await postSpotOrder(credential, params);\n console.info(formatTime(Date.now()), 'SubmitOrder', JSON.stringify(result), JSON.stringify(params));\n\n if (result.success === false) {\n throw new Error(`Failed to submit super margin order: code=${result.code} message=${result.message}`);\n }\n\n return { order_id: result.data.orderId.toString() };\n}\n\nexport const submitOrder = (credential: ICredential, order: IOrder): Promise<{ order_id: string }> => {\n if (order.account_id.includes('swap')) {\n return handleSwapOrder(order, credential);\n }\n if (order.account_id.includes('super-margin')) {\n return handleSuperMarginOrder(order, credential);\n }\n throw new Error(`Unsupported account_id for order submission: ${order.account_id}`);\n};\n"]}
package/lib/uid.d.ts CHANGED
@@ -5,7 +5,6 @@ export declare const uidCache: import("@yuants/cache").ICache<{
5
5
  export declare const superMarginAccountUidCache: import("@yuants/cache").ICache<number>;
6
6
  export declare const spotAccountUidCache: import("@yuants/cache").ICache<number>;
7
7
  export declare const getAccountIds: (key: string) => Promise<{
8
- main: string;
9
8
  spot: string;
10
9
  superMargin: string;
11
10
  swap: string;
package/lib/uid.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"uid.d.ts","sourceRoot":"","sources":["../src/uid.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;EAAgD,CAAC;AAItE,eAAO,MAAM,0BAA0B,wCAEtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wCAE/B,CAAC;AAEF,eAAO,MAAM,aAAa,QAAe,MAAM;;;;;EAe9C,CAAC"}
1
+ {"version":3,"file":"uid.d.ts","sourceRoot":"","sources":["../src/uid.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;EAAgD,CAAC;AAItE,eAAO,MAAM,0BAA0B,wCAEtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wCAE/B,CAAC;AAEF,eAAO,MAAM,aAAa,QAAe,MAAM;;;;EAc9C,CAAC"}
package/lib/uid.js CHANGED
@@ -16,7 +16,6 @@ const getAccountIds = async (key) => {
16
16
  const SUPER_MARGIN_ACCOUNT_ID = `${account_id}/super-margin`;
17
17
  const SWAP_ACCOUNT_ID = `${account_id}/swap`;
18
18
  return {
19
- main: account_id,
20
19
  spot: SPOT_ACCOUNT_ID,
21
20
  superMargin: SUPER_MARGIN_ACCOUNT_ID,
22
21
  swap: SWAP_ACCOUNT_ID,
package/lib/uid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"uid.js","sourceRoot":"","sources":["../src/uid.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,mDAAuD;AAE1C,QAAA,QAAQ,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,oBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEtE,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,wBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE3D,QAAA,0BAA0B,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CAC5D,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,0CAAE,EAAE,CAAA,EAAA,CAAC,CACzF,CAAC;AAEW,QAAA,mBAAmB,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CACrD,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0CAAE,EAAE,CAAA,EAAA,CAAC,CACjF,CAAC;AAEK,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,MAAM,gBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,SAAS,GAAG,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,GAAG,UAAU,YAAY,CAAC;IAClD,MAAM,uBAAuB,GAAG,GAAG,UAAU,eAAe,CAAC;IAC7D,MAAM,eAAe,GAAG,GAAG,UAAU,OAAO,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,eAAe;KACtB,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,aAAa,iBAexB","sourcesContent":["import { createCache } from '@yuants/cache';\nimport { getAccount, getUid } from './api/private-api';\n\nexport const uidCache = createCache((key) => getUid(JSON.parse(key)));\n\nconst huobiAccounts = createCache((key) => getAccount(JSON.parse(key)));\n\nexport const superMarginAccountUidCache = createCache((key) =>\n huobiAccounts.query(key).then((x) => x?.data.find((v) => v.type === 'super-margin')?.id),\n);\n\nexport const spotAccountUidCache = createCache((key) =>\n huobiAccounts.query(key).then((x) => x?.data.find((v) => v.type === 'spot')?.id),\n);\n\nexport const getAccountIds = async (key: string) => {\n const uid = await uidCache.query(key);\n if (!uid) throw new Error('Failed to get UID');\n\n const account_id = `huobi/${uid}`;\n const SPOT_ACCOUNT_ID = `${account_id}/spot/usdt`;\n const SUPER_MARGIN_ACCOUNT_ID = `${account_id}/super-margin`;\n const SWAP_ACCOUNT_ID = `${account_id}/swap`;\n\n return {\n main: account_id,\n spot: SPOT_ACCOUNT_ID,\n superMargin: SUPER_MARGIN_ACCOUNT_ID,\n swap: SWAP_ACCOUNT_ID,\n };\n};\n"]}
1
+ {"version":3,"file":"uid.js","sourceRoot":"","sources":["../src/uid.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,mDAAuD;AAE1C,QAAA,QAAQ,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,oBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEtE,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,wBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE3D,QAAA,0BAA0B,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CAC5D,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,0CAAE,EAAE,CAAA,EAAA,CAAC,CACzF,CAAC;AAEW,QAAA,mBAAmB,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,EAAE,EAAE,CACrD,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,0CAAE,EAAE,CAAA,EAAA,CAAC,CACjF,CAAC;AAEK,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,MAAM,gBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,SAAS,GAAG,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,GAAG,UAAU,YAAY,CAAC;IAClD,MAAM,uBAAuB,GAAG,GAAG,UAAU,eAAe,CAAC;IAC7D,MAAM,eAAe,GAAG,GAAG,UAAU,OAAO,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,eAAe;KACtB,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB","sourcesContent":["import { createCache } from '@yuants/cache';\nimport { getAccount, getUid } from './api/private-api';\n\nexport const uidCache = createCache((key) => getUid(JSON.parse(key)));\n\nconst huobiAccounts = createCache((key) => getAccount(JSON.parse(key)));\n\nexport const superMarginAccountUidCache = createCache((key) =>\n huobiAccounts.query(key).then((x) => x?.data.find((v) => v.type === 'super-margin')?.id),\n);\n\nexport const spotAccountUidCache = createCache((key) =>\n huobiAccounts.query(key).then((x) => x?.data.find((v) => v.type === 'spot')?.id),\n);\n\nexport const getAccountIds = async (key: string) => {\n const uid = await uidCache.query(key);\n if (!uid) throw new Error('Failed to get UID');\n\n const account_id = `huobi/${uid}`;\n const SPOT_ACCOUNT_ID = `${account_id}/spot/usdt`;\n const SUPER_MARGIN_ACCOUNT_ID = `${account_id}/super-margin`;\n const SWAP_ACCOUNT_ID = `${account_id}/swap`;\n\n return {\n spot: SPOT_ACCOUNT_ID,\n superMargin: SUPER_MARGIN_ACCOUNT_ID,\n swap: SWAP_ACCOUNT_ID,\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-huobi",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "bin": "lib/cli.js",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -10,8 +10,8 @@
10
10
  ],
11
11
  "dependencies": {
12
12
  "@yuants/protocol": "0.50.4",
13
- "@yuants/data-account": "0.6.15",
14
- "@yuants/data-order": "0.4.0",
13
+ "@yuants/data-account": "0.7.0",
14
+ "@yuants/data-order": "0.5.0",
15
15
  "@yuants/transfer": "0.2.33",
16
16
  "@yuants/utils": "0.11.0",
17
17
  "@yuants/cache": "0.3.0",
@@ -1,32 +1,37 @@
1
1
  {
2
- "apps/vendor-huobi/CHANGELOG.json": "f10455469861b5ffb8b4550dde8638ce54abf1ac",
3
- "apps/vendor-huobi/CHANGELOG.md": "2b0bf5539ec413f4c7095ad855fcfb68f703b8db",
2
+ "apps/vendor-huobi/CHANGELOG.json": "55fcc7ed0f60dc0b1032218d2ace92d39ba3a3a6",
3
+ "apps/vendor-huobi/CHANGELOG.md": "f3d4f7812c1b68c9ab52dfda2ef6727d8bf54193",
4
4
  "apps/vendor-huobi/README.md": "d7bf0149513114eab5500a6b5c9e7cba10565572",
5
5
  "apps/vendor-huobi/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
6
6
  "apps/vendor-huobi/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
7
7
  "apps/vendor-huobi/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
8
8
  "apps/vendor-huobi/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
9
9
  "apps/vendor-huobi/etc/vendor-huobi.api.md": "dc8cbf2a044a227b30a4ee9701b0c97328244724",
10
- "apps/vendor-huobi/package.json": "206b61d2980a11a3e5dca9ea84b57e62e446476a",
11
- "apps/vendor-huobi/src/account-info.ts": "78d866fab248c78f6aaf5623f21e9013debab25c",
10
+ "apps/vendor-huobi/package.json": "c4b3eff4fcf8156b01255f67afff6beedc2ad122",
11
+ "apps/vendor-huobi/src/account-actions-with-credentials.ts": "406799578e60a57d78b90dfb67e3360a53640571",
12
+ "apps/vendor-huobi/src/account-info.ts": "fc2189e31000dd05855e659c2f0cf14fc12ffbdd",
13
+ "apps/vendor-huobi/src/accounts/list.ts": "25e82ca0e49850afba3a1c7c23d67528b20e6ee1",
14
+ "apps/vendor-huobi/src/accounts/spot.ts": "d1fdefe960eca370a0c8ec9b244a6357c046545a",
15
+ "apps/vendor-huobi/src/accounts/super-margin.ts": "c6f3593929ad7b7e87eb66599e2d034875186423",
16
+ "apps/vendor-huobi/src/accounts/swap.ts": "84537c6cfd1be5d1964d7e6c58ab9625502cc43f",
12
17
  "apps/vendor-huobi/src/api.ts": "061c8644a01c6e0b4964e4be6f4588e16abd8869",
13
- "apps/vendor-huobi/src/api/private-api.ts": "e093cd61bb5e69eaf2ba42a7393fddf10d221552",
18
+ "apps/vendor-huobi/src/api/private-api.ts": "644260e6709841ade74d43b6df6dd3eda42d36d9",
14
19
  "apps/vendor-huobi/src/api/public-api.ts": "03a1468bea318d5fcb8c0c9d45666ffbee4346f0",
15
20
  "apps/vendor-huobi/src/cli.ts": "9bf6b5559a6c6f33da20e74cc6c5d702c60ec891",
16
- "apps/vendor-huobi/src/index.ts": "9733795740b8df5e1d9fe96a25257d080c35b983",
21
+ "apps/vendor-huobi/src/index.ts": "57062c6faf9ad60f6b93970d2d7f315439641be5",
17
22
  "apps/vendor-huobi/src/interest_rate.ts": "2ba38d2c97b91f1b2f9979647dab5d516f6bfa4f",
18
23
  "apps/vendor-huobi/src/order-actions-with-credentials.ts": "32322c28a4c52b936c98ee51d09905178815cb5e",
19
24
  "apps/vendor-huobi/src/order-actions.ts": "93a5d294f6674ba433d892d6be2ae6aa5d059420",
20
- "apps/vendor-huobi/src/orders/submitOrder.ts": "37d6886dc81bde92b20f31031a9df2a1ef9963c4",
25
+ "apps/vendor-huobi/src/orders/submitOrder.ts": "f9700de8bbaf97a662313155cb5499c7c92e378a",
21
26
  "apps/vendor-huobi/src/product.ts": "973c81048708f265ce86fad37d06e4a4044a11b9",
22
27
  "apps/vendor-huobi/src/quote.ts": "52922569315ce9f72aef8ed5d65157c8800e943d",
23
28
  "apps/vendor-huobi/src/transfer.ts": "0da0957b0acf820bbc26bfd74776305167f28d35",
24
- "apps/vendor-huobi/src/uid.ts": "9f9a4fd99dcfa47eda14fbcf5fe5b03aecc19c9c",
29
+ "apps/vendor-huobi/src/uid.ts": "a6e778eb401659decc6eaadb8e6390b60a1f7238",
25
30
  "apps/vendor-huobi/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
26
31
  "apps/vendor-huobi/.rush/temp/shrinkwrap-deps.json": "9cfeff02d2b4838478ed6afd825f89806d4c2b57",
27
32
  "libraries/protocol/temp/package-deps.json": "35bc77333a1c85db1cd130579963e8cefa00f56c",
28
- "libraries/data-account/temp/package-deps.json": "bc6176ac72e51f5deb7f123807852a4305935bcd",
29
- "libraries/data-order/temp/package-deps.json": "afb45e88841011b7abd71901cda1bda450f36dc5",
33
+ "libraries/data-account/temp/package-deps.json": "23ce351fb7d34192c8885a00c1f0e8d49f592a9c",
34
+ "libraries/data-order/temp/package-deps.json": "921c6745e9a502669524f7a7d276bff69c25491c",
30
35
  "libraries/transfer/temp/package-deps.json": "708a4caf79d042cad56a39f0b00d399bca04af40",
31
36
  "libraries/utils/temp/package-deps.json": "c58f1ca8f498315d9a0219ca8c498299a41d297b",
32
37
  "libraries/cache/temp/package-deps.json": "49789a92426969daa31f0c956bb56bd783929765",