← All ideas
#041ExitSwing

Partial exit to zero risk (free roll)

Part of the position is sold where the locked-in profit equals the risk on the remainder: half at 1R, a third at 2R or a quarter at 3R. After that the trade's worst outcome is about zero, not counting costs and gaps.

Jack Corsellis · Watch video

Markets

Stocks, Futures, Indices, Forex, Commodities, Crypto

Timeframe

D1, H1, M15

Data

OHLC

Rules

Partly formalised

Difficulty

Easy

Status

Untested

Some rules were added by us and are marked in the text.

TradingView ports directly
EasyLanguage has pitfalls
MetaTrader 5 has pitfalls

Idea in brief

After entry a trade carries risk: the distance to the stop multiplied by the position size. Jack Corsellis suggests bringing this risk to zero as early as possible. To do that, part of the position is sold with a limit order at the level where the locked-in profit equals the loss the remainder would produce if price returned to the stop.

The author uses three levels: half of the position at 1R, a third at 2R or a quarter at 3R. R here is the distance from entry to stop. The stop on the remainder does not move. If price reaches the stop after the partial sale, the trade closes at roughly zero.

The author's example. Buy 3000 shares at 8.84, stop at 8.57, risk of 27 cents per share or $810 for the position. A limit order to sell 1000 shares at 9.38 (two R) locks in $540. The remaining 2000 shares carry the same $540 of risk. Profit minus the risk on the remainder equals zero, and the trade is "rolled for free".

Jack presents this as part of the Qullamaggie method. As retold, Qullamaggie's own rule is cruder: sell a third or half after 3-5 days and move the stop to breakeven. Below is a block that plugs into any strategy with a stop, and an example on the School Run card.

Why it might work

The author explains the free roll through risk management, not through the search for profit. In the author's words, this matters especially in a choppy market. If you lock in part of the position on the first thrust after a contraction, the trade stops threatening the account, and the remainder can run further on a trailing stop.

The second argument is behavioral. The author wants to get as early as possible into a position where the trade can no longer lose, and to sit calmly through the pullback after the first thrust. The effect on discipline is real, but it does not show up in a backtest.

The price for this is clear: part of the position is closed early and does not take part in rare large moves. For strategies with a low win rate this can reduce the total. The author does not show such a test, and the videos have no separate statistics on the free roll.

Rules

Free roll block (author)

// entry, stop and main exit come from the strategy the block is plugged into
R     = |EntryPrice - StopLoss|           // author: risk per share or contract
m     = 1, 2 or 3                         // author: R multiple
f     = 1 / (m + 1)                       // author: 1/2 at 1R, 1/3 at 2R, 1/4 at 3R
                                          // Finetiq: the formula as a generalization of the three levels
Qty0  = position size at entry
QtyFR = round_up(Qty0 * f, volume step)   // Finetiq: round up, otherwise the profit will not cover the remainder's risk

// long, right after the entry fills
FR_Price = EntryPrice + m * R
SELL QtyFR LIMIT at FR_Price               // author: sell limit right after entry
SELL (current volume) STOP at StopLoss     // stop for the entire remaining position, the level does not change

// zero-risk check
QtyFR * m * R >= (Qty0 - QtyFR) * R

// short is mirrored: BUY QtyFR LIMIT at EntryPrice - m * R
// if the stop is hit before the target, there is no partial exit: a 1R loss on the whole position

Author's refinements

// from a trailed stop: if the stop has been raised to NewStop, R' = EntryPrice - NewStop,
// and the target moves down to EntryPrice + m * R'  (author)

// at a round number: the target goes slightly below the round level.
// The desired target T defines the stop: NewStop = EntryPrice - (T - EntryPrice) / m   (author)

// at the local high of a base: the target goes below the high, a seller is waiting there   (author)

// after the free roll, the remainder is managed by the main strategy's exit
// for the author, this is the first close below EMA 10 or EMA 21

Qullamaggie variant: by time and to breakeven

// Qullamaggie's rule as retold by the author
IF BarsSinceEntry >= 3 AND position in profit        // author: after 3-5 days; Finetiq: day 3 and the "in profit" condition
    SELL 1/3 (or 1/2) AT NEXT BAR OPEN
    StopLoss = EntryPrice                            // author: stop on the remainder to breakeven

Example: School Run with a free roll

The school-run card: a buy stop above the high of the second 15-minute candle, the stop at its low, a target of two stops, an exit before the end of the session. We add a free roll at 1R.

Qty0  = 2 contracts                         // Finetiq: the minimum needed to sell half
R     = EntryPrice - Bar2.Low

SELL 1 LIMIT at EntryPrice + 1 * R          // free roll: half at 1R
SELL 1 LIMIT at EntryPrice + 2 * R          // the card's target for the second half
SELL (current volume) STOP at Bar2.Low      // 2 contracts before the free roll, 1 after

EXIT remainder at SessionClose - 5 min      // from the School Run card
// outcomes in R of the whole position's risk: -1 before the free roll; 0 if the remainder hit the stop after the free roll;
// +1.5 if the remainder reached the target. Without the free roll the target would give +2

