BuyLow_MP_SMI_TriggerSystem for ThinkorSwim

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

@tomsk I made an account after months of using this website to form my day trading strategy just to say that... THIS IS THE MOST IMPORTANT INDICATOR THAT I HAVE EVER COME ACROSS SO THANK YOU GOOD SIR OR MA’AM FOR POSTING THIS! This website is a game changer and has helped in ways that were once unimaginable. Thank you again!!!!!! Highly recommend this. It is MTF so it works with any chart. Very accurate piece of the puzzle for me. GOODLUCK to all!
 
I made an account after months of using this website to form my day trading strategy just to say that... THIS IS THE MOST IMPORTANT INDICATOR THAT I HAVE EVER COME ACROSS SO THANK YOU GOOD SIR OR MA’AM FOR POSTING THIS! This website is a game changer and has helped in ways that were once unimaginable. Thank you again!!!!!! Highly recommend this. It is MTF so it works with any chart. Very accurate piece of the puzzle for me. GOODLUCK to all!
thanks, how do you use it?
 
@germanburrito I agree w/ @westonsloan the SMI is the most important indicator in my toolbox as far as timing my entry into a stock. I look for:
Code:
#Timing Entry on the 2min chart:
StochasticMomentumIndex()."SMI" is greater than StochasticMomentumIndex()."AvgSMI" and
StochasticMomentumIndex()."SMI" is greater than StochasticMomentumIndex()."SMI"[1]
In the below screenshot is the study from the 1st post and the 2nd indicator shown is the one I use and love: @tomsk's IronRod from post#35
If you read his comments contained w/in the study, he explains how he uses it. I am prejudiced. I find all of @tomsk's contributions to be amazing.

HTH

0sZCO9T.png
 
Last edited:
I still use the smi as another confirmation but Ive switched up a bit. https://tos.mx/HYrdj4Z
My way of trading upper chart on this set up would be buy dip when green turns to yellow but get out when yellow turns to red meaning dip has more to go down . That's my first impression . How do you use lower indicators in conjunction with upper chart ? Anyone on this thread is welcome to explain the way you trading that set up . Your opinion is highly appreciated .
 
Sorry I wasn't specific I was referring to BUY LOW MP SMI Trigger System which this on this link . I don't have Buy The Dip indicator .
 
@Stanley if you are referring to the study in the 1st post, the SMI from the lower indicator is already built into the strategy.
Go through the script to understand all the variables and indicators being used to plot your triggers.
 
@Stanley if you are referring to the study in the 1st post, the SMI from the lower indicator is already built into the strategy.
Go through the script to understand all the variables and indicators being used to plot your triggers.
Yes it was first post now I can see and how it works . SMI lower indicator works with upper chart by printing arrows orange and yellow to help you visualize changing trend of candles . Thank you for help .
 
@germanburrito I agree w/ @westonsloan the SMI is the most important indicator in my toolbox.
In the below screenshot is the study from the 1st post and the 2nd indicator shown is the one I use and love: @tomsk's IronRod from post#35
If you read his comments contained w/in the study, he explains how he uses it. I am prejudiced. I find all of @tomsk's contributions to be amazing.

HTH

0sZCO9T.png
Yes, that’s how I would have responded — @germanburrito

I believe that a momentum based strategy is most lucrative for day trading. In my opinion of course. Before when I did not know exactly what I was trying to build for a strategy, I believe somebody posted an “Iron Rod SMI” histogram that I use. That’s when I continued to study the market to see the value each of my indicators provide. I found that it allows me to see an absolutely clearer picture of a trend in motion and it’s labeled. It’s MTF so I set it up on 1D 1MIN, 1D 5MIN, 1D 15MIN, and 1D 30MIN for me. This is not a one size fits all type of deal. I believe that it can be a part of a combination of different indicators that also communicate to you what’s going on. Others I recommend, are as follows: MACD, TMO, SMI (Iron Rod SMI), TTM squeeze, and custom signal that alerts when stochastic slow/fast has a crossover. I also set up relative volume scanners that aggregate after market open. And scanners that are conditioned to whenever I have a positive signal hit. When I have positive signal hits on all chart frames, I then use the 1D 1MIN to time my entry with a positive crossover signal hit and SMI for entry and hold long watching 1D 5MIN. Proven time after the time for the biggest most significant move. All else equal. Hope that helps!
 
