Researching How to Trade a Measured Move of Yesterday’s Range
  1. What is a Measured Move?
  2. Indicator
  3. ES Daily Chart and Measured Moves
  4. What if Yesterday was a Bull bar vs Bear Bar?
  5. What about Internal Bar Strength (IBS)?
  6. Putting it all together

Yesterday was a bull trend from the open which ended at a measured move of the day before.

Which got me thinking about some old research I needed to update.

What really are the chance we get a measured move of yesterday’s range?

In this post I will explore it further to hopefully inspire you to research your own trading strategies.


What is a Measured Move?

  • There are many kinds of measured moves
  • The one I’m referrring to here is about the prior bars high – low and projecting it up and down.
  • On the daily chart, the prior bar is yesterday.

Indicator

https://www.tradingview.com/script/Z3oErfjm-Zen-Measured-Moves-Price-Extension-Targets-Based-on-Prior-Bar/
  • I wrote a free indicator for TRADINGVIEW with open source code you can use.

Simply:

  • 50% of YD rannge small light dot
  • 1 x YD range medium full dot
  • 2 x YD range is big full dot
  • You can use this to pull data into excel for your research

ES Daily Chart and Measured Moves

  • What is the chance of a measured move of yesterday? Pretty low…

What if Yesterday was a Bull bar vs Bear Bar?

  • A little bit of a boost but not really

What about Internal Bar Strength (IBS)?

  • Does the close matter more relative to the high/low of the bar?
  • Yes ok we found a better predictor but its marginal at best.

Putting it all together

  • When we split it again with bull and bear bars and IBS it is now more useful for finding swing targets (40% hit rate)
  • Stats below.
  • It wasn’t what I thought
  • Actually the best predictor was a REVERSAL bar. A bear bar yesterday with HIGH IBS. or a BULL bar yesterday with a LOW IBS
  • But still 50% measured move of yesterday seems common enough to use as a target
  • But that research can be for another day!

4 responses to “Researching How to Trade a Measured Move of Yesterday’s Range”

  1. barryde Avatar

    Hi Tim, Bazz here from Adelaide, if you want, can you share with me the code if you using tradingview and Pinescript for data collection on MM. I want to do my own research on pre market MM on the DAX . I have some code for highlighting pre market and measuring etc, Cheers ( or pointers or where to search for info)

    Like

    1. barryde Avatar

      ignore the code below, finding some logic errors and the stats are wrong

      Like

  2. barryde Avatar

    started with Gemini. so far so good, how did you get your graphs?

    DAX Pre-Market Measured Move Statistics Stat Probability1.0x Upside Hit51.6%

    1.0x Downside Hit48.1%

    Dual-Side (Outside)15.9%

    Sample Size (Days)836

    //@version=5

    indicator(“DAX MM Historical Researcher (500 Days)”, overlay=true, max_boxes_count=500)

    // — Inputs —

    grp_time = “Session Settings (Adelaide UTC+10:30)”

    startTime = input.session(“1730-1830”, “Pre-Market Window”, group=grp_time)

    // 03:00 is the typical close for DAX futures in local time

    sessEnd   = input.session(“0300-0301”, “RTH Session End”, group=grp_time)

    // — Historical Tracking Variables —

    var int totalDays = 0

    var int hitsUp    = 0

    var int hitsDn    = 0

    var int dualHits  = 0

    var float pm_high = na

    var float pm_low  = na

    var bool up_touched_today = false

    var bool dn_touched_today = false

    var bool day_counted = false

    // — Time Logic —

    is_premarket = time(timeframe.period, startTime, “GMT+1030”)

    is_rth       = not is_premarket and not na(time(timeframe.period, “1830-0300”, “GMT+1030”))

    is_new_day   = ta.change(time(“D”))

    // Reset daily flags

    if is_new_day

        pm_high := na

        pm_low  := na

        up_touched_today := false

        dn_touched_today := false

        day_counted := false

    // Capture PM Range

    if is_premarket

        pm_high := na(pm_high) ? high : math.max(pm_high, high)

        pm_low  := na(pm_low) ? low : math.min(pm_low, low)

    // Calculations

    float pm_range = pm_high – pm_low

    float up_100 = pm_high + pm_range

    float dn_100 = pm_low – pm_range

    // Tracking Hits during RTH

    if is_rth and not na(pm_range)

        if not day_counted

            totalDays += 1

            day_counted := true

        if high >= up_100 and not up_touched_today

            hitsUp += 1

            up_touched_today := true

        if low <= dn_100 and not dn_touched_today

            hitsDn += 1

            dn_touched_today := true

    // Count Dual Hits at the end of the day

    if ta.change(is_rth) and not is_rth and up_touched_today and dn_touched_today

        dualHits += 1

    // — Visuals —

    plot(pm_high, “PM High”, color.new(color.gray, 50), 1, plot.style_linebr)

    plot(pm_low, “PM Low”, color.new(color.gray, 50), 1, plot.style_linebr)

    plot(up_100, “1.0x Up”, color.new(color.green, 0), 2, plot.style_linebr)

    plot(dn_100, “1.0x Dn”, color.new(color.red, 0), 2, plot.style_linebr)

    // — Stats Table —

    var table stats = table.new(position.top_right, 2, 5, border_width=1, frame_color=color.white)

    if barstate.islast

        float hitRateUp = (hitsUp / totalDays) * 100

        float hitRateDn = (hitsDn / totalDays) * 100

        float hitRateDual = (dualHits / totalDays) * 100

        table.cell(stats, 0, 0, “Stat (Last 500D)”, bgcolor=color.gray, text_color=color.white)

        table.cell(stats, 1, 0, “Probability”, bgcolor=color.gray, text_color=color.white)

        table.cell(stats, 0, 1, “1.0x Upside Hit”)

        table.cell(stats, 1, 1, str.tostring(hitRateUp, “0.0”) + “%”)

        table.cell(stats, 0, 2, “1.0x Downside Hit”)

        table.cell(stats, 1, 2, str.tostring(hitRateDn, “0.0”) + “%”)

        table.cell(stats, 0, 3, “Dual Side (Outside)”)

        table.cell(stats, 1, 3, str.tostring(hitRateDual, “0.0”) + “%”)

        table.cell(stats, 0, 4, “Sample Size (Days)”)

        table.cell(stats, 1, 4, str.tostring(totalDays))

    Like

    1. barryde Avatar

      Ignore the code above, finding some logic errors and the stats are wrong

      Like

Leave a reply to barryde Cancel reply

I’m Tim

Welcome to Zen Trading Tech.

I’m a Aussie day trader and I post trading tips, practice drills, and indicators that helped my trading get to a professional level.

Everything here is to help train the eyes and hands to trade better. If it helped me I’ll post it for others. Hope you enjoy!