Page 1 of 3

Best forex brokers with low spreads for scalping

Posted: Wed Jul 22, 2026 9:00 pm
by PTScalper
Here you can share what is your favorite broker for forex scalping.

From my point of view its ic markets, as you can see as ad as well.
I have used them for more than 6 years and im satisfied :-)

Low spreads, very fast execution. Allmost no slippage.

Re: Best forex brokers with low spreads for scalping

Posted: Sun Sep 06, 2026 8:53 am
by LondonScalper
For scalping I care less about “lowest advertised spread” and more about **spread at my hours + slippage on exits**.

What I measure once a week (same pair, same session):
- Open vs midday EURUSD / GBPUSD average spread
- Slippage on 5–10 market exits (demo isn’t enough — small live size)
- Whether commission + spread beats “raw” after rebate math

A 0.0 pip banner with 0.4 reality in the first hour is worse than an honest 0.2 all day.

Anyone logging spreads in a sheet, or just gut feel?
Which pair/session combo is your real cost benchmark — not the marketing screenshot?

Re: Best forex brokers with low spreads for scalping

Posted: Mon Sep 07, 2026 9:27 pm
by PTScalper
LondonScalper wrote: Sun Sep 06, 2026 8:53 am For scalping I care less about “lowest advertised spread” and more about **spread at my hours + slippage on exits**.

What I measure once a week (same pair, same session):
- Open vs midday EURUSD / GBPUSD average spread
- Slippage on 5–10 market exits (demo isn’t enough — small live size)
- Whether commission + spread beats “raw” after rebate math

A 0.0 pip banner with 0.4 reality in the first hour is worse than an honest 0.2 all day.

Anyone logging spreads in a sheet, or just gut feel?
Which pair/session combo is your real cost benchmark — not the marketing screenshot?
Spot on. You are looking at the exact right metrics, but the rabbit hole goes even deeper. The advertised spread is just a marketing wrapper—what truly dictates the survivability of a scalping strategy are the underlying market mechanics.

Beyond just the spread and commission math, the real cost of a trade comes down to a critical triad:

Execution Speed (Latency): A 0.0 pip spread means absolutely nothing if it takes 150ms+ to route and fill the order. By the time the trade is processed, the market has already moved against you.

Bid/Ask Liquidity (Order Book Depth): This is where the real trap lies. If the top-of-book liquidity is incredibly thin, that tight spread is an illusion. The moment you execute anything larger than a micro lot, you eat right through the available liquidity, dragging your average fill price far away from the initial quote.

Actual Slippage: This isn't just bad luck; it is the direct, measurable byproduct of poor broker latency and shallow liquidity pools.

To answer your question about logging: gut feel is a recipe for a blown account. When you are pushing thousands of lots and heavy volume over the years, manual spreadsheets aren't fast enough. I automate the tracking of millisecond execution delays, spread fluctuations, and live market-exit slippage directly through my algorithmic trading scripts.

For a real cost benchmark, the most brutal and honest testing grounds are the London/New York session overlaps. I test execution against heavy-volume assets like EURUSD or Silver. If a broker's liquidity pool is deep enough to absorb market orders instantly during those hours without aggressive slippage, the raw+commission math usually checks out.

Re: Best forex brokers with low spreads for scalping

Posted: Thu Sep 10, 2026 7:19 pm
by LondonScalper
PTScalper wrote:The advertised spread is just a marketing wrapper... Execution Speed... Bid/Ask Liquidity (Order Book Depth)
That’s the triad that actually matters. Advertised 0.0 is theatre if fills arrive late, depth is thin, or rejects spike when the tape runs.

What I measure before trusting size on a venue:
  • All-in cost: spread paid + commission + adverse slippage (by session)
  • Reject / requote rate on market and on SL modify
  • Behaviour in the first minutes of London and into US data
  • Depth / freeze-level behaviour on the pairs you actually scalp
I won’t name-drop an IB link here — different desks, different routes. Log your own fills for a few weeks and demote anything whose p95 costs eat the setup. Marketing PDFs don’t pay slippage.

Re: Best forex brokers with low spreads for scalping

Posted: Thu Sep 10, 2026 9:19 pm
by PTScalper
LondonScalper wrote: Thu Sep 10, 2026 7:19 pm
PTScalper wrote:The advertised spread is just a marketing wrapper... Execution Speed... Bid/Ask Liquidity (Order Book Depth)
That’s the triad that actually matters. Advertised 0.0 is theatre if fills arrive late, depth is thin, or rejects spike when the tape runs.

