@yuants/vendor-okx 0.17.1 → 0.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/account.js CHANGED
@@ -95,31 +95,31 @@ export const tradingAccountInfo$ = accountPosition$.pipe(withLatestFrom(accountU
95
95
  account_id: account_id,
96
96
  updated_at: Date.now(),
97
97
  money: money,
98
- currencies: [money],
99
98
  positions: positions,
100
- orders: orders.data.map((x) => {
101
- const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';
102
- const order_direction = x.side === 'buy'
103
- ? x.posSide === 'long'
104
- ? 'OPEN_LONG'
105
- : 'CLOSE_SHORT'
106
- : x.posSide === 'short'
107
- ? 'OPEN_SHORT'
108
- : 'CLOSE_LONG';
109
- return {
110
- order_id: x.ordId,
111
- account_id,
112
- product_id: encodePath(x.instType, x.instId),
113
- submit_at: +x.cTime,
114
- filled_at: +x.fillTime,
115
- order_type,
116
- order_direction,
117
- volume: +x.sz,
118
- traded_volume: +x.accFillSz,
119
- price: +x.px,
120
- traded_price: +x.avgPx,
121
- };
122
- }),
99
+ // orders: orders.data.map((x): IOrder => {
100
+ // const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';
101
+ // const order_direction =
102
+ // x.side === 'buy'
103
+ // ? x.posSide === 'long'
104
+ // ? 'OPEN_LONG'
105
+ // : 'CLOSE_SHORT'
106
+ // : x.posSide === 'short'
107
+ // ? 'OPEN_SHORT'
108
+ // : 'CLOSE_LONG';
109
+ // return {
110
+ // order_id: x.ordId,
111
+ // account_id,
112
+ // product_id: encodePath(x.instType, x.instId),
113
+ // submit_at: +x.cTime,
114
+ // filled_at: +x.fillTime,
115
+ // order_type,
116
+ // order_direction,
117
+ // volume: +x.sz,
118
+ // traded_volume: +x.accFillSz,
119
+ // price: +x.px,
120
+ // traded_price: +x.avgPx,
121
+ // };
122
+ // }),
123
123
  };
124
124
  }), shareReplay(1));
125
125
  const sub = defer(() => accountUid$)
@@ -166,9 +166,7 @@ const fundingAccountInfo$ = combineLatest([accountUid$, assetBalance$, marketInd
166
166
  account_id: `okx/${uid}/funding/USDT`,
167
167
  updated_at: Date.now(),
168
168
  money: money,
169
- currencies: [money],
170
169
  positions: positions,
171
- orders: [],
172
170
  };
173
171
  }), shareReplay(1));
174
172
  const savingBalance$ = defer(() => client.getFinanceSavingsBalance({})).pipe(repeat({ delay: 5000 }), retry({ delay: 5000 }), shareReplay(1));
@@ -190,9 +188,7 @@ const earningAccountInfo$ = combineLatest([accountUid$, savingBalance$]).pipe(ma
190
188
  account_id: `okx/${uid}/earning/USDT`,
191
189
  updated_at: Date.now(),
192
190
  money: money,
193
- currencies: [money],
194
191
  positions: [],
195
- orders: [],
196
192
  };
197
193
  }), shareReplay(1));
