Morning Squeeze Day Trading Strategy

The Morning Squeeze strategy is a day trading strategy that seeks to capitalize on the morning price momentum of individual stocks in play. This strategy is usually more effective during the bull phases of the market. This post explains the strategy, how to find the morning squeeze candidates and tips to help execute these trades.

SETUP OVERVIEW

Morning Squeeze (MS) setup usually starts either right at the open or after 30-60mins of early morning price discovery. Here are several examples of the Morning Squeezes:

AMD

DDD

X

MS CANDIDATES WATCH-LIST

In order to find the Morning Squeeze candidates, I scan for stocks in play (stocks hitting new highs as well as stocks with unusual volume) and place them in my watchlist. Additionally, every morning I scan for stocks that gap up on catalysts (e.g., earnings, upgrades, etc) and also add them to my watch list. I have on average 20-30 names on my list.

Here are several examples of the stocks that have been in play and had multiple of Morning Squeeze sessions (usually 5-10 instances) during those periods:

OSTK

JKS

BILI

BLNK

SOL

DASHBOARD INDICATORS

My ThinkorSwim dashboard contains several technical indicators that help me execute the Morning Squeeze trades. These include:

  • Four Moving Averages using the 2m, 15m and 1h timeframes
  • TTM Squeeze indicator using the 2m, 15m and 1h timeframes
  • Current Price / Open Price change

MOVING AVERAGES:

The MA indicator is using 4 moving averages based on 8 periods, 13 periods, 21 periods and 34 periods. When the 8 MA > 13 MA > 21 MA > 34 MA, it is considered that the moving averages are bullish stacked; when 8 MA < 13 MA < 21 MA < 34 MA, it is considered that the moving averages are bearish stacked.

In order to add the MA indicator to your watch-list / dashboard, create a new ‘Custom’ indicator, rename it and place this script into that indicator (you need to do this several times for different timeframes: 2m, 15m, and 1h):

_____

def EMA8 = ExpAverage(close, 8);
def EMA13 = ExpAverage(close, 13);
def EMA21 = ExpAverage(close, 21);
def EMA34 = ExpAverage(close, 34);

def bullish = EMA8 > EMA13 and EMA13 > EMA21 and EMA21 > EMA34;
def bearish = EMA8 < EMA13 and EMA13 < EMA21 and EMA21 < EMA34;

AddLabel(bullish, “Bullish Stacked EMAs”, color.black);
AddLabel(bearish, “Bearish Stacked EMAs”, color.black);
AddLabel(!bullish and !bearish, ” “, color.black);

AssignBackgroundColor(if bullish then color.cyan else if bearish then color.red else color.black);

______

Here’s the screenshot of the MA indicator in my ThinkorSwim account:

TTM SQUEEZE:

In order to add the TTM Squeeze indicator to your watch-list / dashboard, create a new ‘Custom’ indicator, rename it and place this script into that indicator (you need to do this several times for different timeframes: 2m, 15m, and 1h):

_____

input price = close;
input length = 20;
input nK = 1.5;
input nBB = 2.0;
input alertLine = 1.0;

def squeezeDots = TTM_Squeeze(price, length, nK, nBB, alertLine).SqueezeAlert;
def alertCount = if squeezeDots[1] == 0 and squeezeDots == 1 then 1
else if squeezeDots == 1 then alertCount[1] + 1
else 0;
plot data = alertCount;
data.SetDefaultColor(Color.BLACK);

def squeezeHistogram = TTM_Squeeze(price, length, nK, nBB, alertLine).Histogram;
AssignBackgroundColor(if squeezeHistogram >= 0
then if squeezeHistogram > squeezeHistogram[1] then Color.CYAN else Color.BLUE
else if squeezeHistogram < squeezeHistogram[1] then Color.RED else Color.YELLOW);

_____

Here’s the screenshot of the MA indicator in my ThinkorSwim account:

CURRENT TO OPEN PRICE CHANGE:

