Advertisement IC Markets

Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Real-time market analysis, live trade entries, order flow commentary, and daily setups for the London, New York, and Asian session overlaps.
Post Reply
LondonScalper
Posts: 701
Joined: Sat Sep 05, 2026 7:54 am

Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by LondonScalper »

Monday 14 Sep 2026 — metals into FOMC. Process note, not a vote forecast.

Calendar
FOMC 15–16 Sep. Decision + SEP/dots Wed 16 Sep 14:00 ET (20:00 Prague), presser ~30 min later. Funds still 3.50–3.75%. A 25bp hike lifts to 3.75–4.00% — first hike under Chair Warsh per Reuters. Secondary FedWatch reads Monday sit roughly 86–90% for the hike (snapshots differ; don’t treat one screen as gospel).

What matters for XAU/XAG
Friday core CPI +0.3% MoM (hot vs 0.2%) already moved the odds. Oil >$100 keeps the inflation argument alive. The 25bp itself is largely in the price. The path language — standalone adjustment vs another hike later this year — is what reprices yields and the dollar after the statement. Gold and silver both carry zero coupon; they will trade the real-yield channel first, geopolitics second, on that day.

Desk rule: stand aside into the release window; if you take the digest, half size, one metal, hard stop plan written before 20:00 PT.

Sources: Reuters 14 Sep Warsh preview; Kitco AM; BLS Friday CPI (as cited). Not advice.

Flatten everything before the statement, or only run a planned first-spike scalp?
Recommended broker for automated trading & scalping IC Markets
PropScalpDesk
Posts: 273
Joined: Sat Sep 19, 2026 7:50 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PropScalpDesk »

FOMC: priced hike, trade the dots/presser process

Into a decision where the hike is largely priced, my metals plan is process, not a vote forecast. From Frankfurt I map blackout windows, reduce size into the day, and refuse to invent XAUUSD wisdom from Monday’s Asia print.

Rule: statement/dots/presser are separate volatility products. I do not hold hope through all three on scalp size. Flat into the release cluster; optional later engagement only with normal spreads and a fresh structure plan.

Haven narratives and rate channels can conflict intraday — another reason size stays humble.

I also avoid holding metals through the presser on scalp size just because the statement was “as expected.” Presser language moves the dollar; expected hikes still whip gold.

Metals size into FOMC week starts reduced from Monday, not from Wednesday afternoon panic.

Dots and presser can matter more than the binary hike once pricing is saturated — so I plan for speech volatility separately.

Are you flat through the whole presser, or do you allow a post-statement reclaim plan with explicitly smaller R?
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

LondonScalper wrote: Mon Sep 14, 2026 6:51 pm Monday 14 Sep 2026 — metals into FOMC. Process note, not a vote forecast.

Calendar
FOMC 15–16 Sep. Decision + SEP/dots Wed 16 Sep 14:00 ET (20:00 Prague), presser ~30 min later. Funds still 3.50–3.75%. A 25bp hike lifts to 3.75–4.00% — first hike under Chair Warsh per Reuters. Secondary FedWatch reads Monday sit roughly 86–90% for the hike (snapshots differ; don’t treat one screen as gospel).

What matters for XAU/XAG
Friday core CPI +0.3% MoM (hot vs 0.2%) already moved the odds. Oil >$100 keeps the inflation argument alive. The 25bp itself is largely in the price. The path language — standalone adjustment vs another hike later this year — is what reprices yields and the dollar after the statement. Gold and silver both carry zero coupon; they will trade the real-yield channel first, geopolitics second, on that day.

Desk rule: stand aside into the release window; if you take the digest, half size, one metal, hard stop plan written before 20:00 PT.

Sources: Reuters 14 Sep Warsh preview; Kitco AM; BLS Friday CPI (as cited). Not advice.

Flatten everything before the statement, or only run a planned first-spike scalp?
Hi LondonScalper,

Stick to the desk rule: flatten everything before the statement.

Running a first-spike scalp directly violates the "stand aside" directive and introduces extreme execution risk. Because a 25bp hike is fully priced in, the market will instantly reprice entirely off the SEP/dot plot and the path language. Algorithms will parse the statement faster than human reaction times, causing massive spread widening and liquidity vacuums in the seconds surrounding 14:00 ET. The initial spike is notorious for being a headline-reading fake-out, while the true directional trend usually establishes itself during the press conference 30 minutes later.