198
194
  //# sourceMappingURL=account.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n addAccountMarket,\n IAccountInfo,\n IAccountMoney,\n IPosition,\n publishAccountInfo,\n} from '@yuants/data-account';\nimport { IOrder } from '@yuants/data-order';\nimport { Terminal } from '@yuants/protocol';\nimport { encodePath } from '@yuants/utils';\nimport { combineLatest, defer, filter, first, map, repeat, retry, shareReplay, withLatestFrom } from 'rxjs';\nimport { client } from './api';\nimport { mapProductIdToMarginProduct$, mapProductIdToUsdtSwapProduct$ } from './product';\n\nconst terminal = Terminal.fromNodeEnv();\n\nexport const accountPosition$ = defer(() => client.getAccountPositions({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const accountConfig$ = defer(() => client.getAccountConfig()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nconst subAccountUids$ = defer(() => client.getSubAccountList()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nexport const accountUid$ = accountConfig$.pipe(\n map((x) => x.data[0].uid),\n filter((x) => !!x),\n shareReplay(1),\n);\n\nconst accountBalance$ = defer(() => client.getAccountBalance({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst accountUsdtBalance$ = accountBalance$.pipe(\n map((x) => x.data[0]?.details.find((x) => x.ccy === 'USDT')),\n filter((x): x is Exclude<typeof x, undefined> => !!x),\n shareReplay(1),\n);\n\nconst pendingOrders$ = defer(() => client.getTradeOrdersPending({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst marketIndexTickerUSDT$ = defer(() => client.getMarketIndexTicker({ quoteCcy: 'USDT' })).pipe(\n map((x) => {\n const mapInstIdToPrice = new Map<string, number>();\n x.data.forEach((inst) => mapInstIdToPrice.set(inst.instId, Number(inst.idxPx)));\n return mapInstIdToPrice;\n }),\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const tradingAccountInfo$ = accountPosition$.pipe(\n withLatestFrom(\n accountUid$,\n accountBalance$,\n pendingOrders$,\n mapProductIdToUsdtSwapProduct$,\n mapProductIdToMarginProduct$,\n marketIndexTickerUSDT$,\n ),\n map(\n ([\n positionsApi,\n uid,\n balanceApi,\n orders,\n mapProductIdToUsdtSwapProduct,\n mapProductIdToMarginProduct,\n marketIndexTickerUSDT,\n ]): IAccountInfo => {\n const account_id = `okx/${uid}/trading`;\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n balanceApi.data[0]?.details.forEach((detail) => {\n if (detail.ccy === 'USDT') {\n const balance = +(detail.cashBal ?? 0);\n const free = Math.min(\n balance, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const equity = +(detail.eq ?? 0);\n const used = equity - free;\n const profit = equity - balance;\n money.equity += equity;\n money.balance += balance;\n money.used += used;\n money.free += free;\n money.profit += profit;\n } else {\n const volume = +(detail.cashBal ?? 0);\n const free_volume = Math.min(\n volume, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const closable_price = marketIndexTickerUSDT.get(detail.ccy + '-USDT') || 0;\n const delta_equity = volume * closable_price || 0;\n const delta_profit = +detail.totalPnl || 0;\n const delta_balance = delta_equity - delta_profit;\n const delta_used = delta_equity; // all used\n const delta_free = 0;\n\n const product_id = encodePath('SPOT', `${detail.ccy}-USDT`);\n positions.push({\n position_id: product_id,\n datasource_id: 'OKX',\n product_id: product_id,\n direction: 'LONG',\n volume: volume,\n free_volume: free_volume,\n position_price: +detail.accAvgPx,\n floating_profit: delta_profit,\n closable_price: closable_price,\n valuation: delta_equity,\n });\n\n money.equity += delta_equity;\n money.profit += delta_profit;\n money.balance += delta_balance;\n money.used += delta_used;\n money.free += delta_free;\n }\n });\n positionsApi.data.forEach((x) => {\n const direction =\n x.posSide === 'long' ? 'LONG' : x.posSide === 'short' ? 'SHORT' : +x.pos > 0 ? 'LONG' : 'SHORT';\n const volume = Math.abs(+x.pos);\n const product_id = encodePath(x.instType, x.instId);\n const closable_price = +x.last;\n const valuation =\n x.instType === 'SWAP'\n ? (mapProductIdToUsdtSwapProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : x.instType === 'MARGIN'\n ? (mapProductIdToMarginProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : 0;\n\n positions.push({\n position_id: x.posId,\n datasource_id: 'OKX',\n product_id,\n direction,\n volume: volume,\n free_volume: +x.availPos,\n closable_price,\n position_price: +x.avgPx,\n floating_profit: +x.upl,\n valuation,\n });\n });\n return {\n account_id: account_id,\n updated_at: Date.now(),\n money: money,\n currencies: [money],\n positions: positions,\n orders: orders.data.map((x): IOrder => {\n const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';\n\n const order_direction =\n x.side === 'buy'\n ? x.posSide === 'long'\n ? 'OPEN_LONG'\n : 'CLOSE_SHORT'\n : x.posSide === 'short'\n ? 'OPEN_SHORT'\n : 'CLOSE_LONG';\n return {\n order_id: x.ordId,\n account_id,\n product_id: encodePath(x.instType, x.instId),\n submit_at: +x.cTime,\n filled_at: +x.fillTime,\n order_type,\n order_direction,\n volume: +x.sz,\n traded_volume: +x.accFillSz,\n price: +x.px,\n traded_price: +x.avgPx,\n };\n }),\n };\n },\n ),\n shareReplay(1),\n);\n\nconst sub = defer(() => accountUid$)\n .pipe(first())\n .subscribe((uid) => {\n publishAccountInfo(terminal, `okx/${uid}/trading`, tradingAccountInfo$);\n addAccountMarket(terminal, { account_id: `okx/${uid}/trading`, market_id: 'OKX' });\n publishAccountInfo(terminal, `okx/${uid}/funding/USDT`, fundingAccountInfo$);\n publishAccountInfo(terminal, `okx/${uid}/earning/USDT`, earningAccountInfo$);\n });\ndefer(() => terminal.dispose$).subscribe(() => sub.unsubscribe());\n\nconst assetBalance$ = defer(() => client.getAssetBalances({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst fundingAccountInfo$ = combineLatest([accountUid$, assetBalance$, marketIndexTickerUSDT$]).pipe(\n map(([uid, assetBalances, marketIndexTickerUSDT]): IAccountInfo => {\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n assetBalances.data.forEach((x) => {\n if (x.ccy === 'USDT') {\n money.equity += +x.bal;\n money.balance += +x.bal;\n money.free += +x.bal;\n } else {\n const price = marketIndexTickerUSDT.get(x.ccy + '-USDT') || 0;\n const productId = encodePath('SPOT', `${x.ccy}-USDT`);\n const valuation = price * +x.bal || 0;\n positions.push({\n datasource_id: 'OKX',\n position_id: productId,\n product_id: productId,\n direction: 'LONG',\n volume: +x.bal,\n free_volume: +x.bal,\n position_price: price,\n floating_profit: 0,\n closable_price: price,\n valuation: valuation,\n });\n\n money.equity += valuation;\n money.balance += valuation;\n money.used += valuation;\n }\n });\n\n return {\n account_id: `okx/${uid}/funding/USDT`,\n updated_at: Date.now(),\n money: money,\n currencies: [money],\n positions: positions,\n orders: [],\n };\n }),\n shareReplay(1),\n);\n\nconst savingBalance$ = defer(() => client.getFinanceSavingsBalance({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst earningAccountInfo$ = combineLatest([accountUid$, savingBalance$]).pipe(\n map(([uid, offers]): IAccountInfo => {\n const equity = offers.data.filter((x) => x.ccy === 'USDT').reduce((acc, x) => acc + +x.amt, 0);\n const balance = equity;\n const free = equity;\n const used = 0;\n const profit = 0;\n\n const money: IAccountMoney = {\n currency: 'USDT',\n equity,\n balance,\n used,\n free,\n profit,\n };\n return {\n account_id: `okx/${uid}/earning/USDT`,\n updated_at: Date.now(),\n money: money,\n currencies: [money],\n positions: [],\n orders: [],\n };\n }),\n shareReplay(1),\n);\n"]}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n addAccountMarket,\n IAccountInfo,\n IAccountMoney,\n IPosition,\n publishAccountInfo,\n} from '@yuants/data-account';\nimport { IOrder } from '@yuants/data-order';\nimport { Terminal } from '@yuants/protocol';\nimport { encodePath } from '@yuants/utils';\nimport { combineLatest, defer, filter, first, map, repeat, retry, shareReplay, withLatestFrom } from 'rxjs';\nimport { client } from './api';\nimport { mapProductIdToMarginProduct$, mapProductIdToUsdtSwapProduct$ } from './product';\n\nconst terminal = Terminal.fromNodeEnv();\n\nexport const accountPosition$ = defer(() => client.getAccountPositions({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const accountConfig$ = defer(() => client.getAccountConfig()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nconst subAccountUids$ = defer(() => client.getSubAccountList()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nexport const accountUid$ = accountConfig$.pipe(\n map((x) => x.data[0].uid),\n filter((x) => !!x),\n shareReplay(1),\n);\n\nconst accountBalance$ = defer(() => client.getAccountBalance({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst accountUsdtBalance$ = accountBalance$.pipe(\n map((x) => x.data[0]?.details.find((x) => x.ccy === 'USDT')),\n filter((x): x is Exclude<typeof x, undefined> => !!x),\n shareReplay(1),\n);\n\nconst pendingOrders$ = defer(() => client.getTradeOrdersPending({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst marketIndexTickerUSDT$ = defer(() => client.getMarketIndexTicker({ quoteCcy: 'USDT' })).pipe(\n map((x) => {\n const mapInstIdToPrice = new Map<string, number>();\n x.data.forEach((inst) => mapInstIdToPrice.set(inst.instId, Number(inst.idxPx)));\n return mapInstIdToPrice;\n }),\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const tradingAccountInfo$ = accountPosition$.pipe(\n withLatestFrom(\n accountUid$,\n accountBalance$,\n pendingOrders$,\n mapProductIdToUsdtSwapProduct$,\n mapProductIdToMarginProduct$,\n marketIndexTickerUSDT$,\n ),\n map(\n ([\n positionsApi,\n uid,\n balanceApi,\n orders,\n mapProductIdToUsdtSwapProduct,\n mapProductIdToMarginProduct,\n marketIndexTickerUSDT,\n ]): IAccountInfo => {\n const account_id = `okx/${uid}/trading`;\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n balanceApi.data[0]?.details.forEach((detail) => {\n if (detail.ccy === 'USDT') {\n const balance = +(detail.cashBal ?? 0);\n const free = Math.min(\n balance, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const equity = +(detail.eq ?? 0);\n const used = equity - free;\n const profit = equity - balance;\n money.equity += equity;\n money.balance += balance;\n money.used += used;\n money.free += free;\n money.profit += profit;\n } else {\n const volume = +(detail.cashBal ?? 0);\n const free_volume = Math.min(\n volume, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const closable_price = marketIndexTickerUSDT.get(detail.ccy + '-USDT') || 0;\n const delta_equity = volume * closable_price || 0;\n const delta_profit = +detail.totalPnl || 0;\n const delta_balance = delta_equity - delta_profit;\n const delta_used = delta_equity; // all used\n const delta_free = 0;\n\n const product_id = encodePath('SPOT', `${detail.ccy}-USDT`);\n positions.push({\n position_id: product_id,\n datasource_id: 'OKX',\n product_id: product_id,\n direction: 'LONG',\n volume: volume,\n free_volume: free_volume,\n position_price: +detail.accAvgPx,\n floating_profit: delta_profit,\n closable_price: closable_price,\n valuation: delta_equity,\n });\n\n money.equity += delta_equity;\n money.profit += delta_profit;\n money.balance += delta_balance;\n money.used += delta_used;\n money.free += delta_free;\n }\n });\n positionsApi.data.forEach((x) => {\n const direction =\n x.posSide === 'long' ? 'LONG' : x.posSide === 'short' ? 'SHORT' : +x.pos > 0 ? 'LONG' : 'SHORT';\n const volume = Math.abs(+x.pos);\n const product_id = encodePath(x.instType, x.instId);\n const closable_price = +x.last;\n const valuation =\n x.instType === 'SWAP'\n ? (mapProductIdToUsdtSwapProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : x.instType === 'MARGIN'\n ? (mapProductIdToMarginProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : 0;\n\n positions.push({\n position_id: x.posId,\n datasource_id: 'OKX',\n product_id,\n direction,\n volume: volume,\n free_volume: +x.availPos,\n closable_price,\n position_price: +x.avgPx,\n floating_profit: +x.upl,\n valuation,\n });\n });\n return {\n account_id: account_id,\n updated_at: Date.now(),\n money: money,\n positions: positions,\n // orders: orders.data.map((x): IOrder => {\n // const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';\n\n // const order_direction =\n // x.side === 'buy'\n // ? x.posSide === 'long'\n // ? 'OPEN_LONG'\n // : 'CLOSE_SHORT'\n // : x.posSide === 'short'\n // ? 'OPEN_SHORT'\n // : 'CLOSE_LONG';\n // return {\n // order_id: x.ordId,\n // account_id,\n // product_id: encodePath(x.instType, x.instId),\n // submit_at: +x.cTime,\n // filled_at: +x.fillTime,\n // order_type,\n // order_direction,\n // volume: +x.sz,\n // traded_volume: +x.accFillSz,\n // price: +x.px,\n // traded_price: +x.avgPx,\n // };\n // }),\n };\n },\n ),\n shareReplay(1),\n);\n\nconst sub = defer(() => accountUid$)\n .pipe(first())\n .subscribe((uid) => {\n publishAccountInfo(terminal, `okx/${uid}/trading`, tradingAccountInfo$);\n addAccountMarket(terminal, { account_id: `okx/${uid}/trading`, market_id: 'OKX' });\n publishAccountInfo(terminal, `okx/${uid}/funding/USDT`, fundingAccountInfo$);\n publishAccountInfo(terminal, `okx/${uid}/earning/USDT`, earningAccountInfo$);\n });\ndefer(() => terminal.dispose$).subscribe(() => sub.unsubscribe());\n\nconst assetBalance$ = defer(() => client.getAssetBalances({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst fundingAccountInfo$ = combineLatest([accountUid$, assetBalance$, marketIndexTickerUSDT$]).pipe(\n map(([uid, assetBalances, marketIndexTickerUSDT]): IAccountInfo => {\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n assetBalances.data.forEach((x) => {\n if (x.ccy === 'USDT') {\n money.equity += +x.bal;\n money.balance += +x.bal;\n money.free += +x.bal;\n } else {\n const price = marketIndexTickerUSDT.get(x.ccy + '-USDT') || 0;\n const productId = encodePath('SPOT', `${x.ccy}-USDT`);\n const valuation = price * +x.bal || 0;\n positions.push({\n datasource_id: 'OKX',\n position_id: productId,\n product_id: productId,\n direction: 'LONG',\n volume: +x.bal,\n free_volume: +x.bal,\n position_price: price,\n floating_profit: 0,\n closable_price: price,\n valuation: valuation,\n });\n\n money.equity += valuation;\n money.balance += valuation;\n money.used += valuation;\n }\n });\n\n return {\n account_id: `okx/${uid}/funding/USDT`,\n updated_at: Date.now(),\n money: money,\n positions: positions,\n };\n }),\n shareReplay(1),\n);\n\nconst savingBalance$ = defer(() => client.getFinanceSavingsBalance({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst earningAccountInfo$ = combineLatest([accountUid$, savingBalance$]).pipe(\n map(([uid, offers]): IAccountInfo => {\n const equity = offers.data.filter((x) => x.ccy === 'USDT').reduce((acc, x) => acc + +x.amt, 0);\n const balance = equity;\n const free = equity;\n const used = 0;\n const profit = 0;\n\n const money: IAccountMoney = {\n currency: 'USDT',\n equity,\n balance,\n used,\n free,\n profit,\n };\n return {\n account_id: `okx/${uid}/earning/USDT`,\n updated_at: Date.now(),\n money: money,\n positions: [],\n };\n }),\n shareReplay(1),\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAIb,MAAM,sBAAsB,CAAC;AAU9B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;EAI1B,CAAC;AAQF,eAAO,MAAM,WAAW,mCAIvB,CAAC;AA+BF,eAAO,MAAM,mBAAmB,yCAqI/B,CAAC"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAIb,MAAM,sBAAsB,CAAC;AAU9B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;EAI1B,CAAC;AAQF,eAAO,MAAM,WAAW,mCAIvB,CAAC;AA+BF,eAAO,MAAM,mBAAmB,yCAoI/B,CAAC"}