Last but not least, you need to create one more Custom indicator, which would calculate the current price to open price change. Here’s the script:

_____

input period_Type = AggregationPeriod.DAY;

def begin = open(period = period_Type);
def end = close(period = period_Type);
def PctChg = ((end / begin) – 1)*100;

AddLabel(yes, PctChg, if PctChg > 0 then Color.GREEN else if PctChg < 0 then color.RED else color.LIGHT_GRAY);

_____

Screenshot from my ThinkorSwim account:

Here’s a video of how to create indicators and add scripts to them:

Once you setup your ThinkorSwim Watch-list / Dashboard, it will look like this:

TWO PRIMARY MS SETUPS

There are two primary Morning Squeeze setups: 1) an immediate squeeze (starts at 9:30am EST) and 2) a delayed squeeze (usually starts at 10:00am or 10:30am EST after a period of price discovery).

MS ENTRY AND EXIT RULES

Entry and exit rules are very simple:

  • Use the 2m or 3m charts
  • Go long when the TTM Squeeze and DMI provide a buy signal
  • Exit when the price drops below the middle section of the Bollinger Bands, which is also confirmed by the DMI and TTM Squeeze going into a sell mode

Morning Squeeze Examples

SPOT, 16 February, 2021

TWTR, 12 February, 2021

PYPL, 11 February, 2021

ROKU, 9 February, 2021

SQ, 8 February, 2021

DDD, 27 January, 2021

BBBY, 25 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-25-at-5.23.05-PM-1024x565.png

BYND, 25 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-25-at-5.26.05-PM-1024x566.png

M, 25 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-25-at-5.28.35-PM-1024x566.png

GME, 22 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-23-at-11.24.40-AM-1024x577.png

DDD, 22 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-23-at-11.23.25-AM-1024x574.png

CSIQ, 21 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-21-at-4.37.18-PM-1024x511.png

BBBY, 21 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-21-at-3.07.40-PM-1024x514.png

CLF, 06 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-06-at-1.53.35-PM-1024x565.png

X, 06 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-06-at-1.51.17-PM-1024x566.png

BTBT, 04 January, 2021

This image has an empty alt attribute; its file name is Screen-Shot-2021-01-04-at-3.36.46-PM-1024x562.png

MU, 31 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-31-at-2.27.08-PM-1024x497.png

TSLA (delayed MS), 31 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-31-at-2.29.13-PM-1024x496.png

BIDU, 30 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-30-at-1.17.32-PM-1024x576.png

FCX, 30 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-30-at-1.13.56-PM-1024x575.png

BILI, 30 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-30-at-1.11.49-PM-1024x576.png

PDD, 29 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-29-at-1.57.58-PM-1024x596.png

AMZN (delayed MS), 28 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-28-at-4.01.21-PM-1024x572.png

FEYE (delayed MS), 23 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-23-at-1.57.16-PM-1024x574.png

CRSP, 21 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-21-at-9.53.32-PM-1024x628.png

EDIT, 21 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-21-at-9.50.38-PM-1024x507.png

CHWY, 21 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-21-at-9.46.21-PM-1024x507.png

CSIQ, 20 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-21-at-9.42.36-PM-1024x628.png

JKS, 18 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.04.21-PM-1024x569.png

PLUG, 17 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.05.55-PM-1024x572.png

BIDU, 15 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-10.42.37-PM-1024x571.png

JKS, 15 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.07.46-PM-1024x572.png

BILI, 11 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-10.40.11-PM-1024x568.png

CRWD, 10 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.09.08-PM-1024x573.png

FSLY, 08 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-10.56.36-PM-1024x568.png

FB, 07 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-11.04.10-PM-1024x570.png

ZS, 03 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.10.21-PM-1024x568.png

X, 01 December, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.12.35-PM-1024x569.png

X, 24 November, 2020

This image has an empty alt attribute; its file name is Screen-Shot-2020-12-19-at-3.13.43-PM-1024x570.png

Leave a Reply