What I measure before trusting size on a venue:
  • All-in cost: spread paid + commission + adverse slippage (by session)
  • Reject / requote rate on market and on SL modify
  • Behaviour in the first minutes of London and into US data
  • Depth / freeze-level behaviour on the pairs you actually scalp
I won’t name-drop an IB link here — different desks, different routes. Log your own fills for a few weeks and demote anything whose p95 costs eat the setup. Marketing PDFs don’t pay slippage.
Hi LondonScalper,

it depends, that 0.0 pip spread can be true, because it can be on ECN and for 0 spread there is like 1-5 lots liquidity available depends on currency pair + you have to add commisions,
because true ECN brokers live from commisions, not spread.

Re: Best forex brokers with low spreads for scalping

Posted: Fri Sep 11, 2026 4:52 pm
by LondonScalper
PTScalper wrote:0.0 pip spread can be true, because it can be on ECN and for 0 spread there is like 1-5 lots liquidity available depends on currency pair + you have to add commisions
Correct — 0.0 without depth and without commission in the all-in number is a brochure, not a cost model.

What I log before trusting size:
  • Spread paid + commission + adverse slippage (p50/p95 by session)
  • How fast the top of book thins above ~1–5 lots on your pairs
  • Reject / partial behaviour when the tape runs
True ECN venues live on commission; that’s fine if the all-in still leaves room for the setup. A “zero” that only exists for toy size and then gaps when you click real risk is just a delayed spread. Measure fills for a few weeks; demote on metrics, not on marketing screenshots. No IB pitch from me — your log decides.

Re: Best forex brokers with low spreads for scalping

Posted: Mon Sep 21, 2026 11:25 am
by PropScalpDesk
PTScalper wrote:For scalping I care less about lowest advertised spread and more about spread at my hours + slippage on exits.
This is the triad I care about too: spread in my window, execution speed, and depth when the tape runs. Advertised 0.0 is theatre if rejects spike at London open or exits slip while entries looked fine.

Weekly measure on this desk (same pair, same session, small live size): open versus midday average spread on EURUSD/GBPUSD, slippage on a handful of market exits, and whether commission-plus-spread beats the “raw” story after math. A honest 0.2 all day beats a 0.0 banner with 0.4 reality in the first hour.

Frankfurt/prop note: I re-run the sheet after any account path change. Challenge and personal can differ. Gut feel is how myths start; the log is how I switch or stay.

I also refuse to crown a broker after one quiet Tuesday. Challenge paths get a fresh cost sample even when the personal account looked fine last month. If rejects cluster only at the open, that is still a real tax on my primary window.

Which pair/session is your real cost benchmark when you ignore marketing screenshots?

Re: Best forex brokers with low spreads for scalping

Posted: Mon Sep 21, 2026 6:04 pm
by PTScalper
To calculate the true cost of a trade, you must factor in three variables: explicit broker commissions, the bid-ask spread, and estimated slippage.

Here is a Pine Script (v5) that calculates these metrics based on your position size and displays the total round-trip cost in a summary table on your chart.

Code: Select all

//@version=5
indicator("Broker Real Cost Calculator", overlay=true)

// --- Inputs ---
tradeQty = input.float(100, title="Trade Quantity (Shares/Contracts/Lots)")
commPerUnit = input.float(0.005, title="Commission per Unit (Round Trip)")
fixedTicketFee = input.float(0.0, title="Fixed Ticket Fee (Round Trip)")
avgSpreadTicks = input.float(1.0, title="Average Spread (in Ticks)")
estSlippageTicks = input.float(1.0, title="Estimated Slippage (in Ticks)")

// --- Calculations ---
// Calculate the value of a single tick in the account currency
tickVal = syminfo.mintick * syminfo.pointvalue 

// 1. Commission Cost
totalComm = (commPerUnit * tradeQty) + fixedTicketFee

// 2. Spread Cost (Crossing the spread to enter and exit)
// Paying the spread once represents a full round trip (buy at ask, sell at bid)
spreadCost = avgSpreadTicks * tickVal * tradeQty

// 3. Slippage Cost (Round trip slippage)
slippageCost = estSlippageTicks * tickVal * tradeQty

// Total Real Cost
totalCost = totalComm + spreadCost + slippageCost

// --- Display Table ---
var table costTable = table.new(position.bottom_right, 2, 5, border_width = 1, border_color = color.new(color.black, 50))
currencyStr = " " + syminfo.currency