package/lib/account.js CHANGED
@@ -98,31 +98,31 @@ exports.tradingAccountInfo$ = exports.accountPosition$.pipe((0, rxjs_1.withLates
98
98
  account_id: account_id,
99
99
  updated_at: Date.now(),
100
100
  money: money,
101
- currencies: [money],
102
101
  positions: positions,
103
- orders: orders.data.map((x) => {
104
- const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';
105
- const order_direction = x.side === 'buy'
106
- ? x.posSide === 'long'
107
- ? 'OPEN_LONG'
108
- : 'CLOSE_SHORT'
109
- : x.posSide === 'short'
110
- ? 'OPEN_SHORT'
111
- : 'CLOSE_LONG';
112
- return {
113
- order_id: x.ordId,
114
- account_id,
115
- product_id: (0, utils_1.encodePath)(x.instType, x.instId),
116
- submit_at: +x.cTime,
117
- filled_at: +x.fillTime,
118
- order_type,
119
- order_direction,
120
- volume: +x.sz,
121
- traded_volume: +x.accFillSz,
122
- price: +x.px,
123
- traded_price: +x.avgPx,
124
- };
125
- }),
102
+ // orders: orders.data.map((x): IOrder => {
103
+ // const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';
104
+ // const order_direction =
105
+ // x.side === 'buy'
106
+ // ? x.posSide === 'long'
107
+ // ? 'OPEN_LONG'
108
+ // : 'CLOSE_SHORT'
109
+ // : x.posSide === 'short'
110
+ // ? 'OPEN_SHORT'
111
+ // : 'CLOSE_LONG';
112
+ // return {
113
+ // order_id: x.ordId,
114
+ // account_id,
115
+ // product_id: encodePath(x.instType, x.instId),
116
+ // submit_at: +x.cTime,
117
+ // filled_at: +x.fillTime,
118
+ // order_type,
119
+ // order_direction,
120
+ // volume: +x.sz,
121
+ // traded_volume: +x.accFillSz,
122
+ // price: +x.px,
123
+ // traded_price: +x.avgPx,
124
+ // };
125
+ // }),
126
126
  };
127
127
  }), (0, rxjs_1.shareReplay)(1));
