diff --git a/src/routes/dashboard/bybit/+page.svelte b/src/routes/dashboard/bybit/+page.svelte index c4a1f64..17b6da4 100644 --- a/src/routes/dashboard/bybit/+page.svelte +++ b/src/routes/dashboard/bybit/+page.svelte @@ -55,6 +55,8 @@ ...$percentFormData, entryPrice: '{trigger_entry_value}', qtyPercent: $percentFormData.qtyPercent.toString(), + qtyDecimalPoint: + $percentFormData.qtyDecimalPoint.toString(), leverage: $percentFormData.leverage.toString(), takeProfitPercent: $percentFormData.takeProfitPercent.toString(), @@ -301,6 +303,20 @@ max={100} step={0.1} /> + + + {#snippet children({ props })} + Quantity Decimal Point + + {/snippet} + + Quantity + + {#snippet children({ props })} @@ -361,6 +377,8 @@ ...$percentFormData, entryPrice: '{trigger_entry_value}', qtyPercent: $percentFormData.qtyPercent.toString(), + qtyDecimalPoint: + $percentFormData.qtyDecimalPoint.toString(), leverage: $percentFormData.leverage.toString(), takeProfitPercent: $percentFormData.takeProfitPercent.toString(), diff --git a/src/routes/dashboard/bybit/schema.ts b/src/routes/dashboard/bybit/schema.ts index f6563cc..073185a 100644 --- a/src/routes/dashboard/bybit/schema.ts +++ b/src/routes/dashboard/bybit/schema.ts @@ -21,6 +21,7 @@ export const percentSchema = z.object({ symbol: z.string(), side: z.enum(['Buy', 'Sell']), qtyPercent: z.number(), + qtyDecimalPoint: z.number(), leverage: z.number().default(100), takeProfitPercent: z.number(), stopLossPercent: z.number(), diff --git a/src/routes/webhook/tradingview/+server.ts b/src/routes/webhook/tradingview/+server.ts index 9829393..aa6ebb9 100644 --- a/src/routes/webhook/tradingview/+server.ts +++ b/src/routes/webhook/tradingview/+server.ts @@ -31,6 +31,7 @@ export const POST = async ({ locals, request }) => { side: z.enum(['Buy', 'Sell']), entryPrice: z.string(), qtyPercent: z.string(), + qtyDecimalPoint: z.string(), leverage: z.string().default('1'), takeProfitPercent: z.string().optional(), stopLossPercent: z.string().optional(), @@ -77,7 +78,7 @@ export const POST = async ({ locals, request }) => { if (form.data.type === 'Flat') { qty = ( Number(form.data.qty) * Number(form.data.leverage || '1') - ).toFixed(getDecimalPoint(symbol.slice(0, -4))) + ).toString() takeProfit = form.data.takeProfit stopLoss = form.data.stopLoss side = form.data.side @@ -110,7 +111,7 @@ export const POST = async ({ locals, request }) => { ((Number(form.data.qtyPercent) / 100) * Number(form.data.leverage || '1'))) / Number(form.data.entryPrice) - ).toFixed(getDecimalPoint(symbol.slice(0, -4))) + ).toFixed(Number(form.data.qtyDecimalPoint)) takeProfit = ( Number(form.data.entryPrice) * (1 + Number(form.data.takeProfitPercent) / 100) @@ -160,9 +161,3 @@ export const POST = async ({ locals, request }) => { return new Response() } } - -const getDecimalPoint = (symbol: string) => { - if (symbol === 'BTC') return 3 - if (symbol === 'ETH') return 2 - return 1 -}