From 44aab281a79f8a478ce9e1ad66a8143b4acbd4bd Mon Sep 17 00:00:00 2001 From: derek Date: Wed, 22 Sep 2021 14:19:44 -0700 Subject: [PATCH] add getPosition --- README.md | 9 +++++++++ src/index.ts | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/README.md b/README.md index 8d4b123..1e3af80 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,15 @@ To estimate a trade: yarn start estimateChangePosition -n arbitrum_rinkeby --exchangeAddress 0x1B5A08020E94066a3fB91Aff8B395De2d9cfaDd2 --deltaAsset --deltaStable ``` +To get position: + +``` +yarn start getPosition -n arbitrum_rinkeby --exchangeAddress 0x1B5A08020E94066a3fB91Aff8B395De2d9cfaDd2 --trader +``` + +`--trader` defaults to your selected address, so it shows your position, if +not specified. + To liquidate: ``` diff --git a/src/index.ts b/src/index.ts index ede17c9..56eff0c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -274,6 +274,45 @@ const main = async () => { } } ) + .command( + ["getPosition"], + "Get position from exchange", + async (yargs: Argv) => { + return yargs + .option("trader", { + alias: "t", + describe: "traders account, uses current account if not specified", + type: "string", + }); + }, + async (argv) => { + let { trader } = argv; + + const { accountNumber, networkId, exchangeAddress } = + getStandardParams(argv); + + const wallet = loadAccount(networkId, accountNumber); + const exchange = IExchange__factory.connect(exchangeAddress, wallet); + + if (trader === undefined) { + trader = wallet.address; + } + + try { + const trade = await exchange.getPosition(trader); + + console.log({ + asset: trade.asset.toString(), + stable: trade.stable.toString(), + adlTrancheId: trade.adlTrancheId.toString(), + adlShareClass: trade.adlShareClass.toString(), + }); + } catch (e) { + console.log("Can not get position"); + console.log({ e }); + } + } + ) .command( ["liquidationBot"], "run a bot to liquidate traders",