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() {
{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 */}
|
- |
+ |
|