Is there a way to write the code in post #27 (the upper) to where it is copy and paste ? I got it to load, but it is a white background. I just want to be able to implement it into my regular charts. Thanks in advance !

How do you get the background dark rather than white ? I tried going into "General" to switch the background color, but to no avail.
 
How do you get the background dark rather than white ? I tried going into "General" to switch the background color, but to no avail.

Not 100% clean-up but this should help you.

Ruby:
#FUTURES Iron Rod Upper 9.0 (14/9/10)- same as ver 8c
#applieS hma angle + minimum angle logic to ir lines, background options, labels, and alarms.
#IMPORTANT NOTE:  Need to adjust anglegscalingfactor to achieve $1 increments on price legend to calibrate angle logic

declare upper;
input FutureSymbol = {default stock1 , TF, CL, ES, Stock2};
input showBubbles = yes;
input labels = yes;
input mADXVLine = yes;
input SMIarrows = no;
input IRGarrows = yes;
input audioalarm = yes;
input Candle_Color = {default midprice, Smi, Hma};
input paintBars = yes;

input minangle = 12;

input fasthma = 8;
input slowhma = 15;
input angleperiod = 5;
input shorttrend = 21;
input longtrend = 55;
input lrlength = 15;
input MidCandleType = hlc3;
input MidCandleWeight = 2;
input hullsmi = 8;
input smilimit = 12;

input stdevLength = 55;
input numStdev = 1.0;
input SDBinner = .75;
input sdbouter = 1.25;

input shortlabel = 20;
input midlabel = 50;
input longlabel = 90;

input smibarbufr = 4;
input vlbuffer = 0;
input arrowbuffer = 20;
input anglelength = 2;

def MAtype = hlc3;
def anglescalingfactor;
def reversalAmount;
def BubbleDisplace;
def TicksPerPoint;
def DollarPerTick;
def futurestraded;

switch (FutureSymbol){
case TF:
    anglescalingfactor = 1.0;
    reversalAmount = 1.5;
    BubbleDisplace = 1.5;
    TicksPerPoint = 10;
    DollarPerTick = 10;
    futurestraded = 5;
case CL:
    anglescalingfactor = 10.0;
    reversalAmount = .2;
    BubbleDisplace = .2;
    TicksPerPoint = 100;
    DollarPerTick = 10;
    futurestraded = 5;
case ES:
    anglescalingfactor = 1.0;
    reversalAmount = .2;
    BubbleDisplace = .2;
    TicksPerPoint = 4;
    DollarPerTick = 12.50;
    futurestraded = 5;
case Stock2:
    anglescalingfactor = 2;
    reversalAmount = 2.0;
    BubbleDisplace = 1.5;
    TicksPerPoint = 1;
    DollarPerTick = 1;
    futurestraded = 1;
default:
    anglescalingfactor = 1.0;
    reversalAmount = 1.5;
    BubbleDisplace = 1.5;
    TicksPerPoint = 1;
    DollarPerTick = 1;
    futurestraded = 1;
}
#  Hull modified Smi-> generates arrows, used for irg colors
def percentDLength = 4;
def percentKLength = 5;
def min_low = Lowest(low, percentKLength);
def max_high = Highest(high, percentKLength);
def rel_diff = close - (max_high + min_low) / 2;
def diff = max_high - min_low;
def avgrel = ExpAverage(ExpAverage(rel_diff, percentDLength), percentDLength);
def avgdiff = ExpAverage(ExpAverage(diff, percentDLength), percentDLength);
def SMI = if avgdiff != 0 then avgrel / (avgdiff / 2) * 100 else 0;
def AvgSMI = HullMovingAvg(SMI, hullsmi);

#IRON ROD lines-
#IronRod (IRg) guideline
#Slope to Angle conversion
plot ir = HullMovingAvg(hlc3, slowhma);
def ira = ir - ir[anglelength];
def irangle = Round((anglescalingfactor * (ATan(ira / anglelength) * 180 / Double.Pi)), 1);
plot irg = HullMovingAvg(hlc3, fasthma);
def irgang = HullMovingAvg(hlc3, angleperiod);
def irga = irgang - irgang[anglelength];
def irgangle = Round((anglescalingfactor * (ATan(irga / anglelength) * 180 / Double.Pi)), 1);

