Key Takeaways
Support/Resistance Trading
A fundamental strategy that identifies horizontal price levels where buying or selling pressure has historically been strong enough to reverse price direction.
Market Psychology
Support and resistance levels form because traders remember past price levels and act accordingly. Buyers step in at support expecting bounces, while sellers emerge at resistance expecting reversals.
šStrategy Visualization
Buy at support, sell at resistance with confirmation
In-Depth Strategy Guide
Support and resistance trading is the foundation of technical analysis. Support is a price level where buying pressure is strong enough to prevent further declines, while resistance is where selling pressure caps advances.
The strength of a level depends on multiple factors: number of touches, the volume at each touch, how far price moved after each touch, and how recently the level was tested. More touches generally strengthen a level, though each touch also weakens it slightly.
Round numbers like 1.3000, 1.3500 often act as psychological S/R levels because humans prefer round numbers. Previous day/week highs and lows are also powerful because many traders watch these levels.
When trading S/R, always wait for confirmation. A rejection candle (pin bar, engulfing pattern) at the level significantly increases your odds of success. Never blindly buy into support without seeing price reject the level.
Code Examples
import pandas as pd
import numpy as np
def find_sr_levels(df, window=10, threshold=3):
"""Find support and resistance levels from price data."""
levels = []
# Find pivot highs and lows
df['pivot_high'] = df['high'][(df['high'].shift(1) < df['high']) &
(df['high'].shift(-1) < df['high'])]
df['pivot_low'] = df['low'][(df['low'].shift(1) > df['low']) &
(df['low'].shift(-1) > df['low'])]
# Group nearby pivots into levels
pivots = pd.concat([df['pivot_high'].dropna(), df['pivot_low'].dropna()])
pivots = pivots.sort_values()
for price in pivots:
# Count touches near this price
touches = len(pivots[abs(pivots - price) < price * 0.001])
if touches >= threshold:
levels.append(price)
return sorted(set(levels))This function finds pivot points and groups them into S/R levels based on how many times price touched that area.
//+------------------------------------------------------------------+
//| Find nearest support and resistance |
//+------------------------------------------------------------------+
void FindSRLevels(double &support, double &resistance, int lookback = 100)
{
double currentPrice = Close[0];
support = 0;
resistance = DBL_MAX;
for(int i = 1; i < lookback; i++)
{
// Check for swing lows (support)
if(Low[i] < Low[i-1] && Low[i] < Low[i+1])
{
if(Low[i] < currentPrice && Low[i] > support)
support = Low[i];
}
// Check for swing highs (resistance)
if(High[i] > High[i-1] && High[i] > High[i+1])
{
if(High[i] > currentPrice && High[i] < resistance)
resistance = High[i];
}
}
}This MQL5 function finds the nearest support below and resistance above current price by scanning for swing points.
šRecommended Python Libraries
Related Indicators
š„ Entry Rules
Identify at least 2-3 previous touches at a price level
Wait for price to approach the level with decreasing momentum
Look for rejection candle patterns (pin bar, doji, engulfing)
Enter after confirmation candle closes
š¤ Exit Rules
Target the opposite side of the range
Exit if level is broken with volume
Take partial profits at mid-range
Use previous swing highs/lows as targets
š”ļø Risk Management
Stop Placement
Place stops beyond the S/R level with buffer for false breaks
Level Strength
More touches = stronger level, but also more likely to break
Risk Control
Risk 1-2% per trade, reduce size near major news
Indicators Used
Horizontal Lines
Mark key support and resistance levels
Volume Profile
Identify high-volume price zones
RSI
Confirm overbought/oversold at key levels
Best Timeframes
Best Market Conditions
Common Mistakes to Avoid
Pro Tips
Educational Disclaimer
This content is for educational purposes only and does not constitute financial or investment advice. Trading involves significant risk and you may lose your capital. Always consult a licensed financial advisor before making investment decisions.
Frequently Asked Questions
Related Strategies
RSI Oscillator Strategy
Uses the Relative Strength Index to identify overbought and oversold conditions, entering reversals when the market has moved too far too fast.
Bollinger Bands Mean Reversion
Uses Bollinger Bands to identify when price has moved too far from its average, entering trades expecting price to revert to the mean (middle band).
Channel Trading
Trades within parallel trend lines (channels) by buying at the lower boundary and selling at the upper boundary, capturing the oscillation within the channel.