Moxie Indicator for ThinkorSwim

tradegeek

Active member
2019 Donor
VIP
I don't know if anyone has come across this neat indicator called the "Moxie Indicator". It seems the creator of this indicator has it developed for Ninjatrader and Thinkorswim but he's not releasing the TOS version because he doesn't want the code shared. He has partnered up with John Carter from SimplerTrading to provide alerts based on this indicator.

You can check it out here...

It would be nice if something like this can be replicated. I am not a programmer so I wouldn't know where to start. Can it be reversed engineered from a NinjaTrader script?

Much success to all!

Edit #1: @diazlaz converted a TradingView script that mimicked the Moxie script: https://usethinkscript.com/threads/moxie-indicator-for-thinkorswim.369/post-36862

Edit #2: Check out @Slippage version of the Moxie Indicator here: https://usethinkscript.com/threads/moxie-indicator-for-thinkorswim.369/post-53789

Edit #3: @Slippage reviews of the paid Moxie indicator https://usethinkscript.com/threads/moxie-indicator-for-thinkorswim.369/post-53751
 

New Indicator: Buy the Dip

Check out our Buy the Dip indicator and see how it can help you find profitable swing trading ideas. Scanner, watchlist columns, and add-ons are included.

Download the indicator

greg44

New member
@Slippage Thank you. And your assessment of the room is spot on. Good people in general, no politics. TG does seem to mean well and respect he firmly believes in his product. Chances to see different traders and you can pick what you like to form your own strategy. And it will be interesting to see how Moxie will hold up in a market that is not fueled by government printing money.
 

darkpoolalgo

New member
Hopefully this will be the final code. The code for the scans have not changed since they were posted earlier. I just wanted to bring all the pieces together in this post as the (hopefully) final and complete package.

1. This resolves a bug for 15m. It should use close price rather than high price.
2. This makes it so the second line is shown by default on 15m and no other timeframes. I changed this to stop the confusion some members ran into with why the second line didn't appear automatically on 15m.

Moxie Upper:
Ruby:
declare upper;

def currentAggPeriod = GetAggregationPeriod();
def higherAggPeriod =
  if currentAggPeriod <= AggregationPeriod.TWO_MIN then AggregationPeriod.FIVE_MIN
  else if currentAggPeriod <= AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN
  else if currentAggPeriod <= AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN
  else if currentAggPeriod <= AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN
  else if currentAggPeriod <= AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR
  else if currentAggPeriod <= AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS
  else if currentAggPeriod <= AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY
  else if currentAggPeriod <= AggregationPeriod.FOUR_HOURS then AggregationPeriod.TWO_DAYS
  else if currentAggPeriod <= AggregationPeriod.DAY then AggregationPeriod.WEEK
  else if currentAggPeriod <= AggregationPeriod.WEEK then AggregationPeriod.MONTH
  else AggregationPeriod.QUARTER
;

script MoxieFunc {
  input price = close;
  def vc1 = ExpAverage(price, 12) - ExpAverage(price , 26);
  def va1 = ExpAverage(vc1, 9);
  plot data = (vc1 - va1) * 3;
}

def Moxie = MoxieFunc(close(period = higherAggPeriod));

def longTrigger = if Moxie > 0 and Moxie[1] <= 0 then Moxie else Double.NaN;
def longArrowPosition =
  # first arrow
  if Moxie == longTrigger and Moxie != Moxie[1] then low
  # consecutive arrows at same position
  else if Moxie == longTrigger and Moxie == Moxie[1] then longArrowPosition[1]
  else Double.NaN;
plot long = longArrowPosition;
long.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
long.SetDefaultColor(Color.GREEN);
long.SetLineWeight(3);
long.HideBubble();
long.HideTitle();

