Confirmation Candles Indicator For ThinkorSwim

I converted 12 of the conditions to a strategy in TOS to buy Long when Consensus > 1 and prev Consensus less 1 also include SqueezePrice2: 20 bars back Low < SqueezePrice2 or low < SqueezePrice2[1] or Low < SqueezePrice[2]
and Close/Exit when Consensus drops to 0. That fares pretty good.
I converted those 12 conditions to NT and testing it now on Live Sim. They don't always enter at the same point, so trying to figure that out.
Obviously entry price will vary anyway but the consensus should be close again big differences between how TOS and NT are computing the same information.
If you have any ideas that you regularly expect, I can try to incorporate. I'm impressed with the results so far.
My 12 conditions are 1 through 10 plus BB percentB and Starc Bands.
 
Last edited:

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

I converted 12 of the conditions to a strategy in TOS to buy Long when Consensus > 1 and prev Consensus less 1 also include SqueezePrice2: 20 bars back Low < SqueezePrice2 or low < SqueezePrice2[1] or Low < Squeeze[2]
and Close/Exit when Consensus drops to 0. That fares pretty good.
I converted those 12 conditions to NT and testing it now on Live Sim. They don't always enter at the same point, so trying to figure that out.
Obviously entry price will vary anyway but the consensus should be close again big differences between how TOS and NT are computing the same information.
If you have any ideas that you regularly expect, I can try to incorporate. I'm impressed with the results so far.
My 12 conditions are 1 through 10 plus BB percentB and Starc Bands.
Hey @irishgold, do you mean when Low < SqueezePriceLength2 or low < SqueezePriceLength2[1] or Low < SqueezePriceLength2[2]?

Also essentially you're keeping all conditions except for the Klinger Histogram and Projection Oscillator, right?
 
Plot SqueezePrice2 = Lowest(price, SqueezeLengthPrice2);
yes No Klinger, no Projection Oscillator and no K conditions
 
Which lower version is shown on the youtube "Confirmation Candles Indicator for ThinkorSwimJune 4th Class"
video? Forgive me, I've looked, I don't see the one (I like the look of it)! Please help me.....
 
@Christopher84 Hi I wanted to help with improving this indicator you have and the past month or 2 I have been playing with getting better signals on lower time frames as I use this as a supplemental indicator with all the other TA for day trades that I do before I jump into a trade but this indicator gives me full confidence in taking the trade when I see the setup.

If there can be a way to only plot the Buy/Sell (Green/Red) arrows only when the arrows are showing up on multiple timeframes. For example, change this code to have it check whether there is a Green Arrow on the 2min chart, the 5min chart and the 15min chart? Once all 3 timeframes have the Green Arrow only then be able to draw it out and place it on the chart. This will give you less signals and give you far more accurate signals. I have been testing this out n it is working very well, I just happen to do it on 3 charts side by side and when I see an arrow on all 3 times frames at once I take the trade as long as it lines up well with my other TA.

for swing trading you could change the times to 15min, 1HR and 2HR timeframe. But if you could somehow code this to be able to look on multiple timeframes this will be an awesome addition to the indicator. Or have it be on a lower charts only show when all 3 timeframes have a buy or sell signal.
 
I'm the image below; this is one of the more powerful things to look for. It's mentioned in the video, and it is an excellent signal. Just time your entry and look for the consensus coming off the bottom. It has been one of my most consistent and profitable plays. Patience is key. Develop a watch list and keep looking for this setup. RED CANDLES IN A GREEN CHANNEL.
wPw9j8C.png
hey miami! thanks so much for sharing this screenshot. sorry if I may have overlooked in previous threads, but did you have the script for the ‘bands’ in the upper chart, the script for the 2 lower studies? and would you have the script for the watchlist portion? i knew i had seen some verbiage that there was a video, do you have the link for that?
 
After reading this thread im convinced you could give the members here a 99% winning indicator and you would get the fiollowing responses:
Wheres the scanner?
i like the fact that I never lose but could you change the colors?
Signals are kinda late
Hey could make an alert for when my Doordash driver is here with my order?
 