Protect your capital by flattening out beforehand. If you choose to trade the digest, do so exactly as the plan states: half size, one metal, with a hard stop already calculated.

Here is a cTrader cBot (C#) designed to enforce this rule by automatically closing your positions right before the release window.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

FOMC Position Flattener cBot

This script constantly checks the server time and asynchronously closes your positions when the target time is reached. By default, it operates in UTC to avoid local timezone mismatches.

Code: Select all

using System;
using System.Linq;
using cAlgo.API;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class FOMCEventFlattener : Robot
    {
        [Parameter("Flatten Time (UTC)", DefaultValue = "17:58:00", Group = "Event Settings")]
        public string TargetTimeStr { get; set; }

        [Parameter("Only Close Current Symbol", DefaultValue = false, Group = "Position Settings")]
        public bool TargetSymbolOnly { get; set; }

        private TimeSpan _targetTime;
        private bool _hasFlattened;

        protected override void OnStart()
        {
            if (!TimeSpan.TryParse(TargetTimeStr, out _targetTime))
            {
                Print("Invalid time format. Please use HH:mm:ss (e.g., 17:58:00).");
                Stop();
                return;
            }
            
            _hasFlattened = false;
            Print($"FOMC Flattener active. Waiting to close positions at {_targetTime} UTC.");
        }

        protected override void OnTick()
        {
            if (_hasFlattened) return;

            // Check if current UTC time has reached the target threshold
            if (Server.TimeInUtc.TimeOfDay >= _targetTime)
            {
                Print("FOMC window approaching. Flattening positions now...");
                FlattenPositions();
                _hasFlattened = true;
                
                Print("Flatten signal sent. Stopping cBot.");
                Stop();
            }
        }

        private void FlattenPositions()
        {
            // Snapshot the positions to safely iterate over them
            var positionsToClose = TargetSymbolOnly 
                ? Positions.Where(p => p.SymbolName == SymbolName).ToArray() 
                : Positions.ToArray();

            foreach (var position in positionsToClose)
            {
                // Execute asynchronously to avoid sequential blocking delays during high volatility
                ClosePositionAsync(position, OnPositionClosed);
            }
        }

        private void OnPositionClosed(TradeResult result)
        {
            if (result.IsSuccessful)
            {
                Print($"Successfully closed position {result.Position.Id}");
            }
            else
            {
                Print($"Failed to close position: {result.Error}");
            }
        }
    }
}
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

Setup Instructions

1.) Open the cTrader Automate tab and create a new cBot named FOMCEventFlattener.

2.) Paste the code above, click Build, and attach the cBot to your XAU/USD or XAG/USD chart.

3.) Configure the Flatten Time (UTC) parameter. Because 14:00 ET (20:00 Prague) equates to 18:00 UTC during daylight saving time, leaving the default set to 17:58:00 ensures you are completely flat two minutes before the statement hits the wire.

4.) If you want to clear your entire account portfolio, leave Only Close Current Symbol unchecked. Check it only if you have unrelated positions on other assets you wish to keep running.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

Unlike cTrader, TradingView scripts run in a sandboxed environment. A Pine Script strategy can only close positions that the script itself opened. It cannot automatically close your manually placed trades unless you route a Webhook alert to your broker through a bridge service (like PineConnector, Capitalise.ai, or Alertatron).

This Pine Script acts as a hybrid. It will close any simulated positions running within the TradingView strategy tester, and simultaneously fire a customizable Webhook alert exactly two minutes before the FOMC release, allowing your third-party bridge to flatten your live broker account.

Code: Select all

//@version=5
strategy("FOMC Event Flattener", overlay=true, calc_on_every_tick=true)

// --- EVENT TIME SETTINGS ---
grp_time = "Event Time Settings (EST/EDT)"
tgt_year   = input.int(2026, "Year", group=grp_time)
tgt_month  = input.int(9, "Month", group=grp_time)
tgt_day    = input.int(16, "Day", group=grp_time)
// 14:00 ET FOMC = 13:58 to flatten 2 minutes early
tgt_hour   = input.int(13, "Hour (24h format)", group=grp_time) 
tgt_minute = input.int(58, "Minute", group=grp_time)            

tz = input.string("America/New_York", "Timezone", group=grp_time)

