How to set stop loss and take profit when scalping
How to set stop loss and take profit when scalping
Hi scalpers,
in this topic i would like to discuss, how do you like to setup Stop loss, once you are scalping?
Or do you setup it?
I found out, that most of the time i personally prefer mental stop loss, because for example in normal day i trade/scalp like 80 - 200 positions, so setup stop loss every single time
would not be easy.
On another hand, once i have to hold some of the positions over the night, i prefer to setup there stop loss. In most cases its like 50 - 120 pips, because i make some kind of hedge, to make directional smaller, so im able to hold it longer.
What are your experiences?
in this topic i would like to discuss, how do you like to setup Stop loss, once you are scalping?
Or do you setup it?
I found out, that most of the time i personally prefer mental stop loss, because for example in normal day i trade/scalp like 80 - 200 positions, so setup stop loss every single time
would not be easy.
On another hand, once i have to hold some of the positions over the night, i prefer to setup there stop loss. In most cases its like 50 - 120 pips, because i make some kind of hedge, to make directional smaller, so im able to hold it longer.
What are your experiences?
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
-
LondonScalper
- Posts: 770
- Joined: Sat Sep 05, 2026 7:54 am
Re: How to set stop loss and take profit when scalping
Mental stops work until they don’t — usually on the day you’re already down and “just giving it a bit more room.”PTScalper wrote:most of the time i personally prefer mental stop loss... 80 - 200 positions... setup stop loss every single time would not be easy.
I still favour a hard stop in the book for anything that isn’t a 30-second flick, even if the initial risk is tiny. Platforms are quite good at sending exits; humans are quite good at negotiating with themselves. At 80–200 tickets, the operational pain of placing stops is real — so automate it: bracket on entry, or a hotkey that stamps SL/TP from ATR without typing.
Overnight / multi-hour hedges at 50–120 pips is a different product. That’s position risk, not scalp risk. Mixing the two in one head without labelling them is how a “scalp day” quietly becomes a swing P&L.
Concrete desk rule: if I can’t state the invalidation in one sentence before entry, I don’t get a mental stop — I get no trade. How are you defining invalidation on those mental-stop scalps today?
Re: How to set stop loss and take profit when scalping
Mental stops are just a polite way of saying "I haven't accepted the risk yet."
After 26 years in this game, I can promise you that human negotiation is the number one account killer. You are dead right—the day you "give it a bit more room" is the exact day the market trends relentlessly in the opposite direction.
To answer your question: I don't use mental stops, period. My invalidation is strictly structural. Because I trade pure price action on spot, my invalidation is always the extreme of the candle that created the setup (usually a liquidity sweep). If I'm entering a scalp based on a 5-minute pin bar that swept a session low, my hard stop goes a fraction of a pip below that wick. If price trades beyond it, the structural thesis is dead. Why would I want to be in a trade where the entire premise of my entry has been proven wrong?
You also nailed it regarding the operational pain of placing 80+ tickets. That’s exactly why we use the tools available to us in the spot world. No prop firm telling us our EA is banned or our execution speed is "toxic." We can just code it.
Here is a clean, automated ATR-bracket framework in Pine Script that does exactly what you mentioned. It automatically stamps a hard Stop Loss and Take Profit based on ATR multipliers the second an entry condition is met. No typing, no hesitation, no mental gymnastics.
After 26 years in this game, I can promise you that human negotiation is the number one account killer. You are dead right—the day you "give it a bit more room" is the exact day the market trends relentlessly in the opposite direction.
To answer your question: I don't use mental stops, period. My invalidation is strictly structural. Because I trade pure price action on spot, my invalidation is always the extreme of the candle that created the setup (usually a liquidity sweep). If I'm entering a scalp based on a 5-minute pin bar that swept a session low, my hard stop goes a fraction of a pip below that wick. If price trades beyond it, the structural thesis is dead. Why would I want to be in a trade where the entire premise of my entry has been proven wrong?
You also nailed it regarding the operational pain of placing 80+ tickets. That’s exactly why we use the tools available to us in the spot world. No prop firm telling us our EA is banned or our execution speed is "toxic." We can just code it.
Here is a clean, automated ATR-bracket framework in Pine Script that does exactly what you mentioned. It automatically stamps a hard Stop Loss and Take Profit based on ATR multipliers the second an entry condition is met. No typing, no hesitation, no mental gymnastics.
Re: How to set stop loss and take profit when scalping
Pine Script: ATR Bracket Auto-Execution
Code: Select all
//@version=5
strategy("ATR Bracket Execution - Spot Framework", overlay=true, calc_on_every_tick=true)
// =========================================================================
// INPUTS: Risk & Bracket Parameters
// =========================================================================
grp_risk = "Bracket Settings"
atrLength = input.int(14, title="ATR Length", group=grp_risk)
slMultiplier = input.float(1.0, title="Stop Loss (ATR Multiplier)", step=0.1, group=grp_risk)
tpMultiplier = input.float(2.0, title="Take Profit (ATR Multiplier)", step=0.1, group=grp_risk)
// =========================================================================
// CALCULATIONS
// =========================================================================
// Calculate ATR for dynamic volatility-based stops
atrValue = ta.atr(atrLength)
// Placeholder for your actual entry logic (e.g., PA sweeps, MA crosses)
// Using a simple momentum cross here just to demonstrate the automated bracket
fastMA = ta.ema(close, 9)
slowMA = ta.ema(close, 21)
longTrigger = ta.crossover(fastMA, slowMA)
shortTrigger = ta.crossunder(fastMA, slowMA)
// =========================================================================
// EXECUTION WITH HARD STOPS (No "Mental" Room)
// =========================================================================
if (longTrigger)
// Calculate exact hard levels at the moment of entry
longSL = close - (atrValue * slMultiplier)
longTP = close + (atrValue * tpMultiplier)
// Execute entry and instantly send the hard brackets to the broker/book
strategy.entry("Long Entry", strategy.long)
strategy.exit("Exit Long", "Long Entry", stop=longSL, limit=longTP)
if (shortTrigger)
// Calculate exact hard levels at the moment of entry
shortSL = close + (atrValue * slMultiplier)
shortTP = close - (atrValue * tpMultiplier)
// Execute entry and instantly send the hard brackets to the broker/book
strategy.entry("Short Entry", strategy.short)
strategy.exit("Exit Short", "Short Entry", stop=shortSL, limit=shortTP)
// =========================================================================
// VISUALIZATION
// =========================================================================
plot(fastMA, color=color.new(color.blue, 0), title="Fast MA")
plot(slowMA, color=color.new(color.gray, 0), title="Slow MA")Re: How to set stop loss and take profit when scalping
Plug your own price action entry conditions into the longTrigger and shortTrigger variables. Once it fires, the hard stop is in the book instantly.
No mental stops.
No mixing scalp risk with swing risk.
Just pure, disciplined execution on your own capital.
No mental stops.
No mixing scalp risk with swing risk.
Just pure, disciplined execution on your own capital.
Re: How to set stop loss and take profit when scalping
To make it better, i prepared Pro level in Pine Script:
Because I trade raw price action, my edge is entirely dependent on market structure—typically a liquidity sweep on the 15-minute or daily chart. The invalidation is the extreme of the candle that initiated the setup. If price breaches that wick by a fractional pip, the structural thesis is dead. Why would I hold exposure in a market that just proved my entry criteria wrong?
You are completely right about the operational drag of manual execution at high volume. When you’re pushing 80–200 tickets, manual bracket placement is inefficient and exposes you to execution latency. This is the exact advantage of a pure spot environment—you own your infrastructure. No prop firm restrictions on automated execution, no synthetic rules penalizing your order frequency.
For high-frequency or high-ticket scalping, the execution must be fully mechanized. Below is a professional-grade Pine Script framework for automated bracket execution. It handles dynamic ATR-based brackets and exact position sizing based on a fixed percentage of account equity. You plug in the PA logic; the script handles the math and puts the hard orders in the book instantly.
Because I trade raw price action, my edge is entirely dependent on market structure—typically a liquidity sweep on the 15-minute or daily chart. The invalidation is the extreme of the candle that initiated the setup. If price breaches that wick by a fractional pip, the structural thesis is dead. Why would I hold exposure in a market that just proved my entry criteria wrong?
You are completely right about the operational drag of manual execution at high volume. When you’re pushing 80–200 tickets, manual bracket placement is inefficient and exposes you to execution latency. This is the exact advantage of a pure spot environment—you own your infrastructure. No prop firm restrictions on automated execution, no synthetic rules penalizing your order frequency.
For high-frequency or high-ticket scalping, the execution must be fully mechanized. Below is a professional-grade Pine Script framework for automated bracket execution. It handles dynamic ATR-based brackets and exact position sizing based on a fixed percentage of account equity. You plug in the PA logic; the script handles the math and puts the hard orders in the book instantly.
Re: How to set stop loss and take profit when scalping
Pine Script: Dynamic Bracket & Risk Execution Framework
Code: Select all
//@version=5
strategy("Pro Bracket Execution - Spot Framework", overlay=true, calc_on_every_tick=true, margin_long=100, margin_short=100)
// =========================================================================
// INPUTS: Risk Management & Bracket Parameters
// =========================================================================
grp_risk = "Risk & Capital Allocation"
riskPct = input.float(1.0, title="Account Risk per Trade (%)", step=0.1, group=grp_risk)
grp_exec = "Execution Parameters"
atrLength = input.int(14, title="ATR Length", group=grp_exec)
slMultiplier = input.float(1.0, title="Stop Loss (ATR Multiplier)", step=0.1, group=grp_exec)
tpMultiplier = input.float(2.0, title="Take Profit (ATR Multiplier)", step=0.1, group=grp_exec)
// =========================================================================
// CORE CALCULATIONS
// =========================================================================
// Dynamic volatility measurement for structural breathing room
volatility = ta.atr(atrLength)
// Placeholder for proprietary Price Action logic (e.g., liquidity sweeps, structural breaks)
// Replace these with your specific entry triggers
longTrigger = ta.crossover(ta.ema(close, 9), ta.ema(close, 21))
shortTrigger = ta.crossunder(ta.ema(close, 9), ta.ema(close, 21))
// =========================================================================
// ORDER ROUTING & POSITION SIZING (HARD EXITS ONLY)
// =========================================================================
if (longTrigger and strategy.position_size == 0)
// 1. Calculate exact hard levels instantly
hardSL = close - (volatility * slMultiplier)
hardTP = close + (volatility * tpMultiplier)
// 2. Calculate position size based on exact pip risk to maintain flat equity % risk
riskCapital = (strategy.equity * riskPct) / 100
posSize = riskCapital / (close - hardSL)
// 3. Route entry and resting brackets to the order book
strategy.entry("Long_Exec", strategy.long, qty=posSize)
strategy.exit("Long_Bracket", "Long_Exec", stop=hardSL, limit=hardTP)
if (shortTrigger and strategy.position_size == 0)
// 1. Calculate exact hard levels instantly
hardSL = close + (volatility * slMultiplier)
hardTP = close - (volatility * tpMultiplier)
// 2. Calculate position size based on exact pip risk to maintain flat equity % risk
riskCapital = (strategy.equity * riskPct) / 100
posSize = riskCapital / (hardSL - close)
// 3. Route entry and resting brackets to the order book
strategy.entry("Short_Exec", strategy.short, qty=posSize)
strategy.exit("Short_Bracket", "Short_Exec", stop=hardSL, limit=hardTP)Re: How to set stop loss and take profit when scalping
Concrete desk rule: If your execution platform requires you to physically hover your hand over a mouse to protect your capital, your workflow is broken.
Automate the risk, eliminate the negotiation, and let the probabilities play out.
Automate the risk, eliminate the negotiation, and let the probabilities play out.
Re: How to set stop loss and take profit when scalping
Pine Script is great for charting, but if you’re executing 80–200 tickets a day, you need to be directly plugged into the broker’s liquidity.
At 55, I don't trust bridging software, and I definitely don't trust proprietary web platforms. You want your hard brackets living securely on the broker's server, so if your terminal crashes or your internet connection drops, your capital is still ring-fenced. This is exactly why pure spot trading on MetaTrader is king—you own your execution infrastructure and no one dictates your workflow.
Here is the professional-grade execution framework translated for both MT5 and MT4. These templates calculate your dynamic ATR-based structural levels, compute the exact lot size to keep your equity risk completely flat, and route the order directly to the book without a single second of hesitation.
At 55, I don't trust bridging software, and I definitely don't trust proprietary web platforms. You want your hard brackets living securely on the broker's server, so if your terminal crashes or your internet connection drops, your capital is still ring-fenced. This is exactly why pure spot trading on MetaTrader is king—you own your execution infrastructure and no one dictates your workflow.
Here is the professional-grade execution framework translated for both MT5 and MT4. These templates calculate your dynamic ATR-based structural levels, compute the exact lot size to keep your equity risk completely flat, and route the order directly to the book without a single second of hesitation.
Re: How to set stop loss and take profit when scalping
MT5: The CTrade Framework
MT5 uses an object-oriented architecture, so we utilize the standard library's CTrade class to handle the execution routing seamlessly.
MT5 uses an object-oriented architecture, so we utilize the standard library's CTrade class to handle the execution routing seamlessly.
Code: Select all
//+------------------------------------------------------------------+
//| Pro_Bracket_Execution_MT5.mq5 |
//+------------------------------------------------------------------+
#property strict
#include <Trade\Trade.mqh>
input double RiskPercent = 1.0; // Account Risk per Trade (%)
input int AtrPeriod = 14; // ATR Length
input double SlMult = 1.0; // Stop Loss (ATR Multiplier)
input double TpMult = 2.0; // Take Profit (ATR Multiplier)
CTrade trade;
void ExecuteBracket(int direction) {
// Note: In a production EA, initialize the iATR handle in OnInit()
// to preserve memory, rather than creating a new handle on every trade.
int atrHandle = iATR(_Symbol, PERIOD_CURRENT, AtrPeriod);
double atr[];
CopyBuffer(atrHandle, 0, 0, 1, atr);
double volatility = atr[0];
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl_price, tp_price, entry_price;
// Calculate precise structural boundaries
if (direction == ORDER_TYPE_BUY) {
entry_price = ask;
sl_price = entry_price - (volatility * SlMult);
tp_price = entry_price + (volatility * TpMult);
} else {
entry_price = bid;
sl_price = entry_price + (volatility * SlMult);
tp_price = entry_price - (volatility * TpMult);
}
// Core Position Sizing Math
double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
double risk_money = AccountInfoDouble(ACCOUNT_EQUITY) * (RiskPercent / 100.0);
double sl_ticks = MathAbs(entry_price - sl_price) / tick_size;
double lot_size = risk_money / (sl_ticks * tick_value);
// Normalize lot size to prevent broker rejection
lot_size = MathFloor(lot_size / lot_step) * lot_step;
// Route to the broker server immediately
if (direction == ORDER_TYPE_BUY) {
trade.Buy(lot_size, _Symbol, ask, sl_price, tp_price, "Pro_Bracket");
} else if (direction == ORDER_TYPE_SELL) {
trade.Sell(lot_size, _Symbol, bid, sl_price, tp_price, "Pro_Bracket");
}
}