def shortTrigger = if Moxie < 0 and Moxie[1] >= 0 then Moxie else Double.NaN;
def shortArrowPosition =
  # first arrow
  if Moxie == shortTrigger and Moxie != Moxie[1] then high
  # consecutive arrows at same position
  else if Moxie == shortTrigger and Moxie == Moxie[1] then shortArrowPosition[1]
  else Double.NaN;
plot short = shortArrowPosition;
short.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
short.SetDefaultColor(Color.LIGHT_RED);
short.SetLineWeight(3);
short.HideBubble();
short.HideTitle();

Moxie Lower:
Ruby:
declare lower;

input showVerticalLines = yes;
input showTrampolines = yes;
input showSqueezeDots = no;

plot ZeroLine = if !IsNaN(open) and !showSqueezeDots then 0 else Double.NaN;
ZeroLine.SetDefaultColor(Color.GRAY);
ZeroLine.SetLineWeight(2);
ZeroLine.HideBubble();
ZeroLine.HideTitle();

def currentAggPeriod = GetAggregationPeriod();
def higherAggPeriod =
  if currentAggPeriod <= AggregationPeriod.TWO_MIN then AggregationPeriod.FIVE_MIN
  else if currentAggPeriod <= AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN
  else if currentAggPeriod <= AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN
  else if currentAggPeriod <= AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN
  else if currentAggPeriod <= AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR
  else if currentAggPeriod <= AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS
  else if currentAggPeriod <= AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY
  else if currentAggPeriod <= AggregationPeriod.FOUR_HOURS then AggregationPeriod.TWO_DAYS
  else if currentAggPeriod <= AggregationPeriod.DAY then AggregationPeriod.WEEK
  else if currentAggPeriod <= AggregationPeriod.WEEK then AggregationPeriod.MONTH
  else AggregationPeriod.QUARTER
;

script MoxieFunc {
  input price = close;
  def vc1 = ExpAverage(price, 12) - ExpAverage(price , 26);
  def va1 = ExpAverage(vc1, 9);
  plot data = (vc1 - va1) * 3;
}

plot Moxie = MoxieFunc(close(period = higherAggPeriod));
Moxie.SetLineWeight(2);
Moxie.DefineColor("Up", Color.GREEN);
Moxie.DefineColor("Down", Color.RED);
def lastChange = if Moxie < Moxie[1] then 1 else 0;
Moxie.AssignValueColor(
  if lastChange == 1 then Moxie.Color("Down")
  else Moxie.Color("Up")
);

# Watkins uses a different setup for Moxie on his 15 minute charts.
# He uses two lines derived from two higher timeframes.
# For timeframes other than 15 minutes we'll use the same data as
# first Moxie line to reduce data requested from the server and
# improve performance.
def secondAggPeriod =
  if currentAggPeriod == AggregationPeriod.FIFTEEN_MIN
  then AggregationPeriod.TWO_HOURS
  else currentAggPeriod
;

plot MoxieSecondLine =
  if currentAggPeriod == AggregationPeriod.FIFTEEN_MIN
  then MoxieFunc(close(period = secondAggPeriod))
  else Double.NaN
;

MoxieSecondLine.SetLineWeight(2);
MoxieSecondLine.DefineColor("Up", Color.GREEN);
MoxieSecondLine.DefineColor("Down", Color.RED);
def lastChangeSecondLine = if MoxieSecondLine < MoxieSecondLine[1] then 1 else 0;
MoxieSecondLine.AssignValueColor(
  if lastChangeSecondLine == 1 then MoxieSecondLine.Color("Down")
  else MoxieSecondLine.Color("Up")
);
MoxieSecondLine.SetHiding(currentAggPeriod != AggregationPeriod.FIFTEEN_MIN);

# Show vertical lines at crossovers
AddVerticalLine(showVerticalLines and Moxie[1] crosses above 0, "", CreateColor(0,150,0), Curve.SHORT_DASH);
AddVerticalLine(showVerticalLines and Moxie[1] crosses below 0, "", CreateColor(200,0,0), Curve.SHORT_DASH);

