I was simply saying the upper code does not have stronbuy or strong sell definedHi @majidg Thanks for your reply. However, the script you've shared is the same original script that was listed in 2019. Are you indicating that this is the most Up to date version of the script?
input ThermoLookBackBars = 50;
input PlotType = {default AdaptiveMovingAverages, Standard};
def HighLowScore = 1000 * ((high - high[1]) / (high[1]) +
(low - low[1]) / low[1]);
#######ATR TrailingStop Code
input trailType = {default modified, unmodified};
input ATRPeriod = 5;
input ATRFactor = 3.5;
input firstTrade = {default long, short};
def HiLo = Min(high - low, 1.5 * Average(high - low, ATRPeriod));
def HRef = if low <= high[1]
then high - close[1]
else (high - close[1]) - 0.5 * (low - high[1]);
def LRef = if high >= low[1]
then close[1] - low
else (close[1] - low) - 0.5 * (low[1] - high);
def ATRMod = ExpAverage(Max(HiLo, Max(HRef, LRef)), 2 * ATRPeriod - 1);
def loss;
switch (trailType) {
case modified:
loss = ATRFactor * ATRMod;
case unmodified:
loss = ATRFactor * Average(TrueRange(high, close, low), ATRPeriod);
}
rec state = {default init, long, short};
rec trail;
switch (state[1]) {
case init:
if (!IsNaN(loss)) {
switch (firstTrade) {
case long:
state = state.long;
trail = close - loss;
case short:
state = state.short;
trail = close + loss;
}
} else {
state = state.init;
trail = Double.NaN;
}
case long:
if (close > trail[1]) {
state = state.long;
trail = Max(trail[1], close - loss);
}
else {
state = state.short;
trail = close + loss;
}
case short:
if (close < trail[1]) {
state = state.short;
trail = Min(trail[1], close + loss);
}
else {
state = state.long;
trail = close - loss;
}
}
def BuySignal = Crosses(state == state.long, 0, CrossingDirection.ABOVE);
def SellSignal = Crosses(state == state.short, 0, CrossingDirection.ABOVE);
plot TrailingStop = trail;
TrailingStop.Hide();
####End ATR Trailing Stop Code
def A = Highest(high[1], ThermoLookBackBars);
def B = Lowest(low[1], ThermoLookBackBars);
def FiftyTwoWeekHigh = A;
def FiftyTwoWeekLow = B;
def FiftyTwoWeekScore = 10 * (((high
- FiftyTwoWeekHigh) / FiftyTwoWeekHigh) +
((low - FiftyTwoWeekLow) / FiftyTwoWeekLow));
def ThermoScore = ExpAverage(HighLowScore + FiftyTwoWeekScore, ThermoLookBackBars);
input FastLengthShort = 5;
input SlowLengthShort = 15;
input EffRatioShort = 10;
input FastLengthLong = 10;
input SlowLengthLong = 25;
input EffRatioLong = 5;
def AMA = MovAvgAdaptive(ThermoScore, FastLengthShort, SlowLengthShort, EffRatioShort);
def AMA2 = MovAvgAdaptive(ThermoScore, FastLengthLong, SlowLengthLong, EffRatioLong);
plot Line1;
Line1.Hide();
plot Line2;
Line2.Hide();
switch (PlotType) {
case AdaptiveMovingAverages:
Line1 = AMA;
Line2 = AMA2;
case Standard:
Line1 = ThermoScore;
Line2 = ThermoScore;
}
def InvisibleLine = close * 0;
plot Line3 = InvisibleLine;
Line3.Hide();
def Buy = Line1 > 0 and Line2 < 0 and state == state.long;
def StrongBuy = Line1 > 0 and Line2 >= 0 and state == state.long;
def Sell = Line1 < 0 and Line2 > 0 and state == state.short;
def StrongSell = Line1 < 0 and Line2 <= 0 and state == state.short;
AddLabel(yes, Concat("", (
## Label Text ##
if Buy then "Up Trend"
else if StrongBuy then "Strong Up Trend"
else if Sell then "Down Trend"
else if StrongSell then "Strong Down Trend"
else "Neutral")),
## Label Color ##
if Buy then CreateColor(32,112,92)
else if StrongBuy then CreateColor(56,217,150)
else if Sell then CreateColor(114,46,45)
else if StrongSell then CreateColor(217,81,56)
else CreateColor(222,223,227)
);
input ThermoLookBackBars = 50;
input PlotType = {default AdaptiveMovingAverages, Standard};
def HighLowScore = 1000 * ((high - high[1]) / (high[1]) +
(low - low[1]) / low[1]);
#######ATR TrailingStop Code
input trailType = {default modified, unmodified};
input ATRPeriod = 5;
input ATRFactor = 3.5;
input firstTrade = {default long, short};
def HiLo = Min(high - low, 1.5 * Average(high - low, ATRPeriod));
def HRef = if low <= high[1]
then high - close[1]
else (high - close[1]) - 0.5 * (low - high[1]);
def LRef = if high >= low[1]
then close[1] - low
else (close[1] - low) - 0.5 * (low[1] - high);
def ATRMod = ExpAverage(Max(HiLo, Max(HRef, LRef)), 2 * ATRPeriod - 1);
def loss;
switch (trailType) {
case modified:
loss = ATRFactor * ATRMod;
case unmodified:
loss = ATRFactor * Average(TrueRange(high, close, low), ATRPeriod);
}
rec state = {default init, long, short};
rec trail;
switch (state[1]) {
case init:
if (!IsNaN(loss)) {
switch (firstTrade) {
case long:
state = state.long;
trail = close - loss;
case short:
state = state.short;
trail = close + loss;
}
} else {
state = state.init;
trail = Double.NaN;
}
case long:
if (close > trail[1]) {
state = state.long;
trail = Max(trail[1], close - loss);
}
else {
state = state.short;
trail = close + loss;
}
case short:
if (close < trail[1]) {
state = state.short;
trail = Min(trail[1], close + loss);
}
else {
state = state.long;
trail = close - loss;
}
}
def BuySignal = Crosses(state == state.long, 0, CrossingDirection.ABOVE);
def SellSignal = Crosses(state == state.short, 0, CrossingDirection.ABOVE);
plot TrailingStop = trail;
TrailingStop.Hide();
####End ATR Trailing Stop Code
def A = Highest(high[1], ThermoLookBackBars);
def B = Lowest(low[1], ThermoLookBackBars);
def FiftyTwoWeekHigh = A;
def FiftyTwoWeekLow = B;
def FiftyTwoWeekScore = 10 * (((high
- FiftyTwoWeekHigh) / FiftyTwoWeekHigh) +
((low - FiftyTwoWeekLow) / FiftyTwoWeekLow));
def ThermoScore = ExpAverage(HighLowScore + FiftyTwoWeekScore, ThermoLookBackBars);
input FastLengthShort = 5;
input SlowLengthShort = 15;
input EffRatioShort = 10;
input FastLengthLong = 10;
input SlowLengthLong = 25;
input EffRatioLong = 5;
def AMA = MovAvgAdaptive(ThermoScore, FastLengthShort, SlowLengthShort, EffRatioShort);
def AMA2 = MovAvgAdaptive(ThermoScore, FastLengthLong, SlowLengthLong, EffRatioLong);
plot Line1;
Line1.Hide();
plot Line2;
Line2.Hide();
switch (PlotType) {
case AdaptiveMovingAverages:
Line1 = AMA;
Line2 = AMA2;
case Standard:
Line1 = ThermoScore;
Line2 = ThermoScore;
}
def InvisibleLine = close * 0;
plot Line3 = InvisibleLine;
Line3.Hide();
def Buy = Line1 > 0 and Line2 < 0 and state == state.long;
def StrongBuy = Line1 > 0 and Line2 >= 0 and state == state.long;
def Sell = Line1 < 0 and Line2 > 0 and state == state.short;
def StrongSell = Line1 < 0 and Line2 <= 0 and state == state.short;
AddLabel(yes, Concat("", (
if Buy then "Up"
else if StrongBuy then "Strong Up"
else if Sell then "Down"
else if StrongSell then "Strong Down"
else "Neutral"
)),
Color.BLACK
);
AssignBackgroundColor(
if Buy then Color.DARK_GREEN
else if StrongBuy then Color.GREEN
else if Sell then Color.DARK_RED
else if StrongSell then Color.RED
else Color.GRAY
);
LABEL ADDED AS A WATCHLIST COLUMN FOR EASY PICKINS
I'm a fan of this indicator so I added it as a column in my watchlist.
1. Click Gear -> Click Customize...
2. Search 'custom' and click the script icon for one of the options. I used 'Custom 4'
3. Delete the default study/condition.
4. Click 'thinkScript Editor' tab
5. Add a name and remember it to add it later -> paste in the script -> click 'Apply' and 'OK'
Code:input ThermoLookBackBars = 50; input PlotType = {default AdaptiveMovingAverages, Standard}; def HighLowScore = 1000 * ((high - high[1]) / (high[1]) + (low - low[1]) / low[1]); #######ATR TrailingStop Code input trailType = {default modified, unmodified}; input ATRPeriod = 5; input ATRFactor = 3.5; input firstTrade = {default long, short}; def HiLo = Min(high - low, 1.5 * Average(high - low, ATRPeriod)); def HRef = if low <= high[1] then high - close[1] else (high - close[1]) - 0.5 * (low - high[1]); def LRef = if high >= low[1] then close[1] - low else (close[1] - low) - 0.5 * (low[1] - high); def ATRMod = ExpAverage(Max(HiLo, Max(HRef, LRef)), 2 * ATRPeriod - 1); def loss; switch (trailType) { case modified: loss = ATRFactor * ATRMod; case unmodified: loss = ATRFactor * Average(TrueRange(high, close, low), ATRPeriod); } rec state = {default init, long, short}; rec trail; switch (state[1]) { case init: if (!IsNaN(loss)) { switch (firstTrade) { case long: state = state.long; trail = close - loss; case short: state = state.short; trail = close + loss; } } else { state = state.init; trail = Double.NaN; } case long: if (close > trail[1]) { state = state.long; trail = Max(trail[1], close - loss); } else { state = state.short; trail = close + loss; } case short: if (close < trail[1]) { state = state.short; trail = Min(trail[1], close + loss); } else { state = state.long; trail = close - loss; } } def BuySignal = Crosses(state == state.long, 0, CrossingDirection.ABOVE); def SellSignal = Crosses(state == state.short, 0, CrossingDirection.ABOVE); plot TrailingStop = trail; TrailingStop.Hide(); ####End ATR Trailing Stop Code def A = Highest(high[1], ThermoLookBackBars); def B = Lowest(low[1], ThermoLookBackBars); def FiftyTwoWeekHigh = A; def FiftyTwoWeekLow = B; def FiftyTwoWeekScore = 10 * (((high - FiftyTwoWeekHigh) / FiftyTwoWeekHigh) + ((low - FiftyTwoWeekLow) / FiftyTwoWeekLow)); def ThermoScore = ExpAverage(HighLowScore + FiftyTwoWeekScore, ThermoLookBackBars); input FastLengthShort = 5; input SlowLengthShort = 15; input EffRatioShort = 10; input FastLengthLong = 10; input SlowLengthLong = 25; input EffRatioLong = 5; def AMA = MovAvgAdaptive(ThermoScore, FastLengthShort, SlowLengthShort, EffRatioShort); def AMA2 = MovAvgAdaptive(ThermoScore, FastLengthLong, SlowLengthLong, EffRatioLong); plot Line1; Line1.Hide(); plot Line2; Line2.Hide(); switch (PlotType) { case AdaptiveMovingAverages: Line1 = AMA; Line2 = AMA2; case Standard: Line1 = ThermoScore; Line2 = ThermoScore; } def InvisibleLine = close * 0; plot Line3 = InvisibleLine; Line3.Hide(); def Buy = Line1 > 0 and Line2 < 0 and state == state.long; def StrongBuy = Line1 > 0 and Line2 >= 0 and state == state.long; def Sell = Line1 < 0 and Line2 > 0 and state == state.short; def StrongSell = Line1 < 0 and Line2 <= 0 and state == state.short; AddLabel(yes, Concat("", ( if Buy then "Up" else if StrongBuy then "Strong Up" else if Sell then "Down" else if StrongSell then "Strong Down" else "Neutral" )), Color.BLACK ); AssignBackgroundColor( if Buy then Color.DARK_GREEN else if StrongBuy then Color.GREEN else if Sell then Color.DARK_RED else if StrongSell then Color.RED else Color.GRAY );
6. Find what you just created and add it to the columns in 'Current Set'
7. Valla
Do you have to add this as a new study or just to watchlist custom ? ThanksLABEL ADDED AS A WATCHLIST COLUMN FOR EASY PICKINS
I'm a fan of this indicator so I added it as a column in my watchlist.
1. Click Gear -> Click Customize...
2. Search 'custom' and click the script icon for one of the options. I used 'Custom 4'
3. Delete the default study/condition.
4. Click 'thinkScript Editor' tab
5. Add a name and remember it to add it later -> paste in the script -> click 'Apply' and 'OK'
Code:input ThermoLookBackBars = 50; input PlotType = {default AdaptiveMovingAverages, Standard}; def HighLowScore = 1000 * ((high - high[1]) / (high[1]) + (low - low[1]) / low[1]); #######ATR TrailingStop Code input trailType = {default modified, unmodified}; input ATRPeriod = 5; input ATRFactor = 3.5; input firstTrade = {default long, short}; def HiLo = Min(high - low, 1.5 * Average(high - low, ATRPeriod)); def HRef = if low <= high[1] then high - close[1] else (high - close[1]) - 0.5 * (low - high[1]); def LRef = if high >= low[1] then close[1] - low else (close[1] - low) - 0.5 * (low[1] - high); def ATRMod = ExpAverage(Max(HiLo, Max(HRef, LRef)), 2 * ATRPeriod - 1); def loss; switch (trailType) { case modified: loss = ATRFactor * ATRMod; case unmodified: loss = ATRFactor * Average(TrueRange(high, close, low), ATRPeriod); } rec state = {default init, long, short}; rec trail; switch (state[1]) { case init: if (!IsNaN(loss)) { switch (firstTrade) { case long: state = state.long; trail = close - loss; case short: state = state.short; trail = close + loss; } } else { state = state.init; trail = Double.NaN; } case long: if (close > trail[1]) { state = state.long; trail = Max(trail[1], close - loss); } else { state = state.short; trail = close + loss; } case short: if (close < trail[1]) { state = state.short; trail = Min(trail[1], close + loss); } else { state = state.long; trail = close - loss; } } def BuySignal = Crosses(state == state.long, 0, CrossingDirection.ABOVE); def SellSignal = Crosses(state == state.short, 0, CrossingDirection.ABOVE); plot TrailingStop = trail; TrailingStop.Hide(); ####End ATR Trailing Stop Code def A = Highest(high[1], ThermoLookBackBars); def B = Lowest(low[1], ThermoLookBackBars); def FiftyTwoWeekHigh = A; def FiftyTwoWeekLow = B; def FiftyTwoWeekScore = 10 * (((high - FiftyTwoWeekHigh) / FiftyTwoWeekHigh) + ((low - FiftyTwoWeekLow) / FiftyTwoWeekLow)); def ThermoScore = ExpAverage(HighLowScore + FiftyTwoWeekScore, ThermoLookBackBars); input FastLengthShort = 5; input SlowLengthShort = 15; input EffRatioShort = 10; input FastLengthLong = 10; input SlowLengthLong = 25; input EffRatioLong = 5; def AMA = MovAvgAdaptive(ThermoScore, FastLengthShort, SlowLengthShort, EffRatioShort); def AMA2 = MovAvgAdaptive(ThermoScore, FastLengthLong, SlowLengthLong, EffRatioLong); plot Line1; Line1.Hide(); plot Line2; Line2.Hide(); switch (PlotType) { case AdaptiveMovingAverages: Line1 = AMA; Line2 = AMA2; case Standard: Line1 = ThermoScore; Line2 = ThermoScore; } def InvisibleLine = close * 0; plot Line3 = InvisibleLine; Line3.Hide(); def Buy = Line1 > 0 and Line2 < 0 and state == state.long; def StrongBuy = Line1 > 0 and Line2 >= 0 and state == state.long; def Sell = Line1 < 0 and Line2 > 0 and state == state.short; def StrongSell = Line1 < 0 and Line2 <= 0 and state == state.short; AddLabel(yes, Concat("", ( if Buy then "Up" else if StrongBuy then "Strong Up" else if Sell then "Down" else if StrongSell then "Strong Down" else "Neutral" )), Color.BLACK ); AssignBackgroundColor( if Buy then Color.DARK_GREEN else if StrongBuy then Color.GREEN else if Sell then Color.DARK_RED else if StrongSell then Color.RED else Color.GRAY );
6. Find what you just created and add it to the columns in 'Current Set'
7. Valla
Here is the script for a new study:Do you have to add this as a new study or just to watchlist custom ? Thanks
option to turn pricecolor on or off?This indicator is based on the work of The Lawyer Trader's Trend_Fuzz study. I just added buy and sell arrows to help you pick your entry points for long and short positions.
Labels are included in the top left-hand corner to let you know the current market condition. When the candles are painted red it means the stock is currently in a downtrend, green candles represent uptrend, and blue candles mean neutral.
thinkScript Code
Rich (BB code):input ThermoLookBackBars = 50; input PlotType = {default AdaptiveMovingAverages, Standard}; def HighLowScore = 1000 * ((high - high[1]) / (high[1]) + (low - low[1]) / low[1]); #ATR TrailingStop Code input trailType = {default modified, unmodified}; input ATRPeriod = 5; input ATRFactor = 3.5; input firstTrade = {default long, short}; def HiLo = Min(high - low, 1.5 * Average(high - low, ATRPeriod)); def HRef = if low <= high[1] then high - close[1] else (high - close[1]) - 0.5 * (low - high[1]); def LRef = if high >= low[1] then close[1] - low else (close[1] - low) - 0.5 * (low[1] - high); def ATRMod = ExpAverage(Max(HiLo, Max(HRef, LRef)), 2 * ATRPeriod - 1); def loss; switch (trailType) { case modified: loss = ATRFactor * ATRMod; case unmodified: loss = ATRFactor * Average(TrueRange(high, close, low), ATRPeriod); } rec state = {default init, long, short}; rec trail; switch (state[1]) { case init: if (!IsNaN(loss)) { switch (firstTrade) { case long: state = state.long; trail = close - loss; case short: state = state.short; trail = close + loss; } } else { state = state.init; trail = Double.NaN; } case long: if (close > trail[1]) { state = state.long; trail = Max(trail[1], close - loss); } else { state = state.short; trail = close + loss; } case short: if (close < trail[1]) { state = state.short; trail = Min(trail[1], close + loss); } else { state = state.long; trail = close - loss; } } def BuySignal = Crosses(state == state.long, 0, CrossingDirection.ABOVE); def SellSignal = Crosses(state == state.short, 0, CrossingDirection.ABOVE); plot TrailingStop = trail; TrailingStop.Hide(); #End ATR Trailing Stop Code def A = Highest(high[1], ThermoLookBackBars); def B = Lowest(low[1], ThermoLookBackBars); def FiftyTwoWeekHigh = A; def FiftyTwoWeekLow = B; def FiftyTwoWeekScore = 10 * (((high - FiftyTwoWeekHigh) / FiftyTwoWeekHigh) + ((low - FiftyTwoWeekLow) / FiftyTwoWeekLow)); def ThermoScore = ExpAverage(HighLowScore + FiftyTwoWeekScore, ThermoLookBackBars); input FastLengthShort = 5; input SlowLengthShort = 15; input EffRatioShort = 10; input FastLengthLong = 10; input SlowLengthLong = 25; input EffRatioLong = 5; def AMA = MovAvgAdaptive(ThermoScore, FastLengthShort, SlowLengthShort, EffRatioShort); def AMA2 = MovAvgAdaptive(ThermoScore, FastLengthLong, SlowLengthLong, EffRatioLong); plot Line1; Line1.Hide(); plot Line2; Line2.Hide(); switch (PlotType) { case AdaptiveMovingAverages: Line1 = AMA; Line2 = AMA2; case Standard: Line1 = ThermoScore; Line2 = ThermoScore; } def InvisibleLine = close * 0; plot Line3 = InvisibleLine; Line3.Hide(); def Buy = Line1 > 0 and Line2 < 0 and state == state.long; def StrongBuy = Line1 > 0 and Line2 >= 0 and state == state.long; def Sell = Line1 < 0 and Line2 > 0 and state == state.short; def StrongSell = Line1 < 0 and Line2 <= 0 and state == state.short; plot GU = BuySignal; GU.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP); GU.SetDefaultColor(GetColor(8)); GU.SetLineWeight(2); plot GX = SellSignal; GX.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN); GX.SetDefaultColor(GetColor(8)); GX.SetLineWeight(2); AssignPriceColor(if Buy then Color.DARK_GREEN else if StrongBuy then Color.GREEN else if Sell then Color.DARK_RED else if StrongSell then Color.RED else Color.BLUE); AddLabel(yes, Concat("Current Reading is ", (if Buy then "Up Trend" else if StrongBuy then "Strong Up Trend" else if Sell then "Down Trend" else if StrongSell then "Strong Down Trend" else "Neutral")), if Buy then Color.DARK_GREEN else if StrongBuy then Color.GREEN else if Sell then Color.DARK_RED else if StrongSell then Color.RED else Color.GRAY);
Shareable Link
https://tos.mx/kZjt1k
I took out the lower study from the original code. If you want to add it, place this at the end of the script above.
Rich (BB code):declare upper; input over_bought = 80; input over_sold = 20; input KPeriod = 10; input DPeriod = 10; input priceH = high; input priceL = low; input priceC = close; input slowing_period = 3; input smoothingType = {default SMA, EMA}; def lowest_k = Lowest(priceL, KPeriod); def c1 = priceC - lowest_k; def c2 = Highest(priceH, KPeriod) - lowest_k; def FastK = if c2 != 0 then c1 / c2 * 100 else 0; def FullK; def FullD; switch (smoothingType) { case SMA: FullK = Average(FastK, slowing_period); FullD = Average(FullK, DPeriod); case EMA: FullK = ExpAverage(FastK, slowing_period); FullD = ExpAverage(FullK, DPeriod); } def pricefilterup = if close > close[50] then 1 else 0; def pricefilterdown = if close < close [50] then 1 else 0; def OverBoughtAdd = if FullK < over_bought and FullK[1] >= over_bought then 1 else 0; def OverSoldAdd = if FullK > over_sold and FullK[1] <= over_sold then 1 else 0; def na = Double.NaN; #Plot arrows plot up = if StrongBuy and OverSoldAdd and pricefilterup then low - (3 * TickSize()) else na; plot down = if StrongSell and OverBoughtAdd and pricefilterdown then high + (3 * TickSize()) else na; up.SetPaintingStrategy(PaintingStrategy.ARROW_UP); down.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
What timeframe are you using for the custom column?LABEL ADDED AS A WATCHLIST COLUMN FOR EASY PICKINS
I'm a fan of this indicator so I added it as a column in my watchlist.
1. Click Gear -> Click Customize...
View attachment 13093
2. Search 'custom' and click the script icon for one of the options. I used 'Custom 4'
View attachment 13094
3. Delete the default study/condition.
View attachment 13095
4. Click 'thinkScript Editor' tab
View attachment 13096
5. Add a name and remember it to add it later -> paste in the script -> click 'Apply' and 'OK'
View attachment 13097Code:input ThermoLookBackBars = 50; input PlotType = {default AdaptiveMovingAverages, Standard}; def HighLowScore = 1000 * ((high - high[1]) / (high[1]) + (low - low[1]) / low[1]); #######ATR TrailingStop Code input trailType = {default modified, unmodified}; input ATRPeriod = 5; input ATRFactor = 3.5; input firstTrade = {default long, short}; def HiLo = Min(high - low, 1.5 * Average(high - low, ATRPeriod)); def HRef = if low <= high[1] then high - close[1] else (high - close[1]) - 0.5 * (low - high[1]); def LRef = if high >= low[1] then close[1] - low else (close[1] - low) - 0.5 * (low[1] - high); def ATRMod = ExpAverage(Max(HiLo, Max(HRef, LRef)), 2 * ATRPeriod - 1); def loss; switch (trailType) { case modified: loss = ATRFactor * ATRMod; case unmodified: loss = ATRFactor * Average(TrueRange(high, close, low), ATRPeriod); } rec state = {default init, long, short}; rec trail; switch (state[1]) { case init: if (!IsNaN(loss)) { switch (firstTrade) { case long: state = state.long; trail = close - loss; case short: state = state.short; trail = close + loss; } } else { state = state.init; trail = Double.NaN; } case long: if (close > trail[1]) { state = state.long; trail = Max(trail[1], close - loss); } else { state = state.short; trail = close + loss; } case short: if (close < trail[1]) { state = state.short; trail = Min(trail[1], close + loss); } else { state = state.long; trail = close - loss; } } def BuySignal = Crosses(state == state.long, 0, CrossingDirection.ABOVE); def SellSignal = Crosses(state == state.short, 0, CrossingDirection.ABOVE); plot TrailingStop = trail; TrailingStop.Hide(); ####End ATR Trailing Stop Code def A = Highest(high[1], ThermoLookBackBars); def B = Lowest(low[1], ThermoLookBackBars); def FiftyTwoWeekHigh = A; def FiftyTwoWeekLow = B; def FiftyTwoWeekScore = 10 * (((high - FiftyTwoWeekHigh) / FiftyTwoWeekHigh) + ((low - FiftyTwoWeekLow) / FiftyTwoWeekLow)); def ThermoScore = ExpAverage(HighLowScore + FiftyTwoWeekScore, ThermoLookBackBars); input FastLengthShort = 5; input SlowLengthShort = 15; input EffRatioShort = 10; input FastLengthLong = 10; input SlowLengthLong = 25; input EffRatioLong = 5; def AMA = MovAvgAdaptive(ThermoScore, FastLengthShort, SlowLengthShort, EffRatioShort); def AMA2 = MovAvgAdaptive(ThermoScore, FastLengthLong, SlowLengthLong, EffRatioLong); plot Line1; Line1.Hide(); plot Line2; Line2.Hide(); switch (PlotType) { case AdaptiveMovingAverages: Line1 = AMA; Line2 = AMA2; case Standard: Line1 = ThermoScore; Line2 = ThermoScore; } def InvisibleLine = close * 0; plot Line3 = InvisibleLine; Line3.Hide(); def Buy = Line1 > 0 and Line2 < 0 and state == state.long; def StrongBuy = Line1 > 0 and Line2 >= 0 and state == state.long; def Sell = Line1 < 0 and Line2 > 0 and state == state.short; def StrongSell = Line1 < 0 and Line2 <= 0 and state == state.short; AddLabel(yes, Concat("", ( if Buy then "Up" else if StrongBuy then "Strong Up" else if Sell then "Down" else if StrongSell then "Strong Down" else "Neutral" )), Color.BLACK ); AssignBackgroundColor( if Buy then Color.DARK_GREEN else if StrongBuy then Color.GREEN else if Sell then Color.DARK_RED else if StrongSell then Color.RED else Color.GRAY );
6. Find what you just created and add it to the columns in 'Current Set'
View attachment 13098
7. Valla
View attachment 13099
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
LNL Trend System for ThinkOrSwim | Indicators | 25 | ||
L3 Banker Fund Flow Trend Oscillator for ThinkOrSwim | Indicators | 33 | ||
Trend Meter For ThinkOrSwim | Indicators | 38 | ||
J | Donchian Channel Trend For ThinkOrSwim | Indicators | 5 | |
Donchian Trend Ribbon For ThinkOrSwim | Indicators | 18 |
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.