Parameters

Parameter Value Source
Share and level 1/2 at 1R, 1/3 at 2R, 1/4 at 3R author
Order type sell limit right after entry author
Stop on the remainder unchanged author
Reference stop initial or trailed author
Target at resistance below a round number or a local high author
Exit for the remainder close below EMA 10 or EMA 21 author
Time variant 1/3-1/2 after 3-5 days, stop to breakeven author, Qullamaggie's rule
Day in the time variant 3 Finetiq
Rounding the share up to the volume step Finetiq
Example: minimum volume 2 contracts Finetiq

What to test

  1. Free roll versus the full position. The same strategy: the whole position held to the main exit, a free roll at 1R, 2R and 3R, and the Qullamaggie variant with breakeven after 3 days. Compare the average trade in R, the total, the maximum drawdown and the longest losing streak.
  2. The tail of the distribution. Calculate what share of the total comes from the best 5% of trades with and without the free roll. If the strategy lives on rare large trends, selling part of the position early can cost more than it saves on stops.
  3. Trades "at zero". The share of trades where the free roll filled and the remainder then hit the stop. If there are many, compare the base block, where the remainder's stop stays in place, with a trailing stop on the remainder (the stop is raised to just below EMA 10 or EMA 21 on every closed bar) and with moving the remainder's stop to breakeven.
  4. Costs and slippage. Three orders instead of two, with a commission on each. Slippage on the stop turns the "zero" negative. On intraday trades with a tight stop this is a noticeable part of R.
  5. Gaps through the stop. Trades on daily stock bars where the open is below the stop. The author acknowledges that zero risk is conditional. Calculate the average loss of such trades in R.
  6. One candle hit both the target and the stop. Count how often this happens on your timeframe. The test result depends on which level the tester treats as hit first.
  7. Volume rounding. On a small account or with 1 contract the position cannot be split. Count how many trades went without a free roll because of the minimum volume.

Platform notes

TradingView (Pine Script)

  • Partial exit: strategy.exit("FR", "L", qty_percent = 50, limit = frPrice, stop = stopLoss) and a second strategy.exit("Rest", "L", stop = stopLoss) for the remainder. For a third, set qty_percent rounded up, otherwise the profit will not cover the risk.
  • With a 1-contract position you cannot sell half. Enter with a quantity that is a multiple of 2, 3 or 4 via the qty parameter in strategy.entry.
  • If the limit and the stop are hit by one candle, their order is unknown. Use use_bar_magnifier = true (paid plans) or test on a lower timeframe.
  • Entry price for calculating R: strategy.position_avg_price. It changes when you add to the position, so R has to be fixed at the first entry.

MultiCharts and TradeStation (EasyLanguage)

  • A partial exit is set by quantity: Sell ("FR") 1000 shares total next bar at FR_Price limit. Without the word total, the quantity applies to each entry separately, and with several entries more than needed will be sold.
  • The limit order lives one bar. Send it on every bar while CurrentShares (or CurrentContracts) equals the size at entry.
  • A stop for the remainder without a quantity: Sell ("SL") next bar at StopLoss stop closes everything that is left.
  • SetProfitTarget and SetStopLoss work on the whole position or per contract in money, so they cannot set a partial target. For the order of execution within a bar you need Look-Inside-Bar Backtesting or Bar Magnifier.

MetaTrader 5 (MQL5)

  • A netting account has one position per symbol. A partial exit is an opposite deal of smaller volume: a pending SellLimit for QtyFR reduces the long when it fills. The position's SL and TP apply to the entire remaining volume.
  • On a hedging account an opposite order opens a separate short, and you end up with a locked position. Partial closing is done by ticket: CTrade::PositionClosePartial at market when price reaches the level. Alternatively, open two to four positions at once and give one of them a TP at the free roll level.
  • A position's TP closes it entirely; there is no partial target on the broker's server. Without a separate position, the free roll is executed by the EA, and it will not fire while the connection is down.
  • Volume is rounded by SYMBOL_VOLUME_STEP and SYMBOL_VOLUME_MIN. With 0.01 lot you cannot split off a share; the minimum position for a third is 0.03.

Where the idea can break

  • "Zero risk" is hypothetical. A gap through the stop, slippage and commissions produce a loss even after the free roll, and the author warns about this.
  • The author gives no statistics for the block. The figures in the videos are reviews of individual trades. None of them answers whether the total is higher with a free roll than without it.
  • The method is shown on stocks with strong momentum and a tight stop. On a market with a wide stop, a 1-3R target may be reached rarely, and the block will almost never fire.
  • In strategies with a 20-30% win rate, the total rests on a few large trades. Selling a third or half on the first thrust cuts exactly those.
  • On intraday timeframes a 1R target is often reached and then given back, and many trades end at zero with three commissions.
  • The benefit for discipline is real, but it cannot be measured in a backtest. The decision should be based on the test figures, not on a feeling of safety.

Sources

Related ideas

Updated: 2026-09-10