# Indicate the Trampoline setup
def sma50 = Average(close, 50);
plot Trampoline =
  if showTrampolines and ((Moxie < -.01 and close > sma50) or (Moxie > .01 and close < sma50))
  then 0
  else Double.NaN
;
Trampoline.SetPaintingStrategy(PaintingStrategy.SQUARES);
Trampoline.DefineColor("Bullish", Color.LIGHT_GREEN);
Trampoline.DefineColor("Bearish", Color.PINK);
Trampoline.AssignValueColor(if close > sma50 then Trampoline.Color("Bearish") else Trampoline.Color("Bullish"));
Trampoline.HideBubble();
Trampoline.HideTitle();

# show squeeze dots on zero line
def bb = reference BollingerBands.LowerBand;
def squeezeLevel =
  if bb > KeltnerChannels(factor = 1.0).Lower_Band then 3
  else if bb > KeltnerChannels(factor = 1.5).Lower_Band then 2
  else if bb > KeltnerChannels(factor = 2.0).Lower_Band then 1
  else 0
;

plot Squeeze = if !showSqueezeDots then Double.NaN else if !IsNaN(open) then 0 else Double.NaN;
Squeeze.SetPaintingStrategy(PaintingStrategy.POINTS);
Squeeze.SetDefaultColor(Color.GRAY);
Squeeze.DefineColor("Loose Squeeze", Color.UPTICK);
Squeeze.DefineColor("Squeeze", Color.RED);
Squeeze.DefineColor("Tight Squeeze", Color.YELLOW);
Squeeze.DefineColor("No Squeeze", Color.GRAY);
Squeeze.AssignValueColor(
  if squeezeLevel == 3 then Squeeze.Color("Tight Squeeze")
  else if squeezeLevel == 2 then Squeeze.Color("Squeeze")
  else if squeezeLevel == 1 then Squeeze.Color("Loose Squeeze")
  else Squeeze.Color("No Squeeze")
);
Squeeze.SetLineWeight(2);
Squeeze.HideTitle();
Squeeze.HideBubble();

AddLabel(
  yes,
  if currentAggPeriod == AggregationPeriod.WEEK then " W "
  else if currentAggPeriod == AggregationPeriod.Day then " D "
  else if currentAggPeriod == AggregationPeriod.HOUR then " H "
  else if currentAggPeriod == AggregationPeriod.FIFTEEN_MIN then " 15 "
  else if currentAggPeriod == AggregationPeriod.FIVE_MIN then " 5 "
  else if currentAggPeriod == AggregationPeriod.TWO_MIN then " 2 "
  else " ",
  if Moxie < 0 then Color.RED else Color.GREEN
);

Trigger scan:
Ruby:
# because Moxie calculates from higher time frame
# to find daily entries, run this scan on weekly
# to find hourly entries, run this on daily
script Moxie {
    input priceC = close;
    def vc1 = ExpAverage(priceC , 12) - ExpAverage(priceC , 26);
    def va1 = ExpAverage(vc1, 9);
    plot sData = (vc1 - va1) * 3;
}
def m = Moxie();
def moxieUpArrow = m > 0 and m[1] <= 0;
plot scan = moxieUpArrow within 1 bars;

Trampoline scan from @Sneaky_Swings earlier in this thread:
Ruby:
# because Moxie calculates from higher time frame
# to find daily entries, run this scan on weekly
# to find hourly entries, run this on daily

def ap1 = close;

script MoxieFunc {
    input priceC = close;
    def vc1 = ExpAverage(priceC , 12) - ExpAverage(priceC , 26);
    def va1 = ExpAverage(vc1, 9);
    plot sData = (vc1 - va1) * 3;
}

def price = close;
def s2 = MoxieFunc(price);

def ZeroLine = 0;
def Moxie = s2;

# Indicate the Trampoline setup
def sma50 = SimpleMovingAvg(close, 50);

