Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Hi @sparhawk,
Here is the code to help find green candles. This can also be used to find red candles. Create a study with the code below then reference the study in your scan query.
Here are the scan settings for finding transitions to green candles. I would suggest running it on a specific watchlist or possibly the weeklys. If this you scan all stocks, the scan may time out on you. Hope this helps.Code:#Confirmation Level Scan created 06/09/2021 by Christopher84 #Select the level of agreement among the 15 indicators included. #MACD with Price declare lower; 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[1] <= Value; #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[3] < RSI) is true or (RSI >= 80) is true; #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[2] < MoneyFlowIndex) is true or (MoneyFlowIndex > 85) is true; #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); #Change in Price def lengthCIP = 5; def displace = 0; def CIP = (price - price[1]); def AvgCIP = ExpAverage(CIP[-displace], lengthCIP); def CIP_UP = AvgCIP > AvgCIP[1]; def CIP_DOWN = AvgCIP < AvgCIP[1]; def condition5 = CIP_UP; #EMA_1 input EMA_length = 12; def AvgExp = ExpAverage(price[-displace], EMA_length); def condition6 = (price >= AvgExp) and (AvgExp[2] <= AvgExp); #EMA_2 input EMA_2length = 20; def displace2 = 0; def AvgExp2 = ExpAverage(price[-displace2], EMA_2length); def condition7 = (price >= AvgExp2) and (AvgExp2[2] <= AvgExp2); #DMI Oscillator input DMI_length = 5; input averageType = AverageType.WILDERS; def diPlus = DMI(DMI_length, averageType)."DI+"; def diMinus = DMI(DMI_length, averageType)."DI-"; def Osc = diPlus - diMinus; def Hist = Osc; def ZeroLine = 0; def condition8 = Osc >= ZeroLine; #Trend_Periods input TP_fastLength = 3; input TP_slowLength = 4; def Periods = sign(ExpAverage(close, TP_fastLength) - ExpAverage(close, TP_slowLength)); def condition9 = Periods > 0; #Polarized Fractal Efficiency input PFE_length = 5; input smoothingLength = 2.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 > 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 condition11 = PercentB > 50; #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); #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 condition13 = (PROSC > 50); #Trend Confirmation #Confirmation_Factor range 1-13. plot Confirmation_Factor = 7; #Use for testing conditions individually. #def Agreement_Level = condition1; plot Agreement_Level = condition1 + condition2 + condition3 + condition4 + condition5 + condition6 + condition7 + condition8 + condition9 + condition10 + condition11 + condition12 + condition13; plot UpArrow = Agreement_Level crosses above Confirmation_Factor; plot DownArrow = Agreement_Level crosses below Confirmation_Factor;
Thanks @Yev! I'm glad you are enjoying the indicators! I would suggest using the newest version C3_Max which was just posted to pg.1 of this thread. The other versions of the indicator are great and really just comes down to a matter of preference. I currently use C3_Max. The consensus level is just a measure of how many studies agree on the direction of price. Consensus values above 0 indicate upward trend while values below 0 indicate downward trend. Consensus increasing or decreasing is telling you the direction that the consensus between the indicators is moving. I hope this helps!@Christopher84 Fantastic work on these indicators man! It may be buried in this thread but my question is what would be the reason to use CC v10 vs C3 V6? In your video you mentioned you don't short and really only play upside moves. I'm still trying to undersand the consensus level portion of the indicators.
Hi @darockra3!Hey @Christopher84, can't wait to try the new study. I had a question that I couldn't find addressed in the thread. Is there anyway for the consensus candles study to run a scan that will scan if the supports and resistance levels are red, green or grey? Thank you
Yeah, I thought maybe it can be simplified so its not too complicated, but I'm not versed enough to create a script for it. Hopefully something to look at as it looks good when it back tests going from red to gray or green along with other conditions for a long position. Thank you!Hi @darockra3!
I haven't put together a scan for those conditions yet. However, I suspect it will be too complex for ToS.
Hi @DeepThinker! Great question. I haven’t developed a scan yet due to limitations of ToS unfortunately. Doesn’t mean I won’t keep trying. I will keep you posted.@Christopher84 Many thanks for sharing new indicator release. While I am preparing to apply new version for monitoring market activity with C3_Max tomorrow, is there a way for creating study based scanner ?
I was hoping to catch signalUp (BUY) vs signalDown (SELL) conditions.
Thanks in advance
You are welcome @Trader Raider! As always, I'll be looking forward to your feedback.Appreciate very much that @Christopher84 and @barbaros shared their talents and scalping study with us! Can't wait to plot the scalper tomorrow. TOS isn't my trading platform but I still like to watch price action in TOS with the indicators on this thread because they display helpful information without distracting clutter. Thank you again for sharing barbaros and Christopher!
Hi Christopher. Thanks for the great updates and scalper! Very nice. Been catching up on this thread after hearing about it. Can you share your aggregate settings for the ES example above? I'm looking to watch SPY with the same time frame of 5 minutes and was wondering how the comparison would be. Thanks again!!! Keep you posted when I review.Anyone trading the /ES today? This was a great example and I wanted to share it with everyone. Signal down the candle before the bell, followed by a breakdown from the OB Zone. Confluence among the indicator for the short scalp.
Hi @rfb!Hi Christopher. Thanks for the great updates and scalper! Very nice. Been catching up on this thread after hearing about it. Can you share your aggregate settings for the ES example above? I'm looking to watch SPY with the same time frame of 5 minutes and was wondering how the comparison would be. Thanks again!!! Keep you posted when I review.
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.