Page 1 of 2
Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Mon Sep 21, 2026 6:26 am
by dreambig
There is something strange about trading.
Sometimes you can trade for weeks with a clear head. You follow your strategy, accept losses and don’t really care about individual trades.
And then you get close to your target.
Suddenly everything changes.
Imagine you are trading a prop firm account. You are up 7% and you only need a little more to reach the target.
You should be happy, right?
Instead, you start thinking about the money.
“I only need another 1%.”
“Maybe I should take this trade even though it’s not a perfect setup.”
“I don’t want to give back what I’ve already made.”
And that’s where things can start going wrong.
You stop trading the setup and start trading the result.
You might take trades you normally wouldn’t take because you want to finish the challenge faster. Or you become too afraid to take a perfectly valid setup because you don’t want to lose your profits.
The strange thing is that your strategy hasn’t changed.
You have changed.
The closer you get to the goal, the more important the money becomes in your head.
I’ve experienced this myself. After getting through the difficult part, being close to the money can actually create more pressure than being far away from it.
And that is probably one of the hardest lessons in trading:
You have to trade the same way when you’re +7% as you did when you were -2%.
The market doesn’t know that you’re close to your payout.
It doesn’t care about your challenge.
It doesn’t care that you need one more good trade.
There is only your setup, your risk and your rules.
Maybe the real skill in trading isn’t just learning how to make money.
Maybe it’s learning how to behave exactly the same when the money suddenly starts to matter.
DreamBig
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:08 pm
by PTScalper
dreambig wrote: Mon Sep 21, 2026 6:26 am
There is something strange about trading.
Sometimes you can trade for weeks with a clear head. You follow your strategy, accept losses and don’t really care about individual trades.
And then you get close to your target.
Suddenly everything changes.
Imagine you are trading a prop firm account. You are up 7% and you only need a little more to reach the target.
You should be happy, right?
Instead, you start thinking about the money.
“I only need another 1%.”
“Maybe I should take this trade even though it’s not a perfect setup.”
“I don’t want to give back what I’ve already made.”
And that’s where things can start going wrong.
You stop trading the setup and start trading the result.
You might take trades you normally wouldn’t take because you want to finish the challenge faster. Or you become too afraid to take a perfectly valid setup because you don’t want to lose your profits.
The strange thing is that your strategy hasn’t changed.
You have changed.
The closer you get to the goal, the more important the money becomes in your head.
I’ve experienced this myself. After getting through the difficult part, being close to the money can actually create more pressure than being far away from it.
And that is probably one of the hardest lessons in trading:
You have to trade the same way when you’re +7% as you did when you were -2%.
The market doesn’t know that you’re close to your payout.
It doesn’t care about your challenge.
It doesn’t care that you need one more good trade.
There is only your setup, your risk and your rules.
Maybe the real skill in trading isn’t just learning how to make money.
Maybe it’s learning how to behave exactly the same when the money suddenly starts to matter.
DreamBig
Hi DreamBig,
This is a fantastic observation and gets to the absolute core of why so many traders fail right at the finish line. That psychological shift—moving from trading the setup to trading the result—is one of the most dangerous traps in the markets.
This exact phenomenon is why I always strongly advise new traders to skip demo accounts (or use them only briefly to figure out the platform interface) and start with a small, real-money account instead.
You can trade a demo account for six months and look like an absolute genius. Why? Because on a demo, you are a robot. There is zero emotional friction. You take the loss, you shrug, you move on. But the moment you put real money on the line—even if it's just a $50 or $100 account—your brain chemistry changes.
When you are scalping raw price action on a 15-minute chart, reading the market structure and liquidity sweeps without the crutch of lagging indicators, your mind needs to be completely objective. But when real money is involved, the fear of losing what you have, or the greed of making just a little bit more to hit a target, alters your perception. Suddenly, a mediocre setup looks like a "must-trade" because you are impatient, or a perfect setup looks terrifying because you don't want to ruin your 7% gain.
You simply cannot train for the psychological weight of real money in a simulated environment. Trading a small live account forces you to confront these human emotions—fear, greed, hesitation—while the financial risk is still small enough to survive the learning curve.
Because we are human and prone to these emotional hijacking moments near our targets, it helps to build mechanical rules that step in when our discipline fails.
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:08 pm
by PTScalper
Below is a Pine Script
"Psychology Circuit Breaker" template. You can wrap this around your trading logic. It tracks your daily PnL and visually throws up a hard stop (and blocks further automated entries) the moment you hit either your daily profit target or your maximum daily drawdown. It takes the decision out of your hands when you are most vulnerable.
Code: Select all
//@version=5
strategy("Psychology Circuit Breaker - Daily Limits", overlay=true, margin_long=100, margin_short=100)
// --- User Inputs for Psychological Limits ---
target_pct = input.float(1.5, title="Daily Profit Target (%)", group="Risk Management")
max_loss_pct = input.float(1.0, title="Max Daily Loss (%)", group="Risk Management")
// --- Daily Equity Tracking ---
// Detect the first bar of a new daily session
is_new_day = ta.change(time("D"))
// Store the account equity at the start of the day
var float start_equity = na
if is_new_day or na(start_equity)
start_equity := strategy.equity
// Calculate current daily PnL as a percentage
daily_pnl_pct = ((strategy.equity - start_equity) / start_equity) * 100
// --- Circuit Breaker Logic ---
hit_target = daily_pnl_pct >= target_pct
hit_loss = daily_pnl_pct <= -max_loss_pct
// We only allow trading if neither limit has been hit
can_trade = not hit_target and not hit_loss
// --- Example Trading Logic (Raw Price Action) ---
// Simple bullish/bearish engulfing for demonstration purposes
bullish_engulfing = close > open and close[1] < open[1] and close > open[1] and open < close[1]
bearish_engulfing = close < open and close[1] > open[1] and close < open[1] and open > close[1]
if bullish_engulfing and can_trade
strategy.entry("Long", strategy.long)
if bearish_engulfing and can_trade
strategy.entry("Short", strategy.short)
// Standard exit for demonstration (close after 5 bars)
if ta.barssince(strategy.position_size != 0) > 5
strategy.close_all()
// --- Visual Dashboard ---
// Displays a subtle table on the chart so you always know where you stand
// without obsessing over the exact dollar amount.
var table pnl_table = table.new(position.bottom_right, 2, 2, border_width=1, border_color=color.new(color.gray, 50))
if barstate.islast
// Header
table.cell(pnl_table, 0, 0, "Daily PnL %", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
// PnL Value
pnl_color = hit_target ? color.new(color.green, 30) : hit_loss ? color.new(color.red, 30) : color.new(color.gray, 30)
table.cell(pnl_table, 1, 0, str.tostring(daily_pnl_pct, "#.##") + "%", bgcolor=pnl_color, text_color=color.white, text_size=size.small)
// Status
table.cell(pnl_table, 0, 1, "Status", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
status_text = hit_target ? "TARGET HIT - WALK AWAY" : hit_loss ? "MAX LOSS - DONE FOR DAY" : "TRADING ACTIVE"
status_color = can_trade ? color.new(color.teal, 30) : color.new(color.maroon, 30)
table.cell(pnl_table, 1, 1, status_text, bgcolor=status_color, text_color=color.white, text_size=size.small, text_halign=text.align_center)
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:09 pm
by PTScalper
The market definitely doesn't care if we need "just one more good trade." Keep protecting that mental capital!
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:10 pm
by PTScalper
Here are the complete Expert Advisor (EA) templates for both MetaTrader 4 and MetaTrader 5.
Because EAs execute tick-by-tick without the emotional hesitation of a human trader, these templates act as an automated risk manager. They take a snapshot of your account equity at the start of the trading day. If your floating equity breaches your daily profit target or maximum loss percentage, the EA immediately closes all open positions, deletes pending orders, and blocks further trading logic until the server rolls over to the next day.
Attach this EA to a single chart—it monitors global account equity and will manage trades across all pairs.
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:10 pm
by PTScalper
MQL4: Psychology Circuit Breaker
Code: Select all
//+------------------------------------------------------------------+
//| PsychologyCircuitBreaker.mq4 |
//+------------------------------------------------------------------+
#property strict
input double TargetPct = 1.5; // Daily Profit Target (%)
input double MaxLossPct = 1.0; // Max Daily Loss (%)
input bool CloseOnHit = true; // Close all trades when limit is hit?
double start_equity = 0;
int current_day = -1;
bool is_done_for_day = false;
int OnInit() {
start_equity = AccountInfoDouble(ACCOUNT_EQUITY);
current_day = TimeDay(TimeCurrent());
return(INIT_SUCCEEDED);
}
void OnTick() {
int today = TimeDay(TimeCurrent());
// 1. Reset metrics on a new server day
if(current_day != today) {
start_equity = AccountInfoDouble(ACCOUNT_EQUITY);
current_day = today;
is_done_for_day = false;
}
// 2. Calculate Daily PnL
double current_equity = AccountInfoDouble(ACCOUNT_EQUITY);
double daily_pnl_pct = 0;
if(start_equity > 0) {
daily_pnl_pct = ((current_equity - start_equity) / start_equity) * 100.0;
}
bool hit_target = (daily_pnl_pct >= TargetPct);
bool hit_loss = (daily_pnl_pct <= -MaxLossPct);
string status_text = "TRADING ACTIVE";
if(hit_target) status_text = "TARGET HIT - WALK AWAY";
if(hit_loss) status_text = "MAX LOSS - DONE FOR DAY";
// 3. Draw On-Chart HUD
string display = "--- Daily Psychology Breaker ---\n";
display += "Start Equity: " + DoubleToString(start_equity, 2) + "\n";
display += "Current Equity: " + DoubleToString(current_equity, 2) + "\n";
display += "Daily PnL: " + DoubleToString(daily_pnl_pct, 2) + "%\n";
display += "Status: " + status_text;
Comment(display);
// 4. Circuit Breaker Execution
if(hit_target || hit_loss) {
if(!is_done_for_day) {
Print("Circuit Breaker Triggered: " + status_text);
is_done_for_day = true;
if(CloseOnHit) CloseAllTrades();
}
return; // Blocks execution of any automated strategies below
}
// ---> PLACE YOUR RAW PRICE ACTION / SCALPING LOGIC HERE <---
}
// Closes all active positions and deletes pending orders across all symbols
void CloseAllTrades() {
for(int i = OrdersTotal() - 1; i >= 0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
int type = OrderType();
string sym = OrderSymbol();
if(type == OP_BUY) {
OrderClose(OrderTicket(), OrderLots(), SymbolInfoDouble(sym, SYMBOL_BID), 3, clrRed);
} else if(type == OP_SELL) {
OrderClose(OrderTicket(), OrderLots(), SymbolInfoDouble(sym, SYMBOL_ASK), 3, clrRed);
} else {
OrderDelete(OrderTicket()); // Handle Limit/Stop orders
}
}
}
}
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:10 pm
by PTScalper
MQL5: Psychology Circuit Breaker
Code: Select all
//+------------------------------------------------------------------+
//| PsychologyCircuitBreaker.mq5 |
//+------------------------------------------------------------------+
#property strict
#include <Trade\Trade.mqh>
input double TargetPct = 1.5; // Daily Profit Target (%)
input double MaxLossPct = 1.0; // Max Daily Loss (%)
input bool CloseOnHit = true; // Close all trades when limit is hit?
CTrade trade;
double start_equity = 0;
int current_day = -1;
bool is_done_for_day = false;
int OnInit() {
MqlDateTime dt;
TimeCurrent(dt);
start_equity = AccountInfoDouble(ACCOUNT_EQUITY);
current_day = dt.day;
return(INIT_SUCCEEDED);
}
void OnTick() {
MqlDateTime dt;
TimeCurrent(dt);
// 1. Reset metrics on a new server day
if(current_day != dt.day) {
start_equity = AccountInfoDouble(ACCOUNT_EQUITY);
current_day = dt.day;
is_done_for_day = false;
}
// 2. Calculate Daily PnL
double current_equity = AccountInfoDouble(ACCOUNT_EQUITY);
double daily_pnl_pct = 0;
if(start_equity > 0) {
daily_pnl_pct = ((current_equity - start_equity) / start_equity) * 100.0;
}
bool hit_target = (daily_pnl_pct >= TargetPct);
bool hit_loss = (daily_pnl_pct <= -MaxLossPct);
string status_text = "TRADING ACTIVE";
if(hit_target) status_text = "TARGET HIT - WALK AWAY";
if(hit_loss) status_text = "MAX LOSS - DONE FOR DAY";
// 3. Draw On-Chart HUD
string display = "--- Daily Psychology Breaker ---\n";
display += "Start Equity: " + DoubleToString(start_equity, 2) + "\n";
display += "Current Equity: " + DoubleToString(current_equity, 2) + "\n";
display += "Daily PnL: " + DoubleToString(daily_pnl_pct, 2) + "%\n";
display += "Status: " + status_text;
Comment(display);
// 4. Circuit Breaker Execution
if(hit_target || hit_loss) {
if(!is_done_for_day) {
Print("Circuit Breaker Triggered: " + status_text);
is_done_for_day = true;
if(CloseOnHit) CloseAllPositions();
}
return; // Blocks execution of any automated strategies below
}
// ---> PLACE YOUR RAW PRICE ACTION / SCALPING LOGIC HERE <---
}
// Closes all active positions and deletes pending orders across all symbols
void CloseAllPositions() {
// Close Market Positions
for(int i = PositionsTotal() - 1; i >= 0; i--) {
ulong ticket = PositionGetTicket(i);
if(ticket > 0) {
trade.PositionClose(ticket);
}
}
// Delete Pending Orders
for(int i = OrdersTotal() - 1; i >= 0; i--) {
ulong ticket = OrderGetTicket(i);
if(ticket > 0) {
trade.OrderDelete(ticket);
}
}
}
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:11 pm
by PTScalper
Key Differences from Pine Script
Global Equity vs. Single Asset: Unlike TradingView scripts which only track the PnL of the asset on the chart, MT4/MT5 natively access global ACCOUNT_EQUITY. If you manually scalp Gold on one chart and trade GBP/USD on another, the EA calculates your combined floating profit against the daily target.
The Return Barrier: Placing return; when the limit is breached acts as a physical wall. Any custom logic or indicators you append beneath it simply will not run until the server clock hits midnight, physically preventing you from "taking just one more trade."
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:12 pm
by PTScalper
Here is the complete cBot template for cTrader (C# / cAlgo).
Since cTrader is built on C#, writing automated risk managers is incredibly clean. This cBot operates exactly like the MQL versions: it runs on every tick, monitors your global Account.Equity against the start-of-day snapshot, and dynamically draws a HUD on your chart.
If your daily PnL breaches the target or max loss threshold, it flattens the account (closes all positions and cancels pending orders) and throws a return; to block any further trading logic until the new server day.
cTrader (C#): Psychology Circuit Breaker
Code: Select all
using System;
using cAlgo.API;
using cAlgo.API.Internals;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class PsychologyCircuitBreaker : Robot
{
[Parameter("Daily Profit Target (%)", Group = "Risk Management", DefaultValue = 1.5)]
public double TargetPct { get; set; }
[Parameter("Max Daily Loss (%)", Group = "Risk Management", DefaultValue = 1.0)]
public double MaxLossPct { get; set; }
[Parameter("Close On Hit", Group = "Risk Management", DefaultValue = true)]
public bool CloseOnHit { get; set; }
private double _startEquity;
private int _currentDay = -1;
private bool _isDoneForDay = false;
protected override void OnStart()
{
// Initialize start equity and current day on startup
_startEquity = Account.Equity;
_currentDay = Server.Time.Day;
}
protected override void OnTick()
{
// 1. Reset metrics on a new server day
if (_currentDay != Server.Time.Day)
{
_startEquity = Account.Equity;
_currentDay = Server.Time.Day;
_isDoneForDay = false;
}
// 2. Calculate Daily PnL
double dailyPnlPct = 0;
if (_startEquity > 0)
{
dailyPnlPct = ((Account.Equity - _startEquity) / _startEquity) * 100.0;
}
bool hitTarget = dailyPnlPct >= TargetPct;
bool hitLoss = dailyPnlPct <= -MaxLossPct;
string statusText = "TRADING ACTIVE";
Color statusColor = Color.LightGray;
if (hitTarget)
{
statusText = "TARGET HIT - WALK AWAY";
statusColor = Color.MediumSeaGreen;
}
else if (hitLoss)
{
statusText = "MAX LOSS - DONE FOR DAY";
statusColor = Color.Tomato;
}
// 3. Draw On-Chart HUD
string display = $"--- Daily Psychology Breaker ---\n" +
$"Start Equity: {_startEquity:F2}\n" +
$"Current Equity: {Account.Equity:F2}\n" +
$"Daily PnL: {dailyPnlPct:F2}%\n" +
$"Status: {statusText}";
Chart.DrawStaticText("PsychHUD", display, VerticalAlignment.Top, HorizontalAlignment.Left, statusColor);
// 4. Circuit Breaker Execution
if (hitTarget || hitLoss)
{
if (!_isDoneForDay)
{
Print("Circuit Breaker Triggered: " + statusText);
_isDoneForDay = true;
if (CloseOnHit)
{
CloseAllTrades();
}
}
// Blocks execution of any automated strategies below
return;
}
// ---> PLACE YOUR RAW PRICE ACTION / SCALPING LOGIC HERE <---
}
// Closes all active positions and cancels pending orders across the entire account
private void CloseAllTrades()
{
// Close open market positions
foreach (var position in Positions)
{
ClosePosition(position);
}
// Cancel pending limit/stop orders
foreach (var pendingOrder in PendingOrders)
{
CancelPendingOrder(pendingOrder);
}
}
}
}
Re: Why Do Traders Start Trading Worse When They Get Close to the Money?
Posted: Tue Sep 22, 2026 2:12 pm
by PTScalper
Key cTrader Advantages Here:
Account.Equity Native Call: Unlike MT4/MT5 where you have to use AccountInfoDouble, cTrader gives you direct, clean access to the property. It factors in all open positions across all charts instantly.
Chart.DrawStaticText: Instead of the sometimes clunky Comment() function in MetaTrader, cTrader's chart drawing allows for direct color coding based on status (e.g., changing the text to MediumSeaGreen when the target is hit or Tomato on max loss), making it visually immediate.
Global Position Iteration: The Positions and PendingOrders collections in cTrader naturally iterate through the entire account's trades. You don't have to manually select them by ticket number like in MQL, making the CloseAllTrades method much safer and faster to execute.