plot trampoline = (Moxie > 0.1 and close < sma50);

EDIT 3/1/21 to add squeeze dots on zero line
I am new to this group and a developer by trade. Your code is amazingly clean and well put together. I am impressed, thank you for the time it took to perfect this.
 

swazz

New member
VIP
That's my new way to show trampolines since I'm using squeeze dots on the zero line. It needs more work, though. The arrow tips cover the squeeze dots if I position the arrows at 0. So I have to offset them a bit. Moxie's range is different on every symbol and every timeframe so if I hard code a specific offset sometimes it's perfect, sometimes not enough and sometimes way too much. So, I changed it to calculate the offset dynamically. It's working better but still needs some tweaking.
What does the trampoline show?
 

Slippage

Active member
Hi does anyone have mobile version of the moxie indicator script ?
I never tried it on mobile until a week ago. I found it doesn't plot anything. Neither does the real Moxie code from Simpler Trading. I suspect accessing secondary timeframes may not be allowed on mobile but I haven't looked into it.

What I found that does work is the non-repainting version of Moxie I wrote earlier in this thread. It's not exactly Moxie. More like an approximation. The multicolored plot doesn't seem to work so I set it to light blue in the study settings. That looks correct but there's still traces of green and red garbage in the study's box, which is weird. I hardly use mobile and I'll probably never trade from it. I mostly just use it to check on my existing positions. So I don't have plans to put more effort into it.

Another option, and what I primarily use for charts on mobile is TradingView. For just charts, I prefer their mobile experience. I found that the Moxie study on that platform does work fine on mobile. It's called MoxieArrows or something like that but the name is misleading. It's the lower study and there's no arrows.
 

swazz

New member
VIP
@tradegeek IMO, I would just move on. Never buy an indicator. Find a system that works for you and keep working it. There are many hundred of them on this website to research. Start in the Tutorials as well as Look at the built in Strategies.

Code:
# Moxie_PriceChannel_Adjustable
# Built on 5/11/20
# For use on a All Time Frames

input channelLength = 34;
input averageType = AverageType.EXPONENTIAL;
input PriceChannel_Aggregation = AggregationPeriod.FIFTEEN_MIN;
input Moxie_highestAggregation = AggregationPeriod.TEN_MIN;
input Moxie_lowestAggregation = AggregationPeriod.FIVE_MIN;

def MovAvg_H = MovingAverage(averageType, high, channelLength);
def MovAvg_C = MovingAverage(averageType, close, channelLength);
def MovAvg_L = MovingAverage(averageType, low, channelLength);

def MovAvg_H1x = (MovAvg_H - MovAvg_L) + MovAvg_H;
def MovAvg_L1x = MovAvg_L - (MovAvg_H - MovAvg_L);

# HTF_Ergodic Momentum ----------------------------------------------
def diff = close(period=PriceChannel_Aggregation) - close(period=PriceChannel_Aggregation)[1];
def TSI  = (ExpAverage(ExpAverage(diff, 32), 5)) / (ExpAverage(ExpAverage(AbsValue(diff), 32), 5)) * 100;
def Signal = ExpAverage(TSI, 5);
def Momentum = TSI - Signal;
def LHMult = If (.01 <> 0, (1 / 0.01), 0);
def TSVBlues = If (Momentum >= 0, Momentum, 0);
def TSVMomentum_Pos = TSVBlues * LHMult;
def TSVReds = If (Momentum < 0, Momentum, 0);
def TSVMomentum_Neg = TSVReds * LHMult;

# HTF ERGODIC Price Channel Momentum Indicator ----------------------------------------
plot PC_H = MovAvg_H;
plot PC_L = MovAvg_L;