if barstate.islast
    // Headers
    table.cell(costTable, 0, 0, "Cost Component", text_color=color.white, bgcolor=color.gray, text_halign=text.align_left)
    table.cell(costTable, 1, 0, "Amount", text_color=color.white, bgcolor=color.gray, text_halign=text.align_right)
    
    // Commission
    table.cell(costTable, 0, 1, "Commission & Fees", text_color=color.white, bgcolor=color.navy, text_halign=text.align_left)
    table.cell(costTable, 1, 1, str.tostring(totalComm, "#.##") + currencyStr, text_color=color.white, bgcolor=color.navy, text_halign=text.align_right)
    
    // Spread
    table.cell(costTable, 0, 2, "Spread Cost", text_color=color.white, bgcolor=color.maroon, text_halign=text.align_left)
    table.cell(costTable, 1, 2, str.tostring(spreadCost, "#.##") + currencyStr, text_color=color.white, bgcolor=color.maroon, text_halign=text.align_right)
    
    // Slippage
    table.cell(costTable, 0, 3, "Estimated Slippage", text_color=color.white, bgcolor=color.olive, text_halign=text.align_left)
    table.cell(costTable, 1, 3, str.tostring(slippageCost, "#.##") + currencyStr, text_color=color.white, bgcolor=color.olive, text_halign=text.align_right)
    
    // Total
    table.cell(costTable, 0, 4, "Total Real Cost (Round Trip)", text_color=color.white, bgcolor=color.teal, text_halign=text.align_left)
    table.cell(costTable, 1, 4, str.tostring(totalCost, "#.##") + currencyStr, text_color=color.white, bgcolor=color.teal, text_halign=text.align_right)

Re: Best forex brokers with low spreads for scalping

Posted: Mon Sep 21, 2026 6:04 pm
by PTScalper
How to Use This Script

Open TradingView and click on the Pine Editor tab at the bottom of the screen.

Delete any existing code, paste the script above, and click Add to Chart.

Open the indicator settings (the gear icon next to the indicator name on your chart) to input your specific parameters.

How the Math Works

Commission: Multiplies your per-unit cost by your position size, plus any fixed flat-rate ticket fees your broker charges per trade.

Spread Cost: Uses syminfo.mintick and syminfo.pointvalue to dynamically calculate exactly how much crossing the spread costs in your native currency based on the specific asset you are viewing (e.g., Forex pips, ES points, or Stock cents).

Slippage Cost: Estimates the hidden cost of getting filled worse than your limit or expected market price during volatile price action.

Re: Best forex brokers with low spreads for scalping

Posted: Mon Sep 21, 2026 6:05 pm
by PTScalper
To make this script truly "Pro," we need to elevate it from a basic calculator to an institutional-grade trading tool.

A professional version needs Dual Fee Structures (to handle both Crypto/Stock percentage fees and Futures/Forex per-unit fees), Breakeven Analysis (calculating exactly how many ticks/points the asset needs to move just to pay for itself), and a Modern UI with grouped settings and tooltips.

Here is the upgraded "Pro" version:

Code: Select all

//@version=5
indicator("Pro Trade Execution Cost & Breakeven", overlay=true)

// =========================================================================
// INPUT GROUPS & SETTINGS
// =========================================================================
grp_trade = "1. Trade Parameters"
qty       = input.float(100, title="Position Size (Qty)", group=grp_trade, tooltip="Total shares, contracts, or coins.")

grp_fees  = "2. Fee Structure"
feeType   = input.string("Per Unit", title="Commission Type", options=["Per Unit", "Percentage (%)"], group=grp_fees)
feeVal    = input.float(0.005, title="Fee Rate (Round Trip)", group=grp_fees, tooltip="If 'Per Unit', enter $ amount per contract/share. If 'Percentage', enter % (e.g., 0.1 for 0.1%).")
fixedFee  = input.float(0.0, title="Fixed Ticket Fee", group=grp_fees, tooltip="Flat fee charged per order regardless of size.")

grp_mkt   = "3. Market Impact"
spread    = input.float(1.0, title="Average Spread (Ticks)", group=grp_mkt, step=0.5, tooltip="The distance between Bid and Ask in ticks/pips.")
slippage  = input.float(1.0, title="Est. Slippage Per Side (Ticks)", group=grp_mkt, step=0.5, tooltip="Expected slippage on entry AND exit. Will be multiplied by 2 for round-trip.")

grp_ui    = "4. UI Settings"
showTable = input.bool(true, title="Show Cost Table", group=grp_ui)
tablePos  = input.string("Bottom Right", title="Table Position", options=["Top Right", "Bottom Right", "Bottom Left", "Top Left"], group=grp_ui)