#Iron Rod control line (IR)
ir.DefineColor("Up", Color.UPTICK);
ir.DefineColor("weak", CreateColor(50, 150, 250));
ir.DefineColor("Down", Color.DOWNTICK);
ir.AssignValueColor(if irangle >= 5 then ir.Color("up") else if irangle <= -5 then ir.Color("down") else ir.Color("weak"));
ir.SetLineWeight(3);

#IronRod Guideline- colored by irg angle
irg.DefineColor("Up", Color.UPTICK);
irg.DefineColor("weak", CreateColor(50, 150, 250));
irg.DefineColor("Down", Color.DOWNTICK);
irg.AssignValueColor(if irgangle >= minangle then irg.Color("up") else if irgangle <= -minangle then irg.Color("down") else irg.Color("weak"));
irg.SetLineWeight(3);
irg.SetStyle(Curve.SHORT_DASH);

#IronRod candle modifications (hybrid Jap/heikinAshi)
plot IRmidprice = SimpleMovingAvg(MidCandleType, 1);
IRmidprice.SetDefaultColor(Color.BLACK);
IRmidprice.SetLineWeight(MidCandleWeight);
IRmidprice.SetPaintingStrategy(PaintingStrategy.DASHES);

plot Pricedot = SimpleMovingAvg(close, 1);
Pricedot.SetStyle(Curve.POINTS);
Pricedot.SetDefaultColor(Color.BLUE);
Pricedot.SetLineWeight(3);
def hmas = ir;

#Linear Regession (LR) Trend Line
def price = hl2;
plot LR = InertiaAll(price, lrlength);
LR.SetDefaultColor(Color.GRAY);

#STANDARD DEVIATION BAND AND CLOUD
plot LRb = InertiaAll(price, stdevLength);
def sdev = StDev(price, stdevLength);
plot SdUB = LRb + numStdev * sdev;
plot SdLB = LRb - numStdev * sdev;
def band = SdUB - SdLB;
LRb.SetDefaultColor(Color.DARK_GREEN);
SdUB.SetDefaultColor(Color.GRAY);
SdUB.SetStyle(Curve.MEDIUM_DASH);
SdUB.SetLineWeight(1);
SdLB.SetDefaultColor(Color.GRAY);
SdLB.SetStyle(Curve.MEDIUM_DASH);
SdLB.SetLineWeight(1);

#Std Dev CLOUDS
AddCloud( (LRb + sdbouter * sdev), (LRb + SDBinner * sdev), CreateColor(175, 175, 175));
AddCloud((LRb - SDBinner * sdev), (LRb - sdbouter * sdev), CreateColor(175, 175, 175));

def lra = LRb - LRb[anglelength];
def lrbangle = Round(((ATan(lra / anglelength) * 180 / Double.Pi)), 2);
#plot rolling= lrangle < minangle and lrangle > -minangle and band >= minrange ;

#EMA Trend Lines
plot LTrend = MovAvgExponential(MAtype, longtrend);
LTrend.SetDefaultColor(Color.BLUE);
LTrend.SetLineWeight(1);

# Candle Coloration
def greenprice;
def redprice;
plot Bullish = greenprice;
plot Bearish = redprice;
plot Neutral = !greenprice and !redprice;
Bullish.Hide();
Neutral.Hide();
Bearish.Hide();

# CANDLE COLOR OPTIONS
switch (Candle_Color){
case Smi:
    greenprice =  (SMI + smibarbufr) >= SMI[1] and SMI > -smilimit;
    redprice =   (SMI - smibarbufr) <= SMI[1] and SMI < smilimit;
case Hma:
    greenprice = ir > ir[1] and irg > irg[1];
    redprice = ir < ir[1] and irg < irg[1];
default:
    greenprice = close > HLC3[1];
    redprice = close < HLC3[1];
}
DefineGlobalColor("Bullish", CreateColor(0, 250, 0));
DefineGlobalColor("Neutral", Color.LIGHT_GRAY);
DefineGlobalColor("Bearish", CreateColor(255, 150, 150));
AssignPriceColor(if !paintBars then Color.CURRENT else if greenprice then GlobalColor("Bullish") else if redprice then GlobalColor("Bearish") else GlobalColor("Neutral"));