PC_H.DefineColor("SlopeUp", CreateColor(0, 153, 0)); #createColor(0,153,0)); GREEN
PC_H.DefineColor("NoSlope", Color.GRAY);
PC_H.DefineColor("SlopeDown", Color.RED);
PC_H.AssignValueColor(if TSVmomentum_Pos then PC_H.Color("SlopeUp") else if TSVmomentum_Neg then PC_L.Color("SlopeDown") else PC_H.Color("NoSlope"));
PC_H.SetLineWeight(2);
PC_H.HideBubble();

PC_L.DefineColor("SlopeUp", CreateColor(0, 153, 0));#createColor(0,153,0)); GREEN
PC_L.DefineColor("NoSlope", Color.GRAY);
PC_L.DefineColor("SlopeDown", Color.RED);
PC_L.AssignValueColor(if TSVmomentum_Pos then PC_L.Color("SlopeUp") else if TSVmomentum_Neg then PC_L.Color("SlopeDown") else PC_L.Color("NoSlope"));
PC_L.SetLineWeight(2);
PC_L.HideBubble();

# MOXIE - This section is for the medium term MACD ---------------------------------------------
def midTermFastAvg = ExpAverage(close(period = Moxie_lowestAggregation), 12);
def midTermSlowAvg = ExpAverage(close(period = Moxie_lowestAggregation), 26);
def midTermValue = midTermFastAvg - midTermSlowAvg;
def midTermAvg = ExpAverage(midTermValue, 9);
def midTermDiff = (midTermValue - midTermAvg)*3;

# MOXIE - This section is for the long term MACD -----------------------------------------------
def longTermFastAvg = ExpAverage(close(period = Moxie_highestAggregation), 12);
def longTermSlowAvg = ExpAverage(close(period = Moxie_highestAggregation) , 26);
def longTermValue = longTermFastAvg - longTermSlowAvg;
def longTermAvg = ExpAverage(longTermValue, 9);
def longTermDiff = (longTermValue - longTermAvg)*3;

# Signal Criteria -----------------------------------------------------------------------
def midTermLower = midTermDiff < 0 and midTermDiff < midTermDiff[1];
def midTermHigher = midTermDiff > 0 and midTermDiff > midTermDiff[1];

def longTermLower = longTermDiff < 0 and longTermDiff < longTermDiff[1];
def longTermHigher = longTermDiff > 0 and longTermDiff > longTermDiff[1];

#########################################################################
plot BuySignal = if midTermHigher and LongTermHigher then MovAvg_L1x else Double.NaN;
BuySignal.SetDefaultColor (Color.White); #(CreateColor(0, 153, 0));
BuySignal.SetPaintingStrategy(PaintingStrategy.POINTS);
BuySignal.SetLineWeight(2);
BuySignal.HideBubble();
BuySignal.HideTitle();

plot SellSignal = if midTermLower and LongTermLower then MovAvg_H1x else Double.NaN;
SellSignal.SetDefaultColor(Color.White);
SellSignal.SetPaintingStrategy(PaintingStrategy.POINTS);
SellSignal.SetLineWeight(2);
SellSignal.HideBubble();
SellSignal.HideTitle();

# Cloud Fill -----------------------------
AddCloud(MovAvg_H, MovAvg_L, Color.LIGHT_GRAY);

alert (close>BuySignal,"ChannelDotup", alert.bar,Sound.ding);
alert (close<SellSignal,"ChannelDotdown", alert.bar,Sound.ding);

#alert (close>BuySignal,"ChannelDotup", alert.once,Sound.ding);
#alert (close<SellSignal,"ChannelDotdown", alert.once,Sound.ding);
How do you use this indicator and what settings? Does it also have a lower indicator.
 

Slippage

Active member
Does the Moxie indicator work on tick charts?

I doubt it. The official Moxie version and its clone might draw the plots but they're from so high a higher timeframe that they'd be irrelevant for you. The other version I created, which calculates a multiple on the current time frame instead of using a higher timeframe -- the one people in this thread call the "smooth" version -- may be useful to you but you may need to tune the multiple to be relevant on your timeframe.

