Earnings Market Maker Move


Category:
0
0

Hi Pete, I would like to know if  there is a way to plot the expected move levels up and down before earnings announcement on the chart.

Please advise.

Marked as spam
Posted by (Questions: 3, Answers: 2)
Asked on June 1, 2018 7:22 pm
583 views
0
Private answer

I have had numerous requests for this. I have not found a user friendly way to accomplish this. It’s just easy enough to plot the lines manually then try to apply a more advanced solution.

Marked as spam
Posted by (Questions: 37, Answers: 4118)
Answered on June 2, 2018 8:16 am
0
https://usethinkscript.com/threads/market-maker-move-earnings-forecast-indicator-for-thinkorswim.457/
( at March 11, 2020 3:36 pm)
0
Thank you "S Mark" for providing that link. I have added a new answer to this topic providing my own custom solution.
( at March 11, 2020 5:28 pm)
0
Private answer

Thanks to the comment added by "S Mark" I know have a custom solution for this. I am surprised that I missed this. Shocked actually. When I reviewed the link provided by "S Mark" I immediately searched for the release notes showing when this new function was added.

The function name is GetMarketMakerMove() and it was added in April 2015. How on earth did I miss this? Details here:

https://toslc.thinkorswim.com/center/release/rel-04-18-2015#section_2

Then I found the language reference here:

https://toslc.thinkorswim.com/center/reference/thinkScript/Functions/Tech-Analysis/GetMarketMakerMove

So here is the code to build a chart study that plots the two lines based on the close of the previous bar. This ensures the levels will be active for the current live bar on the daily time frame. (this is really not meant for intraday time frames but a slight modification can make that work too).

def mmm = GetMarketMakerMove();
def lastBar = !IsNaN(close) and IsNaN(close[-1]);
rec mmmUpper = if lastBar then close[1] + mmm else mmmUpper[1];
rec mmmLower = if lastBar then close[1] - mmm else mmmLower[1];
plot mmmUpperLimit = if mmmUpper > 0 then mmmUpper else Double.NaN;
plot mmmLowerLimit = if mmmLower > 0 then mmmLower else Double.NaN;
AddLabel(!IsNaN(mmm), Concat("MMM Upper: ", mmmUpper), Color.GREEN);
AddLabel(!IsNaN(mmm), Concat("MMM Lower: ", mmmLower), Color.RED);

I also built a version of this for a custom watchlist column. There are two versions of this. One to display the MMM upper limit and the other to display the MMM lower limit (two separate custom columns).

Custom column for MMM upper limit:

def mmm = GetMarketMakerMove();
def lastBar = !IsNaN(close) and IsNaN(close[-1]);
rec mmmUpper = if lastBar then close[1] + mmm else mmmUpper[1];
rec mmmLower = if lastBar then close[1] - mmm else mmmLower[1];
AddLabel(!IsNaN(mmm), Concat("MMM Upper: ", mmmUpper), Color.GREEN);

Custom column for MMM lower limit:

def mmm = GetMarketMakerMove();
def lastBar = !IsNaN(close) and IsNaN(close[-1]);
rec mmmUpper = if lastBar then close[1] + mmm else mmmUpper[1];
rec mmmLower = if lastBar then close[1] - mmm else mmmLower[1];
AddLabel(!IsNaN(mmm), Concat("MMM Lower: ", mmmLower), Color.RED);

Screenshot below shows the results. Be sure to read the release notes before complaining this doesn't work for every stock. The value is only computed under specific conditions. So not every stock will have an MMM value to plot. It all depends on current pricing in the options market for the underlying stock.

Attachments:
Marked as spam
Posted by (Questions: 37, Answers: 4118)
Answered on March 11, 2020 5:26 pm