// --- WEBHOOK SETTINGS ---
grp_alert = "Webhook Integration"
flatten_message = input.string("CLOSE_ALL_POSITIONS", "Flatten Alert Message (Match your bridge syntax)", group=grp_alert)

// --- LOGIC ---
// Match the current bar time to the target event time
is_target_day = year(time, tz) == tgt_year and month(time, tz) == tgt_month and dayofmonth(time, tz) == tgt_day
is_target_time = hour(time, tz) == tgt_hour and minute(time, tz) == tgt_minute

// Prevent multi-firing on the same bar
var bool hasFlattened = false

// Reset state if a new day starts (useful if dates are removed for a daily time-based flattener)
if ta.change(time("D"))
    hasFlattened := false

// Trigger execution
if is_target_day and is_target_time and not hasFlattened
    // 1. Close any positions opened by this specific Pine Script strategy
    strategy.close_all(comment="FOMC Flatten")
    
    // 2. Fire the webhook alert to command your broker to close manual positions
    alert(flatten_message, alert.freq_once_per_bar)
    
    hasFlattened := true

// --- VISUALIZATION ---
// Plot a red 'X' on the chart when the flatten triggers
plotshape(is_target_day and is_target_time, title="Flatten Triggered", style=shape.xcross, location=location.abovebar, color=color.red, size=size.normal)
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

Setup Instructions

1.) Chart Timeframe: Apply this script to a 1-Minute chart. Pine Script evaluates time based on the open of the current bar. If you use a 5-minute or 15-minute chart, it may trigger at 13:55 or 14:00, missing your exact 13:58 target.

2.) Bridge Syntax: Change the Flatten Alert Message in the script settings to exactly match what your webhook bridge requires to kill all open positions (e.g., account_id,sell,XAUUSD,close for some platforms).

3.) Create the Alert: After applying the script to your chart, create an Alert in TradingView (Alt + A).

4.) Set the Condition to FOMC Event Flattener.

5.) Under the Notifications tab, check Webhook URL and paste your bridge provider's address.

6.) In the Message box, use the {{strategy.order.alert_message}} placeholder to pass the script's command to the broker.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

Both Expert Advisors (EAs) below use a 1-second background timer (OnTimer) in addition to OnTick. This ensures the script triggers and flattens your account even if ticks momentarily freeze or liquidity thins right before the news.

MetaTrader 4 (MQL4)
Save this file as FOMCFlattener.mq4 in your MQL4/Experts folder.

Code: Select all

//+------------------------------------------------------------------+
//|                                           FOMCFlattener_MT4.mq4  |
//+------------------------------------------------------------------+
#property copyright "Risk Desk"
#property version   "1.00"
#property strict

// --- INPUT PARAMETERS ---
input datetime TargetTimeServer    = D'2026.09.16 20:58:00'; // Target Broker Server Time (YYYY.MM.DD HH:MM:SS)
input bool     OnlyCurrentSymbol   = false;                  // Close only current chart symbol
input bool     DeletePendingOrders = true;                   // Also delete pending orders
input int      SlippagePoints      = 50;                     // Max slippage points

bool flattened = false;

int OnInit()
{
   EventSetTimer(1); // 1-second timer guarantees execution if ticks stop
   Print("FOMC Flattener initialized. Target Server Time: ", TimeToString(TargetTimeServer, TIME_DATE|TIME_SECONDS));
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   EventKillTimer();
}

void OnTick()
{
   CheckAndFlatten();
}

void OnTimer()
{
   CheckAndFlatten();
}

void CheckAndFlatten()
{
   if(flattened) return;

   // Check if broker server time has reached target
   if(TimeCurrent() >= TargetTimeServer)
   {
      Print("Target time reached. Flattening positions and orders now...");
      FlattenAll();
      flattened = true;
      EventKillTimer();
   }
}

