Below is the script to buy the SMI crossover and to sell the SMI crossover. This can be done long or short. Arrows on the chart are provided when there is a crossover about to happen on the SMI lower chart. There will be several entries. Works on all time frames. To take the best trades, try using another indicator with it such as the RSI, Momentum, Ema and so on. Practice with it first. Can be used on different time frames. I hope this is gold for someone. Thank you and happy trading.
input SMI_crossover_arrows = yes;
input over_bought = 40.0;
input over_sold = -40.0;
input percentDLength = 3;
input 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 = ExpAverage(SMI, percentDLength);
# SMI Arrows
plot uparrow = if !SMI_crossover_arrows then Double.NaN
else if SMI[-1] crosses above avgSMI[-1]
then SMI
else Double.NaN;
uparrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
uparrow.SetLineWeight(3);
uparrow.SetDefaultColor(GetColor(1));
plot downarrow = if !SMI_crossover_arrows then Double.NaN
else if SMI[-1] crosses below avgSMI[-1]
then SMI
else Double.NaN;
downarrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
downarrow.SetLineWeight(3);
downarrow.setDefaultColor(Color.Magenta);17183[/ATTACH]']
input SMI_crossover_arrows = yes;
input over_bought = 40.0;
input over_sold = -40.0;
input percentDLength = 3;
input 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 = ExpAverage(SMI, percentDLength);
# SMI Arrows
plot uparrow = if !SMI_crossover_arrows then Double.NaN
else if SMI[-1] crosses above avgSMI[-1]
then SMI
else Double.NaN;
uparrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
uparrow.SetLineWeight(3);
uparrow.SetDefaultColor(GetColor(1));
plot downarrow = if !SMI_crossover_arrows then Double.NaN
else if SMI[-1] crosses below avgSMI[-1]
then SMI
else Double.NaN;
downarrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
downarrow.SetLineWeight(3);
downarrow.setDefaultColor(Color.Magenta);17183[/ATTACH]']
Attachments
Last edited: