From 2d92c0d88f9b54cce76da5a979a42241e668756a Mon Sep 17 00:00:00 2001 From: TZGyn Date: Tue, 11 Feb 2025 21:11:51 +0800 Subject: [PATCH] update webhook --- src/routes/webhook/tradingview/+server.ts | 87 +++++++++++++---------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/src/routes/webhook/tradingview/+server.ts b/src/routes/webhook/tradingview/+server.ts index acbd99a..df1129e 100644 --- a/src/routes/webhook/tradingview/+server.ts +++ b/src/routes/webhook/tradingview/+server.ts @@ -3,10 +3,18 @@ import { RestClientV5 } from 'bybit-api' import { z } from 'zod' export const POST = async ({ locals, request }) => { + const type = request.headers.get('Content-Type') + + console.log('type', type) + const text = await request.text() + console.log('text', text) + const body = JSON.parse(text) + console.log('text', body) + const flatSchema = z.object({ type: z.literal('Flat'), key: z.string(), @@ -40,44 +48,49 @@ export const POST = async ({ locals, request }) => { const { key, secret, side, symbol } = form.data - let qty - let takeProfit - let stopLoss + try { + let qty + let takeProfit + let stopLoss - if (form.data.type === 'Flat') { - qty = form.data.qty - takeProfit = form.data.takeProfit - stopLoss = form.data.stopLoss - } else { - qty = ( - (Number(form.data.entryPrice) * Number(form.data.qtyPercent)) / - 100 - ).toString() - takeProfit = ( - Number(form.data.entryPrice) * - (1 + Number(form.data.takeProfitPercent) / 100) - ).toString() - stopLoss = ( - Number(form.data.entryPrice) * - (1 - Number(form.data.stopLossPercent) / 100) - ).toString() - } + if (form.data.type === 'Flat') { + qty = form.data.qty + takeProfit = form.data.takeProfit + stopLoss = form.data.stopLoss + } else { + qty = ( + (Number(form.data.entryPrice) * + Number(form.data.qtyPercent)) / + 100 + ).toString() + takeProfit = ( + Number(form.data.entryPrice) * + (1 + Number(form.data.takeProfitPercent) / 100) + ).toString() + stopLoss = ( + Number(form.data.entryPrice) * + (1 - Number(form.data.stopLossPercent) / 100) + ).toString() + } - const client = new RestClientV5({ - key: key, - secret: secret, - demoTrading: true, - }) - - await client.submitOrder({ - category: 'linear', - symbol, - side, - orderType: 'Market', - qty, - takeProfit, - stopLoss, - }) + const client = new RestClientV5({ + key: key, + secret: secret, + demoTrading: true, + }) - return new Response() + await client.submitOrder({ + category: 'linear', + symbol, + side, + orderType: 'Market', + qty, + takeProfit, + stopLoss, + }) + } catch (error) { + console.log('Error', error) + } finally { + return new Response() + } }