• Get $30 off VIP with code SUMMER30. Ends July 27. Happy trading!

Confirmation Candles Indicator for ThinkorSwim

President_Evil

New member
Thank you for your kind swords! The current version of CC candles doesn’t include arrows. That being the case, I’m not really sure. Looks like they are coming from the Super OB/OS within the code possibly. If that’s the case, it’s likely a scan could made to find the condition.
Just double-checked, they are from this:

#Confirmation Candles developed 04/15/2021 by Christopher Wilson
#Select the level of agreement among the 13 indicators included.
 

tjlizwelicha

Active member
VIP
I removed that comment because it could be misunderstood. It was meant to say "there is no selling comment even in the terms", yet a long we never promoted selling on this forum. Communication medium there is all free.

I apologize for being too direct, but I'm getting tired of these comments. Common goal is to help people learn how to trade and be successful. If you don't like what we are doing, you don't need to use it, don't follow it.
@Christopher84, I can see that your 'big arrows' are more valid reversals (or exit signals as I use them) than much of what I'm using now. Is it possible to create a scan for tickers with these within the past 2 bars? This is your Early In & Out painted Arrows, CC upper and MA Cloud upper with default settings.
WaCrTfV.jpg


P.S. I think your post has become my favorite trading learning place on... the internet.
That's good. I have the exit down packed, but I am still struggling with the entry point.
 

President_Evil

New member
That's good. I have the exit down packed, but I am still struggling with the entry point.
I plan on using them as entries when in the direction of the trend and exit for countertrend. My entries are mostly around squeezes so I'm selling a lot of credit spreads, but when IV is low and it makes sense, I like to go long. This has been the first reliable exit system I've seen that doesn't get you out too early or at an arbitrary point (2ATR for example).
 

tjlizwelicha

Active member
VIP
I plan on using them as entries when in the direction of the trend and exit for countertrend. My entries are mostly around squeezes so I'm selling a lot of credit spreads, but when IV is low and it makes sense, I like to go long. This has been the first reliable exit system I've seen that doesn't get you out too early or at an arbitrary point (2ATR for example).
Thanks for the advice. I will try tomorrow to pay more attention to the squeeze. I agree, I at getting out of a trade too soon. Do you use a label for IV?
 

President_Evil

New member
Just double-checked, they are from this:

#Confirmation Candles developed 04/15/2021 by Christopher Wilson
#Select the level of agreement among the 13 indicators included.
@Christopher84 Looks like it might be coming from an earlier version of CC. I think this might be the section of code (didn't see any other arrows with line weight greater than 3)

#VWAP_Pivot Signals
def n = 20;
def ticks = 2.0;
def bnOK = barNumber() > n;
def isHigher = fold i = 1 to n + 1 with p = 1 while p do high > GetValue(high, -i);
def HH = if bnOK and isHigher and high == Highest(high, n)then high else Double.NaN;
def isLower = fold j = 1 to n + 1 with q = 1 while q do low < GetValue(low, -j);
def LL = if bnOK and isLower and low == Lowest(low, n) then low else Double.NaN;
def PivH = if HH > 0 then HH else Double.NaN;
def PivL = if LL > 0 then LL else Double.NaN;

plot UpPivotLow = !isNaN(PivL);
UpPivotLow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
UpPivotLow.SetLineWeight(3);
UpPivotLow.SetDefaultColor(Color.GREEN);

plot DownPivotHigh = !isNaN(PivH);
DownPivotHigh.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DownPivotHigh.SetLineWeight(3);
DownPivotHigh.SetDefaultColor(Color.RED);

def condition6 = !isNaN(PivL);


Any suggestions on how to turn that signal into a scan?
 

barbaros

Well-known member
VIP
@Christopher84 Looks like it might be coming from an earlier version of CC. I think this might be the section of code (didn't see any other arrows with line weight greater than 3)

#VWAP_Pivot Signals
def n = 20;
def ticks = 2.0;
def bnOK = barNumber() > n;
def isHigher = fold i = 1 to n + 1 with p = 1 while p do high > GetValue(high, -i);
def HH = if bnOK and isHigher and high == Highest(high, n)then high else Double.NaN;
def isLower = fold j = 1 to n + 1 with q = 1 while q do low < GetValue(low, -j);
def LL = if bnOK and isLower and low == Lowest(low, n) then low else Double.NaN;
def PivH = if HH > 0 then HH else Double.NaN;
def PivL = if LL > 0 then LL else Double.NaN;

plot UpPivotLow = !isNaN(PivL);
UpPivotLow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
UpPivotLow.SetLineWeight(3);
UpPivotLow.SetDefaultColor(Color.GREEN);

plot DownPivotHigh = !isNaN(PivH);
DownPivotHigh.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DownPivotHigh.SetLineWeight(3);
DownPivotHigh.SetDefaultColor(Color.RED);

def condition6 = !isNaN(PivL);


Any suggestions on how to turn that signal into a scan?
I would be cautious with this. It may be repainting.
 

President_Evil

New member
Thank you so much for sharing. I am really trying to master this. I was using a 30min chart and 1 hour ( 2 grids), now I am adding a 5min. What time frames are you using?
Same here - was finally feeling like I had the squeezes down but discovering this post and Chris's work has been a huge breakthrough. I run my scans mostly on daily, but WL columns for 1H, 1D, 1W, and 1M. I move up and down from daily just to confirm I'm not getting into a position on the daily that is counter to the trend on H W M. How are your timeframes working?
 

President_Evil

New member
I would be cautious with this. It may be repainting.
Yep I've seen repaints during trading hours. I'm mostly paying attention to structure, arrows, and BB ball colors so the bar colors don't throw me too much. This big arrow feature I find very interesting though - would be nice to have it in latest version without repaints. Also a scan to go with big arrows if possible...
 

txchopper

New member
Thank you for your kind swords! The current version of CC candles doesn’t include arrows. That being the case, I’m not really sure. Looks like they are coming from the Super OB/OS within the code possibly. If that’s the case, it’s likely a scan could made to find the condition.
Where is location of the top indicator.. I believe is being referred to as C3
 

tjlizwelicha

Active member
VIP
Same here - was finally feeling like I had the squeezes down but discovering this post and Chris's work has been a huge breakthrough. I run my scans mostly on daily, but WL columns for 1H, 1D, 1W, and 1M. I move up and down from daily just to confirm I'm not getting into a position on the daily that is counter to the trend on H W M. How are your timeframes working?
My timeframes have been working. I have been mostly using 30min and 1H. I added the 15 just to confirm the exit point. Something else I have been using today to confirm my enter and exit point (cause I am still unsure) is High and Low Reversals Indicators +Day Trading Strategy @BenTen. You may not need it cause it seems to be coming together for you, but the targets are right point.
 

President_Evil

New member
Thank you for your kind swords! The current version of CC candles doesn’t include arrows. That being the case, I’m not really sure. Looks like they are coming from the Super OB/OS within the code possibly. If that’s the case, it’s likely a scan could made to find the condition.
Looks like it's from the code from post 10:
#Confirmation Candles V.2
#Created 04/15/2021 by Topher84

In the original version he calls them "#Pivot Points" but the version I installed calls them "#VWAP_Pivot Signals" - I think the code is the same though. Appears to be very reliable as you saw from my screenshot.
 

easyman

Member
VIP
Looks like it's from the code from post 10:
#Confirmation Candles V.2
#Created 04/15/2021 by Topher84

In the original version he calls them "#Pivot Points" but the version I installed calls them "#VWAP_Pivot Signals" - I think the code is the same though. Appears to be very reliable as you saw from my screenshot.
Nope... the arrows are not related to that.

In initial versions it was used to indicate trend change.
In subsequent version.. used the same logic to change CANDLE COLOR so Christopher removed the arrow.

If you want arrow... you can use the same logic.
Hope it helps

Best
MN
 

Trader Raider

Well-known member
VIP
I'm getting tired of these comments.

Hopefully you can understand that your comments about inability to post updates are just as tiresome.

Anyway, you are correct that @Christopher84 has done great things. His system provides outstanding setups. I'm 4 for 4 on stock trades in the past week using the MTF clouds and consensus candles. They also help me fine tune entries I've preplanned with futures based on fib levels. At first I wasn't a fan of his squeeze, but now I scan for it. It's great at isolating tickers to monitor for potential setups.

Props to Christopher84 for his accomplishments. And his generosity. And thank you, barbaros, for what you and Chuck shared on the other thread, especially in its early days. Congrats for getting Christopher on your team. I wish all of you the very best.
 

easyman

Member
VIP
Hopefully you can understand that your comments about inability to post updates are just as tiresome.

Anyway, you are correct that @Christopher84 has done great things. His system provides outstanding setups. I'm 4 for 4 on stock trades in the past week using the MTF clouds and consensus candles. They also help me fine tune entries I've preplanned with futures based on fib levels. At first I wasn't a fan of his squeeze, but now I scan for it. It's great at isolating tickers to monitor for potential setups.

Props to Christopher84 for his accomplishments. And his generosity. And thank you, barbaros, for what you and Chuck shared on the other thread, especially in its early days. Congrats for getting Christopher on your team. I wish all of you the very best.
Do you mind sharing the scan for Squeeze ( I having trouble setting scan with BB).

TIA
MN
 

Christopher84

Well-known member
VIP
@Christopher84 Looks like it might be coming from an earlier version of CC. I think this might be the section of code (didn't see any other arrows with line weight greater than 3)

#VWAP_Pivot Signals
def n = 20;
def ticks = 2.0;
def bnOK = barNumber() > n;
def isHigher = fold i = 1 to n + 1 with p = 1 while p do high > GetValue(high, -i);
def HH = if bnOK and isHigher and high == Highest(high, n)then high else Double.NaN;
def isLower = fold j = 1 to n + 1 with q = 1 while q do low < GetValue(low, -j);
def LL = if bnOK and isLower and low == Lowest(low, n) then low else Double.NaN;
def PivH = if HH > 0 then HH else Double.NaN;
def PivL = if LL > 0 then LL else Double.NaN;

plot UpPivotLow = !isNaN(PivL);
UpPivotLow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
UpPivotLow.SetLineWeight(3);
UpPivotLow.SetDefaultColor(Color.GREEN);

plot DownPivotHigh = !isNaN(PivH);
DownPivotHigh.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DownPivotHigh.SetLineWeight(3);
DownPivotHigh.SetDefaultColor(Color.RED);

def condition6 = !isNaN(PivL);


Any suggestions on how to turn that signal into a scan?
This is an older version of the code. The part that you are referencing isn’t producing the arrows.
 

Christopher84

Well-known member
VIP
Yep I've seen repaints during trading hours. I'm mostly paying attention to structure, arrows, and BB ball colors so the bar colors don't throw me too much. This big arrow feature I find very interesting though - would be nice to have it in latest version without repaints. Also a scan to go with big arrows if possible...
Once the candle closes, it will not repaint (even on your older version).
 

President_Evil

New member
This is an older version of the code. The part that you are referencing isn’t producing the arrows.
I'm going to post the full code below. When I toggle the settings, the big up and down arrows are labelled "UpPivotLow" and "DownPivotHigh" in the plots section. Since I suck at coding I have no real idea what section of code produces the big arrows, but you struck gold by including it, so I hope you can point me in the right direction on how to create a scan.

#Confirmation Candles developed 04/15/2021 by Christopher Wilson
#Select the level of agreement among the 13 indicators included.

#MACD with Price

declare upper;
def price = close;
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 >= MACDLevel;

#RSI

input RSI_length = 14;
input RSI_AverageType = AverageType.WILDERS;

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 >= 50;

#MFI

input 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 > 50;

#Intermediate Forecast

def na = Double.NaN;
def MidLine = 50;
def Momentum = MarketForecast().Momentum;
def NearT = MarketForecast().NearTerm;
def Intermed = MarketForecast().Intermediate;
def OB = 80;
def OS = 20;
def upperLine = 110;

def condition4 = Intermed[3] <= Intermed;

#Nearterm Forecast

def condition5 = NearT >= MidLine;

#VWAP_Pivot Signals
def n = 20;
def ticks = 2.0;
def bnOK = barNumber() > n;
def isHigher = fold i = 1 to n + 1 with p = 1 while p do high > GetValue(high, -i);
def HH = if bnOK and isHigher and high == Highest(high, n)then high else Double.NaN;
def isLower = fold j = 1 to n + 1 with q = 1 while q do low < GetValue(low, -j);
def LL = if bnOK and isLower and low == Lowest(low, n) then low else Double.NaN;
def PivH = if HH > 0 then HH else Double.NaN;
def PivL = if LL > 0 then LL else Double.NaN;

plot UpPivotLow = !isNaN(PivL);
UpPivotLow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
UpPivotLow.SetLineWeight(3);
UpPivotLow.SetDefaultColor(Color.GREEN);

plot DownPivotHigh = !isNaN(PivH);
DownPivotHigh.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DownPivotHigh.SetLineWeight(3);
DownPivotHigh.SetDefaultColor(Color.RED);

def condition6 = !isNaN(PivL);

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

def condition7 = price >= AvgExp;

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

def condition8 = price >= AvgExp2;

#DMI Oscillator
input DMI_length = 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 condition9 = Osc > ZeroLine;

#Trend_Periods

input TP_fastLength = 7;
input TP_slowLength = 15;

def Periods = sign(ExpAverage(close, TP_fastLength) - ExpAverage(close, TP_slowLength));

def condition10 = Periods > 0;

#Polarized Fractal Efficiency

input PFE_length = 10;
input smoothingLength = 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 condition11 = PFE > ZERoLine;

#Bollinger Bands PercentB

input BBPB_averageType = AverageType.Simple;
input BBPB_length = 20;
def Num_Dev_Dn = -2.0;
def Num_Dev_up = 2.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 condition12 = PercentB > 50;

#Chaikin Oscillator

input ChaikinOsc_longLength = 10;
input ChaikinOsc_shortLength = 3;

def accDist = AccDist();
def COSC = ExpAverage(accDist, ChaikinOsc_shortLength) - ExpAverage(accDist, ChaikinOsc_longLength);

def condition13 = COSC > zeroline;

#Trend Confirmation
#Confirmation_Factor range 1-13.

input Confirmation_Factor = 6;
#Use for testing conditions individually. Remove # from line below and chang Confirmation_Factor to 1.
#def Agreement_Level = condition1;
def Agreement_Level = condition1 + condition2 + condition3 + condition4 + condition5 + condition6 + condition7 + condition8 + condition9 + condition10 + condition11 + condition12 + condition13;

input coloredCandlesOn = yes;
def UP = Agreement_Level >= Confirmation_Factor;
def DOWN = Agreement_Level < Confirmation_Factor;

AssignPriceColor(if coloredCandlesOn and UP then Color.LIGHT_GREEN else if coloredCandlesOn and DOWN then Color.RED else Color.YELLOW);

#Additional Signals

plot UPSignal = Agreement_Level crosses above Confirmation_Factor;
UPSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
UPSignal.SetLineWeight(1);
UPSignal.SetDefaultColor(Color.green);

plot DOWNSignal = Agreement_Level crosses below Confirmation_Factor;
DOWNSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DOWNSignal.SetLineWeight(1);
DOWNSIGNAL.SetDefaultColor(Color.red);
 

Christopher84

Well-known member
VIP
Do you mind sharing the scan for Squeeze ( I having trouble setting scan with BB).

TIA
MN
Hi easyman!
Here's a scan for the squeeze. Set up the code as a study and then reference it in the scan setup.
aHuof08.png

Code:
#C3_Bandwidth_Scan
#Created by Christopher84 06/09/2021

declare lower;
def price = close;
def trueRangeAverageType = AverageType.SIMPLE;
def BulgeLengthPrice = 75;
def SqueezeLengthPrice = 75;
def BulgeLengthPrice2 = 20;
def SqueezeLengthPrice2 = 20;
def BulgeLengthPrice3 = 12;
def SqueezeLengthPrice3 = 12;

def IntermResistance = Highest(price, BulgeLengthPrice);
def IntermSupport = Lowest(price, SqueezeLengthPrice);
def NearTResistance = Highest(price, BulgeLengthPrice3);
def NearTSupport = Lowest(price, SqueezeLengthPrice3);
plot BandwidthC3 = (NearTResistance - NearTSupport);


plot IntermResistance2 = Highest(BandwidthC3, BulgeLengthPrice);
#IntermResistance2.AssignValueColor(if (conditionK2) then Color.GREEN else if (conditionK3) then Color.RED else Color.GRAY);
plot IntermSupport2 = Lowest(BandwidthC3, SqueezeLengthPrice);
#IntermSupport2.AssignValueColor(if (conditionK2) then Color.GREEN else if (conditionK3) then Color.RED else Color.GRAY);


#BandwidthC3.AssignValueColor(if coloredCandlesOn and priceColor == 1 then Color.LIGHT_GREEN else if coloredCandlesOn and priceColor == -1 then Color.RED else Color.CURRENT);
 

Similar threads

Top