ForexBestRobots.comCompare EAs →
EN

Forex scalping · Practical guide

Forex Scalping Execution: Market vs Limit Orders, Slippage and Requotes

Compare market and limit entries for forex scalping: Bid/Ask triggers, slippage, requotes, cancellation races and costs on a common entry calendar.

Market and limit execution: price, time and confirmed order state must be checked together.
Market and limit execution: price, time and confirmed order state must be checked together.

A signal, a submitted request and a filled position are different events. For a small scalping target, the difference can decide whether the remaining reward is still acceptable. This guide compares market and limit entry policies without treating a chart touch as a fill or an unanswered request as a safe retry.

1. Execution is part of the trading rule

A market entry seeks an immediate trade at available terms. A limit entry waits for an acceptable price and may never trade. Neither creates an entry edge. A lower purchase price is useful only if the order actually fills while the trading idea remains valid; missed moves and unfavourable selection also matter.

Define the signal, entry policy, invalidation, volume and exit plan separately. This guide studies execution mechanics, not a complete profitable strategy. Its paths and ledgers are invented. Compare alternative policies from the same eligible signal origins, rather than selecting only the charts where a patient limit happened to work.

2. A Bid touch does not trigger a BUY limit

Assume EURUSD, pip=0.0001 and point=tick=0.00001. The reference quote is Bid/Ask=1.10000/1.10008, spread 0.8 pip. BUY market entry uses Ask; SELL uses Bid. A BUY limit at 1.10000 is below the current Ask, although the Bid chart already displays that price.

For the illustrative limit rule, BUY price eligibility requires Ask<=1.10000; a later quote 1.09992/1.10000 qualifies. It does not prove a fill: acceptance, liquidity and the broker’s actual rules still matter. SELL limits require the corresponding Bid-side test. Verify the contract’s pending-limit and gap policy; do not transfer another broker’s assumptions to your account.

A BUY limit at 1.10000 is not price-eligible while Ask is 1.10008, even if Bid touches 1.10000. Ask reaching the limit still does not prove a fill.
A BUY limit at 1.10000 is not price-eligible while Ask is 1.10008, even if Bid touches 1.10000. Ask reaching the limit still does not prove a fill. On small screens, scroll the chart horizontally to keep labels readable.

3. Give the comparison a finite clock

The fictional origin is 08:00:00 UTC. Both policies allow one initial request within 1 s, using a quote no older than 250 ms. The limit has a local validity cutoff at 08:00:05 UTC. These are declared teaching settings, not recommended universal latency limits or a promise that MT4 can enforce server expiry to that precision.

At the cutoff, stop considering new eligible fills and request cancellation if the order is still pending. Cancellation remains unresolved until confirmed; an actual late fill is exposure to handle, not a row to erase. Broker expiry support and minimum durations vary. The event CSV uses illustrative milliseconds; real server timestamps and terminal logs may have different precision and clocks. Assume the broker permits the illustrated distances; otherwise reject the candidate without moving its limit.

Download fictional execution cost comparison (CSV)

Download fictional order-event sequences (CSV)

PolicyDeclared assumption
QuoteBid 1.10000 / Ask 1.10008
Request08:00:00 UTC + ≤1s · age≤250ms
LimitL=1.10000 · cutoff 08:00:05 UTC
Fixed volume0.35 lot · 10 USD/pip/lot
Commission + remaining exit allowance0.7 + 0.2 = 0.9 pip

4. Market orders and execution modes are different concepts

MT4 distinguishes Instant, Request and Market execution; the broker determines the mode for the instrument. Instant execution can return a requote rather than accept the offered price. Market execution allows the broker to determine the execution price without a new confirmation. No requote does not mean no slippage, no rejection or guaranteed execution.

A requote is a new offered price, not a completed position. The teaching policy permits one attempt, so a confirmed requote ends that origin without automatic acceptance. A different retry policy must recheck price, time, costs and risk. The OrderSend deviation parameter is expressed in points; do not assume identical protection across execution modes or treat it as a universal hard price cap.

