Price Action Series Chapter 3: Plot Support/Resistance

Simão Ferreira

In this chapter, we dive right into the rules for drawing support and resistance zones. We define a zone by taking into account:

  • Swing highs and swing lows, meaning the highest and lowest points price reaches in a time period;
  • Multiple touches and bounces off an area, the more the better;
  • If the area you’re looking at acted as both support and resistance;
  • Whether volatile price action bounces when touching these zones (e.g. is the price and volume reaction light, mediocre, heavy);
  • If the area was recently tested or not, meaning it is still of interest.

If you miss the other chapters you can follow the link:

Chapter 1: Price Action Series

Chapter 2: Support and Resistance

Rules to Draw

We don’t need all the rules above satisfied to classify as a zone of support and resistance, but if it includes a combination of multiple points listed above, the potential of a zone to be reliable or accurate is higher. It’s worth remembering that with trading there are no certainties, only probabilities. And we want to figure out how to be as reliable as possible in securing profits.

Summarizing the learnings so far, some points to consider when drawing support and resistance areas:

  1. Keep it simple, less is more. Follow the rules and stick to the more obvious support and resistance zones and the extreme swing highs and lows.
  2. Treat them as zones or areas and not strict lines or values. This is critical. We expect reversals in the general area and not a fixed number. When using fixed numbers we’ll often find fake breakouts before a reversal.
  3. The more obvious, the better. We’re aiming at zones that multiple traders find and trade, this provides a higher chance of a reversal as more orders are submitted. Harder-to-spot support and resistance zones don’t tend to be as reliable.

Some examples:

Support and Resistance
Support and Resistance

Bellow, there is an example of how to automatically calculate and plot Support and Resistances (lines) on the Tuned script. 

// *********************************************
// Tuned 2021
// Example Script, don’t run on live markets
// *********************************************
// Release notes:
// 22/12/2021: Plot S/R lines
// *********************************************
left = intInput("Left Bars Lookback", 50)
right = intInput("Right Bars Lookback", 25)
quick_right = intInput("Quick swings Lookback", 5) // Used to try and detect a more recent significant swing.

pivot_high = neq(pivothigh(high,left,right), seriesOf(na))
pivot_lows = neq(pivotlow(low, left,right), seriesOf(na))

quick_pivot_high = neq(pivothigh(high,left,quick_right), seriesOf(na))
quick_pivot_lows = neq(pivotlow(low, left,quick_right), seriesOf(na))

level1 = valuewhen(quick_pivot_high, shift(high, quick_right), 0)
level2 = valuewhen(quick_pivot_lows, shift(low, quick_right), 0)
level3 = valuewhen(pivot_high, shift(high, right), 0)
level4 = valuewhen(pivot_lows, shift(low, right), 0)
level5 = valuewhen(pivot_high, shift(high, right), 1)
level6 = valuewhen(pivot_lows, shift(low, right), 1)
level7 = valuewhen(pivot_high, shift(high, right), 2)
level8 = valuewhen(pivot_lows, shift(low, right), 2)

green = seriesOf("#00ff00")
red = seriesOf("#ff0000")

def level1_col = iff(gte(close, level1), green, red)
def level2_col = iff(gte(close, level2), green, red)
def level3_col = iff(gte(close, level3), green, red)
def level4_col = iff(gte(close, level4), green, red)
def level5_col = iff(gte(close, level5), green, red)
def level6_col = iff(gte(close, level6), green, red)
def level7_col = iff(gte(close, level7), green, red)
def level8_col = iff(gte(close, level8), green, red)

plot(level1, "Level 1", level1_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level2, "Level 2", level2_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level3, "Level 3", level3_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level4, "Level 4", level4_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level5, "Level 5", level5_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level6, "Level 6", level6_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level7, "Level 7", level7_col, 1, PlotStyle.CIRCLES, 0, true)
plot(level8, "Level 8", level8_col, 1, PlotStyle.CIRCLES, 0, true)

//Signal Push

You can find below some screenshots of the script on tuned.

Support and Resistance Plot
Support and Resistance Plot

Next, we will dive into chapters 4, 5, and 6, touching on candles, market conditions, and trend lines. We will also include a candles patterns script that can be used in the support and resistance sample script as part of a trading strategy.

If you missed Chapter 1 follow this Link

if you missed Chapter 2 follow this Link

Stay Tuned!

Disclaimer: The opinions expressed here are for general informational purposes only and are not intended to provide specific advice or recommendations for any specific security or investment product. You should never invest money that you cannot afford to lose. Before trading using complex financial products, please ensure to understand the risks involved. Past performance is no guarantee of future results.

All investing involves risk, including the possible loss of all the money you invest, and past performance does not guarantee future performance. Historical returns expected returns, and probability projections are provided for informational and illustrative purposes, and may not reflect actual future performance.

Tuned is not a broker-dealer, exchange, custodian, wallet provider, or counterparty. Investing is highly speculative and volatile. Tuned is only suitable for investors who fully understand the risk of loss and may experience large drawdowns. Investors should never invest more than they can afford to lose.