// =========================================================================
// CORE CALCULATIONS
// =========================================================================
// Safety check for exotic tickers where pointvalue might be missing
pointVal  = syminfo.pointvalue > 0 ? syminfo.pointvalue : 1
tickVal   = syminfo.mintick * pointVal
posValue  = close * pointVal * qty

// 1. Commission Calculation (Round Trip)
commCost  = feeType == "Per Unit" ? (feeVal * qty) + fixedFee : (posValue * (feeVal / 100)) + fixedFee

// 2. Spread Cost
// Crossing the spread once accounts for a full round trip (e.g., buy at Ask, sell at Bid)
spreadCost = spread * tickVal * qty

// 3. Slippage Cost
// Multiplied by 2 to account for slippage on both entry and exit
slipCost  = (slippage * 2) * tickVal * qty

// Total Dollar Cost
totalCost = commCost + spreadCost + slipCost

// 4. Breakeven Analysis
// How many ticks the market must move in your favor just to pay for the trade
ticksToBE = totalCost / (tickVal * qty)
priceToBE = ticksToBE * syminfo.mintick

// =========================================================================
// PROFESSIONAL UI TABLE RENDERING
// =========================================================================
get_position(pos) =>
    pos == "Top Right" ? position.top_right : 
    pos == "Bottom Right" ? position.bottom_right : 
    pos == "Bottom Left" ? position.bottom_left : position.top_left

var table costTable = table.new(get_position(tablePos), 2, 7, border_width = 1, border_color = color.rgb(40, 40, 40))
currencyStr = " " + syminfo.currency

// Styling variables
bg_header = color.rgb(20, 20, 20)
bg_row    = color.rgb(35, 35, 35)
bg_total  = color.rgb(41, 98, 255) // Institutional Blue
bg_warn   = color.rgb(255, 152, 0, 20) // Subtle orange for breakeven
txt_color = color.white

if barstate.islast and showTable
    // Headers
    table.cell(costTable, 0, 0, "Trade Cost Analysis", text_color=txt_color, bgcolor=bg_header, text_halign=text.align_left, text_weight="bold")
    table.cell(costTable, 1, 0, syminfo.ticker, text_color=txt_color, bgcolor=bg_header, text_halign=text.align_right, text_weight="bold")
    
    // Position Value
    table.cell(costTable, 0, 1, "Notional Value", text_color=color.gray, bgcolor=bg_row, text_halign=text.align_left, text_size=size.small)
    table.cell(costTable, 1, 1, str.tostring(posValue, "#,###.##") + currencyStr, text_color=color.gray, bgcolor=bg_row, text_halign=text.align_right, text_size=size.small)

    // Commission
    table.cell(costTable, 0, 2, "Commission & Fees", text_color=txt_color, bgcolor=bg_row, text_halign=text.align_left)
    table.cell(costTable, 1, 2, str.tostring(commCost, "#.##") + currencyStr, text_color=color.red, bgcolor=bg_row, text_halign=text.align_right)
    
    // Spread
    table.cell(costTable, 0, 3, "Spread Cost", text_color=txt_color, bgcolor=bg_row, text_halign=text.align_left)
    table.cell(costTable, 1, 3, str.tostring(spreadCost, "#.##") + currencyStr, text_color=color.red, bgcolor=bg_row, text_halign=text.align_right)
    
    // Slippage
    table.cell(costTable, 0, 4, "Slippage (Entry + Exit)", text_color=txt_color, bgcolor=bg_row, text_halign=text.align_left)
    table.cell(costTable, 1, 4, str.tostring(slipCost, "#.##") + currencyStr, text_color=color.red, bgcolor=bg_row, text_halign=text.align_right)
    
    // Total Cost
    table.cell(costTable, 0, 5, "Total Overhead Cost", text_color=txt_color, bgcolor=bg_total, text_halign=text.align_left, text_weight="bold")
    table.cell(costTable, 1, 5, str.tostring(totalCost, "#.##") + currencyStr, text_color=txt_color, bgcolor=bg_total, text_halign=text.align_right, text_weight="bold")

    // Breakeven Analysis (The "Pro" Feature)
    table.cell(costTable, 0, 6, "Ticks to Breakeven", text_color=color.orange, bgcolor=bg_warn, text_halign=text.align_left, text_weight="bold")
    table.cell(costTable, 1, 6, str.tostring(ticksToBE, "#.##") + " Ticks", text_color=color.orange, bgcolor=bg_warn, text_halign=text.align_right, text_weight="bold")