I wanted to add some feedback results, in hopes that it will help the people.
TimeFrame: I ran the scan for 1 month from 09/13/21 - 10/07/21 from my personal watchlist of 50 stocks (upward long term big stocks).
Scanner used:
Code:
https://usethinkscript.com/threads/confirmation-candles-indicator-for-thinkorswim.6316/page-9#post-63768-*
Average Results: Hold for 6.7 days and gain is 2.2% . The scan worked 8 out of a 11 total times tested. Disclaimer: (As a trader, I do not want this to come off as negative or taken the wrong way. I am simply posting my results...) Feel free to post yours as well, especially if it is very different from mine.
Thank you so much usethinkscript! I received some feedback on ways to improve this scan by using ADX, Fractal Energy, Polarized Fractal Efficiency, as well as using multiple timeframe aggregations to confirm my entry. I do not know what specifically I can add to the scan conditions but I will try to continue to learn. If you all do have an ideas please post it.
Date of Scanstock symbol% gaindays
2.2863636366.727272727
09/13/2021lrcx1.45days
09/14/2021azo10.9514days
09/15/2021antm5.213
09/17/2021sq44
09/17/2021tgt-620fail if hold average of 4 days
09/22/2021rh3.51
09/22/2021twtr7.23
09/27/2021burl-3.54fail if hold average of 4 days
09/27/2021stx-2.84fail if hold average of 4 days
10/06/2021msft2.43
10/06/2021googl2.83
10/07/2021kkr3.12
10/07/2021anet3.91
m9URUds
Rich (BB code):
https://imgur.com/a/m9URUds
 
Last edited:
hey miami! thanks so much for sharing this screenshot. sorry if I may have overlooked in previous threads, but did you have the script for the ‘bands’ in the upper chart, the script for the 2 lower studies? and would you have the script for the watchlist portion? i knew i had seen some verbiage that there was a video, do you have the link for that?
Everything is on the first page. all latest versions etc. are there.
Miami553
 
@Christopher84

First time checking out this thread. I've loaded v10. I like what you have done with this. Great job.

I'm only on pg 6 so I have a bit of catching up to do.

Atm, there's only 1 thing I can think of that would enhance it and it's nothing more than cosmetics and that would be, if possible, to hide the labels if they haven't been activated.

Anyway, Nice work
 
@Christopher84

First time checking out this thread. I've loaded v10. I like what you have done with this. Great job.

I'm only on pg 6 so I have a bit of catching up to do.

Atm, there's only 1 thing I can think of that would enhance it and it's nothing more than cosmetics and that would be, if possible, to hide the labels if they haven't been activated.

Anyway, Nice work

@RedToGreen, I too didn't want grayed out labels. My charts have a black background, so I slightly altered the code so that the labels are black instead of gray. That way they blend into the background until certain criteria are met, at which point they pop out in color and catch my eye. If you look for the labels part of the code it's very easy to make changes.

For example, here is the part of the code that makes the SQUEEZE label black until it fires:
AddLabel(yes, "SQUEEZE ALERT", if Squeeze_Signal then Color.YELLOW else Color.black);

This makes the BREAKDOWN and BREAKOUT labels black until they fire:
AddLabel(yes, if conditionBD then "BREAKDOWN" else if conditionBO then "BREAKOUT" else "NO BREAK", if conditionBD then Color.RED else if conditionBO then Color.Green else Color.black);

You can do the same with the other labels to make them blend into the background of your chart or make them any color you wish when they fire.

Best wishes and happy trading.
 
Is there a WL column for when the channel is bearish or bullish?

Thank you
This was done Hastily. Could probably be cleaned up

WL code for Green or red Channels

