diff --git a/src/routes/dashboard/(components)/app-sidebar.svelte b/src/routes/dashboard/(components)/app-sidebar.svelte index f6ac77b..f11f99b 100644 --- a/src/routes/dashboard/(components)/app-sidebar.svelte +++ b/src/routes/dashboard/(components)/app-sidebar.svelte @@ -4,6 +4,7 @@ import { page } from '$app/state' import { CoinsIcon, + DownloadIcon, HistoryIcon, HomeIcon, SquareTerminal, @@ -23,6 +24,12 @@ icon: HomeIcon, isActive: page.url.pathname === `/dashboard/crypto-data`, }, + { + title: 'Download', + url: `/dashboard/download`, + icon: DownloadIcon, + isActive: page.url.pathname === `/dashboard/download`, + }, { title: 'Arbitrage', url: `/dashboard/swap`, diff --git a/src/routes/dashboard/download/+page.svelte b/src/routes/dashboard/download/+page.svelte new file mode 100644 index 0000000..5670089 --- /dev/null +++ b/src/routes/dashboard/download/+page.svelte @@ -0,0 +1,7 @@ + + + diff --git a/src/routes/webhook/tradingview/+server.ts b/src/routes/webhook/tradingview/+server.ts index be5da3f..f1a2397 100644 --- a/src/routes/webhook/tradingview/+server.ts +++ b/src/routes/webhook/tradingview/+server.ts @@ -98,6 +98,7 @@ export const POST = async ({ locals, request }) => { side = form.data.side positionIdx = form.data.side === 'Buy' ? 1 : 2 } else if (form.data.type === 'Percent') { + side = form.data.side const wallet = await client.getWalletBalance({ accountType: 'UNIFIED', coin: 'USDT', @@ -127,15 +128,25 @@ export const POST = async ({ locals, request }) => { Number(form.data.leverage || '1'))) / Number(form.data.entryPrice) ).toFixed(Number(form.data.qtyDecimalPoint)) - takeProfit = ( - Number(form.data.entryPrice) * - (1 + Number(form.data.takeProfitPercent) / 100) - ).toFixed(decimalLength) - stopLoss = ( - Number(form.data.entryPrice) * - (1 - Number(form.data.stopLossPercent) / 100) - ).toFixed(decimalLength) - side = form.data.side + if (side === 'Buy') { + takeProfit = ( + Number(form.data.entryPrice) * + (1 + Number(form.data.takeProfitPercent) / 100) + ).toFixed(decimalLength) + stopLoss = ( + Number(form.data.entryPrice) * + (1 - Number(form.data.stopLossPercent) / 100) + ).toFixed(decimalLength) + } else { + takeProfit = ( + Number(form.data.entryPrice) * + (1 - Number(form.data.takeProfitPercent) / 100) + ).toFixed(decimalLength) + stopLoss = ( + Number(form.data.entryPrice) * + (1 + Number(form.data.stopLossPercent) / 100) + ).toFixed(decimalLength) + } positionIdx = form.data.side === 'Buy' ? 1 : 2 } else { const position = await client.getPositionInfo({ @@ -189,8 +200,8 @@ export const POST = async ({ locals, request }) => { side, orderType: 'Market', qty, - takeProfit: side === 'Buy' ? takeProfit : stopLoss, - stopLoss: side === 'Buy' ? stopLoss : takeProfit, + takeProfit: takeProfit, + stopLoss: stopLoss, isLeverage: isLeverage ? 1 : 0, positionIdx: hedge !== undefined ? positionIdx : undefined, })