diff --git a/app/api/account-configs/[id]/route.ts b/app/api/account-configs/[id]/route.ts index bd13cbe..7ba3326 100644 --- a/app/api/account-configs/[id]/route.ts +++ b/app/api/account-configs/[id]/route.ts @@ -20,9 +20,10 @@ export async function PUT( minTradingDays?: number; accountSize?: number; maxLoss?: number; + maxPositionSize?: number; }; - const { prefix, profitTarget, consistency, minDayPnL, minTradingDays, accountSize, maxLoss } = body; + const { prefix, profitTarget, consistency, minDayPnL, minTradingDays, accountSize, maxLoss, maxPositionSize } = body; if ( typeof prefix !== 'string' || !prefix.trim() || @@ -44,6 +45,7 @@ export async function PUT( minTradingDays, accountSize, maxLoss: maxLoss ?? 0, + maxPositionSize: maxPositionSize ?? 0, }); if (!updated) { diff --git a/app/api/firms/[id]/accounts/route.ts b/app/api/firms/[id]/accounts/route.ts index 07acf41..1992399 100644 --- a/app/api/firms/[id]/accounts/route.ts +++ b/app/api/firms/[id]/accounts/route.ts @@ -24,9 +24,10 @@ export async function POST( minTradingDays?: number; accountSize?: number; maxLoss?: number; + maxPositionSize?: number; }; - const { prefix, profitTarget, consistency, minDayPnL, minTradingDays, accountSize, maxLoss } = body; + const { prefix, profitTarget, consistency, minDayPnL, minTradingDays, accountSize, maxLoss, maxPositionSize } = body; if ( typeof prefix !== 'string' || !prefix.trim() || @@ -48,6 +49,7 @@ export async function POST( minTradingDays, accountSize, maxLoss: maxLoss ?? 0, + maxPositionSize: maxPositionSize ?? 0, }); return NextResponse.json({ @@ -59,6 +61,7 @@ export async function POST( minTradingDays: row.min_trading_days, accountSize: row.account_size, maxLoss: row.max_loss, + maxPositionSize: row.max_position_size, }, { status: 201 }); } catch (err) { console.error('[POST /api/firms/:id/accounts]', err); diff --git a/app/api/firms/[id]/route.ts b/app/api/firms/[id]/route.ts index dcb6f2d..e6d0759 100644 --- a/app/api/firms/[id]/route.ts +++ b/app/api/firms/[id]/route.ts @@ -31,6 +31,8 @@ export async function GET( minDayPnL: a.min_day_pnl, minTradingDays: a.min_trading_days, accountSize: a.account_size, + maxLoss: a.max_loss, + maxPositionSize: a.max_position_size, })), }); } diff --git a/app/firms/[id]/settings/page.tsx b/app/firms/[id]/settings/page.tsx index 767c194..3d49804 100644 --- a/app/firms/[id]/settings/page.tsx +++ b/app/firms/[id]/settings/page.tsx @@ -13,6 +13,7 @@ interface AccountConfig { minDayPnL: number; minTradingDays: number; accountSize: number; + maxPositionSize: number; } interface FirmConfig { @@ -49,6 +50,7 @@ function newRow(): RowState { minDayPnL: -999, minTradingDays: 5, accountSize: 50_000, + maxPositionSize: 0, dirty: true, saving: false, error: '', @@ -115,6 +117,7 @@ export default function FirmSettingsPage() { minDayPnL: row.minDayPnL, minTradingDays: row.minTradingDays, accountSize: row.accountSize, + maxPositionSize: row.maxPositionSize, }; if (row.id < 0) { @@ -223,13 +226,14 @@ export default function FirmSettingsPage() { Consistency Min Day P&L Min Trading Days + Max Contracts {rows.length === 0 && firmName && ( - + No account types yet @@ -354,6 +358,23 @@ export default function FirmSettingsPage() { /> + {/* Max Contracts */} + + + updateRow(row.id, { + maxPositionSize: e.target.value === '' ? 0 : Number(e.target.value), + }) + } + /> + + {/* Actions */}
@@ -402,7 +423,7 @@ export default function FirmSettingsPage() { {/* Add row */} - +