Code:
#
#Confirmation Candles V.10
#Created 04/15/2021 by Christopher84
#Select the level of agreement among the 15 indicators included.
#Changed 04/19/2021 to V.3 - Removed ChaikinOsc and replaced with STARCBands. Added squeeze alert.
#Changed 04/20/2021 to V.4 - Added Keltner Channel, Labels, and Buy and Sell Zones. Mean Reversion and Breakout Labels added. Reversal_Alert points added.
#Changed 4/22/2021 to V.5 - Removed Buy/Sell clouds. Created new reversal alert buy(gray points) and take profit (red points). Increase factorK.
#Changed 4/23/2021 to V.6 - Refined reversal signals. Fully integrated Super_OB_OS indicator. Fixed candles going yellow if colored_candles is off.
#Changed 4/26/2021 to V.7 - Refined reversal signals and included Keltner Bandwidth. Adjusted Keltner Channel levels.
#Changed 4/27/2021 to V.8 - Improved reversal signals and included support and resistance zones.
#Changed 05/12/2021 to V.9  - dialed in studies to give stronger signals. Removed reversal buy and sell signals with OB/OS signals. Included OB/OS clouds to indicate favorable zones to buy or take profit. Clouds can also indicate nearterm reversals. Cleaned up code.
#Changed 05/20/2021 to V.10 - Removed Pivot Study and replaced with CIP. Reworked Labels to reflect mean reversion Look to Buy/Look to Sell conditions. Removed Mean Reversion Label. Added new label to show the Confirmation_Level and color coded it to show OB/OS conditions.

#Keltner Channel
declare upper;
def displace = 0;
def factorK = 2.0;
def lengthK = 20;
def price = close;
input averageType = AverageType.SIMPLE;
def trueRangeAverageType = AverageType.SIMPLE;
def BulgeLengthK = 150;
def SqueezeLengthK = 150;
def BulgeLengthK2 = 40;
def SqueezeLengthK2 = 40;
def BulgeLengthPrice = 75;
def SqueezeLengthPrice = 75;
def BulgeLengthPrice2 = 20;
def SqueezeLengthPrice2 = 20;

def shift = factorK * MovingAverage(trueRangeAverageType, TrueRange(high, close, low), lengthK);
def averageK = MovingAverage(averageType, price, lengthK);
def AvgK = averageK[-displace];
def Upper_BandK = averageK[-displace] + shift[-displace];
def Lower_BandK = averageK[-displace] - shift[-displace];

def conditionK1 = price >= Upper_BandK;
def conditionK2 = (Upper_BandK[1] < Upper_BandK) and (Lower_BandK[1] < Lower_BandK);
def conditionK2L = (Upper_BandK[2] < Upper_BandK[1]) and (Lower_BandK[2] < Lower_BandK[1]);
def conditionK3L = (Upper_BandK[3] < Upper_BandK[2]) and (Lower_BandK[3] < Lower_BandK[2]);
def conditionK3 = (Upper_BandK[1] > Upper_BandK) and (Lower_BandK[1] > Lower_BandK);
def BandwidthK = (Upper_BandK - Lower_BandK) / AvgK * 100;
def condition_BWKUP = BandwidthK[1] < BandwidthK;
def condition_BWKDOWN = BandwidthK[1] > BandwidthK;
def BulgeK = Highest(BandwidthK, BulgeLengthK);
def SqueezeK = Lowest(BandwidthK, SqueezeLengthK);
def BulgeK2 = Highest(BandwidthK, BulgeLengthK2);
def SqueezeK2 = Lowest(BandwidthK, SqueezeLengthK2);

def IntermResistance = Highest(price, BulgeLengthPrice);
#IntermResistance.AssignValueColor(if (conditionK2) then Color.GREEN else if (conditionK3) then Color.RED else Color.GRAY);
def IntermSupport = Lowest(price, SqueezeLengthPrice);
#IntermSupport.AssignValueColor(if (conditionK2) then Color.GREEN else if (conditionK3) then Color.RED else Color.GRAY);



#MACD with Price
def fastLength = 12;
def slowLength = 26;
def MACDLength = 9;
input MACD_AverageType = {SMA, default EMA};
def MACDLevel = 0.0;

def fastEMA = ExpAverage(price, fastLength);
def slowEMA = ExpAverage(price, slowLength);
def Value;
def Avg;
switch (MACD_AverageType) {
case SMA:
    Value = Average(price, fastLength) - Average(price, slowLength);
    Avg = Average(Value, MACDLength);
case EMA:
    Value = fastEMA - slowEMA;
    Avg = ExpAverage(Value, MACDLength);
}
def Diff = Value - Avg;
def Level = MACDLevel;

