Any chance we could get a conversion of this ADX indicator? It's a solid representation of momentum advance/decline if anyone wishes to attempt it.
https://www.tradingview.com/v/MgcmUYd4/
https://www.tradingview.com/v/MgcmUYd4/
find out below. I added bar colors as well.Any chance we could get a conversion of this ADX indicator? It's a solid representation of momentum advance/decline if anyone wishes to attempt it.
https://www.tradingview.com/v/MgcmUYd4/
#// This is a different way of plotting ADX used by Leaf_West at http://tradingwithleafwest.net/.
#// The criteria for plotting ADX are described in the educational info.
# https://www.tradingview.com/script/MgcmUYd4-ADX-Trend-Strength-Leaf-West-style/
#// This is my attempt to replicate Leaf_West's indicator.
#// The BATS data feed has the usual issues. Realtime data is the way to go.
#study("Trend Strength/ADX Leaf_West style"
# Converted and mod by Sam4Cok@Samer800 - 11/2022
declare lower;
input ColorBars = yes;
input ColorSignalBar = yes;
input adxLength = 8;#, title="ADX period")
input dmiLength = 9;#(9, title="DMI Length")
input MendozaLimit = 20;
def na = Double.NaN;
#fixnan(data)
script fixnan {
input data1 = 0;
def data2;
if barnumber() == 1 then {data2 = 0;} else if IsNaN(data1)
then {data2 = data2[1];} else {data2 = data1;}
plot valid = data2;
}
#dirmov(len) =>
script dirmov {
input len = 8;
def up = high - high[1];
def down = -(low - low[1]);
def tr = TrueRange(high, close, low);
def truerange = WildersAverage(tr, len);
def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange);
def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange);
plot plus = plus1;
plot min = minus;
}
#adx(LWdilength, LWadxlength) =>
script adx {
input LWdilength = 8;
input LWadxlength = 9;
def plus = dirmov(LWdilength).plus;
def minus = dirmov(LWdilength).min;
def sum = plus + minus;
def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength);
plot ad = adx;
plot pls = plus;
plot mins = minus;
}
def ADX = ADX(dmiLength, adxLength).ad;
def up = ADX(dmiLength, adxLength).pls;
def down = ADX(dmiLength, adxLength).mins;
def LWADX = (ADX - 15) * 2.5;
def adxcolor = if up > down and LWADX>=100 then 2 else
if up > down and LWADX<100 then 1 else
if up <= down and LWADX>=100 then -2 else
if up <= down and LWADX<100 then -1 else 0;
plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone"
ZeroLine.SetDefaultColor(Color.DARK_GRAY);
plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line"
MendozaLine.SetDefaultColor(Color.GREEN);
plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone"
Threshold.SetDefaultColor(Color.RED);
plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength"
TrendStrength.AssignValueColor(if adxcolor==2 then color.GREEN else
if adxcolor==1 then Color.DARK_GREEN else
if adxcolor==-2 then Color.RED else Color.DARK_RED);
plot histogram = if IsNaN(close) then na else LWADX;
histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
histogram.AssignValueColor(if LWADX<MendozaLimit then Color.GRAY else
if adxcolor==2 then color.GREEN else
if adxcolor==1 then Color.DARK_GREEN else
if adxcolor==-2 then Color.RED else Color.DARK_RED);
histogram.SetLineWeight(3);
#--- Bar Color
AssignPriceColor(if !ColorBars then Color.CURRENT else
if LWADX<MendozaLimit then Color.GRAY else
if adxcolor==2 then color.GREEN else
if adxcolor==1 then Color.DARK_GREEN else
if adxcolor==-2 then Color.RED else Color.DARK_RED);
AssignPriceColor(if !ColorSignalBar then Color.CURRENT else
if LWADX crosses above MendozaLimit and LWADX[1]>LWADX[2] then Color.CYAN else
if LWADX crosses below MendozaLimit and LWADX[1]<LWADX[2] then Color.MAGENTA else
Color.CURRENT);
#---END Code
check the below.is there a way to create an alert if the color of the plot changes from red to green ? vise-verse
#// This is a different way of plotting ADX used by Leaf_West at http://tradingwithleafwest.net/.
#// The criteria for plotting ADX are described in the educational info.
# https://www.tradingview.com/script/MgcmUYd4-ADX-Trend-Strength-Leaf-West-style/
#// This is my attempt to replicate Leaf_West's indicator.
#// The BATS data feed has the usual issues. Realtime data is the way to go.
#study("Trend Strength/ADX Leaf_West style"
# Converted and mod by Sam4Cok@Samer800 - 11/2022
# Update, added alerts Sam4Cok@Samer800 - 11/2022;
declare lower;
input ColorBars = yes;
input ColorSignalBar = yes;
input alerts = no;
input sound = {default "NoSound", "Ding", "Bell", "Chimes", "Ring"};
input adxLength = 8;#, title="ADX period")
input dmiLength = 9;#(9, title="DMI Length")
input MendozaLimit = 20;
def na = Double.NaN;
#fixnan(data)
script fixnan {
input data1 = 0;
def data2;
if BarNumber() == 1
then {
data2 = 0;
} else if IsNaN(data1)
then {
data2 = data2[1];
} else {
data2 = data1;
}
plot valid = data2;
}
#dirmov(len) =>
script dirmov {
input len = 8;
def up = high - high[1];
def down = -(low - low[1]);
def tr = TrueRange(high, close, low);
def truerange = WildersAverage(tr, len);
def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange);
def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange);
plot plus = plus1;
plot min = minus;
}
#adx(LWdilength, LWadxlength) =>
script adx {
input LWdilength = 8;
input LWadxlength = 9;
def plus = dirmov(LWdilength).plus;
def minus = dirmov(LWdilength).min;
def sum = plus + minus;
def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength);
plot ad = adx;
plot pls = plus;
plot mins = minus;
}
def ADX = ADX(dmiLength, adxLength).ad;
def up = ADX(dmiLength, adxLength).pls;
def down = ADX(dmiLength, adxLength).mins;
def LWADX = (ADX - 15) * 2.5;
def adxcolor = if up > down and LWADX >= 100 then 2 else
if up > down and LWADX < 100 then 1 else
if up <= down and LWADX >= 100 then -2 else
if up <= down and LWADX < 100 then -1 else 0;
plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone"
ZeroLine.SetDefaultColor(Color.DARK_GRAY);
plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line"
MendozaLine.SetDefaultColor(Color.GREEN);
plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone"
Threshold.SetDefaultColor(Color.RED);
plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength"
TrendStrength.AssignValueColor(if adxcolor == 2 then Color.GREEN else
if adxcolor == 1 then Color.DARK_GREEN else
if adxcolor == -2 then Color.RED else Color.DARK_RED);
TrendStrength.SetLineWeight(2);
plot histogram = if IsNaN(close) then na else LWADX;
histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
histogram.AssignValueColor(if LWADX < MendozaLimit then Color.GRAY else
if adxcolor == 2 then Color.GREEN else
if adxcolor == 1 then Color.DARK_GREEN else
if adxcolor == -2 then Color.RED else Color.DARK_RED);
histogram.SetLineWeight(3);
#--- Bar Color
AssignPriceColor(if !ColorBars then Color.CURRENT else
if LWADX < MendozaLimit then Color.GRAY else
if adxcolor == 2 then Color.GREEN else
if adxcolor == 1 then Color.DARK_GREEN else
if adxcolor == -2 then Color.RED else Color.DARK_RED);
AssignPriceColor(if !ColorSignalBar then Color.CURRENT else
if LWADX crosses above MendozaLimit and LWADX[1] > LWADX[2] then Color.CYAN else
if LWADX crosses below MendozaLimit and LWADX[1] < LWADX[2] then Color.MAGENTA else
Color.CURRENT);
#---- Alerts
def green = adxcolor>0;
def red = adxcolor<0;
Alert(alerts and green and !green[1], "Trending Up!", Alert.BAR, sound);
Alert(alerts and red and !red[1], "Trending Down!", Alert.BAR, sound);
#---END Code
usually trade when the trend above the threshold. I.e mendoza line. It is like a trend confirmation indicatorI had to look up the meaning of "Mendoza Line" so I think I get that. Can anyone elaborate how it should be used in this indicator? Is it actionable? Or just a frame of reference for the underlying's momentum?
Thanks, I appreciate it.usually trade when the trend above the threshold. I.e mendoza line. It is like a trend confirmation indicator
As usual, excellent port Samer - thank you.find out below. I added bar colors as well.
![]()
CSS:#// This is a different way of plotting ADX used by Leaf_West at http://tradingwithleafwest.net/. #// The criteria for plotting ADX are described in the educational info. # https://www.tradingview.com/script/MgcmUYd4-ADX-Trend-Strength-Leaf-West-style/ #// This is my attempt to replicate Leaf_West's indicator. #// The BATS data feed has the usual issues. Realtime data is the way to go. #study("Trend Strength/ADX Leaf_West style" # Converted and mod by Sam4Cok@Samer800 - 11/2022 declare lower; input ColorBars = yes; input ColorSignalBar = yes; input adxLength = 8;#, title="ADX period") input dmiLength = 9;#(9, title="DMI Length") input MendozaLimit = 20; def na = Double.NaN; #fixnan(data) script fixnan { input data1 = 0; def data2; if barnumber() == 1 then {data2 = 0;} else if IsNaN(data1) then {data2 = data2[1];} else {data2 = data1;} plot valid = data2; } #dirmov(len) => script dirmov { input len = 8; def up = high - high[1]; def down = -(low - low[1]); def tr = TrueRange(high, close, low); def truerange = WildersAverage(tr, len); def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange); def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange); plot plus = plus1; plot min = minus; } #adx(LWdilength, LWadxlength) => script adx { input LWdilength = 8; input LWadxlength = 9; def plus = dirmov(LWdilength).plus; def minus = dirmov(LWdilength).min; def sum = plus + minus; def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength); plot ad = adx; plot pls = plus; plot mins = minus; } def ADX = ADX(dmiLength, adxLength).ad; def up = ADX(dmiLength, adxLength).pls; def down = ADX(dmiLength, adxLength).mins; def LWADX = (ADX - 15) * 2.5; def adxcolor = if up > down and LWADX>=100 then 2 else if up > down and LWADX<100 then 1 else if up <= down and LWADX>=100 then -2 else if up <= down and LWADX<100 then -1 else 0; plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone" ZeroLine.SetDefaultColor(Color.DARK_GRAY); plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line" MendozaLine.SetDefaultColor(Color.GREEN); plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone" Threshold.SetDefaultColor(Color.RED); plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength" TrendStrength.AssignValueColor(if adxcolor==2 then color.GREEN else if adxcolor==1 then Color.DARK_GREEN else if adxcolor==-2 then Color.RED else Color.DARK_RED); plot histogram = if IsNaN(close) then na else LWADX; histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); histogram.AssignValueColor(if LWADX<MendozaLimit then Color.GRAY else if adxcolor==2 then color.GREEN else if adxcolor==1 then Color.DARK_GREEN else if adxcolor==-2 then Color.RED else Color.DARK_RED); histogram.SetLineWeight(3); #--- Bar Color AssignPriceColor(if !ColorBars then Color.CURRENT else if LWADX<MendozaLimit then Color.GRAY else if adxcolor==2 then color.GREEN else if adxcolor==1 then Color.DARK_GREEN else if adxcolor==-2 then Color.RED else Color.DARK_RED); AssignPriceColor(if !ColorSignalBar then Color.CURRENT else if LWADX crosses above MendozaLimit and LWADX[1]>LWADX[2] then Color.CYAN else if LWADX crosses below MendozaLimit and LWADX[1]<LWADX[2] then Color.MAGENTA else Color.CURRENT); #---END Code
##### Begin Code #####
# SD_ADXLabel
# Scott XXX
# Version: 01
# Original: November 17, 2020
# Last Mod: November 18, 2020
declare upper;
input ADXLength = 8;
input ADXLower = 15;
input ADXMid = 35;
input ADXHigh = 100;
input MALength = 10;
def ADXlabel = reference ADX(ADXLength).ADX;
def MA = reference HullMovingAvg(close,MALength);
AddLabel(yes, " ADX SETTING UP ", if ADXlabel < ADXLower then Color.CYAN else Color.BLACK);
AddLabel(yes, " ADX WATCH ", if ADXlabel < ADXMid then Color.WHITE else Color.BLACK);
AddLabel(yes, " ADX TREND WEAKENING ", if (ADXlabel < ADXlabel[1]) then Color.YELLOW else Color.BLACK);
AddLabel(yes, " UP TREND ", if ADXlabel > ADXlabel[1] and MA > MA[1] then Color.GREEN else Color.BLACK);
AddLabel(yes, " DOWN TREND ", if ADXlabel > ADXlabel[1] and MA < MA[1] then Color.RED else Color.BLACK);
AddLabel(yes, " ADX HIGH ", if ADXlabel > ADXHigh then Color.MAGENTA else Color.BLACK);
##### End Code #####
Hi Samercheck the below.
CSS:#// This is a different way of plotting ADX used by Leaf_West at http://tradingwithleafwest.net/. #// The criteria for plotting ADX are described in the educational info. # https://www.tradingview.com/script/MgcmUYd4-ADX-Trend-Strength-Leaf-West-style/ #// This is my attempt to replicate Leaf_West's indicator. #// The BATS data feed has the usual issues. Realtime data is the way to go. #study("Trend Strength/ADX Leaf_West style" # Converted and mod by Sam4Cok@Samer800 - 11/2022 # Update, added alerts Sam4Cok@Samer800 - 11/2022; declare lower; input ColorBars = yes; input ColorSignalBar = yes; input alerts = no; input sound = {default "NoSound", "Ding", "Bell", "Chimes", "Ring"}; input adxLength = 8;#, title="ADX period") input dmiLength = 9;#(9, title="DMI Length") input MendozaLimit = 20; def na = Double.NaN; #fixnan(data) script fixnan { input data1 = 0; def data2; if BarNumber() == 1 then { data2 = 0; } else if IsNaN(data1) then { data2 = data2[1]; } else { data2 = data1; } plot valid = data2; } #dirmov(len) => script dirmov { input len = 8; def up = high - high[1]; def down = -(low - low[1]); def tr = TrueRange(high, close, low); def truerange = WildersAverage(tr, len); def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange); def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange); plot plus = plus1; plot min = minus; } #adx(LWdilength, LWadxlength) => script adx { input LWdilength = 8; input LWadxlength = 9; def plus = dirmov(LWdilength).plus; def minus = dirmov(LWdilength).min; def sum = plus + minus; def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength); plot ad = adx; plot pls = plus; plot mins = minus; } def ADX = ADX(dmiLength, adxLength).ad; def up = ADX(dmiLength, adxLength).pls; def down = ADX(dmiLength, adxLength).mins; def LWADX = (ADX - 15) * 2.5; def adxcolor = if up > down and LWADX >= 100 then 2 else if up > down and LWADX < 100 then 1 else if up <= down and LWADX >= 100 then -2 else if up <= down and LWADX < 100 then -1 else 0; plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone" ZeroLine.SetDefaultColor(Color.DARK_GRAY); plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line" MendozaLine.SetDefaultColor(Color.GREEN); plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone" Threshold.SetDefaultColor(Color.RED); plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength" TrendStrength.AssignValueColor(if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); TrendStrength.SetLineWeight(2); plot histogram = if IsNaN(close) then na else LWADX; histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); histogram.AssignValueColor(if LWADX < MendozaLimit then Color.GRAY else if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); histogram.SetLineWeight(3); #--- Bar Color AssignPriceColor(if !ColorBars then Color.CURRENT else if LWADX < MendozaLimit then Color.GRAY else if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); AssignPriceColor(if !ColorSignalBar then Color.CURRENT else if LWADX crosses above MendozaLimit and LWADX[1] > LWADX[2] then Color.CYAN else if LWADX crosses below MendozaLimit and LWADX[1] < LWADX[2] then Color.MAGENTA else Color.CURRENT); #---- Alerts def green = adxcolor>0; def red = adxcolor<0; Alert(alerts and green and !green[1], "Trending Up!", Alert.BAR, sound); Alert(alerts and red and !red[1], "Trending Down!", Alert.BAR, sound); #---END Code
input ColorBars = no;
input ColorSignalBar = no;
input alerts = no;
input sound = {default "NoSound", "Ding", "Bell", "Chimes", "Ring"};
input adxLength = 8;#, title="ADX period")
input dmiLength = 9;#(9, title="DMI Length")
input MendozaLimit = 20;
def na = Double.NaN;
#fixnan(data)
script fixnan {
input data1 = 0;
def data2;
if BarNumber() == 1
then {
data2 = 0;
} else if IsNaN(data1)
then {
data2 = data2[1];
} else {
data2 = data1;
}
plot valid = data2;
}
#dirmov(len) =>
script dirmov {
input len = 8;
def up = high - high[1];
def down = -(low - low[1]);
def tr = TrueRange(high, close, low);
def truerange = WildersAverage(tr, len);
def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange);
def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange);
plot plus = plus1;
plot min = minus;
}
#adx(LWdilength, LWadxlength) =>
script adx {
input LWdilength = 8;
input LWadxlength = 9;
def plus = dirmov(LWdilength).plus;
def minus = dirmov(LWdilength).min;
def sum = plus + minus;
def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength);
plot ad = adx;
plot pls = plus;
plot mins = minus;
}
def ADX = ADX(dmiLength, adxLength).ad;
def up = ADX(dmiLength, adxLength).pls;
def down = ADX(dmiLength, adxLength).mins;
def LWADX = (ADX - 15) * 2.5;
def adxcolor = if up > down and LWADX >= 100 then 2 else
if up > down and LWADX < 100 then 1 else
if up <= down and LWADX >= 100 then -2 else
if up <= down and LWADX < 100 then -1 else 0;
plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone"
ZeroLine.SetDefaultColor(Color.DARK_GRAY);
plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line"
MendozaLine.SetDefaultColor(Color.GREEN);
plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone"
Threshold.SetDefaultColor(Color.RED);
plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength"
TrendStrength.AssignValueColor(if adxcolor == 2 then Color.GREEN else
if adxcolor == 1 then Color.DARK_GREEN else
if adxcolor == -2 then Color.RED else Color.DARK_RED);
TrendStrength.SetLineWeight(2);
plot histogram = if IsNaN(close) then na else LWADX;
histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
histogram.AssignValueColor(if LWADX < MendozaLimit then Color.GRAY else
if adxcolor == 2 then Color.GREEN else
if adxcolor == 1 then Color.DARK_GREEN else
if adxcolor == -2 then Color.RED else Color.ORANGE);
histogram.SetLineWeight(3);
#--- Bar Color
AssignPriceColor(if !ColorBars then Color.CURRENT else
if LWADX < MendozaLimit then Color.Light_GRAY else
if adxcolor == 2 then Color.DARK_GREEN else
if adxcolor == 1 then Color.GREEN else
if adxcolor == -2 then Color.RED else Color.MAGENTA);
AssignPriceColor(if !ColorSignalBar then Color.CURRENT else
if LWADX crosses above MendozaLimit and LWADX[1] > LWADX[2] then Color.CYAN else
if LWADX crosses below MendozaLimit and LWADX[1] < LWADX[2] then Color.MAGENTA else
Color.CURRENT);
#ALV ADDED CLOUD
AddCloud(
if LWADX >= MendozaLimit and adxcolor > 0 then Double.POSITIVE_INFINITY else Double.NaN,
if LWADX >= MendozaLimit and adxcolor > 0 then Double.NEGATIVE_INFINITY else Double.NaN, Color.CYAN
);
AddCloud(
if LWADX >= MendozaLimit and adxcolor < 0 then Double.POSITIVE_INFINITY else Double.NaN,
if LWADX >= MendozaLimit and adxcolor < 0 then Double.NEGATIVE_INFINITY else Double.NaN, Color.PINK
);
#---- Alerts
def green = adxcolor > 0;
def red = adxcolor < 0;
Alert(alerts and green and !green[1], "Trending Up!", Alert.BAR, sound);
Alert(alerts and red and !red[1], "Trending Down!", Alert.BAR, sound);
#---END Code
Cloud plot after confirmed condition in TOS.Hi Samer
Thank you so much for your work and contribution to this community. I love this indicator which helps me a lot when combined with other indicators. I tried adding a cloud and using it as an upper indicator to see the results as the chart is being constructed. I am not a coder, just added cloud statements from another indicator and tried to make it work. There are some spaces when the cloud is missing the corresponding color (see arrows in upper and boxes in lower studies). I am not sure what is missing. I went over different posts related to clouds here but couldn't solve the issue.
Kindly request your help to fix this, if possible.
Thank you!!
View attachment 19218
The code is the same as above except for the cloud addition.
Code:input ColorBars = no; input ColorSignalBar = no; input alerts = no; input sound = {default "NoSound", "Ding", "Bell", "Chimes", "Ring"}; input adxLength = 8;#, title="ADX period") input dmiLength = 9;#(9, title="DMI Length") input MendozaLimit = 20; def na = Double.NaN; #fixnan(data) script fixnan { input data1 = 0; def data2; if BarNumber() == 1 then { data2 = 0; } else if IsNaN(data1) then { data2 = data2[1]; } else { data2 = data1; } plot valid = data2; } #dirmov(len) => script dirmov { input len = 8; def up = high - high[1]; def down = -(low - low[1]); def tr = TrueRange(high, close, low); def truerange = WildersAverage(tr, len); def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange); def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange); plot plus = plus1; plot min = minus; } #adx(LWdilength, LWadxlength) => script adx { input LWdilength = 8; input LWadxlength = 9; def plus = dirmov(LWdilength).plus; def minus = dirmov(LWdilength).min; def sum = plus + minus; def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength); plot ad = adx; plot pls = plus; plot mins = minus; } def ADX = ADX(dmiLength, adxLength).ad; def up = ADX(dmiLength, adxLength).pls; def down = ADX(dmiLength, adxLength).mins; def LWADX = (ADX - 15) * 2.5; def adxcolor = if up > down and LWADX >= 100 then 2 else if up > down and LWADX < 100 then 1 else if up <= down and LWADX >= 100 then -2 else if up <= down and LWADX < 100 then -1 else 0; plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone" ZeroLine.SetDefaultColor(Color.DARK_GRAY); plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line" MendozaLine.SetDefaultColor(Color.GREEN); plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone" Threshold.SetDefaultColor(Color.RED); plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength" TrendStrength.AssignValueColor(if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); TrendStrength.SetLineWeight(2); plot histogram = if IsNaN(close) then na else LWADX; histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); histogram.AssignValueColor(if LWADX < MendozaLimit then Color.GRAY else if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.ORANGE); histogram.SetLineWeight(3); #--- Bar Color AssignPriceColor(if !ColorBars then Color.CURRENT else if LWADX < MendozaLimit then Color.Light_GRAY else if adxcolor == 2 then Color.DARK_GREEN else if adxcolor == 1 then Color.GREEN else if adxcolor == -2 then Color.RED else Color.MAGENTA); AssignPriceColor(if !ColorSignalBar then Color.CURRENT else if LWADX crosses above MendozaLimit and LWADX[1] > LWADX[2] then Color.CYAN else if LWADX crosses below MendozaLimit and LWADX[1] < LWADX[2] then Color.MAGENTA else Color.CURRENT); #ALV ADDED CLOUD AddCloud( if LWADX >= MendozaLimit and adxcolor > 0 then Double.POSITIVE_INFINITY else Double.NaN, if LWADX >= MendozaLimit and adxcolor > 0 then Double.NEGATIVE_INFINITY else Double.NaN, Color.CYAN ); AddCloud( if LWADX >= MendozaLimit and adxcolor < 0 then Double.POSITIVE_INFINITY else Double.NaN, if LWADX >= MendozaLimit and adxcolor < 0 then Double.NEGATIVE_INFINITY else Double.NaN, Color.PINK ); #---- Alerts def green = adxcolor > 0; def red = adxcolor < 0; Alert(alerts and green and !green[1], "Trending Up!", Alert.BAR, sound); Alert(alerts and red and !red[1], "Trending Down!", Alert.BAR, sound); #---END Code
def limit = LWADX >= MendozaLimit;
def pos = Double.POSITIVE_INFINITY;
def neg = Double.NEGATIVE_INFINITY;
def posUp = if limit and adxcolor > 0 then pos else
if limit and adxcolor < 0 then neg else posUp[1];
plot posUp1 = if IsNaN(close) then na else posUp;
def posDn = if limit and adxcolor < 0 then pos else
if limit and adxcolor > 0 then neg else posDn[1];
plot posDn1 = if IsNaN(close) then na else posDn;
AddCloud(posUp1, posDn1, Color.DARK_GREEN, Color.DARK_RED);
Excellent! I'll try it. Thank you very much sir.Cloud plot after confirmed condition in TOS.
try to replace the added cloud with the below. It won't resolve the issue but may fill the gaps.
CSS:def limit = LWADX >= MendozaLimit; def pos = Double.POSITIVE_INFINITY; def neg = Double.NEGATIVE_INFINITY; def posUp = if limit and adxcolor > 0 then pos else if limit and adxcolor < 0 then neg else posUp[1]; plot posUp1 = if IsNaN(close) then na else posUp; def posDn = if limit and adxcolor < 0 then pos else if limit and adxcolor > 0 then neg else posDn[1]; plot posDn1 = if IsNaN(close) then na else posDn; AddCloud(posUp1, posDn1, Color.DARK_GREEN, Color.DARK_RED);
Is there a way to plot and up and down arrow for only the first green bar and the first red bar (not the dark_green and dark_red) of this part of the code:check the below.
CSS:#// This is a different way of plotting ADX used by Leaf_West at http://tradingwithleafwest.net/. #// The criteria for plotting ADX are described in the educational info. # https://www.tradingview.com/script/MgcmUYd4-ADX-Trend-Strength-Leaf-West-style/ #// This is my attempt to replicate Leaf_West's indicator. #// The BATS data feed has the usual issues. Realtime data is the way to go. #study("Trend Strength/ADX Leaf_West style" # Converted and mod by Sam4Cok@Samer800 - 11/2022 # Update, added alerts Sam4Cok@Samer800 - 11/2022; declare lower; input ColorBars = yes; input ColorSignalBar = yes; input alerts = no; input sound = {default "NoSound", "Ding", "Bell", "Chimes", "Ring"}; input adxLength = 8;#, title="ADX period") input dmiLength = 9;#(9, title="DMI Length") input MendozaLimit = 20; def na = Double.NaN; #fixnan(data) script fixnan { input data1 = 0; def data2; if BarNumber() == 1 then { data2 = 0; } else if IsNaN(data1) then { data2 = data2[1]; } else { data2 = data1; } plot valid = data2; } #dirmov(len) => script dirmov { input len = 8; def up = high - high[1]; def down = -(low - low[1]); def tr = TrueRange(high, close, low); def truerange = WildersAverage(tr, len); def plus1 = fixnan(100 * WildersAverage(If(up > down and up > 0, up, 0), len) / truerange); def minus = fixnan(100 * WildersAverage(If(down > up and down > 0, down, 0), len) / truerange); plot plus = plus1; plot min = minus; } #adx(LWdilength, LWadxlength) => script adx { input LWdilength = 8; input LWadxlength = 9; def plus = dirmov(LWdilength).plus; def minus = dirmov(LWdilength).min; def sum = plus + minus; def adx = 100 * WildersAverage(AbsValue(plus - minus) / (If(sum == 0, 1, sum)), LWadxlength); plot ad = adx; plot pls = plus; plot mins = minus; } def ADX = ADX(dmiLength, adxLength).ad; def up = ADX(dmiLength, adxLength).pls; def down = ADX(dmiLength, adxLength).mins; def LWADX = (ADX - 15) * 2.5; def adxcolor = if up > down and LWADX >= 100 then 2 else if up > down and LWADX < 100 then 1 else if up <= down and LWADX >= 100 then -2 else if up <= down and LWADX < 100 then -1 else 0; plot ZeroLine = if IsNaN(close) then na else 0; # "Chop Zone" ZeroLine.SetDefaultColor(Color.DARK_GRAY); plot MendozaLine = if IsNaN(close) then na else MendozaLimit; # "Mendoza Line" MendozaLine.SetDefaultColor(Color.GREEN); plot Threshold = if IsNaN(close) then na else 100; # "Extreme Zone" Threshold.SetDefaultColor(Color.RED); plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength" TrendStrength.AssignValueColor(if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); TrendStrength.SetLineWeight(2); plot histogram = if IsNaN(close) then na else LWADX; histogram.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); histogram.AssignValueColor(if LWADX < MendozaLimit then Color.GRAY else if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); histogram.SetLineWeight(3); #--- Bar Color AssignPriceColor(if !ColorBars then Color.CURRENT else if LWADX < MendozaLimit then Color.GRAY else if adxcolor == 2 then Color.GREEN else if adxcolor == 1 then Color.DARK_GREEN else if adxcolor == -2 then Color.RED else Color.DARK_RED); AssignPriceColor(if !ColorSignalBar then Color.CURRENT else if LWADX crosses above MendozaLimit and LWADX[1] > LWADX[2] then Color.CYAN else if LWADX crosses below MendozaLimit and LWADX[1] < LWADX[2] then Color.MAGENTA else Color.CURRENT); #---- Alerts def green = adxcolor>0; def red = adxcolor<0; Alert(alerts and green and !green[1], "Trending Up!", Alert.BAR, sound); Alert(alerts and red and !red[1], "Trending Down!", Alert.BAR, sound); #---END Code
add this at the end of the codeIs there a way to plot and up and down arrow for only the first green bar and the first red bar (not the dark_green and dark_red) of this part of the code:
plot TrendStrength = if IsNaN(close) then na else LWADX; # "Trend Strength"
TrendStrength.AssignValueColor(if adxcolor == 2 then Color.GREEN else
if adxcolor == 1 then Color.DARK_GREEN else
if adxcolor == -2 then Color.RED else Color.DARK_RED);
def sigUp = adxcolor == 2 and adxcolor[1] != 2;
def sigDn = adxcolor == -2 and adxcolor[1] != -2;
plot arrowUp = if sigUp then LWADX else na;
plot arrowDn = if sigDn then LWADX else na;
arrowUp.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
arrowDn.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
arrowUp.SetDefaultColor(Color.CYAN);
arrowDn.SetDefaultColor(Color.MAGENTA);
Thank you!!!add this at the end of the code
CSS:def sigUp = adxcolor == 2 and adxcolor[1] != 2; def sigDn = adxcolor == -2 and adxcolor[1] != -2; plot arrowUp = if sigUp then LWADX else na; plot arrowDn = if sigDn then LWADX else na; arrowUp.SetPaintingStrategy(PaintingStrategy.ARROW_UP); arrowDn.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN); arrowUp.SetDefaultColor(Color.CYAN); arrowDn.SetDefaultColor(Color.MAGENTA);
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
S | Stochastic Zone Strength Trend [wbburgin] For ThinkOrSwim | Custom | 0 | |
![]() |
Stan Weinstein Trend Indicator For ThinkOrSwim | Custom | 2 | |
J | Trend Follower For ThinkOrSwim | Custom | 1 | |
S | Volatility Trend (Zeiierman) for ThinkOrSwim | Custom | 0 | |
S | Predictive Trend and Structure (Expo) for ThinkOrSwim | Custom | 0 |
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.