It's worth noting that Moxie is just MACD's histogram from a higher timeframe drawn as a line. So you could also test with looking at MACD on a higher timeframe chart to see if it's useful to you.
 
Last edited:

Slippage

Active member
The guy who created Moxie says if Moxie is above zero and price closes below SMA 50 then price should bounce. He calls it the trampoline setup. The inverse also applies for shorting.

This should be taken with a big grain of salt, by the way. Taken alone, I see this fail constantly. I want to do more back testing with it but it doesn't look good on its own. TG seems to use it as an additional reason to take a trade that meets the core Moxie setup criteria. Not as an alternative to the core Moxie setup.
 

Slippage

Active member
Moxie Mastery Final Review -- 16 out of 48 trades were winners (mostly small)
Coin flipping has a higher win rate.

I canceled my subscription a couple of weeks ago and it will end in less than 2 weeks. It started Feb 22. Even with reduced sizing, in my nearly 3 months in Moxie Mastery I lost almost all I had gained day trading in Jan and Feb. My final opinion is that the indicator and strategy seem fine. They seem to have profitable results when the rules are followed. The alert service is a money wasting distraction, though I am more comfortable with the strategy than I was when I started.

The alert service is not good in sideways or down-trending markets. He had a great H2 2020 when every name was going up. He had a great time after the election in Nov through Feb when things liberals like to spend money on were going up. Since then his alerts have been consistently losing. He cannot trade this market.

The main problem with the alert service is that TG Watkins is not comfortable going short, has a fear of shorting, has admitted repeatedly that shorting just doesn't work for him so he doesn't try it much. Therefore, he has a permanent long bias. He uses a reversal pattern on the hourly chart, which seems to work fine in up-trend continuation, to get into long positions in down-trending stocks which quickly continue downward. He does this while the Moxie indicator, which is a momentum indicator, never shows any hint of reduced selling on the daily chart. He's going long on stocks in which Moxie is well below zero and hasn't shown any green in more than 2 months.

In addition to constantly going long in down-trending stocks, many of his alerts break the rules of his own strategy. If you watch his videos from the last year or two you'll hear him repeatedly say "don't trade the X," meaning when price crosses above the hourly 50 SMA don't immediately go long but instead wait for it to retest the 50 SMA and confirm it as support, then go long. His alerts very often do not wait for the retest and when the retest happens and fails, price continues lower and he gets stopped out or he alerts an early exit before getting stopped out.

Up until late April he was lazy and complacent, trading the same stocks that gave him gains in Nov-Feb. Electric vehicles, green energy, marijuana, block chain. Almost all of those stocks have been in multiple-month downtrends and are back to where they were before that run started. While he was alerting losing trades in those, I found winning trades using his strategy in BA, EBAY, FB and other names. I voiced my displeasure with him alerting rule-breaking entries which became a bigger/longer negative conversation than I intended it to be when some of his apostles attacked me for criticizing their idol. While that blew up bigger than I intended, and I felt a little sorry for TG, it did serve to wake him up to stop looking at the same list of stocks, do some scanning, realize which sectors were moving and get a fresh perspective. He also took the rules more seriously, which I let him know I appreciated, but that only lasted for a few days and he was back to alerting rule-breaking trades.

Here's the evidence to back up my conclusion

Since I joined the Moxie Mastery alert service, TG Watkins alerted 48 trades. Of those 48, 16 were winners. Almost all of those winners were small. The average time in a trade was 4.6 calendar days. The cumulative return was -56% if all the trades were taken with equal sizing but you can see from the data below they were not. The average return was -1%. These are based on his entries and exits. Yours would be worse.