def condition1 = Value[1] <= Value;

#RSI
def RSI_length = 14;
def RSI_AverageType = AverageType.WILDERS;
def RSI_OB = 70;
def RSI_OS = 30;

def NetChgAvg = MovingAverage(RSI_AverageType, price - price[1], RSI_length);
def TotChgAvg = MovingAverage(RSI_AverageType, AbsValue(price - price[1]), RSI_length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
def RSI = 50 * (ChgRatio + 1);

def condition2 = (RSI[3] < RSI) is true or (RSI >= 80) is true;
def conditionOB1 = RSI > RSI_OB;
def conditionOS1 = RSI < RSI_OS;

#MFI
def MFI_Length = 14;
def MFIover_Sold = 20;
def MFIover_Bought = 80;
def movingAvgLength = 1;
def MoneyFlowIndex = Average(MoneyFlow(high, close, low, volume, MFI_Length), movingAvgLength);
def MFIOverBought = MFIover_Bought;
def MFIOverSold = MFIover_Sold;

def condition3 = (MoneyFlowIndex[2] < MoneyFlowIndex) is true or (MoneyFlowIndex > 85) is true;
def conditionOB2 = MoneyFlowIndex > MFIover_Bought;
def conditionOS2 = MoneyFlowIndex < MFIover_Sold;

#Forecast
def na = Double.NaN;
def MidLine = 50;
def Momentum = MarketForecast().Momentum;
def NearT =  MarketForecast().NearTerm;
def Intermed = MarketForecast().Intermediate;
def FOB = 80;
def FOS = 20;
def upperLine = 110;

def condition4 =  (Intermed[1] <= Intermed) or (NearT >= MidLine);
def conditionOB3 = Intermed > FOB;
def conditionOS3 = Intermed < FOS;
def conditionOB4 = NearT > FOB;
def conditionOS4 = NearT < FOS;

#Change in Price
def lengthCIP = 5;
def CIP = (price - price[1]);
def AvgCIP = ExpAverage(CIP[-displace], lengthCIP);
def CIP_UP = AvgCIP > AvgCIP[1];

def condition5 = CIP_UP;

#EMA_1
def EMA_length = 12;
def AvgExp = ExpAverage(price[-displace], EMA_length);

def condition6 = (price >= AvgExp) and (AvgExp[2] <= AvgExp);

#EMA_2
def EMA_2length = 20;
def displace2 = 0;
def AvgExp2 = ExpAverage(price[-displace2], EMA_2length);

def condition7 = (price >= AvgExp2) and (AvgExp2[2] <= AvgExp2);

#DMI Oscillator
def DMI_length = 5;#Typically set to 10
input DMI_averageType = AverageType.WILDERS;
def diPlus = DMI(DMI_length, DMI_averageType)."DI+";
def diMinus = DMI(DMI_length, DMI_averageType)."DI-";
def Osc = diPlus - diMinus;
def Hist = Osc;
def ZeroLine = 0;

def condition8 = Osc >= ZeroLine;

#Trend_Periods
def TP_fastLength = 3;#Typically 7
def TP_slowLength = 4;#Typically 15
def Periods = Sign(ExpAverage(close, TP_fastLength) - ExpAverage(close, TP_slowLength));

def condition9 = Periods > 0;

#Polarized Fractal Efficiency
def PFE_length = 5;#Typically 10
def smoothingLength = 2.5;#Typically 5
def PFE_diff = close - close[PFE_length - 1];
def val = 100 * Sqrt(Sqr(PFE_diff) + Sqr(PFE_length)) / Sum(Sqrt(1 + Sqr(close - close[1])), PFE_length - 1);
def PFE = ExpAverage(if PFE_diff > 0 then val else -val, smoothingLength);
def UpperLevel = 50;
def LowerLevel = -50;

def condition10 = PFE > 0;
def conditionOB5 = PFE > UpperLevel;
def conditionOS5 = PFE < LowerLevel;

#Bollinger Bands PercentB
input BBPB_averageType = AverageType.SIMPLE;
def BBPB_length = 20;#Typically 20
def Num_Dev_Dn = -2.0;
def Num_Dev_up = 2.0;
def BBPB_OB = 100;
def BBPB_OS = 0;
def upperBand = BollingerBands(price, displace, BBPB_length, Num_Dev_Dn, Num_Dev_up, BBPB_averageType).UpperBand;
def lowerBand = BollingerBands(price, displace, BBPB_length, Num_Dev_Dn, Num_Dev_up, BBPB_averageType).LowerBand;
def PercentB = (price - lowerBand) / (upperBand - lowerBand) * 100;
def HalfLine = 50;
def UnitLine = 100;

def condition11 = PercentB > HalfLine;
def conditionOB6 = PercentB > BBPB_OB;
def conditionOS6 = PercentB < BBPB_OS;

#STARC Bands
def ATR_length = 15;
def SMA_lengthS = 6;
def multiplier_factor = 1.25;
def valS = Average(price, SMA_lengthS);
def average_true_range = Average(TrueRange(high, close, low), length = ATR_length);
def Upper_BandS = valS[-displace] + multiplier_factor * average_true_range[-displace];
def Middle_BandS = valS[-displace];
def Lower_BandS = valS[-displace] - multiplier_factor * average_true_range[-displace];

def condition12 = (Upper_BandS[1] <= Upper_BandS) and (Lower_BandS[1] <= Lower_BandS);

#Klinger Histogram
def Klinger_Length = 13;
def KVOsc = KlingerOscillator(Klinger_Length).KVOsc;
def KVOH = KVOsc - Average(KVOsc, Klinger_Length);
def condition13 = (KVOH > 0);

#Projection Oscillator
def ProjectionOsc_length = 30;#Typically 10
def MaxBound = HighestWeighted(high, ProjectionOsc_length, LinearRegressionSlope(price = high, length = ProjectionOsc_length));
def MinBound = LowestWeighted(low, ProjectionOsc_length, LinearRegressionSlope(price = low, length = ProjectionOsc_length));
def ProjectionOsc_diff = MaxBound - MinBound;
def PROSC = if ProjectionOsc_diff != 0 then 100 * (close - MinBound) / ProjectionOsc_diff else 0;
def PROSC_OB = 80;
def PROSC_OS = 20;

def condition14 = (PROSC > 50);# or ((PROSC[1] < PROSC) and PROSC > 40);
def conditionOB7 = PROSC > PROSC_OB;
def conditionOS7 = PROSC < PROSC_OS;

#Trend Confirmation Calculator
#Confirmation_Factor range 1-15.
input coloredCandlesOn = yes;
input Confirmation_Factor = 7;
#Use for testing conditions individually. Remove # from line below and change Confirmation_Factor to 1.
#def Agreement_Level = condition1;
def Agreement_LevelOB = 12;
def Agreement_LevelOS = 3;

def Agreement_Level = condition1 + condition2 + condition3 + condition4 + condition5 + condition6 + condition7 + condition8 + condition9 + condition10 + condition11 + condition12 + condition13 + condition14 + conditionK1 + conditionK2;

def conditionChannel1 = Upper_BandK > price;
def conditionChannel2 = Lower_BandK < price;

def UP = Agreement_Level >= Confirmation_Factor;
def DOWN = Agreement_Level < Confirmation_Factor;

#AssignPriceColor(if coloredCandlesOn and UP then CreateColor(33, 145, 72) else if coloredCandlesOn and DOWN then CreateColor(175, 17, 24) else Color.CURRENT);

#Additional Signals

#Keltner #2
input showCloud = yes;
def factorK2 = 3.25;
def lengthK2 = 20;

def shiftK2 = factorK2 * MovingAverage(trueRangeAverageType, TrueRange(high, close, low), lengthK2);
def averageK2 = MovingAverage(averageType, price, lengthK2);
def AvgK2 = averageK2[-displace];
def Upper_BandK2 = averageK2[-displace] + shiftK2[-displace];
def Lower_BandK2 = averageK2[-displace] - shiftK2[-displace];

def condition_BandRevDn = (Upper_BandS > Upper_BandK2);
def condition_BandRevUp = (Lower_BandS < Lower_BandK2);

#AddCloud(if showCloud and condition_BandRevUp then Lower_BandK2 else Double.NaN, Lower_BandS, Color.LIGHT_GREEN, color.CURRENT);
#AddCloud(if showCloud and condition_BandRevDn then Upper_BandS else Double.NaN, Upper_BandK2, Color.LIGHT_Red, Color.CURRENT);

#Super_OB/OS Signal
def OB_Level = conditionOB1 + conditionOB2 + conditionOB3 + conditionOB4 + conditionOB5 + conditionOB6 + conditionOB7;
def OS_Level = conditionOS1 + conditionOS2 + conditionOS3 + conditionOS4 + conditionOS5 + conditionOS6 + conditionOS7;

def Consensus_Line = OB_Level - OS_Level;
def Zero_Line = 0;
def Super_OB = 4;
def Super_OS = -3;

def DOWN_OB = (Agreement_Level > Agreement_LevelOB) and (Consensus_Line > Super_OB);
def UP_OS = (Agreement_Level < Agreement_LevelOS) and (Consensus_Line < Super_OS);

def OS_Buy = UP_OS;
def OB_Sell = DOWN_OB;
def neutral = Consensus_Line < Super_OB and Consensus_Line > Super_OS;

#AddVerticalLine (OS_Buy and !OS_Buy[1], close, Color.GREEN, Curve.SHORT_DASH);
#AddVerticalLine (Neutral and !neutral[1], close, Color.Gray, Curve.SHORT_DASH);
#AddVerticalLine (OB_Sell and OB_Sell and !OB_Sell[1], close, Color.RED, Curve.SHORT_DASH);

#def Buy_Opportnity = if OS_Buy then Double.POSITIVE_INFINITY else Double.NEGATIVE_INFINITY;
#AddCloud(Buy_Opportnity, Neutral, Color.LIGHT_GREEN, Color.LIGHT_RED);
#def Sell_Opportnity = if OB_Sell then Double.POSITIVE_INFINITY else Double.NEGATIVE_INFINITY;
#AddCloud(Sell_Opportnity, Neutral, Color.LIGHT_RED, Color.LIGHT_RED);

#plot OB_Signal = Upper_BandS crosses above IntermResistance;
#OB_Signal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_POINTS);
#OB_Signal.SetLineWeight(3);
#OB_Signal.SetDefaultColor(Color.RED);

plot OS_Signal = (condition_BandRevUP) and (Lower_BandS crosses below IntermSupport);
#OS_Signal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_POINTS);
#OS_Signal.SetLineWeight(3);
#OS_Signal.SetDefaultColor(Color.GREEN);



addlabel(yes,if conditionK2 then "Green" else if conditionK3 then "Red" else "", if conditionK2 then createColor(33,145,72) else if conditionk3 then createColor(175,17,24) else color.BLACK );
 
looking at the channels, they seem in many instances to change color late. Is there a way to have them reflect a change in trend sooner?

Again, very nice indicator
 
Hello Christopher, first I want to thank you for building such a wonderful indicator! It has really helped me become a better trader. I am reaching out because I am having an issue with the confirmation levels being generated from the "Confirmation Level Watchlist". The values being generated are not matching up at all with the actual "Confirmation Candles V.10" indicators confirmation level label that appears on the chart.

Just to confirm I have the following upper and lower CC Indicators and corresponding Confirmation Level watchlist versions on my charts:

1: Confirmation Candles V.10 - From Page 1 of this thread
2: Confirmation Candles Lower V.10 - From Page 1 of this thread
3: Confirmation Level Watchlist developed 04/15/2021 - From Page 1 of this thread

My chart is set to 3M:1D (extended hours is ON) and I have the Confirmation Level Watchlist Set to Day. When I pulled up the S&P 100 this evening for example and scrolled through the Confirmation Level watchlist and looked at the corresponding chart label here are some of the miss readings I am getting:

TSLA: Watchlist shows Confirmation Level 12 Chart Label shows Confirmation Level 13
BK: Watchlist shows Confirmation Level 10 Chart Label shows Confirmation Level 12
SBUX: Watchlist shows Confirmation Level 2 Chart Label shows Confirmation Level 3
IBM: Watchlist shows Confirmation Level 3 Chart Label shows Confirmation Level 5
MET: Watchlist shows Confirmation Level 4 Chart Label shows Confirmation Level 6
GM: Watchlist shows Confirmation Level 10 Chart Label shows Confirmation Level 13

I have tried everything to get the values to align but nothing seems to be matching up. I changed the aggregation on both the watchlist and the chart during todays trading session and again nothing was matching up. If I had 1Day 30min on my chart and had the watchlist set to 30min or even Day same issue. I deleted the code and re-installed it but that didn't help either. I also changed the Confirmation Factor on the indicator itself and played with a few different settings and that wasn't working either so I am at a complete loss. I am not an expert coder at all but also checked the code in the watchlist to see if I needed to change an aggregation period or time frame but didn't see anything so I am at a complete loss at what I might be doing wrong. Any help you can give here would be very appreciated and I apologize in advance if I am miss understanding something and everything is working the way it should.

Thanks Again for an Awesome Indicator and take care!
 
Hello Christopher, first I want to thank you for building such a wonderful indicator! It has really helped me become a better trader. I am reaching out because I am having an issue with the confirmation levels being generated from the "Confirmation Level Watchlist". The values being generated are not matching up at all with the actual "Confirmation Candles V.10" indicators confirmation level label that appears on the chart.

Just to confirm I have the following upper and lower CC Indicators and corresponding Confirmation Level watchlist versions on my charts:

1: Confirmation Candles V.10 - From Page 1 of this thread
2: Confirmation Candles Lower V.10 - From Page 1 of this thread
3: Confirmation Level Watchlist developed 04/15/2021 - From Page 1 of this thread

My chart is set to 3M:1D (extended hours is ON) and I have the Confirmation Level Watchlist Set to Day. When I pulled up the S&P 100 this evening for example and scrolled through the Confirmation Level watchlist and looked at the corresponding chart label here are some of the miss readings I am getting:

TSLA: Watchlist shows Confirmation Level 12 Chart Label shows Confirmation Level 13
BK: Watchlist shows Confirmation Level 10 Chart Label shows Confirmation Level 12
SBUX: Watchlist shows Confirmation Level 2 Chart Label shows Confirmation Level 3
IBM: Watchlist shows Confirmation Level 3 Chart Label shows Confirmation Level 5
MET: Watchlist shows Confirmation Level 4 Chart Label shows Confirmation Level 6
GM: Watchlist shows Confirmation Level 10 Chart Label shows Confirmation Level 13

I have tried everything to get the values to align but nothing seems to be matching up. I changed the aggregation on both the watchlist and the chart during todays trading session and again nothing was matching up. If I had 1Day 30min on my chart and had the watchlist set to 30min or even Day same issue. I deleted the code and re-installed it but that didn't help either. I also changed the Confirmation Factor on the indicator itself and played with a few different settings and that wasn't working either so I am at a complete loss. I am not an expert coder at all but also checked the code in the watchlist to see if I needed to change an aggregation period or time frame but didn't see anything so I am at a complete loss at what I might be doing wrong. Any help you can give here would be very appreciated and I apologize in advance if I am miss understanding something and everything is working the way it should.

Thanks Again for an Awesome Indicator and take care!
Hi @SEPTrader!
Thank you for the detailed question. In order to get the WL column to work, I had to omit a few of the studies. Otherwise the code is too complex for ToS to run. Although the Confirmation Level is slightly different between the WL and the actual indicator, you will find the indications on the WL column to still be extremely similar to the OB/OS indications that you see on your chart. Another thing to note is that when the column reads equal to or greater than 7, it generally indicates a green candle on the chart and numbers below 7 are generally red candles. I am really glad you are enjoying the indicators! Happy trading!
 

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
525 Online
Create Post

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

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.

How do I get started?

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.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top