fix: measure defensive timeout from market open time, not bot entry time

Market start = endTime - 5 minutes, so defensive triggers at exactly
120s after the market opens regardless of when the bot entered.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
direkturcrypto
2026-03-27 04:54:42 +07:00
co-authored by Claude Opus 4.6
parent e19278c665
commit 8a5962d0a5
+5 -2
View File
@@ -232,10 +232,13 @@ async function monitorAndManage(pos) {
// ── Defensive pivot: neither filled after timeout (5m markets only) ──
if (config.mmDefensiveEnabled && config.mmDuration === '5m'
&& !pos.yes.filled && !pos.no.filled && !pos._defensiveActive) {
const elapsed = (Date.now() - new Date(pos.enteredAt).getTime()) / 1000;
// Measure from market open time (endTime - duration), not bot entry time
const marketDurationMs = 5 * 60 * 1000;
const marketStartMs = new Date(pos.endTime).getTime() - marketDurationMs;
const elapsed = (Date.now() - marketStartMs) / 1000;
if (elapsed >= config.mmDefensiveTimeout) {
pos._defensiveActive = true;
logger.warn(`MM: neither side filled after ${Math.round(elapsed)}s — entering defensive mode | ${label}`);
logger.warn(`MM: neither side filled after ${Math.round(elapsed)}s since market open — entering defensive mode | ${label}`);
await defensivePivot(pos);
break;
}