set empty position condition for close position compound

master
TZGyn 3 months ago
parent 0e9ba90c88
commit 2952a8ec5e

@ -95,6 +95,8 @@ export const POST = async ({ locals, request }) => {
const { key, secret, symbol, hedge } = form.data const { key, secret, symbol, hedge } = form.data
let makeOrder = true
try { try {
let qty let qty
let takeProfit let takeProfit
@ -190,10 +192,7 @@ export const POST = async ({ locals, request }) => {
).toFixed(decimalLength) ).toFixed(decimalLength)
} }
positionIdx = form.data.side === 'Buy' ? 1 : 2 positionIdx = form.data.side === 'Buy' ? 1 : 2
} else if ( } else if (form.data.type === 'Close Position') {
form.data.type === 'Close Position' ||
form.data.type === 'Close Position Compound'
) {
const position = await client.getPositionInfo({ const position = await client.getPositionInfo({
category: 'linear', category: 'linear',
symbol: symbol, symbol: symbol,
@ -236,6 +235,54 @@ export const POST = async ({ locals, request }) => {
: ('Buy' as const) : ('Buy' as const)
qty = position.result.list[0].size qty = position.result.list[0].size
} }
} else if (form.data.type === 'Close Position Compound') {
const position = await client.getPositionInfo({
category: 'linear',
symbol: symbol,
})
console.log('closing')
console.log(position.result.list)
if (hedge === 'true') {
const closeSide = form.data.side
if (closeSide === undefined) {
makeOrder = false
} else {
if (position.result.list.length <= 0) {
makeOrder = false
} else {
const order = position.result.list.find(
(result) => result.side === closeSide,
)
if (order) {
side =
order.side === 'Buy'
? ('Sell' as const)
: ('Buy' as const)
qty = order.size
positionIdx = order.side === 'Buy' ? 1 : 2
} else {
makeOrder = false
}
}
}
} else {
if (position.result.list.length <= 0) {
makeOrder = false
} else {
if (position.result.list[0].side === 'None') {
makeOrder = false
} else {
side =
position.result.list[0].side === 'Buy'
? ('Sell' as const)
: ('Buy' as const)
qty = position.result.list[0].size
}
}
}
} else { } else {
form.data.type form.data.type
const current_stack = await db.query.current_stack.findFirst() const current_stack = await db.query.current_stack.findFirst()
@ -256,12 +303,13 @@ export const POST = async ({ locals, request }) => {
} }
console.log({ qty, takeProfit, stopLoss }) console.log({ qty, takeProfit, stopLoss })
if (makeOrder) {
const order = await client.submitOrder({ const order = await client.submitOrder({
category: 'linear', category: 'linear',
symbol, symbol,
side, side: side!,
orderType: 'Market', orderType: 'Market',
qty, qty: qty!,
takeProfit: takeProfit, takeProfit: takeProfit,
stopLoss: stopLoss, stopLoss: stopLoss,
isLeverage: isLeverage ? 1 : 0, isLeverage: isLeverage ? 1 : 0,
@ -270,6 +318,25 @@ export const POST = async ({ locals, request }) => {
console.log('Order:', order) console.log('Order:', order)
await db.insert(bybit_logs).values({
status: order.retCode === 0 ? 'success' : 'failed',
request: form.data,
payload: {
category: 'linear',
symbol,
side,
orderType: 'Market',
qty,
takeProfit: side === 'Buy' ? takeProfit : stopLoss,
stopLoss: side === 'Buy' ? stopLoss : takeProfit,
isLeverage: isLeverage ? 1 : 0,
positionIdx: hedge !== undefined ? positionIdx : undefined,
},
response: order,
createdAt: Date.now(),
})
}
if (form.data.type === 'Close Position Compound') { if (form.data.type === 'Close Position Compound') {
console.log('Close Position, checking for compound...') console.log('Close Position, checking for compound...')
@ -333,23 +400,6 @@ export const POST = async ({ locals, request }) => {
} }
} }
await db.insert(bybit_logs).values({
status: order.retCode === 0 ? 'success' : 'failed',
request: form.data,
payload: {
category: 'linear',
symbol,
side,
orderType: 'Market',
qty,
takeProfit: side === 'Buy' ? takeProfit : stopLoss,
stopLoss: side === 'Buy' ? stopLoss : takeProfit,
isLeverage: isLeverage ? 1 : 0,
positionIdx: hedge !== undefined ? positionIdx : undefined,
},
response: order,
createdAt: Date.now(),
})
return new Response() return new Response()
} catch (error) { } catch (error) {
console.log('Error', error) console.log('Error', error)

Loading…
Cancel
Save