Order type and execution mode answer different questions. A requote is a new price offer, while Market execution can change the fill without another confirmation.
Order type and execution mode answer different questions. A requote is a new price offer, while Market execution can change the fill without another confirmation. On small screens, scroll the chart horizontally to keep labels readable.

5. A limit controls price terms but introduces non-fill risk

A BUY limit expresses a maximum purchase price and a SELL limit a minimum sale price under the applicable execution terms. The order can remain pending after a qualifying display quote because executable size and routing also matter. A pending-order ticket acknowledges an order; it does not establish an open position.

A price retracement that fills a limit can precede further adverse movement. Conversely, a move without retracement may leave the order unfilled. This selection changes the traded sample. Freeze the limit, validity and cancellation rules before evaluation. Moving the limit after every missed move or adding an untested market fallback defines another policy.

6. Freeze exits and volume before comparing fills

Use BUY Bid exits S=1.09950 and T=1.10110, a USD account, contract 100000 EUR per standard lot and pip value 10 USD per lot. Fix volume at 0.35 lots for both alternatives to isolate execution. Equal volume does not mean equal monetary risk when entry prices differ.

For a market request, reserve an adverse entry movement of 0.3 pip from the reference Ask: the planning fill is 1.10011. This is a stress assumption, not a guaranteed worst fill. Equity 10000 USD and budget 0.25%=25 USD are illustrative. Check lot step, minimum volume, margin, current stop distances and total exposure before sending.

7. Do not charge known entry slippage twice

Assume round-trip commission 0.7 pip and a remaining exit-execution reserve 0.2 pip, giving C_remaining=0.9 pip. Once an entry fill F is known, its entry slippage is already in F. Calculate L=(F-S)/pip+C_remaining, W=(T-F)/pip-C_remaining and R_net=W/L. Ask entry and Bid exits also already contain the spread effect.

At the hypothetical market fill F=1.10011, L/W are 7.0/9.0 pips, ratio 1.2857, planned cash risk 24.50 USD and net target 31.50 USD. At the assumed limit fill F=1.10000, these are 5.9/10.1/1.7119 and 20.65/35.35 USD. The table’s reference-price row is a benchmark, not a fill. Do not resize a completed position retrospectively to improve the comparison.

All alternatives use 0.35 lots and fixed Bid exits. The known entry price includes entry slippage; only commission and the remaining exit allowance are added.
All alternatives use 0.35 lots and fixed Bid exits. The known entry price includes entry slippage; only commission and the remaining exit allowance are added. On small screens, scroll the chart horizontally to keep labels readable.
MethodEntry pricePlanned loss, pipsNet target, pipsNet ratioRisk USDTarget USD
Reference, not a fill1.100086.79.31.388123.4532.55
Market entry1.100117.09.01.285724.5031.50
Limit entry1.100005.910.11.711920.6535.35

8. Check partial fills and time-in-force in the actual interface

Some venues support partial fills and instructions such as immediate-or-cancel or fill-or-kill. Do not assume every MT4 broker exposes the same choices: the MQL4 OrderSend signature has no portable IOC/FOK argument. Verify the supported workflow and actual handling of order quantity, expiry and cancellation for the account and symbol.

If a supported interface fills part of a request, record filled and remaining quantities separately. Protect the filled exposure and handle the remainder under a declared rule. Do not send the entire original quantity again as though nothing happened. Minimum fees and fragmented fills can also change the simple linear commission assumption used in this example.

9. A cancellation request is not a cancelled order

The race example becomes price-eligible at 08:00:04.950 and is filled on the server at 08:00:04.960. The terminal has not yet learned this. At 08:00:05.000 it requests cancellation; at 08:00:05.050 cancellation is refused because the position already exists, and at 08:00:05.100 the client sees it.

