Skip to content
MT5MT4soonTradingViewsooncTradersoonNinjaTradersoonPythonsoon
MetaTrader & platform basics

Order Fill

Also called Fill, Filled order, Trade fill, Order execution

An order fill is the moment your buy or sell order is actually executed: it is matched at a real price and opens (or closes) a position, for the full size or only part of it.

Your profit, your loss and the distance to your stop are all measured from the fill price. They are not measured from the price you saw when you clicked. If the two prices differ, your risk changes before the market has moved at all.

What "order filled" means for your trade

Once your order is filled, rather than cancelled or rejected, it is a live position in your account. The fill price is the price you actually got. If it differs from the price you expected, the gap is called slippage. Slippage can go against you or in your favour.

A partial fill means only part of your size was matched. Say, as an illustrative example, you asked for 2 lots and got 1.2. The figure below shows the arithmetic with a 20-pip stop on EUR/USD, where, in a USD account, 1 standard lot is worth $10 a pip.

Pip value and money at risk when 2 lots are requested but only 1.2 lots are filled
A partial fill shrinks every pip, in profit and in loss.

When an order fills depends on its type:

Order typeWhen it fillsPrice you get
Market orderRight awayThe best price available, which can slip from the quote
Limit orderOnly when price reaches your level, so it may never fillYour price or better
Stop orderOnce price touches your level, it turns into a market order, so it fills but can slipCan be worse than your level in a fast market

Why a buy fills above the chart price

Most charts plot the bid price. A buy order fills at the ask, which sits above the bid by the spread. So a buy can fill above the price on the chart even with no slippage. A sell fills at the bid.

Chart line plots the bid while a buy order fills at the ask, one spread higher
Illustrative: with no slippage at all, a buy still fills one spread above the price the chart shows.

How the fill price shifts your risk: a worked example

The figures here are an illustrative example. You buy 1 standard lot (100,000 units) of EUR/USD. In a USD account, one pip (0.0001) is worth $10 at that size. The ask shows 1.10000 when you click. Your stop loss sits at 1.09800, so you planned to risk 20 pips, or $200.

The order comes back filled at 1.10020. The ladder below shows how the fill moved above the price you clicked, while your stop stayed where it was.

Requested price, actual fill price and stop loss on a EUR/USD buyIllustration
SlippageFill price (you got)1.10020Requested ask (you clicked)1.10000Stop loss1.09800

Your stop is set at a fixed price, so the gap to it grew. The calculation below works out what that costs you.

Cost of 2 pips of slippage on 1 standard lot of EUR/USD
Slippage in pips(1.10020 − 1.10000) ÷ 0.0001= 2 pips
Extra cost at entry2 × $10= $20
Stop distance from the fill(1.10020 − 1.09800) ÷ 0.0001= 22 pips
Money at risk to the stop22 × $10= $220
Planned risk vs actual risk$200 → $220

Here is a rule you can follow. If the fill pushes your risk above your per-trade limit, act straight away. A filled order can no longer be resized, so close part of the position to bring the risk back within your limit. Only move the stop closer if your setup still makes sense at the new distance. Do not just accept the bigger loss.

Fill or kill, immediate or cancel: choosing a fill policy

A fill policy tells the market what to do when it cannot match your full size right away. The two common ones behave like this:

PolicyWhat gets filledWhat happens to the restFits when
Fill or Kill (FOK)The full size, all at onceThe whole order is cancelled if the full size isn't availableYou need the exact size or nothing
Immediate or Cancel (IOC)Whatever is available right nowThe unfilled part is cancelledA smaller position is acceptable
How Fill or Kill and Immediate or Cancel handle a 2-lot order when only 1.2 lots are available
Illustrative values: the same 2-lot request ends in two different positions, depending on the fill policy.

How to check the price and size you were filled at

Check the open price in your positions list. That price is your fill price.

The trade history shows each fill separately. A partial fill often shows up as several entries with different prices and volumes. Add those volumes together to get your real position size.

To get your average fill price, weight each price by its volume: (volume 1 × price 1 + volume 2 × price 2) ÷ total volume. As an illustrative example, 0.5 lots filled at 1.10000 and 0.7 lots at 1.10012 give (0.5 × 1.10000 + 0.7 × 1.10012) ÷ 1.2 = 1.10007.

Checks before and after you send an order

  • Set the maximum slippage you accept, if that option is offered. An order that would fill too far away is rejected instead.
  • Avoid sending market orders in the seconds around major news releases. Prices jump, and fills can land far from the quote.
  • For a week, log the price you requested next to the price you got. This gives you your own slippage record and shows when fills tend to be worse.

FAQ

Is a pending order that has not filled yet an open position?

No. Until it fills, a pending order is only an instruction waiting for price to reach your level. It has no profit or loss, and you can still change or delete it. It becomes a position only at the moment it fills.

Why did my order not fill at all?

Two causes are easy to miss: the market was closed, or you did not have enough free margin to open the position. A third cause: the order was sent while the price feed was frozen, or the price changed and you were offered a requote (a new price) that you did not accept.

Related terms