These stats are based on the spreadsheet he maintains as part of the Mastery service which has his entry and exit prices. These prices are almost always better than the prices you'll get since he alerts after he already executed the trades in the many accounts he's managing for himself and his father and sister. He enters all of his trades for the day, in all the accounts, then writes up a summary of why he took a trade, with screen shots of the charts, then posts an alert. Then writes the next summary with screen shot and posts an alert. Rinse repeat with a few minutes between each. Sometimes the alert comes an hour after he entered. You almost always end up with a worse entry price even if you're fast enough to beat the others in the room into the stock. Depending on other volume, these alerts sometimes cause a pop and the slower you are to get in the worse your price will be. On exits, he's already out before he sends the alert.

Date OpenNameDirectionEntryStopSizeStatusDate ClosedExitWinDaysGain%
5/5/2021FBShort$316.37$321.205%Closed5/6/2021$318.8501($2.48)-1%
4/29/2021BLNKLong$37.90$35.855%Closed4/30/2021$38.1311$0.231%
4/29/2021GNRCLong$335.90$319.505%Closed4/30/2021$324.0011($11.90)-4%
4/29/2021RBLXLong$76.85$72.7010%Closed4/30/2021$75.1401($1.71)-2%
4/29/2021TKATLong$37.90$35.852.50%Closed4/30/2021$36.1201($1.78)-5%
4/27/2021YALALong$23.86$22.005%Closed4/29/2021$22.0002($1.86)-8%
4/26/2021FSRLong$14.18$13.2010%Closed4/27/2021$13.5601($0.62)-4%
4/26/2021NVAXLong$220.17$203.653%Closed4/27/2021$259.8201$39.6518%
4/26/2021NVAXLong$220.17$225.0010%Closed4/30/2021$242.5014$22.3310%
4/26/2021ROKULong$363.70$345.6510%Closed4/30/2021$345.6514($18.05)-5%
4/26/2021SNAPLong$60.09$57.005%Closed4/30/2021$62.1804$2.093%
4/23/2021AMCLong$10.20$9.272.50%Closed4/30/2021$10.0017($0.20)-2%
4/23/2021MOMOLong$14.96$14.482.50%Closed4/30/2021$14.4807($0.48)-3%
4/23/2021SNAPLong$59.93$57.005%Closed4/30/2021$62.1807$2.254%
4/23/2021UAVSLong$5.72$5.085%Closed4/30/2021$5.8617$0.142%
4/14/2021FUTULong$150.35$141.752.50%Closed4/15/2021$145.7811($4.57)-3%
4/14/2021GNRCLong$333.00$322.805%Closed4/15/2021$326.2301($6.77)-2%
4/14/2021TNALong$92.89$88.305%Closed4/15/2021$92.0501($0.84)-1%
4/13/2021OUTLong$22.73$21.832.50%Closed4/15/2021$23.2802$0.552%
4/6/2021CCIVLong$24.76$21.655%Closed4/8/2021$22.9212($1.84)-7%
4/6/2021SPCELong$30.75$27.905%Closed4/8/2021$28.6802($2.07)-7%
4/5/2021DNNLong$1.28$1.062.50%Closed4/12/2021$1.0607($0.22)-17%
4/5/2021GNRCLong$326.05$304.505%Closed4/12/2021$323.5207($2.53)-1%
4/5/2021MVISLong$15.51$12.905%Closed4/12/2021$13.6607($1.85)-12%
4/5/2021RIOTLong$56.94$48.005%Closed4/8/2021$48.0903($8.85)-16%
4/5/2021UAVSLong$7.12$5.955%Closed4/12/2021$6.1307($0.99)-14%
3/30/2021FUBOLong$22.04$20.552.50%Closed4/1/2021$23.4102$1.376%
3/30/2021FUBOLong$22.04$20.552.50%Closed4/8/2021$20.5519($1.49)-7%
3/30/2021NNDMLong$8.34$7.802.50%Closed4/8/2021$7.8009($0.54)-6%
3/17/2021MARALong$41.68$34.755%Closed3/22/2021$41.2005($0.48)-1%
3/17/2021NIOLong$44.63$40.905%Closed3/18/2021$41.7101($2.92)-7%
3/17/2021QSLong$59.76$53.8010%Closed3/18/2021$56.4001($3.36)-6%
3/17/2021SKLZLong$29.20$25.6010%Closed3/18/2021$26.1201($3.08)-11%
3/17/2021SNDLLong$1.56$1.285%Closed3/22/2021$1.3605($0.20)-13%
3/17/2021SPCELong$33.69$30.205%Closed3/18/2021$31.8701($1.82)-5%
3/12/2021ANGILong$16.03$15.107%Closed3/23/2021$16.41011$0.382%
3/10/2021COMMLong$15.29$14.302%Closed3/11/2021$16.7011$1.419%
3/10/2021COMMLong$15.29$15.003%Closed3/23/2021$15.14113($0.15)-1%
3/10/2021KOSSLong$29.65$21.002.50%Closed3/11/2021$25.5201($4.13)-14%
3/9/2021AILong$85.16$79.115%Closed3/18/2021$79.1109($6.05)-7%
3/9/2021CCIVLong$24.22$20.805%Closed3/12/2021$27.2003$2.9812%
3/9/2021GNUSLong$1.84$1.845%Closed3/26/2021$2.53117$0.6938%
3/9/2021RKTLong$25.89$24.105%Closed3/18/2021$24.1019($1.79)-7%
3/9/2021SOSLong$6.30$5.8010%Closed3/22/2021$7.26013$0.9615%
3/8/2021BBBYLong$30.93$28.005%Closed3/10/2021$30.0512($0.88)-3%
3/8/2021OSTKLong$60.48$53.655%Closed3/10/2021$68.5802$8.1013%
3/8/2021WLong$306.79$292.0010%Closed3/23/2021$339.04115$32.2511%
3/3/2021MACLong$13.70$13.005%Closed3/4/2021$13.2211($0.48)-4%
 
