The arrows are from the triple exhaustion studyWhat code are you using to get those result on the charts??
The arrows are from the triple exhaustion studyWhat code are you using to get those result on the charts??
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
I agree this indicator loves large price action.watching the indicator this morning with NQ. After the breakout waited for the down arrow, took the short. I was watching on the 5 min, the 1 min was too busy but it looks like the 3 min might have been better at nailing the top. Update: I think taking the short after a fast breakout will enhance the chance of success.
Would you be willing to share your chart in a link? Thank you, JeffWhat code are you using to get those result on the charts??
Would you be willing to share your Heiken Ashi Chart? Thank you,Here's what it looks like with a Heikin Ashi Indicator
Here's the code to get the plot: Chence27's Triple Exhaustion Indicator with My Heiki Ashi
added at the bottom. I have kept them separate so you can see.
*********************************************************
## Triple Exhaustion Indicator
##
##
## CREDITS
## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
##
##
## Removing the header Credit credits and description is not permitted, any modification needs to be shared.
##
## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread:
## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
## V 1.1 : @Chence27 - modifcations to better approximate original study
##
##
##
declare upper;
# --- Inputs
input over_bought = 80;
input over_sold = 20;
input KPeriod = 10;
input DPeriod = 10;
input priceH = high;
input priceL = low;
input priceC = close;
input averageType = AverageType.SIMPLE;
input length = 1000;
input paintBars = yes;
input showLabels = yes;
# --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/-
def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK;
def MACD = reference MACD()."Value";
def priceMean = Average(MACD, length);
def MACD_stdev = (MACD - priceMean) / StDev(MACD, length);
def dPlus = reference DMI()."DI+";
def dMinus = reference DMI()."DI-";
# --- End Indicators
# --- Conditions
def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15;
def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15;
def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15;
def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15;
# --- End Conditions
# -- Price Color
AssignPriceColor( if paintBars and sellerExtreme then Color.CYAN else if buyerExtreme and paintBars then Color.MAGENTA else if paintBars and sellerRegular then Color.GREEN else if buyerRegular and paintBars then Color.RED else if paintBars then Color.GRAY else Color.Current);
# --- Arrows/Triggers
plot RegularBuy = if sellerRegular[1] and !sellerRegular then low else Double.NaN;
RegularBuy.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
RegularBuy.SetDefaultColor(Color.GREEN);
plot RegularSell = if buyerRegular[1] and !buyerRegular then high else Double.NaN;
RegularSell.SetPaintingStrategy(PaintingSTrategy.ARROW_Down);
RegularSell.SetDefaultColor(Color.RED);
RegularSell.SetLineWeight(3);
RegularBuy.SetLineWeight(3);
# --- Labels
AddLabel(showLabels,"SellerRegular",Color.RED);
AddLabel(showLabels,"SellerExtreme",Color.MAGENTA);
AddLabel(showLabels,"BuyerRegular",Color.GREEN);
AddLabel(showLabels,"BuyerExtreme",Color.CYAN);
#-----------------------------------------------------------------------------------------#
#-----------------------------------------------------------------------------------------#
# My Smoothed Heikin_Ashi_Moving_Average_S2
# skaboy 2010-2021
#########declare upper;
input s33_Period = 3;
input s33_Smooth = 3;
def s33_open = ExpAverage(open, s33_Period);
def s33_close = ExpAverage(close, s33_Period);
def s33_high = ExpAverage(high, s33_Period);
def s33_low = ExpAverage(low, s33_Period);
def s33_aclose = (s33_open + s33_high + s33_low + s33_close) * 0.25;
rec s33_aopen = CompoundValue(1, (s33_aopen[1] + s33_aclose[1]) * 0.5, (s33_open[1] + s33_close[1]) * 0.5);
def s33_ahigh = Max(s33_high, Max(s33_aclose, s33_aopen));
def s33_alow = Min(s33_low, Min(s33_aclose, s33_aopen));
def Avg_s33_aopen = Average(s33_aopen, s33_Period);
def Avg_s33_aclose = Average(s33_aclose, s33_Period);
def Avg_s33_ahigh = Average(s33_ahigh, s33_Smooth);
def Avg_s33_alow = Average(s33_alow, s33_Smooth);
def s33_Color = Avg_s33_aclose >= Avg_s33_aopen;
def s33_Sell = s33_Color[1] > s33_Color[0];
def s33_Buy = s33_Color[1] < s33_Color[0];
#-------------------display enhancement--------------------#
AddCloud(Avg_s33_aopen, Avg_s33_aclose, CreateColor(255, 0, 0), CreateColor(255, 255, 0));
AddCloud(Avg_s33_aopen, Avg_s33_aclose, CreateColor(255, 0, 0), CreateColor(255, 255, 0));
AddCloud(Avg_s33_aopen, Avg_s33_aclose, CreateColor(255, 0, 0), CreateColor(255, 255, 0));
#-----------------------------------------------------------------------------------------#
plot top_Signal = s33_Sell;
top_Signal.SetDefaultColor(CreateColor(255, 178, 0));
top_Signal.SetLineWeight(2);
top_Signal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
plot bot_Signal = s33_Buy;
bot_Signal.SetDefaultColor(CreateColor(255, 255, 0));
bot_Signal.SetLineWeight(2);
bot_Signal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
#-------------------end display enhancement ----------------------------#
Thanks for the code, I am not able to get the scanner to work. can you provide details on using the scanner. thanksCheck to see if all criteria was coded as you indicated. Hopefully this is what you were looking for.
Triple Exhaustion Indicator
Ruby:## Triple Exhaustion Indicator ## ## ## CREDITS ## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/ ## ## ## Removing the header Credit credits and description is not permitted, any modification needs to be shared. ## ## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread: ## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/ ## ## ## declare upper; # --- Inputs input over_bought = 80; input over_sold = 20; input KPeriod = 10; input DPeriod = 10; input priceH = high; input priceL = low; input priceC = close; input averageType = AverageType.SIMPLE; input length = 1000; input paintBars = yes; input showLabels = yes; # --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/- def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK; def MACD = reference MACD()."Value"; def priceMean = Average(MACD, length); def MACD_stdev = (MACD - priceMean) / StDev(MACD, length); def dPlus = reference DMI()."DI+"; def dMinus = reference DMI()."DI-"; # --- End Indicators # --- Conditions def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15; def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15; def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15; def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15; # --- End Conditions # -- Price Color AssignPriceColor( if paintBars and sellerExtreme then Color.CYAN else if buyerExtreme and paintBars then Color.GREEN else if paintBars and sellerRegular then Color.YELLOW else if buyerRegular and paintBars then Color.DARK_GREEN else if paintBars then Color.GRAY else Color.Current); # --- Arrows/Triggers plot RegularBuy = if sellerRegular[1] and !sellerRegular then low else Double.NaN; plot ExtremeBuy = if sellerExtreme[1] and !sellerExtreme then low else Double.NaN; RegularBuy.SetPaintingStrategy(PaintingSTrategy.ARROW_UP); ExtremeBuy.SetPaintingSTrategy(paintingSTrategy.Arrow_UP); RegularBuy.SetDefaultColor(Color.LIME); ExtremeBuy.SetDefaultColor(Color.GREEN); plot RegularSell = if buyerRegular[1] and !buyerRegular then high else Double.NaN; plot ExtremeSell = if buyerExtreme[1] and !buyerExtreme then high else Double.NaN; RegularSell.SetPaintingStrategy(PaintingSTrategy.ARROW_Down); ExtremeSell.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN); RegularSell.SetDefaultColor(Color.Light_RED); ExtremeSell.SetDefaultColor(Color.RED); # --- Labels AddLabel(showLabels,"SellerRegular",Color.YELLOW); AddLabel(showLabels,"SellerExtreme",Color.CYAN); AddLabel(showLabels,"BuyerRegular",Color.DARK_GREEN); AddLabel(showLabels,"BuyerExtreme",Color.GREEN);
Triple Exhaustion Indicator SCAN (Scanner)
**UPDATE - added extreme buy and trend plots!
Ruby:## Triple Exhaustion Indicator SCAN ## ## ## CREDITS ## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/ ## SCAN requested by @Trader_Andrew ## ## Removing the header Credit credits and description is not permitted, any modification needs to be shared. ## ## V 1.1 : @cos251 - Added Extreme buy arrow and trend plots ## ## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread: ## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/ ## : SCAN version requested by @Trader_Andrew ## ## ## # --- Inputs input over_bought = 80; input over_sold = 20; input KPeriod = 10; input DPeriod = 10; input priceH = high; input priceL = low; input priceC = close; input averageType = AverageType.SIMPLE; input length = 1000; input paintBars = yes; input showLabels = yes; # --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/- def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK; def MACD = reference MACD()."Value"; def priceMean = Average(MACD, length); def MACD_stdev = (MACD - priceMean) / StDev(MACD, length); def dPlus = reference DMI()."DI+"; def dMinus = reference DMI()."DI-"; # --- End Indicators # --- Conditions def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15; def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15; def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15; def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15; # --- End Conditions # --- Arrows/Triggers plot RegularBuyArrow = if sellerRegular[1] and !sellerRegular then 1 else Double.NaN; plot ExtremeBuyArrow = if sellerExtreme[1] and !sellerExtreme then 1 else Double.NaN; plot RegularSellArrow = if buyerRegular[1] and !buyerRegular then 1 else Double.NaN; plot ExtremeSellArrow = if buyerExtreme[1] and !buyerExtreme then 1 else Double.NaN; plot RegularBuyTrendExists = if sellerRegular then 1 else Double.NaN; plot ExtremeBuyTrendExists = if sellerExtreme then 1 else Double.NaN; plot RegularSellTrendExists = if buyerRegular then 1 else Double.NaN; plot ExtremeSellTrendExists = if buyerExtreme then 1 else DOuble.NaN;
I am not able to get scanner to work, can you provide details . thanks
I have copy the scanner code paste it to the scanner study. But I am getting Error. can you kindly help to get the scanner working .. thanksTriple Exhaustion Indicator SCAN (Scanner)
**UPDATE - added extreme buy and trend plots!
Ruby:## Triple Exhaustion Indicator SCAN ## ## ## CREDITS ## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/ ## SCAN requested by @Trader_Andrew ## ## Removing the header Credit credits and description is not permitted, any modification needs to be shared. ## ## V 1.1 : @cos251 - Added Extreme buy arrow and trend plots ## ## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread: ## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/ ## : SCAN version requested by @Trader_Andrew ## ## ## # --- Inputs input over_bought = 80; input over_sold = 20; input KPeriod = 10; input DPeriod = 10; input priceH = high; input priceL = low; input priceC = close; input averageType = AverageType.SIMPLE; input length = 1000; input paintBars = yes; input showLabels = yes; # --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/- def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK; def MACD = reference MACD()."Value"; def priceMean = Average(MACD, length); def MACD_stdev = (MACD - priceMean) / StDev(MACD, length); def dPlus = reference DMI()."DI+"; def dMinus = reference DMI()."DI-"; # --- End Indicators # --- Conditions def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15; def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15; def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15; def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15; # --- End Conditions # --- Arrows/Triggers plot RegularBuyArrow = if sellerRegular[1] and !sellerRegular then 1 else Double.NaN; plot ExtremeBuyArrow = if sellerExtreme[1] and !sellerExtreme then 1 else Double.NaN; plot RegularSellArrow = if buyerRegular[1] and !buyerRegular then 1 else Double.NaN; plot ExtremeSellArrow = if buyerExtreme[1] and !buyerExtreme then 1 else Double.NaN; plot RegularBuyTrendExists = if sellerRegular then 1 else Double.NaN; plot ExtremeBuyTrendExists = if sellerExtreme then 1 else Double.NaN; plot RegularSellTrendExists = if buyerRegular then 1 else Double.NaN; plot ExtremeSellTrendExists = if buyerExtreme then 1 else DOuble.NaN;
Yes it is mobile friendly... you will not see the colored candles only the arrows which indicates the end of exhaustion. I use it with my mobile setup.Thank you @cos251. This is a great indicator. Can it be mobile friendly?
Copy everything here and paste it into your TOS. Alterenatively, jusy copt the Heikin Ashi portion.Would you be willing to share your Heiken Ashi Chart? Thank you,
Jeff
# Triple Exhaustion Indicator
##
##
## CREDITS
## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
##
##
## Removing the header Credit credits and description is not permitted, any modification needs to be shared.
##
## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread:
## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
##
##
## adding MTF labels @irishgold 08/22/2022
declare upper;
input agperiod1 = { "1 min", default "2 min", "3 min", "5 min", "10 min", "15 min", "30 min", "1 hour", "2 hours", "4 hours", "Day", "Week", "Month"};
input agperiod2 = {"1 min", "2 min", "3 min", default "5 min", "10 min", "15 min", "30 min", "1 hour", "2 hours", "4 hours", "Day", "Week", "Month"};
input agperiod3 = {"1 min", "2 min", "3 min", "5 min", default "10 min", "15 min", "30 min", "1 hour", "2 hours", "4 hours", "Day", "Week", "Month"};
input agperiod4 = {"1 min", "2 min", "3 min", "5 min", "10 min", default "15 min", "30 min", "1 hour", "2 hours", "4 hours", "Day", "Week", "Month"};
input DI_Length = 14;
# --- Inputs
input over_bought = 80;
input over_sold = 20;
input KPeriod = 10;
input DPeriod = 10;
# --- Def
def currentPeriod = GetAggregationPeriod();
def priceH1 = high(period = agperiod1);
def priceH2 = high(period = agperiod2);
def priceH3 = high(period = agperiod3);
def priceH4 = high(period = agperiod4);
def priceL1 = low(period = agperiod1);
def priceL2 = low(period = agperiod2);
def priceL3 = low(period = agperiod3);
def priceL4 = low(period = agperiod4);
def priceC1 = close(period = agperiod1);
def priceC2 = close(period = agperiod2);
def priceC3 = close(period = agperiod3);
def priceC4 = close(period = agperiod4);
input priceH = high;
input priceL = low;
input priceC = close;
input averageType = AverageType.SIMPLE;
input length = 500;
input paintBars = yes;
input showLabels = yes;
input percentGain = .005;
# --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/-
def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK;
def SlowK1 = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH1, priceL1, priceC1, 3, averageType).FullK;
def SlowK2 = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH2, priceL2, priceC2, 3, averageType).FullK;
def SlowK3 = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH3, priceL3, priceC3, 3, averageType).FullK;
def SlowK4 = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH4, priceL4, priceC4, 3, averageType).FullK;
def MACD = reference MACD()."Value";
# This section is for the aggregations term MACD
def MACD1 = (ExpAverage(priceC1[1], 12)) - (ExpAverage(priceC1[1], 26));
def MACD2 = (ExpAverage(priceC2[1], 12)) - (ExpAverage(priceC2[1], 26));
def MACD3 = (ExpAverage(priceC3[1], 12)) - (ExpAverage(priceC3[1], 26));
def MACD4 = (ExpAverage(priceC4[1], 12)) - (ExpAverage(priceC4[1], 26));
def priceMean1 = SimpleMovingAvg(MACD1, length);
def priceMean2 = SimpleMovingAvg(MACD2, length);
def priceMean3 = SimpleMovingAvg(MACD3, length);
def priceMean4 = SimpleMovingAvg(MACD4, length);
def MACD_stdev1 = (MACD1 - priceMean1) / StDev(MACD1, length);
def MACD_stdev2 = (MACD2 - priceMean2) / StDev(MACD2, length);
def MACD_stdev3 = (MACD3 - priceMean3) / StDev(MACD3, length);
def MACD_stdev4 = (MACD4 - priceMean4) / StDev(MACD4, length);
def priceMean = SimpleMovingAvg(MACD, length);
def MACD_stdev = (MACD - priceMean) / StDev(MACD, length);
def dPlus = reference DMI()."DI+";
def dMinus = reference DMI()."DI-";
# DMI computations
def hiDiff1 = priceH1 - priceH1[1];
def loDiff1 = priceL1[1] - priceL1;
def plusDM1 = if hiDiff1 > loDiff1 and hiDiff1 > 0 then hiDiff1 else 0;
def minusDM1 = if loDiff1 > hiDiff1 and loDiff1 > 0 then loDiff1 else 0;
def ATR1 = MovingAverage(averageType, TrueRange(priceH1, priceC1, priceL1), DI_Length);
def dPlus1 = 100 * MovingAverage(AverageType.WILDERS, plusDM1, DI_Length) / ATR1;
def dMinus1 = 100 * MovingAverage(AverageType.WILDERS, minusDM1, DI_Length) / ATR1;
def hiDiff2 = priceH2 - priceH2[1];
def loDiff2 = priceL2[1] - priceL2;
def plusDM2 = if hiDiff2 > loDiff2 and hiDiff2 > 0 then hiDiff2 else 0;
def minusDM2 = if loDiff2 > hiDiff2 and loDiff2 > 0 then loDiff2 else 0;
def ATR2 = MovingAverage(averageType, TrueRange(priceH2, priceC2, priceL2),
DI_Length);
def dPlus2 = 100 * MovingAverage(AverageType.WILDERS, plusDM2, DI_Length) / ATR2;
def dMinus2 = 100 * MovingAverage(AverageType.WILDERS, minusDM2, DI_Length) / ATR2;
def hiDiff3 = priceH3 - priceH3[1];
def loDiff3 = priceL3[1] - priceL3;
def plusDM3 = if hiDiff3 > loDiff3 and hiDiff3 > 0 then hiDiff3 else 0;
def minusDM3 = if loDiff3 > hiDiff3 and loDiff3 > 0 then loDiff3 else 0;
def ATR3 = MovingAverage(averageType, TrueRange(priceH3, priceC3, priceL3), DI_Length);
def dPlus3 = 100 * MovingAverage(AverageType.WILDERS, plusDM3, DI_Length) /
ATR3;
def dMinus3 = 100 * MovingAverage(AverageType.WILDERS, minusDM3, DI_Length) / ATR3;
def hiDiff4 = priceH4 - priceH4[1];
def loDiff4 = priceL4[1] - priceL4;
def plusDM4 = if hiDiff4 > loDiff4 and hiDiff4 > 0 then hiDiff4 else 0;
def minusDM4 = if loDiff4 > hiDiff4 and loDiff4 > 0 then loDiff4 else 0;
def ATR4 = MovingAverage(averageType, TrueRange(priceH4, priceC4, priceL4), DI_Length);
def dPlus4 = 100 * MovingAverage(AverageType.WILDERS, plusDM4, DI_Length) / ATR4;
def dMinus4 = 100 * MovingAverage(AverageType.WILDERS, minusDM4, DI_Length) / ATR4;
# --- End Indicators
# --- Conditions
def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15;
def sellerRegular1 = SlowK1 < 20 and MACD_stdev1 < -1 and dPlus1 < 15;
def sellerRegular2 = SlowK2 < 20 and MACD_stdev2 < -1 and dPlus2 < 15;
def sellerRegular3 = SlowK3 < 20 and MACD_stdev3 < -1 and dPlus3 < 15;
def sellerRegular4 = SlowK4 < 20 and MACD_stdev4 < -1 and dPlus4 < 15;
def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15;
def sellerExtreme1 = SlowK1 < 20 and MACD_stdev1 < -2 and dPlus1 < 15;
def sellerExtreme2 = SlowK2 < 20 and MACD_stdev2 < -2 and dPlus2 < 15;
def sellerExtreme3 = SlowK3 < 20 and MACD_stdev3 < -2 and dPlus3 < 15;
def sellerExtreme4 = SlowK4 < 20 and MACD_stdev4 < -2 and dPlus4 < 15;
def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15;
def buyerRegular1 = SlowK1 > 80 and MACD_stdev1 > 1 and dMinus1 < 15;
def buyerRegular2 = SlowK2 > 80 and MACD_stdev2 > 1 and dMinus2 < 15;
def buyerRegular3 = SlowK3 > 80 and MACD_stdev3 > 1 and dMinus3 < 15;
def buyerRegular4 = SlowK4 > 80 and MACD_stdev4 > 1 and dMinus4 < 15;
def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15;
def buyerExtreme1 = SlowK1 > 80 and MACD_stdev1 > 2 and dMinus1 < 15;
def buyerExtreme2 = SlowK2 > 80 and MACD_stdev2 > 2 and dMinus2 < 15;
def buyerExtreme3 = SlowK3 > 80 and MACD_stdev3 > 2 and dMinus3 < 15;
def buyerExtreme4 = SlowK4 > 80 and MACD_stdev4 > 2 and dMinus4 < 15;
def priceJump = if close[1] > (open[5] + open[5] * percentGain) then 1 else 0;
# --- End Conditions
# calc vertical placement for arrows
#def arrow3dwn = if !x3d then na else high + (.001 * high);
#def arrow2dwn = if !x2d then na else high + (.0005 * high);
#def arrow1dwn = if !x1d then na else high + (.0001 * high);
#def arrow1up = if !x1u then na else low - (.0001 * high);
#def arrow2up = if !x2u then na else low - (.0005 * high);
#def arrow3up = if !x3u then na else low - (.001 * high);
declare once_per_bar;
input LW1 = 2;
input LW2 = 2;
input LW3 = 2;
input LW4 = 2;
# define distance away from low/high to plot signal
def AvgBarHeight_LN = Power(Double.E, Average(Log(Max(high - low, TickSize())), 5));
def AvgBarHeight = Average(Max(high - low, TickSize()), 5);
#plot graph_BarInfo_Up = AvgBarHeight_LN;
#graph_BarInfo_Up.SetPaintingStrategy(PaintingStrategy.arrow_down);
#plot graph_BarInfo_Dn = AvgBarHeight;
#graph_BarInfo_Dn.SetPaintingStrategy(PaintingStrategy.arrow_up);
#+ (.001 * high);
#def arrow2dwn = if !x2d then na else high + (.0005 * high);
#def arrow1dwn = if !x1d then na else high + (.0001 * high);
# --- Plot
plot RegularBuy = if sellerRegular[1] and !sellerRegular then low else Double.NaN;
plot ExtremeBuy = if sellerExtreme[1] and !sellerExtreme then low else Double.NaN;
plot RegularSell = if buyerRegular[1] and !buyerRegular then high else Double.NaN;
plot ExtremeSell = if buyerExtreme[1] and !buyerExtreme then high else Double.NaN;
plot RegularBuy1 = if sellerRegular1[1] and !sellerRegular1 then low else Double.NaN;
plot ExtremeBuy1 = if sellerExtreme1[1] and !sellerExtreme1 then low else Double.NaN;
plot RegularSell1 = if buyerRegular1[1] and !buyerRegular1 then high else Double.NaN;
plot ExtremeSell1 = if buyerExtreme1[1] and !buyerExtreme1 then high else Double.NaN;
plot RegularBuy2 = if sellerRegular2[1] and !sellerRegular2 then low else Double.NaN;
plot ExtremeBuy2 = if sellerExtreme2[1] and !sellerExtreme2 then low else Double.NaN;
plot RegularSell2 = if buyerRegular2[1] and !buyerRegular2 then high else Double.NaN;
plot ExtremeSell2 = if buyerExtreme2[1] and !buyerExtreme2 then high else Double.NaN;
plot RegularBuy3 = if sellerRegular3[1] and !sellerRegular3 then low else Double.NaN;
plot ExtremeBuy3 = if sellerExtreme3[1] and !sellerExtreme3 then low else Double.NaN;
plot RegularSell3 = if buyerRegular3[1] and !buyerRegular3 then high else Double.NaN;
plot ExtremeSell3 = if buyerExtreme3[1] and !buyerExtreme3 then high else Double.NaN;
plot RegularBuy4 = if sellerRegular4[1] and !sellerRegular4 then low else Double.NaN;
plot ExtremeBuy4 = if sellerExtreme4[1] and !sellerExtreme4 then low else Double.NaN;
plot RegularSell4 = if buyerRegular4[1] and !buyerRegular4 then high else Double.NaN;
plot ExtremeSell4 = if buyerExtreme4[1] and !buyerExtreme4 then high else Double.NaN;
# --- Arrows
#RegularBuy.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#ExtremeBuy.SetPaintingSTrategy(paintingSTrategy.Arrow_UP);
#RegularSell.SetPaintingStrategy(PaintingSTrategy.ARROW_down);
#ExtremeSell.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN);
#RegularBuy1.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#ExtremeBuy1.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#RegularSell1.SetPaintingStrategy(PaintingSTrategy.ARROW_down);
#ExtremeSell1.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN);
AddVerticalLine(RegularBuy1, " 1", Color.Green, curve.short_DASH);
AddVerticalLine(ExtremeBuy1, " 1X", Color.Green, curve.short_DASH);
AddVerticalLine(RegularSell1, " 1", Color.Red, curve.short_DASH);
AddVerticalLine(ExtremeSell1, " 1X", Color.Red, curve.short_DASH);
#RegularBuy2.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#ExtremeBuy2.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#RegularSell2.SetPaintingStrategy(PaintingSTrategy.ARROW_down);
#ExtremeSell2.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN);
AddVerticalLine(RegularBuy2, " 2", Color.Green, curve.firm);
AddVerticalLine(ExtremeBuy2, " 2X", Color.Green, curve.firm);
AddVerticalLine(RegularSell2, " 2", Color.Red, curve.firm);
AddVerticalLine(ExtremeSell2, " 2X", Color.Red, curve.firm);
#RegularBuy3.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#ExtremeBuy3.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#RegularSell3.SetPaintingStrategy(PaintingSTrategy.ARROW_down);
#ExtremeSell3.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN);
AddVerticalLine(RegularBuy3, " 3", Color.Green, curve.LONG_DASH);
AddVerticalLine(ExtremeBuy3, " 3X", Color.Green, curve.LONG_DASH);
AddVerticalLine(RegularSell3, " 3", Color.Red, curve.LONG_DASH);
AddVerticalLine(ExtremeSell3, " 3X", Color.red, curve.LONG_DASH);
#RegularSell4.SetPaintingStrategy(PaintingSTrategy.ARROW_down);
#ExtremeSell4.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN);
#RegularBuy4.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
#ExtremeBuy4.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
AddVerticalLine(RegularBuy4, " 4", Color.Green, curve.FIRM);
AddVerticalLine(ExtremeBuy4, " 4X", Color.Green, curve.FIRM);
AddVerticalLine(RegularSell4, " 4", Color.Light_Red, curve.FIRM);
AddVerticalLine(ExtremeSell4, " 4X", Color.Light_Red, curve.FIRM);
RegularBuy1.Setlineweight(LW1);
ExtremeBuy1.Setlineweight(LW1);
RegularSell1.Setlineweight(LW1);
ExtremeSell1.Setlineweight(LW1);
RegularBuy2.Setlineweight(LW2);
ExtremeBuy2.Setlineweight(LW2);
RegularSell2.Setlineweight(LW2);
ExtremeSell2.Setlineweight(LW2);
RegularBuy3.Setlineweight(LW3);
ExtremeBuy3.Setlineweight(LW3);
RegularSell3.Setlineweight(LW3);
ExtremeSell3.Setlineweight(LW3);
RegularBuy4.Setlineweight(LW4);
ExtremeBuy4.Setlineweight(LW4);
RegularSell4.Setlineweight(LW4);
ExtremeSell4.Setlineweight(LW4);
# --- Default Colors
#RegularBuy.SetDefaultColor(Color.Green);
#ExtremeBuy.SetDefaultColor(Color.Red);
#RegularSell.SetDefaultColor(Color.Green);
#ExtremeSell.SetDefaultColor(Color.Red);
RegularBuy1.SetDefaultColor(CreateColor(0, 205, 1));
ExtremeBuy1.SetDefaultColor(CreateColor(102, 255, 135));
RegularSell1.SetDefaultColor(CreateColor(205, 0, 1));
ExtremeSell1.SetDefaultColor(CreateColor(205, 51, 51));
RegularBuy2.SetDefaultColor(CreateColor(0, 155, 1));
ExtremeBuy2.SetDefaultColor(CreateColor(102, 255, 105));
RegularSell2.SetDefaultColor(CreateColor(155, 0, 1));
ExtremeSell2.SetDefaultColor(CreateColor(155, 51, 51));
RegularBuy3.SetDefaultColor(CreateColor(0, 105, 1));
ExtremeBuy3.SetDefaultColor(CreateColor(102, 255, 75));
RegularSell3.SetDefaultColor(CreateColor(105, 0, 1));
ExtremeSell3.SetDefaultColor(CreateColor(105, 51, 51));
RegularBuy4.SetDefaultColor(Color.Gray);
ExtremeBuy4.SetDefaultColor(Color.Light_red);
RegularSell4.SetDefaultColor(Color.Gray);
ExtremeSell4.SetDefaultColor(Color.Light_Red);
# --- Bubbles
#AddChartBubble((RegularBuy and ExtremeBuy), low, "Buy", Color.Dark_green, no);
#AddChartBubble((RegularSell and ExtremeSell), High, "Sell", Color.Dark_red, no);
#AddChartBubble((RegularSell and ExtremeSell)and ExtremeSell1[5], High, "Sell", Color.Dark_red, no);
# -- Price Color
AssignPriceColor( if paintBars and sellerExtreme then Color.Dark_red else if buyerExtreme and paintBars then Color.GREEN else if paintBars and sellerRegular then Color.red else if buyerRegular and paintBars then Color.DARK_GREEN else if paintBars and sellerExtreme1 then Color.Dark_red else if buyerExtreme1 and paintBars then Color.GREEN else if paintBars and sellerRegular1 then Color.red else if buyerRegular1 and paintBars then Color.DARK_GREEN else if paintBars and sellerExtreme2 then Color.Dark_red else if buyerExtreme2 and paintBars then Color.GREEN else if paintBars and sellerRegular2 then Color.red else if buyerRegular2 and paintBars then Color.DARK_GREEN else if paintBars and sellerExtreme3 then Color.Dark_red else if buyerExtreme3 and paintBars then Color.Green else if paintBars and sellerRegular3 then Color.red else if buyerRegular3 and paintBars then Color.Light_GREEN else if paintBars and sellerExtreme4 then Color.Dark_Red else if buyerExtreme4 and paintBars then Color.GREEN else if paintBars and sellerRegular4 then Color.red else if buyerRegular4 and paintBars then Color.DARK_GREEN else if paintBars then Color.GRAY else Color.current);
# -- Labels
#AddLabel(yes, if buyerRegular[2] and !buyerRegular[1] then "TF: " + currentPeriod/60000 + " min Sell " else if sellerRegular[1] and !sellerRegular then "TF: " + currentPeriod/60000 + " min Buy " else "TF: " + currentPeriod/60000 + " min", if buyerRegular[2] and !buyerRegular[1] then Color.RED else if sellerRegular[2] and !sellerRegular[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerRegular1[2] and !buyerRegular1[1] then "TF: " + agperiod1 + " Sell " else if sellerRegular1[1] and !sellerRegular1 then "TF: " + agperiod1 + " Buy " else "TF: " + agperiod1, if buyerRegular1[2] and !buyerRegular1[1] then Color.RED else if sellerRegular1[2] and !sellerRegular1[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerRegular2[2] and !buyerRegular2[1] then "TF: " + agperiod2 + " Sell " else if sellerRegular2[1] and !sellerRegular2 then "TF: " + agperiod2 + " Buy " else "TF: " + agperiod2, if buyerRegular2[2] and !buyerRegular2[1] then Color.RED else if sellerRegular2[2] and !sellerRegular2[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerRegular3[2] and !buyerRegular3[1] then "TF: " + agperiod3 + " Sell " else if sellerRegular3[1] and !sellerRegular3 then "TF: " + agperiod3 + " Buy " else "TF: " + agperiod3, if buyerRegular3[2] and !buyerRegular3[1] then Color.RED else if sellerRegular3[2] and !sellerRegular3[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerRegular4[2] and !buyerRegular4[1] then "TF: " + agperiod4 + " Sell " else if sellerRegular4[1] and !sellerRegular4 then "TF: " + agperiod4 + " Buy " else "TF: " + agperiod4, if buyerRegular4[2] and !buyerRegular4[1] then Color.RED else if sellerRegular4[2] and !sellerRegular4[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerExtreme[2] and !buyerExtreme[1] then "TF: " + currentPeriod/60000 + " min Sell " else if sellerExtreme[1] and !sellerExtreme then "TF: " + currentPeriod/60000 + " min Buy " else "TF: " + currentPeriod/60000 + " min", if buyerExtreme[2] and !buyerExtreme[1] then Color.RED else if sellerExtreme[2] and !sellerExtreme[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerExtreme1[2] and !buyerExtreme1[1] then "TF: " + agperiod1 + " Sell " else if sellerExtreme1[1] and !sellerExtreme1 then "TF: " + agperiod1 + " Buy " else "TF: " + agperiod1, if buyerExtreme1[2] and !buyerExtreme1[1] then Color.RED else if sellerExtreme1[2] and !sellerExtreme1[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerExtreme2[2] and !buyerExtreme2[1] then "TF: " + agperiod2 + " Sell " else if sellerExtreme2[1] and !sellerExtreme2 then "TF: " + agperiod2 + " Buy " else "TF: " + agperiod2, if buyerExtreme2[2] and !buyerExtreme2[1] then Color.RED else if sellerExtreme2[2] and !sellerExtreme2[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerExtreme3[2] and !buyerExtreme3[1] then "TF: " + agperiod3 + " Sell " else if sellerExtreme3[1] and !sellerExtreme3 then "TF: " + agperiod3 + " Buy " else "TF: " + agperiod3, if buyerExtreme3[2] and !buyerExtreme3[1] then Color.RED else if sellerExtreme3[2] and !sellerExtreme3[1] then Color.GREEN else Color.GRAY);
#AddLabel(yes, if buyerExtreme4[2] and !buyerExtreme4[1] then "TF: " + agperiod4 + " Sell " else if sellerExtreme4[1] and !sellerExtreme4 then "TF: " + agperiod4 + " Buy " else "TF: " + agperiod4, if buyerExtreme4[2] and !buyerExtreme4[1] then Color.RED else if sellerExtreme4[2] and !sellerExtreme4[1] then Color.GREEN else Color.GRAY);
# --- VERTICLE LINE DAILY ---
#AddVerticalLine(( GetDay() <> GetDay()[1]), "", Color.DARK_GRAY, Curve.SHORT_DASH);
#--- END ---
Which version of triple exhaustion indicator do you use?This indicator is still fantastic to use, now paired with that PAM indicator and the Trend reversal Ben posted back in 2019. Have had a pretty good success rate when all 3 indicators stack up together.
This is a must on every chart,...with gray candles.....Next Question, does it repaint???? Can you make a scan, and a column, and a bear signal....and, and..... nice
Hey Zeek!! Were you able to figure this out? Really interested to see if there is a watchlist by color code...Anyone can help creating custom watchlist columns for the 4 different trend buy & sell conditions and color them according to study?
Yeah I have them I’ll share them soonHey Zeek!! Were you able to figure this out? Really interested to see if there is a watchlist by color code...
@zeek
Hi, yes i use the code from post #143. See this post here https://usethinkscript.com/threads/...cator-for-thinkorswim.9001/page-8#post-102246Hey Zeek!! Were you able to figure this out? Really interested to see if there is a watchlist by color code...
@zeek
## Triple Exhaustion Indicator
## WATCHLIST COLUMN FOR ARROWS
##
## CREDITS
## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
##
##
## Removing the header Credit credits and description is not permitted, any modification needs to be shared.
##
## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread:
## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
##
##
##
declare upper;
# --- Inputs
input over_bought = 80;
input over_sold = 20;
input KPeriod = 10;
input DPeriod = 10;
input priceH = high;
input priceL = low;
input priceC = close;
input averageType = AverageType.SIMPLE;
input length = 1000;
input paintBars = yes;
input showLabels = yes;
# --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/-
def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK;
def MACD = reference MACD()."Value";
def priceMean = Average(MACD, length);
def MACD_stdev = (MACD - priceMean) / StDev(MACD, length);
def dPlus = reference DMI()."DI+";
def dMinus = reference DMI()."DI-";
# --- End Indicators
# --- Conditions
def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15;
def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15;
def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15;
def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15;
# --- End Conditions
# -- Price Color
AssignPriceColor( if paintBars and sellerExtreme then Color.CYAN else if buyerExtreme and paintBars then Color.GREEN else if paintBars and sellerRegular then Color.YELLOW else if buyerRegular and paintBars then Color.DARK_GREEN else if paintBars then Color.GRAY else Color.Current);
# --- Arrows/Triggers
plot RegularBuy = if sellerRegular[1] and !sellerRegular then low else Double.NaN;
plot ExtremeBuy = if sellerExtreme[1] and !sellerExtreme then low else Double.NaN;
RegularBuy.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
ExtremeBuy.SetPaintingSTrategy(paintingSTrategy.Arrow_UP);
RegularBuy.SetDefaultColor(Color.green);
ExtremeBuy.SetDefaultColor(Color.Dark_GREEN);
plot RegularSell = if buyerRegular[1] and !buyerRegular then high else Double.NaN;
plot ExtremeSell = if buyerExtreme[1] and !buyerExtreme then high else Double.NaN;
RegularSell.SetPaintingStrategy(PaintingSTrategy.ARROW_down);
ExtremeSell.SetPaintingSTrategy(paintingSTrategy.Arrow_DOWN);
RegularSell.SetDefaultColor(Color.red);
ExtremeSell.SetDefaultColor(Color.Dark_red);
# --- Labels#
#AddLabel(showLabels,"SellerRegular",Color.YELLOW);
#AddLabel(showLabels,"SellerExtreme",Color.CYAN);
#AddLabel(showLabels,"BuyerRegular",Color.DARK_GREEN);
#AddLabel(showLabels,"BuyerExtreme",Color.GREEN);
#Addlabel (yes, "3X EXH:", Color.Gray);
#Addlabel (yes, if sellerExtreme then " " else
# if buyerExtreme then " " else
# if sellerRegular then " " else
# if buyerRegular then " " else
# if sellerExtreme then " " else " ",
# if buyerExtreme then Color.MAGENTA else
# if sellerRegular then Color.GREEN else
# if buyerRegular then Color.RED else
# if sellerExtreme then Color.Cyan else
# Color.yellow);
#Addlabel (yes, " 3X ARW: ", Color.Gray);
addLabel (yes, if buyerRegular[1] and !buyerRegular within 3 bars then "3X" else
if sellerRegular[1] and !sellerRegular within 3 bars then "3X" else
if buyerExtreme[1] and !buyerExtreme within 3 bars then "3XT" else
if sellerExtreme[1] and !sellerExtreme within 3 bars then "3XT" else " ");
AssignbackgroundColor(
if buyerRegular[1] and !buyerRegular within 3 bars then Color.Dark_Green else
if sellerRegular[1] and !sellerRegular within 3 bars then Color.Dark_Red else
if buyerExtreme[1] and !buyerExtreme within 3 bars then Color.green else
if sellerExtreme[1] and !sellerExtreme within 3 bars then Color.red else
Color.gray);
## Blast off indicator combined with Triple Exhaustion and vix fix 12/23/22
#
## Triple Exhaustion Indicator
##
##
## CREDITS
## Requested by @Chence27 from criteria listed here https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
##
##
## Removing the header Credit credits and description is not permitted, any modification needs to be shared.
##
## V 1.0 : @cos251 - Initial release per request from www.usethinkscript.com forum thread:
## : https://usethinkscript.com/threads/triple-exhaustion-indicator.9001/
## V 1.1 : @chence27 - modifcations to better approximate original study
##
##
##
declare upper;
# --- Inputs
input over_bought = 80;
input over_sold = 20;
input KPeriod = 10;
input DPeriod = 10;
input priceH = high;
input priceL = low;
input priceC = close;
input averageType = AverageType.SIMPLE;
input length = 1000;
input paintBars = yes;
input showLabels = yes;
input AtrMult = 1.0;
input nATR = 4;
input AvgType = AverageType.HULL;
input trig = 20;
input pd = 22;
input bbl = 20;
input mult = 2.0;
input lb = 50;
input ph = 0.85;
input pl = 1.01;
# Downtrend Criterias
input ltLB = 40;
input mtLB = 14;
input str = 3;
# --- Indicators - StochasticSlow / MACD / MACD StDev / DMI+/-
def SlowK = reference StochasticFull(over_bought, over_sold, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageType).FullK;
def MACD = reference MACD()."Value";
def priceMean = Average(MACD, length);
def MACD_stdev = (MACD - priceMean) / StDev(MACD, length);
def dPlus = reference DMI()."DI+";
def dMinus = reference DMI()."DI-";
# --- End Indicators
# --- From Blast off Indicator
def ATR = MovingAverage(AvgType, TrueRange(high, close, low), nATR);
def UP = HL2 + (AtrMult * ATR);
def DN = HL2 + (-AtrMult * ATR);
def ST = if close < ST[1] then UP else DN;
def SuperTrend = ST;
# --- End Blast off
# --- From Blast off Indicator 2
def val = AbsValue(close - open);
def range = high - low;
def blastOffVal = (val / range) * 100;
def trigger = trig;
def alert1 = blastOffVal < trig;
def col = blastOffVal < trig;
def blast_candle = blastOffVal < trig;
# --- End Blast off 2
# Williams Vix Fix Formula
def wvf = ((highest(close, pd) - low) / (highest(close, pd))) * 100;
def sDev = mult * stdev(wvf, bbl);
def midLine = SimpleMovingAvg(wvf, bbl);
def lowerBand = midLine - sDev;
def upperBand = midLine + sDev;
def rangeHigh = (highest(wvf, lb)) * ph;
# Filtered Bar Criteria
def upRange = low > low[1] and close > high[1];
def upRange_Aggr = close > close[1] and close > open[1];
# Filtered Criteria
def filtered = ((wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and(wvf<upperBand and wvf<rangeHigh));
def filtered_Aggr = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]);
# Alerts Criteria
def alert_1 = wvf >= upperBand or wvf >= rangeHigh;
def alert_2 = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh);
def alert3 = upRange and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered;
def alert4 = upRange_Aggr and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered_Aggr;
# --- Conditions
def sellerRegular = SlowK < 20 and MACD_stdev < -1 and dPlus < 15;
def sellerExtreme = SlowK < 20 and MACD_stdev < -2 and dPlus < 15;
def buyerRegular = SlowK > 80 and MACD_stdev > 1 and dMinus < 15;
def buyerExtreme = SlowK > 80 and MACD_stdev > 2 and dMinus < 15;
def RegularBuy1 = if sellerRegular[1] and !sellerRegular then low else Double.NaN;
def ExtremeBuy1 = if sellerExtreme[1] and !sellerExtreme then low else Double.NaN;
def RegularSell2 = if buyerRegular[1] and !buyerRegular then high else Double.NaN;
def ExtremeSell2 = if buyerExtreme[1] and !buyerExtreme then high else Double.NaN;
plot RegularBuy3 = if (!RegularBuy1 and RegularBuy1[1])and(RegularBuy1[1] and !RegularBuy1) then low else Double.NaN;
RegularBuy3.SetPaintingStrategy((PaintingStrategy.ARROW_UP));
# --- End Conditions
# -- Price Color
AssignPriceColor(if paintBars and sellerExtreme then Color.Dark_Red
else if buyerExtreme and paintBars then Color.Dark_Green
else if paintBars and sellerRegular then Color.Red
else if buyerRegular and paintBars then Color.Light_Green
else if paintBars and close < ST and blastOffVal < trig then Color.Light_gray
else if alert4 then Color.cyan
else if paintBars then Color.Dark_GRAY else Color.CURRENT);
# --- Arrows/Trigger RegularBuy = if sellerRegular[1] and !sellerRegular then low else ;
plot ExtremeBuy = if sellerExtreme[1] and !sellerExtreme then low else Double.NaN;
ExtremeBuy.SetPaintingStrategy(PaintingSTrategy.ARROW_Up);
ExtremeBuy.SetDefaultColor(Color.Dark_Green);
plot ExtremeSell = if buyerExtreme[1] and !buyerExtreme then high else Double.NaN;
ExtremeSell.SetPaintingStrategy(PaintingSTrategy.ARROW_Down);
ExtremeSell.SetDefaultColor(Color.Dark_RED);
plot RegularBuy = if sellerRegular[1] and !sellerRegular then low else Double.NaN;
RegularBuy.SetPaintingStrategy(PaintingSTrategy.ARROW_UP);
RegularBuy.SetDefaultColor(Color.GREEN);
plot RegularSell = if buyerRegular[1] and !buyerRegular then high else Double.NaN;
RegularSell.SetPaintingStrategy(PaintingSTrategy.ARROW_Down);
RegularSell.SetDefaultColor(Color.RED);
#
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.