Join useThinkScript to post your question to a community of 21,000+ developers and traders.
I still use the smi as another confirmation but Ive switched up a bit. https://tos.mx/HYrdj4Z
I can't help you there.@J007RMC Do you know how to adjust the anglescalingfactor so its calibrated? I am unsure what the math is here.
thanks, how do you use it?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!
#Timing Entry on the 2min chart:
StochasticMomentumIndex()."SMI" is greater than StochasticMomentumIndex()."AvgSMI" and
StochasticMomentumIndex()."SMI" is greater than StochasticMomentumIndex()."SMI"[1]
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 .I still use the smi as another confirmation but Ive switched up a bit. https://tos.mx/HYrdj4Z
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 .@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, that’s how I would have responded — @germanburrito@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
How do you get the background dark rather than white ? I tried going into "General" to switch the background color, but to no avail.
#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 |
Start a new thread and receive assistance from our community.
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.
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.