Last edited:

Slippage

Active member
Going forward

I don't have any plans for additional shareable Moxie-related code at this time. There have been requests in another thread for Moxie watchlist columns but I don't have a use for that based on vanilla Moxie rules. I don't even have the clone of official Moxie on my charts any more except the 15m chart. I doubt I'll create a watchlist column for regular Moxie any time soon due to my lack of interest and other priorities.

I'll trade the vanilla Moxie strategy when I see the setup. It seems to work when the rules are followed. I'm working on a non-repainting and more objective strategy to replace this. First I'm working on scripts to visualize and eyeball-test the strategy and then I'll work on a back-test script to really test and optimize it.

I did a little back-testing on Trampolines and I want to do more to see if I can make that strategy profitable separate from the main Moxie strategy.

I noticed TG Watkins mainly focuses on the H chart. Moxie on the H chart is MACD histogram of D chart. Personally, I prefer to focus on D. I've added a Moxie-style indicator to my D chart that uses the D timeframe so it's just a Moxie visual style of MACD histogram without any other timeframe. I have some ideas to back-test based on that combined with the non-repainting approximation of Moxie I posted earlier in this thread.

Separate from those, I want to test using the Moxie-style MACD histogram as the momentum indicator for squeezes. My early impression is that it will probably work better than TTM_Squeeze/SqueezePro histogram and probably better than using the standard Momentum indicator squeeze's histogram is derived from.

Separate from all that, I have another script that gives me up/down arrows when price breaks through and closes beyond a bunch of common dynamic resistances (ema, sma, ichimoku, etc.) while still at the beginning of a move. It looks like it'll work great in trend continuation though it fails in choppy markets. I plan to tweak that further and then write back-test scripts for that. Moxie isn't involved in that one.

Due to all the back-testing I want to do, I'm thinking of creating a back-testing template script, complete with optional stop loss, optional share sizing, optional price target based on multiples of risk. Then for all the tests after that I just need to code the setup and trigger. If I create that template I'll probably share it on this site.
 
Last edited:

Similar threads

Top