Block new trades during 3–5 PM Central no-trade window
isInNoTradeWindow() checks the current hour in America/Chicago (handles CST/CDT automatically) and returns true from 15:00–16:59. runTrade() returns early if the window is active, blocking all entries regardless of whether the scheduler is running or a manual trade is triggered. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
1902322627
commit
5cba4ef175
@@ -48,9 +48,28 @@ function mapFirmConfig(firm: FirmWithAccounts): FirmConfig {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ── helpers ───────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/** Returns true during the 3:00 PM – 4:59 PM Central no-trade window. */
|
||||||
|
function isInNoTradeWindow(): boolean {
|
||||||
|
const hour = parseInt(
|
||||||
|
new Intl.DateTimeFormat('en-US', {
|
||||||
|
hour: 'numeric',
|
||||||
|
hour12: false,
|
||||||
|
timeZone: 'America/Chicago',
|
||||||
|
}).format(new Date()),
|
||||||
|
10
|
||||||
|
);
|
||||||
|
return hour >= 15 && hour < 17;
|
||||||
|
}
|
||||||
|
|
||||||
// ── core trade logic ──────────────────────────────────────────────────────────
|
// ── core trade logic ──────────────────────────────────────────────────────────
|
||||||
|
|
||||||
export async function runTrade(action: 'Buy' | 'Sell', symbol: string) {
|
export async function runTrade(action: 'Buy' | 'Sell', symbol: string) {
|
||||||
|
if (isInNoTradeWindow()) {
|
||||||
|
console.log('[auto-trade] no-trade window active (3–5 PM Central) — skipping');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
const pointValue = POINT_VALUES[symbol];
|
const pointValue = POINT_VALUES[symbol];
|
||||||
if (!pointValue) throw new Error(`Unknown symbol: ${symbol}`);
|
if (!pointValue) throw new Error(`Unknown symbol: ${symbol}`);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user