Page 1 of 3
Position Sizing Formula Every Scalper Should Memorize
Posted: Thu Aug 20, 2026 8:52 pm
by Fairman
This is the one formula that should be second nature, calculated before every single entry, not just the "big" ones.
Position Size = (Account Risk % × Account Balance) ÷ (Stop-Loss Distance in Pips × Pip Value)
Break it down like this. Decide your risk percentage — say 1%. Multiply that by your account balance to get your dollar risk for the trade. Then divide that dollar amount by your stop-loss distance in pips multiplied by the pip value for your position. What comes out the other end is your correct lot size for that specific trade, with that specific stop.
Why does this matter so much for scalpers specifically? Because stop distances change from trade to trade — a tight range-bound scalp might have a 4-pip stop, while a breakout scalp might need 12 pips. If you're using the same lot size regardless of stop distance, you're accidentally risking wildly different amounts on different trades, even though your intention was consistency.
Traders who eyeball their lot size — "eh, I'll just do 0.5 lots, feels about right" — are the same traders who look back at a losing week and can't explain why one trade cost them 5x more than another. Do the math every time. It takes fifteen seconds and it's the difference between controlled risk and accidental catastrophe.
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Fri Sep 11, 2026 9:25 pm
by LondonScalper
Fairman wrote:Position Size = (Account Risk % × Account Balance) ÷ (Stop-Loss Distance in Pips × Pip Value)
Yes — and the important part for scalpers is that the formula is
recomputed every ticket, not remembered from this morning’s stop distance.
London EURUSD stops might be 4–6 pips in a quiet range and 10–12 into a news overhang. Same 1% risk, completely different lot size. Traders who keep a favourite 0.5 lot “because it feels right” are sizing the ego, not the invalidation.
I keep a tiny sheet (or platform calculator) open: risk money → stop distance → lots. No mental arithmetic mid-session when the spread is already moving. If the stop I need for structure is wider than I will accept at 1%, the answer is
pass, not “shrink the stop.”
Do you calculate lots manually each time, or have the platform spit size from a fixed risk field?
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sun Sep 20, 2026 1:23 pm
by PropScalpDesk
Size from stop distance, every ticket
The formula is correct and still skipped under adrenaline. I calculate lots from account risk and stop distance before the order ticket opens — not after a candle “looks perfect.”
Frankfurt habit:
- Risk percent is fixed for the session type (smaller on challenge money than on the home book)
- Stop is placed where the idea is wrong, then size follows
- If the stop distance implies a lot size I find emotionally loud, I skip the trade rather than tighten the stop to force a familiar size
Fixed lots feel simple until EURUSD and XAUUSD share a session and quietly risk different R. Memorising the formula matters less than refusing to override it when the open is fast.
On prop accounts the same math applies with a tighter ceiling so two losers cannot kiss the daily loss line.
I keep a tiny calculator or platform script so the formula is frictionless. Frictionless correct sizing beats memorised formulas you override when busy.
Do you recalculate when you move the stop to structure, or do you ever keep lots constant and hope the tighter stop is still honest?
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:26 pm
by FTtrader
Fairman wrote: Thu Aug 20, 2026 8:52 pm
This is the one formula that should be second nature, calculated before every single entry, not just the "big" ones.
Position Size = (Account Risk % × Account Balance) ÷ (Stop-Loss Distance in Pips × Pip Value)
Break it down like this. Decide your risk percentage — say 1%. Multiply that by your account balance to get your dollar risk for the trade. Then divide that dollar amount by your stop-loss distance in pips multiplied by the pip value for your position. What comes out the other end is your correct lot size for that specific trade, with that specific stop.
Why does this matter so much for scalpers specifically? Because stop distances change from trade to trade — a tight range-bound scalp might have a 4-pip stop, while a breakout scalp might need 12 pips. If you're using the same lot size regardless of stop distance, you're accidentally risking wildly different amounts on different trades, even though your intention was consistency.
Traders who eyeball their lot size — "eh, I'll just do 0.5 lots, feels about right" — are the same traders who look back at a losing week and can't explain why one trade cost them 5x more than another. Do the math every time. It takes fifteen seconds and it's the difference between controlled risk and accidental catastrophe.
Hi Fairman,
Eyeballing lot sizes is a silent account killer, especially for scalpers where a few pips can drastically skew your risk-to-reward ratio. Consistency in strategy means nothing if your position sizing is completely randomized by varying stop distances.
While doing the math manually takes 15 seconds, even that can feel too slow when a setup forms rapidly on a 1-minute chart. The best way to enforce this discipline is to automate it directly on your screen so the exact lot size is staring back at you the moment you define your stop. I wrote a quick TradingView Pine Script based on your exact formula to display this on the chart—takes the emotion and the calculator out of the equation entirely!
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:27 pm
by FTtrader
The Pine Script
This script creates an on-chart dashboard (a small table in the bottom right corner) that calculates the exact lot size based on the user's inputs. It perfectly mirrors the formula from your post.
Code: Select all
//@version=5
indicator("Dynamic Position Size Calculator", overlay=true)
// ==========================================
// USER INPUTS
// ==========================================
grp_risk = "Risk Parameters"
acctBalance = input.float(10000, title="Account Balance ($)", group=grp_risk)
riskPercent = input.float(1.0, title="Risk Percentage (%)", step=0.1, group=grp_risk)
grp_trade = "Trade Parameters"
slPips = input.float(10.0, title="Stop Loss Distance (Pips)", step=0.5, group=grp_trade)
pipValue = input.float(10.0, title="Pip Value per 1.0 Lot ($)", tooltip="Usually $10 for pairs ending in USD (EURUSD, GBPUSD)", group=grp_trade)
// ==========================================
// CALCULATIONS (The exact formula)
// ==========================================
// 1. Calculate Dollar Risk
riskAmount = acctBalance * (riskPercent / 100)
// 2. Calculate Lot Size: Risk Amount / (SL Pips * Pip Value)
lotSize = riskAmount / (slPips * pipValue)
// ==========================================
// VISUAL DASHBOARD
// ==========================================
var table sizeTable = table.new(position.bottom_right, 2, 3, bgcolor=color.new(color.black, 20), border_width=1, border_color=color.gray)
if barstate.islast
// Risk Amount Row
table.cell(sizeTable, 0, 0, "Risk Amount:", text_color=color.white, text_halign=text.align_left)
table.cell(sizeTable, 1, 0, "$" + str.tostring(riskAmount, "#.##"), text_color=color.red, text_halign=text.align_right)
// Stop Loss Row
table.cell(sizeTable, 0, 1, "Stop Loss:", text_color=color.white, text_halign=text.align_left)
table.cell(sizeTable, 1, 1, str.tostring(slPips) + " Pips", text_color=color.gray, text_halign=text.align_right)
// Final Lot Size Row
table.cell(sizeTable, 0, 2, "Lot Size:", text_color=color.white, text_halign=text.align_left)
table.cell(sizeTable, 1, 2, str.tostring(lotSize, "#.##"), text_color=color.green, text_halign=text.align_right, text_size=size.large)
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:27 pm
by FTtrader
How to use it in TradingView:
1.) Open TradingView and go to the Pine Editor tab at the bottom.
2.) Delete any existing code, paste this script, and click Save.
3.) Click Add to Chart.
4.) Double-click the indicator name on your chart (or click the settings gear) to quickly adjust your Account Balance, Risk %, or Stop Loss pips before a trade. The table in the bottom right will instantly update with your required lot size.
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:28 pm
by FTtrader
Here are the versions for MetaTrader 4 (MQL4) and MetaTrader 5 (MQL5).
Because MetaTrader is natively connected to your brokerage account, these scripts are actually much more powerful than the TradingView version. You don't have to manually enter your Account Balance or the Pip Value—the indicator dynamically reads your live account balance and automatically calculates the exact pip value for whichever chart you drag it onto (whether it's EURUSD, Gold, or a crypto pair).
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:28 pm
by FTtrader
It also automatically rounds the final lot size to your broker's exact step size (e.g., 0.01 micro lots) so you don't get execution errors.
1. MetaTrader 4 (MQL4) Version
Code: Select all
//+------------------------------------------------------------------+
//| Dynamic_Lot_Size_MT4.mq4 |
//+------------------------------------------------------------------+
#property strict
#property indicator_chart_window
//--- User Inputs
input double RiskPercentage = 1.0; // Risk Percentage (%)
input double StopLossPips = 10.0; // Stop Loss Distance (Pips)
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// 1. Get Live Account Balance
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
// 2. Calculate Dollar Risk
double riskAmount = balance * (RiskPercentage / 100.0);
// 3. Determine Pip Multiplier (detects 3/5 digit brokers automatically)
int digits = (int)MarketInfo(Symbol(), MODE_DIGITS);
double pipMultiplier = (digits == 3 || digits == 5) ? 10.0 : 1.0;
// 4. Calculate Exact Pip Value for 1 Standard Lot based on current pair
double tickValue = MarketInfo(Symbol(), MODE_TICKVALUE);
double tickSize = MarketInfo(Symbol(), MODE_TICKSIZE);
double pipSize = Point * pipMultiplier;
double pipValue = tickValue * (pipSize / tickSize);
// 5. Calculate Raw Lot Size
double lotSize = 0.0;
if (StopLossPips > 0 && pipValue > 0) {
lotSize = riskAmount / (StopLossPips * pipValue);
}
// 6. Round Lot Size to Broker Specifications
double minLot = MarketInfo(Symbol(), MODE_MINLOT);
double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
if(lotStep > 0) {
lotSize = MathFloor(lotSize / lotStep) * lotStep;
}
if (lotSize < minLot) lotSize = minLot;
if (lotSize > maxLot) lotSize = maxLot;
// 7. Display Dashboard on Chart
string dash = "\n";
dash += " === POSITION SIZE CALCULATOR ===\n";
dash += " Account Balance: $" + DoubleToStr(balance, 2) + "\n";
dash += " Risk Amount (" + DoubleToStr(RiskPercentage, 1) + "%): $" + DoubleToStr(riskAmount, 2) + "\n";
dash += " Stop Loss: " + DoubleToStr(StopLossPips, 1) + " Pips\n";
dash += " ------------------------------------------\n";
dash += " RECOMMENDED LOT SIZE: " + DoubleToStr(lotSize, 2) + "\n";
Comment(dash); // Prints the dashboard to the top-left corner
return(rates_total);
}
//+------------------------------------------------------------------+
//| Clean up chart when indicator is removed |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:29 pm
by FTtrader
2. MetaTrader 5 (MQL5) Version
Note: MT5 syntax is slightly different, utilizing SymbolInfoDouble instead of MarketInfo.
Code: Select all
//+------------------------------------------------------------------+
//| Dynamic_Lot_Size_MT5.mq5 |
//+------------------------------------------------------------------+
#property indicator_chart_window
//--- User Inputs
input double RiskPercentage = 1.0; // Risk Percentage (%)
input double StopLossPips = 10.0; // Stop Loss Distance (Pips)
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// 1. Get Live Account Balance
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
// 2. Calculate Dollar Risk
double riskAmount = balance * (RiskPercentage / 100.0);
// 3. Determine Pip Multiplier (detects 3/5 digit brokers automatically)
int digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);
double pipMultiplier = (digits == 3 || digits == 5) ? 10.0 : 1.0;
// 4. Calculate Exact Pip Value for 1 Standard Lot based on current pair
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pipSize = _Point * pipMultiplier;
double pipValue = tickValue * (pipSize / tickSize);
// 5. Calculate Raw Lot Size
double lotSize = 0.0;
if (StopLossPips > 0 && pipValue > 0) {
lotSize = riskAmount / (StopLossPips * pipValue);
}
// 6. Round Lot Size to Broker Specifications
double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
if(lotStep > 0) {
lotSize = MathFloor(lotSize / lotStep) * lotStep;
}
if (lotSize < minLot) lotSize = minLot;
if (lotSize > maxLot) lotSize = maxLot;
// 7. Display Dashboard on Chart
string dash = "\n";
dash += " === POSITION SIZE CALCULATOR ===\n";
dash += " Account Balance: $" + DoubleToString(balance, 2) + "\n";
dash += " Risk Amount (" + DoubleToString(RiskPercentage, 1) + "%): $" + DoubleToString(riskAmount, 2) + "\n";
dash += " Stop Loss: " + DoubleToString(StopLossPips, 1) + " Pips\n";
dash += " ------------------------------------------\n";
dash += " RECOMMENDED LOT SIZE: " + DoubleToString(lotSize, 2) + "\n";
Comment(dash); // Prints the dashboard to the top-left corner
return(rates_total);
}
//+------------------------------------------------------------------+
//| Clean up chart when indicator is removed |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
Re: Position Sizing Formula Every Scalper Should Memorize
Posted: Sat Sep 26, 2026 2:29 pm
by FTtrader
How to Install & Use in MT4 / MT5:
1.) Open your MetaTrader platform and press F4 to open the MetaEditor.
2.) In the top left, click New -> Select Custom Indicator -> Click Next.
3.) Name it LotSizeCalculator and keep clicking Next until it generates a template.
4.) Delete everything in the template and paste the appropriate code above.
5.) Click Compile (or press F7) at the top of the editor. Ensure there are no errors at the bottom.
6.) Go back to your MetaTrader chart, look in your Navigator window under Indicators, and drag the LotSizeCalculator onto your chart.
7.) To change your Stop Loss or Risk %, just double-click the indicator (or right-click the chart -> Indicators List) and adjust the inputs. The dashboard in the top-left will instantly update with your lot size!