#LABELS
def range = high[1] - low[1];
def ATR = Average(TrueRange(high, close, low), 5);
def mva = HullMovingAvg(close(period = AggregationPeriod.DAY), 10);
def fastma = ExpAverage(close(period = AggregationPeriod.DAY), shortlabel);
def mediumma = ExpAverage(close(period = AggregationPeriod.DAY), midlabel);
def longma = ExpAverage(close(period = AggregationPeriod.DAY), longlabel);

AddLabel(yes, "ASF= " + anglescalingfactor + "; MinAngle= " + minangle, Color.BLACK);
AddLabel(labels and yes, "Stock Longterm Profile (days): ", Color.BLACK);
AddLabel(labels and mva > fastma, "Short- " + shortlabel, Color.DARK_GREEN);
AddLabel(labels and mva < fastma, "Short- " + shortlabel, Color.RED);
AddLabel(labels and fastma > mediumma, "Mid- " + midlabel, Color.DARK_GREEN);
AddLabel(labels and fastma < mediumma, "Mid- " + midlabel, Color.RED);
AddLabel(labels and mediumma > longma, "Long- " + longlabel, Color.DARK_GREEN);
AddLabel(labels and mediumma < longma, "Long- " + longlabel, Color.RED);
AddLabel(labels and yes, "  ", Color.WHITE);
AddLabel(labels and (lrbangle >= 5), "1-StdDev Band= " + lrbangle + "deg; " + (sdev * 2) + "  ( " + ((sdev * 2) / ATR) + " atr's  )", Color.DOWNTICK);
AddLabel(labels and (lrbangle <5 and lrbangle > -5), "1-StdDev band= " + lrbangle + "deg; " + (sdev * 2) + "  ( " + ((sdev * 2) / ATR) + " atr's  )", Color.GRAY);
AddLabel(labels and (lrbangle <= -5), "1-StdDev band= " + lrbangle + "deg; " + (sdev * 2) + "  ( " + ((sdev * 2) / ATR) + " atr's  )", Color.UPTICK);
AddLabel(labels and yes, "Range: High= " + (Highest(ATR, 20)), Color.BLUE);
AddLabel(labels and yes, "Trail >" + (ATR), Color.MAGENTA);
AddLabel(labels and yes, "Iron Rod short term profile:", Color.BLACK);
AddLabel(labels and yes, "  ", Color.WHITE);
AddLabel(labels and SMI >= SMI[1] and (SMI < -smilimit or SMI > smilimit) , "SMI", Color.UPTICK);
AddLabel(labels and SMI <= SMI[1] and (SMI < -smilimit or SMI > smilimit), "SMI", Color.RED);
AddLabel(labels and SMI <= smilimit and SMI >= -smilimit, " SMI Choppy ", Color.GRAY);
AddLabel(labels and yes, " ", Color.WHITE);
AddLabel(irgangle >= minangle, fasthma + " Guide= " + irgangle + " deg" , Color.UPTICK);
AddLabel(irgangle < minangle and irgangle > -minangle, fasthma + " Guide= " + irgangle + " deg", Color.BLUE);
AddLabel(irgangle <= -minangle, fasthma + " Guide= " + irgangle + " deg", Color.RED);
AddLabel(irangle >= minangle, slowhma + " IronRod= " + irangle + " deg" , Color.UPTICK);
AddLabel(irangle < minangle and irangle > -minangle, slowhma + " IronRod= " + irangle + " deg", Color.BLUE);
AddLabel(irangle <= -minangle, slowhma + " IronRod= " + irangle + " deg" , Color.RED);
AddLabel(irangle < minangle and irgangle < minangle and irangle > -minangle and irgangle > -minangle, "EXIT", Color. BLUE);
AddLabel(irangle < minangle and irgangle >= minangle, "1x", Color. UPTICK);
AddLabel(irangle > -minangle and irgangle <= -minangle, "1X", Color.DOWNTICK);
AddLabel(irangle >= minangle and irgangle < minangle, "HOLD", Color. UPTICK);
AddLabel(irangle <= -minangle and irgangle > minangle, "HOLD", Color.DOWNTICK);
AddLabel(irangle >= minangle and irgangle >= minangle, "2x", Color. UPTICK);
AddLabel(irangle <= -minangle and irgangle <= -minangle, "2X", Color.DOWNTICK);
AddLabel(band <= 3, "Narrow Channel", Color.DARK_ORANGE);