128
128
  const sub = (0, rxjs_1.defer)(() => exports.accountUid$)
@@ -169,9 +169,7 @@ const fundingAccountInfo$ = (0, rxjs_1.combineLatest)([exports.accountUid$, asse
169
169
  account_id: `okx/${uid}/funding/USDT`,
170
170
  updated_at: Date.now(),
171
171
  money: money,
172
- currencies: [money],
173
172
  positions: positions,
174
- orders: [],
175
173
  };
176
174
  }), (0, rxjs_1.shareReplay)(1));
177
175
  const savingBalance$ = (0, rxjs_1.defer)(() => api_1.client.getFinanceSavingsBalance({})).pipe((0, rxjs_1.repeat)({ delay: 5000 }), (0, rxjs_1.retry)({ delay: 5000 }), (0, rxjs_1.shareReplay)(1));
@@ -193,9 +191,7 @@ const earningAccountInfo$ = (0, rxjs_1.combineLatest)([exports.accountUid$, savi
193
191
  account_id: `okx/${uid}/earning/USDT`,
194
192
  updated_at: Date.now(),
195
193
  money: money,
196
- currencies: [money],
197
194
  positions: [],
198
- orders: [],
199
195
  };
200
196
  }), (0, rxjs_1.shareReplay)(1));
