shamrozkadiwal
New member
I am working on a strategy where I am using two indicators: the TSI (true strength index) and the SMI (stochastic momentum index). When they both cross above or below, it triggers the buy order and exits when it reaches n points or ticks.
Now that I've figured out how to enter as a buy or sell, I'm stuck on how to exit at a specific point or tick value. Could you please help me figure that out? I am not an expert in coding.
Thank you,
#
# TD Ameritrade IP Company, Inc. (c) 2007-2022
#
declare lower;
#####################################################
################## True Strength Index ##################
#####################################################
input longLength = 25;
input shortLength = 13;
input signalLength = 13;
input averageType = AverageType.EXPONENTIAL;
def diff = close - close[1];
def doubleSmoothedAbsDiff = MovingAverage(averageType, MovingAverage(averageType, AbsValue(diff), longLength), shortLength);
plot TSI;
plot Signal;
TSI = if doubleSmoothedAbsDiff == 0 then 0
else 100 * (MovingAverage(averageType, MovingAverage(averageType, diff, longLength), shortLength)) / doubleSmoothedAbsDiff;
Signal = MovingAverage(averageType, TSI, signalLength);
plot ZeroLine = 0;
TSI.SetDefaultColor(GetColor(1));
Signal.SetDefaultColor(GetColor(8));
Signal.hide();
ZeroLine.SetDefaultColor(GetColor(5));
#####################################################
############### Stochastic Momentum Index ##############
#####################################################
input over_bought = 50.0;
input over_sold = -50.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);
plot SMI = if avgdiff != 0 then avgrel / (avgdiff / 2) * 100 else 0;
smi.setDefaultColor(getColor(1));
plot AvgSMI = expaverage(smi, percentDLength);
avgsmi.setDefaultColor(getcolor(5));
plot overbought = over_bought;
overbought.setDefaultColor(getcolor(5));
plot oversold = over_sold;
oversold.setDefaultColor(getcolor(5));
#####################################################
################### Buy or Sell Order ###################
#####################################################
def Buy = TrueStrengthIndex("signal length" = 13)."TSI" crosses above TrueStrengthIndex("signal length" = 13)."Signal" within 2 bars and StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."SMI" crosses above StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."AvgSMI" within 3 bars;
dey Sell = TrueStrengthIndex("signal length" = 13)."TSI" crosses below TrueStrengthIndex("signal length" = 13)."Signal" within 2 bars and StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."SMI" crosses below StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."AvgSMI" within 3 bars;
AddOrder(OrderType.BUY_TO_OPEN, BUY, tickcolor = GetColor(3), arrowcolor = GetColor(3), name = "BUY");
AddOrder(OrderType.BUY_TO_CLOSE, BUY, tickcolor = GetColor(4), arrowcolor = GetColor(4), name = "EXIT");
#AddOrder(OrderType.SELL_TO_OPEN, SELL, tickcolor = GetColor(4), arrowcolor = GetColor(4), name = "SHORT");
#AddOrder(OrderType.SELL_TO_CLOSE, SELL, tickcolor = GetColor(3), arrowcolor = GetColor(3), name = "EXIT");
Now that I've figured out how to enter as a buy or sell, I'm stuck on how to exit at a specific point or tick value. Could you please help me figure that out? I am not an expert in coding.
Thank you,
#
# TD Ameritrade IP Company, Inc. (c) 2007-2022
#
declare lower;
#####################################################
################## True Strength Index ##################
#####################################################
input longLength = 25;
input shortLength = 13;
input signalLength = 13;
input averageType = AverageType.EXPONENTIAL;
def diff = close - close[1];
def doubleSmoothedAbsDiff = MovingAverage(averageType, MovingAverage(averageType, AbsValue(diff), longLength), shortLength);
plot TSI;
plot Signal;
TSI = if doubleSmoothedAbsDiff == 0 then 0
else 100 * (MovingAverage(averageType, MovingAverage(averageType, diff, longLength), shortLength)) / doubleSmoothedAbsDiff;
Signal = MovingAverage(averageType, TSI, signalLength);
plot ZeroLine = 0;
TSI.SetDefaultColor(GetColor(1));
Signal.SetDefaultColor(GetColor(8));
Signal.hide();
ZeroLine.SetDefaultColor(GetColor(5));
#####################################################
############### Stochastic Momentum Index ##############
#####################################################
input over_bought = 50.0;
input over_sold = -50.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);
plot SMI = if avgdiff != 0 then avgrel / (avgdiff / 2) * 100 else 0;
smi.setDefaultColor(getColor(1));
plot AvgSMI = expaverage(smi, percentDLength);
avgsmi.setDefaultColor(getcolor(5));
plot overbought = over_bought;
overbought.setDefaultColor(getcolor(5));
plot oversold = over_sold;
oversold.setDefaultColor(getcolor(5));
#####################################################
################### Buy or Sell Order ###################
#####################################################
def Buy = TrueStrengthIndex("signal length" = 13)."TSI" crosses above TrueStrengthIndex("signal length" = 13)."Signal" within 2 bars and StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."SMI" crosses above StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."AvgSMI" within 3 bars;
dey Sell = TrueStrengthIndex("signal length" = 13)."TSI" crosses below TrueStrengthIndex("signal length" = 13)."Signal" within 2 bars and StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."SMI" crosses below StochasticMomentumIndex("over bought" = 50.0, "over sold" = -50.0)."AvgSMI" within 3 bars;
AddOrder(OrderType.BUY_TO_OPEN, BUY, tickcolor = GetColor(3), arrowcolor = GetColor(3), name = "BUY");
AddOrder(OrderType.BUY_TO_CLOSE, BUY, tickcolor = GetColor(4), arrowcolor = GetColor(4), name = "EXIT");
#AddOrder(OrderType.SELL_TO_OPEN, SELL, tickcolor = GetColor(4), arrowcolor = GetColor(4), name = "SHORT");
#AddOrder(OrderType.SELL_TO_CLOSE, SELL, tickcolor = GetColor(3), arrowcolor = GetColor(3), name = "EXIT");