A fallback market request at the deadline would risk a duplicate position. First resolve whether the pending order remains, was cancelled, or became a position, including recent history. The local timer cannot undo a server fill. Even a confirmed cancellation closes only that order’s pending state; a fallback, if allowed at all, requires fresh validity, price and aggregate-risk checks.

The server fills before the local cutoff, while the client learns about it after requesting cancellation. A market fallback at the cutoff could duplicate exposure.
The server fills before the local cutoff, while the client learns about it after requesting cancellation. A market fallback at the cutoff could duplicate exposure. On small screens, scroll the chart horizontally to keep labels readable.

10. A timeout leaves an unknown outcome, not a clean rejection

The timeout branch sends at 08:00:00.400, fills on the server at 08:00:00.600, reports error 128 at 08:00:01.000, then exposes the position to the client at 08:00:02.000. This is a constructed delayed-observation case; the timeout alone does not tell the terminal which server outcome occurred.

Stop new entry requests for that intent while reconciling. Refresh order selection and inspect relevant open, pending and historical records; account for symbol, direction, volume, identifiers and time. A comment is not a guaranteed idempotency key, and temporarily missing data do not prove no trade exists. Protect any discovered exposure. A retry requires a resolved state and a separately permitted fresh decision.

11. Measure signed slippage against the right reference

Define adverse signed entry slippage as s_buy=(F-Ask_ref)/pip and s_sell=(Bid_ref-F)/pip. Positive means a worse entry, negative means improvement. BUY reference 1.10008 filled at 1.10011 gives +0.3 pip; SELL reference 1.10000 filled at 1.09997 also gives +0.3 pip.

Record the actual executable quote at the decision, the request time and the fill acknowledgement separately. A bar close is not a substitute quote. A limit’s distance from the earlier market Ask is a policy price difference, not proof of price improvement against the limit’s own instructed price. Measure request-to-fill latency only where timestamps are aligned and precise enough; do not subtract unrelated clocks.

Positive signed entry slippage is adverse for both BUY and SELL, using their respective executable-side references. Entry price improvement is negative.
Positive signed entry slippage is adverse for both BUY and SELL, using their respective executable-side references. Entry price improvement is negative. On small screens, scroll the chart horizontally to keep labels readable.
MethodReference, not a fillAssumed fillSigned entry slippage
BUY1.100081.10011+0.3 pip
SELL1.100001.09997+0.3 pip

12. Handle a fill outside the planning allowance honestly

A fill at 1.10015 with the same exits and costs gives L=7.4, W=8.6 and ratio 1.1622. At the already requested 0.35 lots, planned risk becomes 25.90 USD, above the illustrative budget. The research gate R_net>=1.20 is merely declared for this comparison, not a proven profitable threshold.

Before a request, a failing quote can be rejected. After a fill, the exposure is real and cannot be relabelled “no trade.” Record the execution breach, stop further entries for that intent and apply the predefined protection and risk-exit procedure. Do not widen the stop or recalculate a smaller imaginary historical volume. Rejected protection and emergency closes require their own failure handling; neither guarantees a capped loss.

13. Keep a ledger of intents, requests, orders and fills

Log a unique research intent, signal time, Bid/Ask and quote age, requested type and volume, levels, request and response times, ticket, error, fills, cancellation acknowledgements and final exposure. Distinguish submitted volume, filled volume and remaining volume. Record actual commissions and exits separately from reserves used before trading.

Useful measures include fill rate per eligible origin, time to fill, signed slippage, rejected requests, unresolved states, cancellation races and net result. Report denominators explicitly. Repeated retries can make request-based and origin-based fill rates very different. Unfilled candidates have no trading P&L here only because no trade and no order fee are assumed; missed opportunities are a separate benchmark, not invented cash losses.

14. Compare common origins, not just attractive filled trades

The independent teaching ledger has 4 common origins. Market fills all four with net outcomes +7,+7,-7,+7 USD: total 14 USD, mean 3.50 USD per origin. Limit fills only origins 1,3, with +14,-3.50 USD; the two unfilled origins contribute zero under the stated no-fee assumption.

Limit total is 10.50 USD. Its filled-trade mean 5.25 USD exceeds the market mean, yet its common-origin mean 2.625 USD is lower. These assigned net figures are a separate arithmetic example, not returns generated by the earlier event file or estimates of probabilities. Preserve both denominators and study uncertainty on real data before choosing a policy.

Download fictional common-origin ledger (CSV)

Four common origins give different denominators. The limit’s mean per filled trade is higher here, but its mean per origin is lower. The ledger is fictional.
Four common origins give different denominators. The limit’s mean per filled trade is higher here, but its mean per origin is lower. The ledger is fictional. On small screens, scroll the chart horizontally to keep labels readable.
OriginMarket USDLimit USDState
1714Filled
270Unfilled
3-7-3.5Filled
470Unfilled

15. Validate execution assumptions beyond a neat backtest

A bar-based test cannot reconstruct historical Ask, available liquidity, queue priority or request latency merely from Bid OHLC. A simulated limit touch may be credited as a fill even when the intended live rule would not fill. Identify the tester’s order and spread assumptions and mark unresolved intrabar cases instead of selecting the favourable sequence.

Demo fills help test mechanics but do not establish live execution quality. Compare suitable recorded quotes, order logs and later untouched observations; vary spreads, latency and commissions within declared stress cases. Keep entry and exit timing consistent across variants. The small fictional examples here validate arithmetic and state distinctions only, not fill probabilities, win rates or expected live profit.

16. Choose a complete, finite execution policy

Before sending, specify price side, type, valid quote age, maximum delay, quantity, cost and risk checks, pending cutoff and confirmed cancellation handling. State what ends an origin and what creates a new one. Freeze identifiers and reconciliation steps for unknown outcomes, and verify what the broker actually accepts rather than inferring it from a chart label.

Market entry, patient limit entry and any fallback are different research candidates. Test them on common origins with their full costs and missed fills. The preceding stop/target guide supplies exit construction; the pair-selection and MT4-data guides cover costs and data limits. Combine these pieces only after each rule is explicit and the resulting strategy has been independently validated.

Frequently asked questions

Does touching a BUY limit on a Bid chart prove a fill?

No. BUY price eligibility is assessed on Ask, and eligible price alone still does not prove acceptance, available size or execution. Retain the actual order state and broker rules.

Are a market order and Market execution the same thing?

No. Market order describes the instruction; execution mode describes how the broker handles it. MT4 also has Instant and Request execution. The mode is determined for the instrument by the broker.

Can I replace an expired limit with a market order immediately?

A local deadline or cancel request is not confirmed cancellation. First resolve pending orders, positions and recent fills. Any permitted fallback needs a fresh decision and must not duplicate existing exposure.

Does a timeout mean the trade failed?

Not necessarily. The terminal may not know the server outcome. Reconcile before another request, and protect any discovered position. A blind retry can create a duplicate.

Should entry slippage be added again after the fill is known?

No. It is already represented in the actual fill price. Add actual fees and only the remaining planning allowances that have not already been represented elsewhere.

Does the fictional limit comparison prove better profitability?

No. The examples contain invented events and assigned outcomes. A higher result per filled trade can coexist with a lower result per eligible origin; suitable real data and a complete policy are required.

Sources and research notes

MetaQuotes documents order types, execution modes and the MQL4 request interface. Prices, deadlines, fills and outcome ledgers here are original fictional teaching assumptions. They are not broker quotes, live trading results or a ready-to-run EA.

Educational content. Prices, deadlines, fills and outcome figures are fictional. Forex trading involves risk; order types, stops, deviation settings and cost reserves cannot guarantee execution, profit or a maximum actual loss.