201
197
  //# sourceMappingURL=account.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n addAccountMarket,\n IAccountInfo,\n IAccountMoney,\n IPosition,\n publishAccountInfo,\n} from '@yuants/data-account';\nimport { IOrder } from '@yuants/data-order';\nimport { Terminal } from '@yuants/protocol';\nimport { encodePath } from '@yuants/utils';\nimport { combineLatest, defer, filter, first, map, repeat, retry, shareReplay, withLatestFrom } from 'rxjs';\nimport { client } from './api';\nimport { mapProductIdToMarginProduct$, mapProductIdToUsdtSwapProduct$ } from './product';\n\nconst terminal = Terminal.fromNodeEnv();\n\nexport const accountPosition$ = defer(() => client.getAccountPositions({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const accountConfig$ = defer(() => client.getAccountConfig()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nconst subAccountUids$ = defer(() => client.getSubAccountList()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nexport const accountUid$ = accountConfig$.pipe(\n map((x) => x.data[0].uid),\n filter((x) => !!x),\n shareReplay(1),\n);\n\nconst accountBalance$ = defer(() => client.getAccountBalance({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst accountUsdtBalance$ = accountBalance$.pipe(\n map((x) => x.data[0]?.details.find((x) => x.ccy === 'USDT')),\n filter((x): x is Exclude<typeof x, undefined> => !!x),\n shareReplay(1),\n);\n\nconst pendingOrders$ = defer(() => client.getTradeOrdersPending({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst marketIndexTickerUSDT$ = defer(() => client.getMarketIndexTicker({ quoteCcy: 'USDT' })).pipe(\n map((x) => {\n const mapInstIdToPrice = new Map<string, number>();\n x.data.forEach((inst) => mapInstIdToPrice.set(inst.instId, Number(inst.idxPx)));\n return mapInstIdToPrice;\n }),\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const tradingAccountInfo$ = accountPosition$.pipe(\n withLatestFrom(\n accountUid$,\n accountBalance$,\n pendingOrders$,\n mapProductIdToUsdtSwapProduct$,\n mapProductIdToMarginProduct$,\n marketIndexTickerUSDT$,\n ),\n map(\n ([\n positionsApi,\n uid,\n balanceApi,\n orders,\n mapProductIdToUsdtSwapProduct,\n mapProductIdToMarginProduct,\n marketIndexTickerUSDT,\n ]): IAccountInfo => {\n const account_id = `okx/${uid}/trading`;\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n balanceApi.data[0]?.details.forEach((detail) => {\n if (detail.ccy === 'USDT') {\n const balance = +(detail.cashBal ?? 0);\n const free = Math.min(\n balance, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const equity = +(detail.eq ?? 0);\n const used = equity - free;\n const profit = equity - balance;\n money.equity += equity;\n money.balance += balance;\n money.used += used;\n money.free += free;\n money.profit += profit;\n } else {\n const volume = +(detail.cashBal ?? 0);\n const free_volume = Math.min(\n volume, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const closable_price = marketIndexTickerUSDT.get(detail.ccy + '-USDT') || 0;\n const delta_equity = volume * closable_price || 0;\n const delta_profit = +detail.totalPnl || 0;\n const delta_balance = delta_equity - delta_profit;\n const delta_used = delta_equity; // all used\n const delta_free = 0;\n\n const product_id = encodePath('SPOT', `${detail.ccy}-USDT`);\n positions.push({\n position_id: product_id,\n datasource_id: 'OKX',\n product_id: product_id,\n direction: 'LONG',\n volume: volume,\n free_volume: free_volume,\n position_price: +detail.accAvgPx,\n floating_profit: delta_profit,\n closable_price: closable_price,\n valuation: delta_equity,\n });\n\n money.equity += delta_equity;\n money.profit += delta_profit;\n money.balance += delta_balance;\n money.used += delta_used;\n money.free += delta_free;\n }\n });\n positionsApi.data.forEach((x) => {\n const direction =\n x.posSide === 'long' ? 'LONG' : x.posSide === 'short' ? 'SHORT' : +x.pos > 0 ? 'LONG' : 'SHORT';\n const volume = Math.abs(+x.pos);\n const product_id = encodePath(x.instType, x.instId);\n const closable_price = +x.last;\n const valuation =\n x.instType === 'SWAP'\n ? (mapProductIdToUsdtSwapProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : x.instType === 'MARGIN'\n ? (mapProductIdToMarginProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : 0;\n\n positions.push({\n position_id: x.posId,\n datasource_id: 'OKX',\n product_id,\n direction,\n volume: volume,\n free_volume: +x.availPos,\n closable_price,\n position_price: +x.avgPx,\n floating_profit: +x.upl,\n valuation,\n });\n });\n return {\n account_id: account_id,\n updated_at: Date.now(),\n money: money,\n currencies: [money],\n positions: positions,\n orders: orders.data.map((x): IOrder => {\n const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';\n\n const order_direction =\n x.side === 'buy'\n ? x.posSide === 'long'\n ? 'OPEN_LONG'\n : 'CLOSE_SHORT'\n : x.posSide === 'short'\n ? 'OPEN_SHORT'\n : 'CLOSE_LONG';\n return {\n order_id: x.ordId,\n account_id,\n product_id: encodePath(x.instType, x.instId),\n submit_at: +x.cTime,\n filled_at: +x.fillTime,\n order_type,\n order_direction,\n volume: +x.sz,\n traded_volume: +x.accFillSz,\n price: +x.px,\n traded_price: +x.avgPx,\n };\n }),\n };\n },\n ),\n shareReplay(1),\n);\n\nconst sub = defer(() => accountUid$)\n .pipe(first())\n .subscribe((uid) => {\n publishAccountInfo(terminal, `okx/${uid}/trading`, tradingAccountInfo$);\n addAccountMarket(terminal, { account_id: `okx/${uid}/trading`, market_id: 'OKX' });\n publishAccountInfo(terminal, `okx/${uid}/funding/USDT`, fundingAccountInfo$);\n publishAccountInfo(terminal, `okx/${uid}/earning/USDT`, earningAccountInfo$);\n });\ndefer(() => terminal.dispose$).subscribe(() => sub.unsubscribe());\n\nconst assetBalance$ = defer(() => client.getAssetBalances({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst fundingAccountInfo$ = combineLatest([accountUid$, assetBalance$, marketIndexTickerUSDT$]).pipe(\n map(([uid, assetBalances, marketIndexTickerUSDT]): IAccountInfo => {\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n assetBalances.data.forEach((x) => {\n if (x.ccy === 'USDT') {\n money.equity += +x.bal;\n money.balance += +x.bal;\n money.free += +x.bal;\n } else {\n const price = marketIndexTickerUSDT.get(x.ccy + '-USDT') || 0;\n const productId = encodePath('SPOT', `${x.ccy}-USDT`);\n const valuation = price * +x.bal || 0;\n positions.push({\n datasource_id: 'OKX',\n position_id: productId,\n product_id: productId,\n direction: 'LONG',\n volume: +x.bal,\n free_volume: +x.bal,\n position_price: price,\n floating_profit: 0,\n closable_price: price,\n valuation: valuation,\n });\n\n money.equity += valuation;\n money.balance += valuation;\n money.used += valuation;\n }\n });\n\n return {\n account_id: `okx/${uid}/funding/USDT`,\n updated_at: Date.now(),\n money: money,\n currencies: [money],\n positions: positions,\n orders: [],\n };\n }),\n shareReplay(1),\n);\n\nconst savingBalance$ = defer(() => client.getFinanceSavingsBalance({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst earningAccountInfo$ = combineLatest([accountUid$, savingBalance$]).pipe(\n map(([uid, offers]): IAccountInfo => {\n const equity = offers.data.filter((x) => x.ccy === 'USDT').reduce((acc, x) => acc + +x.amt, 0);\n const balance = equity;\n const free = equity;\n const used = 0;\n const profit = 0;\n\n const money: IAccountMoney = {\n currency: 'USDT',\n equity,\n balance,\n used,\n free,\n profit,\n };\n return {\n account_id: `okx/${uid}/earning/USDT`,\n updated_at: Date.now(),\n money: money,\n currencies: [money],\n positions: [],\n orders: [],\n };\n }),\n shareReplay(1),\n);\n"]}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n addAccountMarket,\n IAccountInfo,\n IAccountMoney,\n IPosition,\n publishAccountInfo,\n} from '@yuants/data-account';\nimport { IOrder } from '@yuants/data-order';\nimport { Terminal } from '@yuants/protocol';\nimport { encodePath } from '@yuants/utils';\nimport { combineLatest, defer, filter, first, map, repeat, retry, shareReplay, withLatestFrom } from 'rxjs';\nimport { client } from './api';\nimport { mapProductIdToMarginProduct$, mapProductIdToUsdtSwapProduct$ } from './product';\n\nconst terminal = Terminal.fromNodeEnv();\n\nexport const accountPosition$ = defer(() => client.getAccountPositions({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const accountConfig$ = defer(() => client.getAccountConfig()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nconst subAccountUids$ = defer(() => client.getSubAccountList()).pipe(\n repeat({ delay: 10_000 }),\n retry({ delay: 10_000 }),\n shareReplay(1),\n);\n\nexport const accountUid$ = accountConfig$.pipe(\n map((x) => x.data[0].uid),\n filter((x) => !!x),\n shareReplay(1),\n);\n\nconst accountBalance$ = defer(() => client.getAccountBalance({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst accountUsdtBalance$ = accountBalance$.pipe(\n map((x) => x.data[0]?.details.find((x) => x.ccy === 'USDT')),\n filter((x): x is Exclude<typeof x, undefined> => !!x),\n shareReplay(1),\n);\n\nconst pendingOrders$ = defer(() => client.getTradeOrdersPending({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst marketIndexTickerUSDT$ = defer(() => client.getMarketIndexTicker({ quoteCcy: 'USDT' })).pipe(\n map((x) => {\n const mapInstIdToPrice = new Map<string, number>();\n x.data.forEach((inst) => mapInstIdToPrice.set(inst.instId, Number(inst.idxPx)));\n return mapInstIdToPrice;\n }),\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nexport const tradingAccountInfo$ = accountPosition$.pipe(\n withLatestFrom(\n accountUid$,\n accountBalance$,\n pendingOrders$,\n mapProductIdToUsdtSwapProduct$,\n mapProductIdToMarginProduct$,\n marketIndexTickerUSDT$,\n ),\n map(\n ([\n positionsApi,\n uid,\n balanceApi,\n orders,\n mapProductIdToUsdtSwapProduct,\n mapProductIdToMarginProduct,\n marketIndexTickerUSDT,\n ]): IAccountInfo => {\n const account_id = `okx/${uid}/trading`;\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n balanceApi.data[0]?.details.forEach((detail) => {\n if (detail.ccy === 'USDT') {\n const balance = +(detail.cashBal ?? 0);\n const free = Math.min(\n balance, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const equity = +(detail.eq ?? 0);\n const used = equity - free;\n const profit = equity - balance;\n money.equity += equity;\n money.balance += balance;\n money.used += used;\n money.free += free;\n money.profit += profit;\n } else {\n const volume = +(detail.cashBal ?? 0);\n const free_volume = Math.min(\n volume, // free should no more than balance if there is much profits\n +(detail.availEq ?? 0),\n );\n const closable_price = marketIndexTickerUSDT.get(detail.ccy + '-USDT') || 0;\n const delta_equity = volume * closable_price || 0;\n const delta_profit = +detail.totalPnl || 0;\n const delta_balance = delta_equity - delta_profit;\n const delta_used = delta_equity; // all used\n const delta_free = 0;\n\n const product_id = encodePath('SPOT', `${detail.ccy}-USDT`);\n positions.push({\n position_id: product_id,\n datasource_id: 'OKX',\n product_id: product_id,\n direction: 'LONG',\n volume: volume,\n free_volume: free_volume,\n position_price: +detail.accAvgPx,\n floating_profit: delta_profit,\n closable_price: closable_price,\n valuation: delta_equity,\n });\n\n money.equity += delta_equity;\n money.profit += delta_profit;\n money.balance += delta_balance;\n money.used += delta_used;\n money.free += delta_free;\n }\n });\n positionsApi.data.forEach((x) => {\n const direction =\n x.posSide === 'long' ? 'LONG' : x.posSide === 'short' ? 'SHORT' : +x.pos > 0 ? 'LONG' : 'SHORT';\n const volume = Math.abs(+x.pos);\n const product_id = encodePath(x.instType, x.instId);\n const closable_price = +x.last;\n const valuation =\n x.instType === 'SWAP'\n ? (mapProductIdToUsdtSwapProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : x.instType === 'MARGIN'\n ? (mapProductIdToMarginProduct.get(product_id)?.value_scale ?? 1) * volume * closable_price\n : 0;\n\n positions.push({\n position_id: x.posId,\n datasource_id: 'OKX',\n product_id,\n direction,\n volume: volume,\n free_volume: +x.availPos,\n closable_price,\n position_price: +x.avgPx,\n floating_profit: +x.upl,\n valuation,\n });\n });\n return {\n account_id: account_id,\n updated_at: Date.now(),\n money: money,\n positions: positions,\n // orders: orders.data.map((x): IOrder => {\n // const order_type = x.ordType === 'market' ? 'MARKET' : x.ordType === 'limit' ? 'LIMIT' : 'UNKNOWN';\n\n // const order_direction =\n // x.side === 'buy'\n // ? x.posSide === 'long'\n // ? 'OPEN_LONG'\n // : 'CLOSE_SHORT'\n // : x.posSide === 'short'\n // ? 'OPEN_SHORT'\n // : 'CLOSE_LONG';\n // return {\n // order_id: x.ordId,\n // account_id,\n // product_id: encodePath(x.instType, x.instId),\n // submit_at: +x.cTime,\n // filled_at: +x.fillTime,\n // order_type,\n // order_direction,\n // volume: +x.sz,\n // traded_volume: +x.accFillSz,\n // price: +x.px,\n // traded_price: +x.avgPx,\n // };\n // }),\n };\n },\n ),\n shareReplay(1),\n);\n\nconst sub = defer(() => accountUid$)\n .pipe(first())\n .subscribe((uid) => {\n publishAccountInfo(terminal, `okx/${uid}/trading`, tradingAccountInfo$);\n addAccountMarket(terminal, { account_id: `okx/${uid}/trading`, market_id: 'OKX' });\n publishAccountInfo(terminal, `okx/${uid}/funding/USDT`, fundingAccountInfo$);\n publishAccountInfo(terminal, `okx/${uid}/earning/USDT`, earningAccountInfo$);\n });\ndefer(() => terminal.dispose$).subscribe(() => sub.unsubscribe());\n\nconst assetBalance$ = defer(() => client.getAssetBalances({})).pipe(\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst fundingAccountInfo$ = combineLatest([accountUid$, assetBalance$, marketIndexTickerUSDT$]).pipe(\n map(([uid, assetBalances, marketIndexTickerUSDT]): IAccountInfo => {\n const money: IAccountMoney = { currency: 'USDT', equity: 0, balance: 0, used: 0, free: 0, profit: 0 };\n const positions: IPosition[] = [];\n\n assetBalances.data.forEach((x) => {\n if (x.ccy === 'USDT') {\n money.equity += +x.bal;\n money.balance += +x.bal;\n money.free += +x.bal;\n } else {\n const price = marketIndexTickerUSDT.get(x.ccy + '-USDT') || 0;\n const productId = encodePath('SPOT', `${x.ccy}-USDT`);\n const valuation = price * +x.bal || 0;\n positions.push({\n datasource_id: 'OKX',\n position_id: productId,\n product_id: productId,\n direction: 'LONG',\n volume: +x.bal,\n free_volume: +x.bal,\n position_price: price,\n floating_profit: 0,\n closable_price: price,\n valuation: valuation,\n });\n\n money.equity += valuation;\n money.balance += valuation;\n money.used += valuation;\n }\n });\n\n return {\n account_id: `okx/${uid}/funding/USDT`,\n updated_at: Date.now(),\n money: money,\n positions: positions,\n };\n }),\n shareReplay(1),\n);\n\nconst savingBalance$ = defer(() => client.getFinanceSavingsBalance({})).pipe(\n repeat({ delay: 5000 }),\n retry({ delay: 5000 }),\n shareReplay(1),\n);\n\nconst earningAccountInfo$ = combineLatest([accountUid$, savingBalance$]).pipe(\n map(([uid, offers]): IAccountInfo => {\n const equity = offers.data.filter((x) => x.ccy === 'USDT').reduce((acc, x) => acc + +x.amt, 0);\n const balance = equity;\n const free = equity;\n const used = 0;\n const profit = 0;\n\n const money: IAccountMoney = {\n currency: 'USDT',\n equity,\n balance,\n used,\n free,\n profit,\n };\n return {\n account_id: `okx/${uid}/earning/USDT`,\n updated_at: Date.now(),\n money: money,\n positions: [],\n };\n }),\n shareReplay(1),\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuants/vendor-okx",