def pm= irg - lrb;
AddLabel(pm>=3, "PriceMagnet= " + pm, Color.DARK_red);
AddLabel(pm>=1 and pm <3, "PriceMagnet= " + pm, Color.light_red);
AddLabel(pm<1 and pm >-1, "PriceMagnet= " + pm, Color.DARK_orange);
AddLabel(pm<=-1 and pm > -3, "PriceMagnet= " + pm, Color.light_green);
AddLabel(pm<= -3, "PriceMagnet= " + pm, Color.DARK_green);

#mADX and Vertical Line Warning- magnified and centered on midline
def ADX1 = 2.5 * ((DMI(10).ADX) - 25);
AddVerticalLine(mADXVLine and ADX1 >= 1 and ADX1 < ADX1[1] and ADX1[1] > ADX1[2], "mADX TrendChange", Color.CYAN);

#ARROW Indicators
#Small Arrows- based on irg angle crossing midline
plot irgarrowup = (IRGarrows and irgangle[2] < irgangle[3] and irgangle[1] < irgangle[2] and irgangle > irgangle[1]);
irgarrowup.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
irgarrowup.SetDefaultColor(Color.UPTICK);
irgarrowup.SetLineWeight(1
);

plot irgarrowdn = (IRGarrows and irgangle[2] > irgangle[3] and irgangle[1] > irgangle[2] and irgangle < irgangle[1]);
irgarrowdn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
irgarrowdn.SetDefaultColor(Color.DOWNTICK);
irgarrowdn.SetLineWeight(1);

#plot irgarrowup1 = (IRGarrows and irgangle[2] < irgangle[3] and irgangle[1] < irgangle[2] and irgangle > irgangle[1]);
plot irgarrowup1 = (IRGarrows and irgangle crosses above 0);
irgarrowup1.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
irgarrowup1.SetDefaultColor(Color.UPTICK);
irgarrowup1.SetLineWeight(5);

#plot irgarrowdn1 = (IRGarrows and irgangle[2] > irgangle[3] and irgangle[1] > irgangle[2] and irgangle < irgangle[1]);
plot irgarrowdn1 = (IRGarrows and irgangle crosses below 0);
irgarrowdn1.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
irgarrowdn1.SetDefaultColor(Color.DOWNTICK);
irgarrowdn1.SetLineWeight(5);

# Smi arrows, based on smi line crossing smi limit lines
plot smiarrowup = (SMIarrows and SMI crosses above -smilimit);
smiarrowup.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
smiarrowup.SetDefaultColor(Color.PLUM);
smiarrowup.SetLineWeight(3);

plot smiarrowdn = (SMIarrows and SMI crosses below smilimit);
smiarrowdn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
smiarrowdn.SetDefaultColor(Color.PLUM);
smiarrowdn.SetLineWeight(3);

#Zigzag bubbles-  w/convertion to dollars:
Assert(reversalAmount > 0, "'reversal amount' should be positive: " + reversalAmount);

def "ZZ$" = reference ZigZagHighLow(hl2, hl2, 0, reversalAmount, 1, 0);

def zzSave = if !IsNaN("ZZ$") then hl2 else GetValue(zzSave, 1);
def chg = ( hl2 - GetValue(zzSave, 1)) * TicksPerPoint * DollarPerTick * futurestraded;
def isUp = chg >= 0;
def isConf = AbsValue(chg) >= reversalAmount or (IsNaN(GetValue("ZZ$", 1)) and GetValue(isConf, 1));

DefineGlobalColor("Unconfirmed", Color.LIGHT_GRAY);
DefineGlobalColor("Up", Color.UPTICK);
DefineGlobalColor("Down", Color.DOWNTICK);

def barNumber = BarNumber();

AddChartBubble(showBubbles and !IsNaN("ZZ$") and barNumber != 1 and chg >= 0, (price + BubbleDisplace), "$ " + chg, Color.UPTICK);
AddChartBubble(showBubbles and !IsNaN("ZZ$") and barNumber != 1 and chg <= 0, ( (price - (2 * BubbleDisplace))), "$" + -chg, Color.DOWNTICK);

#end of Iron Rod upper study script
 
Thread starter Similar threads Forum Replies Date
S Smart Money Index (SMI) Indicator for ThinkorSwim Indicators 29

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
419 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top