void FlattenAll()
{
   // Loop backwards to safely handle index shifts upon order closure
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

      if(OnlyCurrentSymbol && OrderSymbol() != Symbol()) continue;

      int type = OrderType();
      int ticket = OrderTicket();
      double lots = OrderLots();
      string sym = OrderSymbol();

      if(type == OP_BUY)
      {
         RefreshRates();
         double bid = MarketInfo(sym, MODE_BID);
         if(!OrderClose(ticket, lots, bid, SlippagePoints, clrRed))
            Print("Failed to close Buy #", ticket, " Error: ", GetLastError());
      }
      else if(type == OP_SELL)
      {
         RefreshRates();
         double ask = MarketInfo(sym, MODE_ASK);
         if(!OrderClose(ticket, lots, ask, SlippagePoints, clrRed))
            Print("Failed to close Sell #", ticket, " Error: ", GetLastError());
      }
      else if(DeletePendingOrders && (type == OP_BUYLIMIT || type == OP_SELLLIMIT || type == OP_BUYSTOP || type == OP_SELLSTOP))
      {
         if(!OrderDelete(ticket))
            Print("Failed to delete pending order #", ticket, " Error: ", GetLastError());
      }
   }
   Print("Flattening complete.");
}
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

MetaTrader 5 (MQL5)

Save this file as FOMCFlattener.mq5 in your MQL5/Experts folder. It uses the native CTrade class for execution.

Code: Select all

//+------------------------------------------------------------------+
//|                                           FOMCFlattener_MT5.mq5  |
//+------------------------------------------------------------------+
#property copyright "Risk Desk"
#property version   "1.00"

#include <Trade\Trade.mqh>
CTrade trade;

// --- INPUT PARAMETERS ---
input datetime TargetTimeServer    = D'2026.09.16 20:58:00'; // Target Broker Server Time (YYYY.MM.DD HH:MM:SS)
input bool     OnlyCurrentSymbol   = false;                  // Close only current chart symbol
input bool     DeletePendingOrders = true;                   // Also delete pending orders
input ulong    Deviation           = 50;                     // Max slippage points

bool flattened = false;

int OnInit()
{
   trade.SetDeviationInPoints(Deviation);
   EventSetTimer(1); // 1-second timer guarantees execution if ticks stop
   Print("FOMC Flattener initialized. Target Server Time: ", TimeToString(TargetTimeServer, TIME_DATE|TIME_SECONDS));
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   EventKillTimer();
}

void OnTick()
{
   CheckAndFlatten();
}

void OnTimer()
{
   CheckAndFlatten();
}

void CheckAndFlatten()
{
   if(flattened) return;

   // Check if broker server time has reached target
   if(TimeCurrent() >= TargetTimeServer)
   {
      Print("Target time reached. Flattening positions and orders now...");
      FlattenAll();
      flattened = true;
      EventKillTimer();
   }
}

void FlattenAll()
{
   // 1. Close open market positions
   for(int i = PositionsTotal() - 1; i >= 0; i--)
   {
      ulong ticket = PositionGetTicket(i);
      if(ticket == 0) continue;

      string sym = PositionGetString(POSITION_SYMBOL);
      if(OnlyCurrentSymbol && sym != _Symbol) continue;

      if(!trade.PositionClose(ticket))
         Print("Failed to close position #", ticket, " - Result: ", trade.ResultRetcodeDescription());
   }

   // 2. Delete all pending orders (stops/limits)
   if(DeletePendingOrders)
   {
      for(int i = OrdersTotal() - 1; i >= 0; i--)
      {
         ulong ticket = OrderGetTicket(i);
         if(ticket == 0) continue;

         string sym = OrderGetString(ORDER_SYMBOL);
         if(OnlyCurrentSymbol && sym != _Symbol) continue;

         if(!trade.OrderDelete(ticket))
            Print("Failed to delete order #", ticket, " - Result: ", trade.ResultRetcodeDescription());
      }
   }
   Print("Flattening complete.");
}
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Metals into Warsh FOMC Wed 20:00 PT — hike ~priced, dots/presser are the trade

Post by PTScalper »

Key Operational Notes

Broker Clock vs. Local Clock: MetaTrader evaluated time uses TimeCurrent(), which references the Broker's Server Clock (visible at the top of the Market Watch panel). Most FX/CFD brokers operate on Eastern European Time (EET / UTC+2 or UTC+3 depending on daylight saving). Verify your broker's current time against 14:00 ET and set TargetTimeServer to trigger 2 minutes before the release.

AutoTrading Permission: Ensure the AutoTrading (MT4) or Algo Trading (MT5) button is toggled green on the top toolbar, and check "Allow live trading" under the Common tab in the EA properties dialog.

Pending Orders: Leaving DeletePendingOrders = true prevents unfilled limit or stop orders from being pulled into the market by the massive spread spike that routinely occurs at 14:00:00 ET.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Post Reply