3
- "version": "0.17.1",
3
+ "version": "0.17.2",
4
4
  "bin": "lib/cli.js",
5
5
  "files": [
6
6
  "dist",
@@ -10,7 +10,7 @@
10
10
  "dependencies": {
11
11
  "@yuants/protocol": "0.37.2",
12
12
  "@yuants/transfer": "0.2.4",
13
- "@yuants/data-account": "0.3.3",
13
+ "@yuants/data-account": "0.3.4",
14
14
  "@yuants/data-order": "0.2.1",
15
15
  "@yuants/utils": "0.5.0",
16
16
  "@yuants/sql": "0.8.3",
package/temp/image-tag CHANGED
@@ -1 +1 @@
1
- sha-8e0b6ef6a5e54de9f49b72355c2845da5cb055a5
1
+ sha-228c9502ea76194e265da7d2fac1dcb84e0d7ba1
@@ -1,6 +1,6 @@
1
1
  {
2
- "apps/vendor-okx/CHANGELOG.json": "065eafb1c1ec13c2d594c989bc205c94a874e9ce",
3
- "apps/vendor-okx/CHANGELOG.md": "1d22611d9bf572cbd8f0f7f901dcb555b4a14192",
2
+ "apps/vendor-okx/CHANGELOG.json": "e9e9f3ddafe30e5b667b2d328dcc6c667bfa698a",
3
+ "apps/vendor-okx/CHANGELOG.md": "b72c199aac0887db83707bd58ea43847304afbd2",
4
4
  "apps/vendor-okx/README.md": "ac3d1f6c4c8d73066664699b0bb1b01db02e67a2",
5
5
  "apps/vendor-okx/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
6
6
  "apps/vendor-okx/build/Dockerfile": "e625b9593e496c343297c9ce133d6cc4be9617a7",
@@ -8,8 +8,8 @@
8
8
  "apps/vendor-okx/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
9
9
  "apps/vendor-okx/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
10
10
  "apps/vendor-okx/etc/vendor-okx.api.md": "92c54ccd547d2ad81ca6088158ca193e85c208df",
11
- "apps/vendor-okx/package.json": "38623ab0fceb6799e6363732a5669cb9dd647648",
12
- "apps/vendor-okx/src/account.ts": "ee25dbdc249b056856d64d3a67e654d8aa2dc53b",
11
+ "apps/vendor-okx/package.json": "bc9c23f69c35eca3a4923f35b050135aec0dd676",
12
+ "apps/vendor-okx/src/account.ts": "7e8bb44845269a401a850aff2e5bf170b0811bd8",
13
13
  "apps/vendor-okx/src/api.ts": "0433a359ec1fb84c866c1875b630cbb861696533",
14
14
  "apps/vendor-okx/src/cli.ts": "9bf6b5559a6c6f33da20e74cc6c5d702c60ec891",
15
15
  "apps/vendor-okx/src/cluster.ts": "9971d8d5e6af16e09d2d1fe5e9f05ccee87281e8",
@@ -27,7 +27,7 @@
27
27
  "apps/vendor-okx/.rush/temp/shrinkwrap-deps.json": "87df045a10e829fd62d50013da30fd929442d54c",
28
28
  "libraries/protocol/temp/package-deps.json": "d326f24867d9ae3fef16ff84ba537eabb7c8adf0",
29
29
  "libraries/transfer/temp/package-deps.json": "cb2786055e5e79cd7d9d0f5787e300ca1c0bf002",
30
- "libraries/data-account/temp/package-deps.json": "7fcf0ee1dd95c391d26c35e9c380a0fe3636c004",
30
+ "libraries/data-account/temp/package-deps.json": "0e5bd33f40288d3bc2a3b32cf51188a346a8dd34",
31
31
  "libraries/data-order/temp/package-deps.json": "58c4daa9bd7c6420bbf92efd003aa311ade858ae",
32
32
  "libraries/utils/temp/package-deps.json": "c747617da1c0a40843603c62a7477da641ff0aef",
33
33
  "libraries/sql/temp/package-deps.json": "1cb2248873d01ed732e8473f7b242a41f987fdd7",