Camarilla Pivot Points for ThinkOrSwim

You are AWESOMEEEEEEE! It works! I really appreciate it! I was losing my mind trying to figure it out.

p.s The only thing, I think, I shot myself in the foot was this piece of code:
def MarketOpen = if getday() == getlastday() and SecondsFromTime(0930) >= 0 and SecondsTillTime(1600) >= 0 then 1 else 0;

It is only plotting bubbles strictly for today's session and I cannot see any bubbles for previous days. If I remove getday() == getlastday() ...do you think it will solve it? or what would be the proper way to do it?

def MarketOpen = if SecondsFromTime(0930) >= 0 and SecondsTillTime(1600) >= 0 then 1 else 0;

I think the following is a little simpler and seems to work on all days on the chart. I used SPX 30d 5m chart with Cam Pivots set to 15d as it provided some good test data.

Edit: correction to S3 code to include secondsfromtime(0930) > 0 to the secondstilltime(1600) > 0 line below to eliminate where first 'buy bubble' occurred outside regular trading session
Capture.jpg
Ruby:
#
# TD Ameritrade IP Company, Inc. (c) 2013-2021
#

input aggregationPeriod = {default "DAY", "WEEK", "MONTH"};
input length = 15;
input hide_s1_r1 = yes;
input lines = {default dashes, points, triangles, horizontal, squares};
input showbubbles_description = yes;
input showpricebubble = yes;
input showlabels = yes;


Assert(length > 0, "'length' should be positive: " + length);

def yyyymmdd = GetYYYYMMDD();
def month = GetYear() * 12 + GetMonth();
def day_number = DaysFromDate(First(yyyymmdd)) + GetDayOfWeek(First(yyyymmdd));
def period;
switch (aggregationPeriod) {
case DAY:
    period = CountTradingDays(Min(First(yyyymmdd), yyyymmdd), yyyymmdd) - 1;
case WEEK:
    period = Floor(day_number / 7);
case MONTH:
    period = Floor(month - First(month));
}
def count = CompoundValue(1, if period != period[1] then (count[1] + period - period[1]) % length else count[1], 0);
def start =  CompoundValue(1, count < count[1] + period - period[1], yes);
def highValue = if start then Highest(high(period = aggregationPeriod), length)[1] else if highValue[1] != 0 then highValue[1] else Double.NaN;
def lowValue = if start then Lowest(low(period = aggregationPeriod), length)[1] else if lowValue[1] != 0 then lowValue[1] else Double.NaN;
def closeValue = if start then close(period = aggregationPeriod)[1] else closeValue[1];
def range = highValue - lowValue;

plot R5 = (highValue / lowValue) * closeValue;
plot R4 = closeValue + range * (1.1) / 2;
plot R3 = closeValue + range * (1.1) / 4;
plot R2 = closeValue + range * (1.1) / 6;
plot R1 = closeValue + range * (1.1) / 12;
plot S1 = closeValue - range * (1.1) / 12;
plot S2 = closeValue - range * (1.1) / 6;
plot S3 = closeValue - range * (1.1) / 4;
plot S4 = closeValue - range * (1.1) / 2;
plot S5 = (closeValue - (R5 - closeValue));

R1.SetHiding(hide_s1_r1);
S1.SetHiding(hide_s1_r1);

R5.SetDefaultColor(GetColor(5));
R4.SetDefaultColor(GetColor(5));
R3.SetDefaultColor(GetColor(5));
R2.SetDefaultColor(GetColor(5));
R1.SetDefaultColor(GetColor(5));
S1.SetDefaultColor(GetColor(6));
S2.SetDefaultColor(GetColor(6));
S3.SetDefaultColor(GetColor(6));
S4.SetDefaultColor(GetColor(6));
S5.SetDefaultColor(GetColor(6));

def paintingStrategy = if lines == lines.points then PaintingStrategy.POINTS else if lines == lines.triangles then PaintingStrategy.TRIANGLES else if lines == lines.dashes then PaintingStrategy.DASHES else if lines == lines.horizontal then PaintingStrategy.HORIZONTAL else PaintingStrategy.SQUARES;

R5.SetPaintingStrategy(paintingStrategy);
R4.SetPaintingStrategy(paintingStrategy);
R3.SetPaintingStrategy(paintingStrategy);
R2.SetPaintingStrategy(paintingStrategy);
R1.SetPaintingStrategy(paintingStrategy);
S1.SetPaintingStrategy(paintingStrategy);
S2.SetPaintingStrategy(paintingStrategy);
S3.SetPaintingStrategy(paintingStrategy);
S4.SetPaintingStrategy(paintingStrategy);
S5.SetPaintingStrategy(paintingStrategy);

#Labels

AddLabel(showlabels, "R5 " + AsText(R5), Color.RED);
AddLabel(showlabels, "R4 " + AsText(R4), Color.RED);
AddLabel(showlabels, "R3 " + AsText(R3), Color.RED);
AddLabel(showlabels, "R2 " + AsText(R2), Color.RED);
AddLabel(showlabels, "R1 " + AsText(R1), Color.RED);

AddLabel(showlabels, "S5 " + AsText(S5), Color.GREEN);
AddLabel(showlabels, "S4 " + AsText(S4), Color.GREEN);
AddLabel(showlabels, "S3 " + AsText(S3), Color.GREEN);
AddLabel(showlabels, "S2 " + AsText(S2), Color.GREEN);
AddLabel(showlabels, "S1 " + AsText(S1), Color.GREEN);



#Bubbles to describe Pivot Levels

input bubblemover = 8;
def n = bubblemover;
def n1 = n + 1;

def StartPlot = if showbubbles_description == yes then (IsNaN(close[n]) and !IsNaN(close[n1])) else Double.NaN;


AddChartBubble(StartPlot, R5[n1], "R5 " + (if showpricebubble then AsText(R5[n1]) else ""), Color.RED,   if close[n1] > R5[n1] then no else yes);
AddChartBubble(StartPlot, R4[n1], "R4 " + (if showpricebubble then AsText(R4[n1]) else ""), Color.RED,   if close[n1] > R4[n1] then no else yes);
AddChartBubble(StartPlot, R3[n1], "R3 " + (if showpricebubble then AsText(R3[n1]) else ""), Color.RED,   if close[n1] > R3[n1] then no else yes);
AddChartBubble(StartPlot, R2[n1], "R2 " + (if showpricebubble then AsText(R2[n1]) else ""), Color.RED,   if close[n1] > R2[n1] then no else yes);
AddChartBubble(StartPlot and hide_s1_r1 == no, R1[n1], "R1 " + (if showpricebubble then AsText(R1[n1]) else ""), Color.RED,   if close[n1] > R1[n1] then no else yes);

AddChartBubble(StartPlot, S5[n1], "S5 " + (if showpricebubble then AsText(S5[n1]) else ""), Color.GREEN, if close[n1] > S5[n1] then no else yes);
AddChartBubble(StartPlot, S4[n1], "S4 " + (if showpricebubble then AsText(S4[n1]) else ""), Color.GREEN, if close[n1] > S4[n1] then no else yes);
AddChartBubble(StartPlot, S3[n1], "S3 " + (if showpricebubble then AsText(S3[n1]) else ""), Color.GREEN, if close[n1] > S3[n1] then no else yes);
AddChartBubble(StartPlot, S2[n1], "S2 " + (if showpricebubble then AsText(S2[n1]) else ""), Color.GREEN, if close[n1] > S2[n1] then no else yes);
AddChartBubble(StartPlot and hide_s1_r1 == no, S1[n1], "S1 " + (if showpricebubble then AsText(S1[n1]) else ""), Color.GREEN, if close[n1] > S1[n1] then no else yes);

R1.HideBubble();
R2.HideBubble();
R3.HideBubble();
R4.HideBubble();
R5.HideBubble();

S1.HideBubble();
S2.HideBubble();
S3.HideBubble();
S4.HideBubble();
S5.HideBubble();

#S3 Buy Bubble -----------------------------------------------------------
def cond2 = if SecondsFromTime(0930) == 0
            then 0
            else if Between(open(period = aggregationPeriod), S4, S3) and
                    close crosses above S3 and
                    secondsfromTime(0930)>0 and SecondsTillTime(1600) > 0
            then 1
            else cond2[1] >= 1 ;

AddChartBubble(cond2[1] == 0 and cond2 == 1, low, "Buy", Color.LIGHT_RED, no);
 
Last edited:
I edited SleepyZ's version based on Thor Young's book A Complete Day Trading System by adding S6/R6 (actually I added the missing 5's), added more customization options, and set the colors accordinly (but gave the options to customize the colors any way you prefer).

UPDATE! I've added a label on the chart that indicates whether to use Premarket Data or not per Thor's rules! See animated gif.
UPDATE2! I've added the Central Floor Pivot and Floor Pivots 3&4!
UPDATE3! Cams WITH PREMARKET DATA at last!!!

This now has it's own post here: https://usethinkscript.com/threads/pivot-day-trading-system-for-thinkorswim.12988/
 
Last edited:
I edited SeleepyZ's version and added S6/R6 (actually I added the missing 5's) and also flipped the colors to make it in parity with DAS (though they will always be off because ToS doesn't include pre/post-market data). I have to use -25 for the bubblemover setting.


Code:
#
# TD Ameritrade IP Company, Inc. (c) 2013-2021
#Original by SleepyZ: https://usethinkscript.com/threads/camarilla-pivot-points-for-thinkorswim.696/post-77438
#R5 & S5 Added by Wiinii

input aggregationPeriod = {default "DAY", "WEEK", "MONTH"};
input length = 25;
input hide_s1_r1 = yes;
input lines = {default dashes, points, triangles, horizontal, squares};
input showbubbles_description = yes;
input showpricebubble = yes;

Assert(length > 0, "'length' should be positive: " + length);

def yyyymmdd = GetYYYYMMDD();
def month = GetYear() * 12 + GetMonth();
def day_number = DaysFromDate(First(yyyymmdd)) + GetDayOfWeek(First(yyyymmdd));
def period;
switch (aggregationPeriod) {
case DAY:
    period = CountTradingDays(Min(First(yyyymmdd), yyyymmdd), yyyymmdd) - 1;
case WEEK:
    period = Floor(day_number / 7);
case MONTH:
    period = Floor(month - First(month));
}
def count = CompoundValue(1, if period != period[1] then (count[1] + period - period[1]) % length else count[1], 0);
def start =  CompoundValue(1, count < count[1] + period - period[1], yes);
def highValue = if start then Highest(high(period = aggregationPeriod), length)[1] else if highValue[1] != 0 then highValue[1] else Double.NaN;
def lowValue = if start then Lowest(low(period = aggregationPeriod), length)[1] else if lowValue[1] != 0 then lowValue[1] else Double.NaN;
def closeValue = if start then close(period = aggregationPeriod)[1] else closeValue[1];
def range = highValue - lowValue;

plot R6 = (highValue / lowValue) * closeValue;
plot R4 = closeValue + range * (1.1) / 2;
plot R3 = closeValue + range * (1.1) / 4;
plot R5 = r4 + 1.168 * (R4 – R3);
plot R2 = closeValue + range * (1.1) / 6;
plot R1 = closeValue + range * (1.1) / 12;
plot S1 = closeValue - range * (1.1) / 12;
plot S2 = closeValue - range * (1.1) / 6;
plot S3 = closeValue - range * (1.1) / 4;
plot S4 = closeValue - range * (1.1) / 2;
plot S5 = S4-1.168 * (s3 - s4);
plot S6 = (closeValue - (R6 - closeValue));

R1.SetHiding(hide_s1_r1);
S1.SetHiding(hide_s1_r1);

R6.SetDefaultColor(GetColor(6));
R5.SetDefaultColor(GetColor(6));
R4.SetDefaultColor(GetColor(6));
R3.SetDefaultColor(GetColor(6));
R2.SetDefaultColor(GetColor(6));
R1.SetDefaultColor(GetColor(6));
S1.SetDefaultColor(GetColor(5));
S2.SetDefaultColor(GetColor(5));
S3.SetDefaultColor(GetColor(5));
S4.SetDefaultColor(GetColor(5));
S5.SetDefaultColor(GetColor(5));
S6.SetDefaultColor(GetColor(5));

def paintingStrategy = if lines == lines.points then PaintingStrategy.POINTS else if lines == lines.triangles then PaintingStrategy.TRIANGLES else if lines == lines.dashes then PaintingStrategy.DASHES else if lines == lines.horizontal then PaintingStrategy.HORIZONTAL else PaintingStrategy.SQUARES;

R6.SetPaintingStrategy(paintingStrategy);
R5.SetPaintingStrategy(paintingStrategy);
R4.SetPaintingStrategy(paintingStrategy);
R3.SetPaintingStrategy(paintingStrategy);
R2.SetPaintingStrategy(paintingStrategy);
R1.SetPaintingStrategy(paintingStrategy);
S1.SetPaintingStrategy(paintingStrategy);
S2.SetPaintingStrategy(paintingStrategy);
S3.SetPaintingStrategy(paintingStrategy);
S4.SetPaintingStrategy(paintingStrategy);
S5.SetPaintingStrategy(paintingStrategy);
S6.SetPaintingStrategy(paintingStrategy);

#Bubbles to describe Pivot Levels

input bubblemover = 8;
def n = bubblemover;
def n1 = n + 1;

def StartPlot = if showbubbles_description == yes then (IsNaN(close[n]) and !IsNaN(close[n1])) else Double.NaN;


AddChartBubble(StartPlot, R6[n1], "R6 " + (if showpricebubble then AsText(R6[n1]) else ""), Color.GREEN,   if close[n1] > R6[n1] then no else yes);
AddChartBubble(StartPlot, R5[n1], "R5 " + (if showpricebubble then AsText(R5[n1]) else ""), Color.GREEN,   if close[n1] > R5[n1] then no else yes);
AddChartBubble(StartPlot, R4[n1], "R4 " + (if showpricebubble then AsText(R4[n1]) else ""), Color.GREEN,   if close[n1] > R4[n1] then no else yes);
AddChartBubble(StartPlot, R3[n1], "R3 " + (if showpricebubble then AsText(R3[n1]) else ""), Color.GREEN,   if close[n1] > R3[n1] then no else yes);
AddChartBubble(StartPlot, R2[n1], "R2 " + (if showpricebubble then AsText(R2[n1]) else ""), Color.GREEN,   if close[n1] > R2[n1] then no else yes);
AddChartBubble(StartPlot and hide_s1_r1 == no, R1[n1], "R1 " + (if showpricebubble then AsText(R1[n1]) else ""), Color.GREEN,   if close[n1] > R1[n1] then no else yes);

AddChartBubble(StartPlot, S6[n1], "S6 " + (if showpricebubble then AsText(S6[n1]) else ""), Color.RED, if close[n1] > S6[n1] then no else yes);
AddChartBubble(StartPlot, S5[n1], "S5 " + (if showpricebubble then AsText(S5[n1]) else ""), Color.RED, if close[n1] > S5[n1] then no else yes);
AddChartBubble(StartPlot, S4[n1], "S4 " + (if showpricebubble then AsText(S4[n1]) else ""), Color.RED, if close[n1] > S4[n1] then no else yes);
AddChartBubble(StartPlot, S3[n1], "S3 " + (if showpricebubble then AsText(S3[n1]) else ""), Color.RED, if close[n1] > S3[n1] then no else yes);
AddChartBubble(StartPlot, S2[n1], "S2 " + (if showpricebubble then AsText(S2[n1]) else ""), Color.RED, if close[n1] > S2[n1] then no else yes);
AddChartBubble(StartPlot and hide_s1_r1 == no, S1[n1], "S1 " + (if showpricebubble then AsText(S1[n1]) else ""), Color.RED, if close[n1] > S1[n1] then no else yes);

R1.HideBubble();
R2.HideBubble();
R3.HideBubble();
R4.HideBubble();
R5.HideBubble();
R6.HideBubble();

S1.HideBubble();
S2.HideBubble();
S3.HideBubble();
S4.HideBubble();
S5.HideBubble();
S6.HideBubble();
@Wiinii thanks a lot. Can you please keep the premarket and post-market data for intraday or add them to be calculated in this study? I am trying to match the DAS camarilla levels for intraday charts and they don't seem to match because of that. I thought @SleepyZ version did include the premarket and post-market data.
 
Last edited:
@Wiinii thanks a lot. Can you please keep the premarket and post-market data for intraday or add them to be calculated in this study? I am trying to match the DAS camarilla levels for intraday charts and they don't seem to match because of that. I thought @SleepyZ version did include the premarket and post-market data.
@trader360 if you set the length input to 1 (so that it takes the high/low/close of just the previous 1 day, instead of the previous 25 days), and have extended hours show on your chart, do your numbers get closer to DAS?
 
"they will always be off because ToS doesn't include pre/post-market data"

You're looking for an area anyway, so it doesn't need to be that exact.
 
"they will always be off because ToS doesn't include pre/post-market data"

You're looking for an area anyway, so it doesn't need to be that exact.
My experience is that tos does include pre and post market data when your charts are set to show extended hours. Where it differs from some other platforms, specific to camarilla and futures, is that tos uses the close price instead of the settlement price when returning daily aggregation on close (which is how most indicators calculate pivots). Trading view, for instance, uses settlement price when calculating pivots.

When you're looking at a daily chart, you're right that it doesn't include pre/post. But trader was asking specifically about intraday.

@FutureTony has a really good camarilla indicator that allows for overriding close price to be settlement here https://usethinkscript.com/threads/day-trading-with-pivots-for-thinkorswim.7943/
 
Last edited:
@trader360 if you set the length input to 1 (so that it takes the high/low/close of just the previous 1 day, instead of the previous 25 days), and have extended hours show on your chart, do your numbers get closer to DAS?
- It looks like @SleepyZ camarilla study with premarket and post-market data is the closest to DAS with a little deviation. @SleepyZ can you please add R6 and S6 to the same code you provided before as well?

Here are the calculations in DAS:
R6R6 = (High/Low) * Close
R5R5 = R4 + 1.168 * (R4 – R3)
R4R4 = Close + (High – Low) * 1.1 / 2
R3R3 = Close + (High – Low) * 1.1 / 4
R2R2 = Close + (High – Low) * 1.1 / 6
R1R1 = Close + (High – Low) * 1.1 / 12
S1S1 = Close – (High – Low) * 1.1 / 12
S2S2 = Close – (High – Low) * 1.1 / 6
S3S3 = Close – (High – Low) * 1.1 / 4
S4S4 = Close – (High – Low) * 1.1 / 2
S5S5 = S4 – 1.168 * (S3 – S4)
S6S6 = Close – (R6 – Close)

- Also, how do we use start and market close inputs? Shall we keep them at 1945 & 2000?

Thank you @bigboss I will check the link to the study you sent. Much appreciate everyone's help!
 
Last edited:
Is there a way create Camarilla points based on previous day High, Low, Close (including the previous day's pre-market and after-hours sessions)?
High will be the highest of previous day's pre-market, previous day's regular hour, and previous day's after-hours.
Same for close and low value.
Thanks.
 
Is there a way create Camarilla points based on previous day High, Low, Close (including the previous day's pre-market and after-hours sessions)?
High will be the highest of previous day's pre-market, previous day's regular hour, and previous day's after-hours.
Same for close and low value.
Thanks.
Heres an offshoot that I made. Where the Camarilla pivot are calculated with the days close rather than some 25 period average.
I also have the Previous day's High and Low as pivots

Code:
input aggregationPeriod = AggregationPeriod.DAY;

def PH = high(period = aggregationPeriod)[1];
def PL = low(period = aggregationPeriod)[1];
def PC = close(period = aggregationPeriod)[1];

Plot R6;
Plot R5;
Plot R4;
plot R3;
plot R2;
plot R1;

plot HH;
plot PP;
plot LL;

plot S1;
plot S2;
plot S3;
Plot S4;
Plot S5;
Plot S6;

HH = PH;
LL = PL;
PP = (PH + PL + PC) / 3;

R1 = PC + (PH – PL) * 1.1 / 12;
R2 = PC + (PH – PL) * 1.1 / 6;
R3 = PC + (PH – PL)* 1.1 / 4;
R4 = PC + (PH – PL)* 1.1 / 2;
R5 = R4 + 1.168 * (R4 – R3);
R6= (PH/PL) * PC;
S1 = PC - (PH – PL)* 1.1 / 12;
S2 = PC - (PH – PL)* 1.1 / 6;
S3 = PC - (PH – PL)* 1.1 / 4;
S4 = PC - (PH – PL)* 1.1 / 2;
S5 = S4 – 1.168 * (S3 – S4);
S6 = PC – (R6 – PC);

R6.SetDefaultColor(GetColor(5));
R5.SetDefaultColor(GetColor(5));
R4.SetDefaultColor(GetColor(5));
R3.SetDefaultColor(GetColor(5));
R2.SetDefaultColor(GetColor(5));
R1.SetDefaultColor(GetColor(5));
HH.SetDefaultColor(GetColor(4));
PP.SetDefaultColor(GetColor(0));
LL.SetDefaultColor(GetColor(1));
S1.SetDefaultColor(GetColor(6));
S2.SetDefaultColor(GetColor(6));
S3.SetDefaultColor(GetColor(6));
S4.SetDefaultColor(GetColor(6));
S5.SetDefaultColor(GetColor(6));
S6.SetDefaultColor(GetColor(6));

R6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
HH.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PP.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
LL.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


HH.SetStyle(Curve.MEDIUM_DASH);
LL.SetStyle(Curve.MEDIUM_DASH);
 
Heres an offshoot that I made. Where the Camarilla pivot are calculated with the days close rather than some 25 period average.
I also have the Previous day's High and Low as pivots

Code:
input aggregationPeriod = AggregationPeriod.DAY;

def PH = high(period = aggregationPeriod)[1];
def PL = low(period = aggregationPeriod)[1];
def PC = close(period = aggregationPeriod)[1];

Plot R6;
Plot R5;
Plot R4;
plot R3;
plot R2;
plot R1;

plot HH;
plot PP;
plot LL;

plot S1;
plot S2;
plot S3;
Plot S4;
Plot S5;
Plot S6;

HH = PH;
LL = PL;
PP = (PH + PL + PC) / 3;

R1 = PC + (PH – PL) * 1.1 / 12;
R2 = PC + (PH – PL) * 1.1 / 6;
R3 = PC + (PH – PL)* 1.1 / 4;
R4 = PC + (PH – PL)* 1.1 / 2;
R5 = R4 + 1.168 * (R4 – R3);
R6= (PH/PL) * PC;
S1 = PC - (PH – PL)* 1.1 / 12;
S2 = PC - (PH – PL)* 1.1 / 6;
S3 = PC - (PH – PL)* 1.1 / 4;
S4 = PC - (PH – PL)* 1.1 / 2;
S5 = S4 – 1.168 * (S3 – S4);
S6 = PC – (R6 – PC);

R6.SetDefaultColor(GetColor(5));
R5.SetDefaultColor(GetColor(5));
R4.SetDefaultColor(GetColor(5));
R3.SetDefaultColor(GetColor(5));
R2.SetDefaultColor(GetColor(5));
R1.SetDefaultColor(GetColor(5));
HH.SetDefaultColor(GetColor(4));
PP.SetDefaultColor(GetColor(0));
LL.SetDefaultColor(GetColor(1));
S1.SetDefaultColor(GetColor(6));
S2.SetDefaultColor(GetColor(6));
S3.SetDefaultColor(GetColor(6));
S4.SetDefaultColor(GetColor(6));
S5.SetDefaultColor(GetColor(6));
S6.SetDefaultColor(GetColor(6));

R6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
HH.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PP.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
LL.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


HH.SetStyle(Curve.MEDIUM_DASH);
LL.SetStyle(Curve.MEDIUM_DASH);
Thank you very much!!!
 
Heres an offshoot that I made. Where the Camarilla pivot are calculated with the days close rather than some 25 period average.

With all due respect, nothing was fixed here, only broken. The calculations are in the exact same place as SeleepyZ's version (and my offshoot) when set to 1 day, but the labels are gone - or at least there is no way to bubblemove them into place. You also flipped the red and green back which makes no sense since green would be up in the green and red in the red below same as DAS.
 
help adding bubble

Hello All, I have camarilla pints for TOS and need to add bubble showing R1-R5 and S1-S6. Can anyone help as I am not a coder. Thank you in advance..

Here is the code.

declare upper;
Assert(GetAggregationPeriod() < AggregationPeriod.DAY, "This indicator is meant for Intraday display");

def PreviousHigh = Highest(high(period = AggregationPeriod.DAY)[1], 1);
def PreviousLow = Lowest(low(period = AggregationPeriod.DAY)[1], 1);
def PreviousClose = close(period = AggregationPeriod.DAY)[1];
def Pivot_ = (PreviousHigh + PreviousLow + PreviousClose ) / 3.0;
def Range = PreviousHigh - PreviousLow;
def h5_ = (PreviousHigh / PreviousLow) * PreviousClose ;
def h4_ = PreviousClose + range * 1.1 / 2.0;
def h3_ = PreviousClose + Range * 1.1 / 4.0;
def h2_ = PreviousClose + Range * 1.1 / 6.0;
def h1_ = PreviousClose + Range * 1.1 / 12.0;
def l1_ = PreviousClose - Range * 1.1 / 12.0;
def l2_ = PreviousClose - Range * 1.1 / 6.0;
def l3_ = PreviousClose - Range * 1.1 / 4.0;
def l4_ = PreviousClose - Range * 1.1 / 2.0;
def h6_ = h5_ + 1.168 * (h5_ - h4_);
def l5_ = PreviousClose - (h5_ - PreviousClose);
def l6_ = PreviousClose - (h6_ - PreviousClose);

plot "Pivot" = Pivot_;
"Pivot".SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
"Pivot".SetDefaultColor(CreateColor(120, 120, 120));
"Pivot".SetLineWeight(2);
"Pivot".HideBubble();
"Pivot".HideTitle();

plot R6 = h6_;
R6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R6.SetDefaultColor(CreateColor(230, 190, 0));
R6.SetLineWeight(1);
R6.HideBubble();
R6.HideTitle();

plot R5 = h5_;
R5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R5.SetDefaultColor(CreateColor(140, 60, 60));
R5.SetLineWeight(4);
R5.HideBubble();
R5.HideTitle();

plot R4 = h4_;
R4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R4.SetDefaultColor(CreateColor(140, 60, 60));
R4.SetLineWeight(3);
R4.HideBubble();
R4.HideTitle();

plot R3 = h3_;
R3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R3.SetDefaultColor(CreateColor(140, 60, 60));
R3.SetLineWeight(2);
R3.HideBubble();
R3.HideTitle();

plot R2 = h2_;
R2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R2.SetDefaultColor(Color.red);
R2.SetLineWeight(1);
R2.HideBubble();
R2.HideTitle();
R2.Hide();

plot R1 = h1_;
R1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R1.SetDefaultColor(Color.red);
R1.SetLineWeight(1);
R1.HideBubble();
R1.HideTitle();
R1.Hide();

plot S1 = l1_;
S1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S1.SetDefaultColor(Color.Green);
S1.SetLineWeight(1);
S1.HideBubble();
S1.HideTitle();
S1.Hide();

plot S2 = l2_;
S2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S2.SetDefaultColor(Color.Green);
S2.SetLineWeight(1);
S2.HideBubble();
S2.HideTitle();
S2.Hide();

plot S3 = l3_;
S3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S3.SetDefaultColor(CreateColor(45, 135, 45));
S3.SetLineWeight(2);
S3.HideBubble();
S3.HideTitle();

plot S4 = l4_;
S4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S4.SetDefaultColor(CreateColor(45, 135, 45));
S4.SetLineWeight(3);
S4.HideBubble();
S4.HideTitle();

plot S5 = l5_;
S5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S5.SetDefaultColor(CreateColor(45, 135, 45));
S5.SetLineWeight(4);
S5.HideBubble();
S5.HideTitle();

plot S6 = l6_;
S6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S6.SetDefaultColor(CreateColor(230, 190, 0));
S6.SetLineWeight(1);
S6.HideBubble();
S6.HideTitle();
 
Last edited by a moderator:
help adding bubble

Hello All, I have camarilla pints for TOS and need to add bubble showing R1-R5 and S1-S6. Can anyone help as I am not a coder. Thank you in advance..

Here is a modification to post https://usethinkscript.com/threads/camarilla-pivot-points-for-thinkorswim.696/post-77618 to add the bubbles. There are various input options in the code below.

Ruby:
declare upper;

Assert(GetAggregationPeriod() < AggregationPeriod.DAY, "This indicator is meant for Intraday display");

input hide_s1_r1 = yes;
input hide_s2_r2 = yes;

def PreviousHigh = Highest(high(period = AggregationPeriod.DAY)[1], 1);
def PreviousLow = Lowest(low(period = AggregationPeriod.DAY)[1], 1);
def PreviousClose = close(period = AggregationPeriod.DAY)[1];
def Pivot_ = (PreviousHigh + PreviousLow + PreviousClose ) / 3.0;
def Range = PreviousHigh - PreviousLow;
def h5_ = (PreviousHigh / PreviousLow) * PreviousClose ;
def h4_ = PreviousClose + Range * 1.1 / 2.0;
def h3_ = PreviousClose + Range * 1.1 / 4.0;
def h2_ = PreviousClose + Range * 1.1 / 6.0;
def h1_ = PreviousClose + Range * 1.1 / 12.0;
def l1_ = PreviousClose - Range * 1.1 / 12.0;
def l2_ = PreviousClose - Range * 1.1 / 6.0;
def l3_ = PreviousClose - Range * 1.1 / 4.0;
def l4_ = PreviousClose - Range * 1.1 / 2.0;
def h6_ = h5_ + 1.168 * (h5_ - h4_);
def l5_ = PreviousClose - (h5_ - PreviousClose);
def l6_ = PreviousClose - (h6_ - PreviousClose);

plot "Pivot" = Pivot_;
"Pivot".SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
"Pivot".SetDefaultColor(CreateColor(120, 120, 120));
"Pivot".SetLineWeight(2);
"Pivot".HideBubble();
"Pivot".HideTitle();

plot R6 = h6_;
R6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R6.SetDefaultColor(CreateColor(230, 190, 0));
R6.SetLineWeight(1);
R6.HideBubble();
R6.HideTitle();

plot R5 = h5_;
R5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R5.SetDefaultColor(CreateColor(140, 60, 60));
R5.SetLineWeight(4);
R5.HideBubble();
R5.HideTitle();

plot R4 = h4_;
R4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R4.SetDefaultColor(CreateColor(140, 60, 60));
R4.SetLineWeight(3);
R4.HideBubble();
R4.HideTitle();

plot R3 = h3_;
R3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R3.SetDefaultColor(CreateColor(140, 60, 60));
R3.SetLineWeight(2);
R3.HideBubble();
R3.HideTitle();

plot R2 = if hide_s2_r2 == yes then Double.NaN else h2_;
R2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R2.SetDefaultColor(Color.RED);
R2.SetLineWeight(1);
R2.HideBubble();
R2.HideTitle();
#R2.Hide();

plot R1 = if hide_s1_r1 == yes then Double.NaN else h1_;
R1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R1.SetDefaultColor(Color.RED);
R1.SetLineWeight(1);
R1.HideBubble();
R1.HideTitle();
#R1.Hide();

plot S1 = if hide_s1_r1 == yes then Double.NaN else l1_;
S1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S1.SetDefaultColor(Color.GREEN);
S1.SetLineWeight(1);
S1.HideBubble();
S1.HideTitle();
#S1.Hide();

plot S2 = if hide_s2_r2 == yes then Double.NaN else l2_;
S2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S2.SetDefaultColor(Color.GREEN);
S2.SetLineWeight(1);
S2.HideBubble();
S2.HideTitle();
#S2.Hide();

plot S3 = l3_;
S3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S3.SetDefaultColor(CreateColor(45, 135, 45));
S3.SetLineWeight(2);
S3.HideBubble();
S3.HideTitle();

plot S4 = l4_;
S4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S4.SetDefaultColor(CreateColor(45, 135, 45));
S4.SetLineWeight(3);
S4.HideBubble();
S4.HideTitle();

plot S5 = l5_;
S5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S5.SetDefaultColor(CreateColor(45, 135, 45));
S5.SetLineWeight(4);
S5.HideBubble();
S5.HideTitle();

plot S6 = l6_;
S6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S6.SetDefaultColor(CreateColor(230, 190, 0));
S6.SetLineWeight(1);
S6.HideBubble();
S6.HideTitle();


#Bubbles to describe Pivot Levels

input showbubbles_description = yes;
input showpricebubble = yes;

input bubblemover = 8;
def n = bubblemover;
def n1 = n + 1;

def StartPlot = if showbubbles_description == yes then (IsNaN(close[n]) and !IsNaN(close[n1])) else Double.NaN;

AddChartBubble(StartPlot, R6[n1], "R6 " + (if showpricebubble then AsText(R6[n1]) else ""), Color.RED,   if close[n1] > R6[n1] then no else yes);
AddChartBubble(StartPlot, R5[n1], "R5 " + (if showpricebubble then AsText(R5[n1]) else ""), Color.RED,   if close[n1] > R5[n1] then no else yes);
AddChartBubble(StartPlot, R4[n1], "R4 " + (if showpricebubble then AsText(R4[n1]) else ""), Color.RED,   if close[n1] > R4[n1] then no else yes);
AddChartBubble(StartPlot, R3[n1], "R3 " + (if showpricebubble then AsText(R3[n1]) else ""), Color.RED,   if close[n1] > R3[n1] then no else yes);
AddChartBubble(StartPlot, R2[n1], "R2 " + (if showpricebubble then AsText(R2[n1]) else ""), Color.RED,   if close[n1] > R2[n1] then no else yes);
AddChartBubble(StartPlot and hide_s1_r1 == no, R1[n1], "R1 " + (if showpricebubble then AsText(R1[n1]) else ""), Color.RED,   if close[n1] > R1[n1] then no else yes);

AddChartBubble(StartPlot, S6[n1], "S6 " + (if showpricebubble then AsText(S6[n1]) else ""), Color.GREEN, if close[n1] > S6[n1] then no else yes);
AddChartBubble(StartPlot, S5[n1], "S5 " + (if showpricebubble then AsText(S5[n1]) else ""), Color.GREEN, if close[n1] > S5[n1] then no else yes);
AddChartBubble(StartPlot, S4[n1], "S4 " + (if showpricebubble then AsText(S4[n1]) else ""), Color.GREEN, if close[n1] > S4[n1] then no else yes);
AddChartBubble(StartPlot, S3[n1], "S3 " + (if showpricebubble then AsText(S3[n1]) else ""), Color.GREEN, if close[n1] > S3[n1] then no else yes);
AddChartBubble(StartPlot, S2[n1], "S2 " + (if showpricebubble then AsText(S2[n1]) else ""), Color.GREEN, if close[n1] > S2[n1] then no else yes);
AddChartBubble(StartPlot and hide_s1_r1 == no, S1[n1], "S1 " + (if showpricebubble then AsText(S1[n1]) else ""), Color.GREEN, if close[n1] > S1[n1] then no else yes);
 
Reading through these posts...I have a similar question as several above: Is there a script for including pre and aftermarket hours when making the calculations?
So instead of using normal market hours, the highs and lows would be based on the hours between 0400-2000. And the close would be the price at 2000.
 
Here’s a Camarilla study with pre and post market data.

If anyone could help there's a couple of things left.
1. For some reason the cams are showing up in the prior day's after hour and current day's premarket
2. The cams don't show up for any of the prior days. I guess that makes since I'm only grabbing the pre and post market data for the prior day, would be great if I could get this to show up for at least the prior day.
Ruby:
declare hide_on_daily;

# Prior Post Market Highs and Lows #
script aft {
    input daysback = 1;
    def ymd      = GetYYYYMMDD();
    def capture  = !IsNaN(close) and ymd != ymd[1];
    def dayCount = CompoundValue(1, if capture then dayCount[1] + 1 else dayCount[1], 0);
    def thisDay  = HighestAll(dayCount) - dayCount  ;

    def ahigh    = if thisDay[1] == daysback + 1 and gettime() crosses above regularTradingEnd(getyyyYMMDD())
                   then high
                   else if thisDay[1] == daysback + 1 and thisDay >= daysback + 1
                   then  Max(high, ahigh[1]) else ahigh[1];
    def alow    = if thisDay[1] == daysback + 1 and gettime() crosses above regularTradingEnd(getyyyYMMDD())
                  then low
                  else if thisDay[1] == daysback + 1 and thisDay >= daysback + 1
                  then  Min(low, alow[1]) else alow[1];
    plot ah     = ahigh;
    plot al     = alow;
}

# Prior Pre Market Highs and Lows #
script pre {
    input daysback = 1;
    def ymd      = GetYYYYMMDD();
    def capture  = !IsNaN(close) and ymd != ymd[1];
    def dayCount = CompoundValue(1, if capture then dayCount[1] + 1 else dayCount[1], 0);
    def thisDay  = HighestAll(dayCount) - dayCount  ;

    def phigh    = if thisDay[1] == daysback + 1 and thisDay == daysback
                   then high
                   else if thisDay == daysback and GetTime() < RegularTradingStart(GetYYYYMMDD())
                   then  Max(high, phigh[1]) else phigh[1];
    def plow    = if thisDay[1] == daysback + 1 and thisDay == daysback
                  then low
                  else if thisDay == daysback and GetTime() < RegularTradingStart(GetYYYYMMDD())
                  then  Min(low, plow[1]) else plow[1];
    plot ph     = phigh;
    plot pl     = plow;
}

# Inputs
input aggregationPeriod = AggregationPeriod.DAY;
input length = 1;
input displace = -1;
input showOnlyLastPeriod = yes;
input show_bubble = yes;

# Highs and Lows
def priorDayAftHigh = aft(0);
def priorDayAftLow = aft(0).al;
def priorDayPreHigh = pre(1);
def priorDayPreLow = pre(1).pl;

# Prior Day Values
def dayCount = CompoundValue(1, if GetYYYYMMDD() != GetYYYYMMDD()[1] then dayCount[1] + 1 else dayCount[1], 0);
def thisDay  = (HighestAll(dayCount) - dayCount);
def priorDayHigh = high(period = aggregationPeriod)[1];
def priorDayLow = low(period = aggregationPeriod)[1];

# Give me the close of the aftermarket
input start = 01800;
input marketClose = 2000;
def closeCounter = SecondsTillTime(marketClose) >= 0 and SecondsFromTime(start) >= 0;
rec PC = if closecounter and !isnan(close) then close else PC[1];

# We want the highest high and the lowest low
def PriorHighPrePost = Max(priorDayPreHigh, priorDayAftHigh);
def PriorLowPrePost = Min(priorDayPreLow, priorDayAftLow);
def PH = Max(priorDayHigh, PriorHighPrePost);
def PL = Min(priorDayLow, PriorLowPrePost);

# Cam Calculations
plot R5;
plot R4;
plot R3;
plot R2;
plot R1;
plot S1;
plot S2;
plot S3;
plot S4;
plot S5;

R1 = PC + (PH-PL)*1.1/12;
R2 = PC + (PH-PL)*1.1/6;
R3 = PC + (PH-PL)*1.1/4;
R4 = PC + (PH-PL)*1.1/2;
R5 = (PH/PL)* PC;
S1 = PC - (PH-PL)*1.1/12;
S2 = PC - (PH-PL)*1.1/6;
S3 = PC - (PH-PL)*1.1/4;
S4 = PC - (PH-PL)*1.1/2;
S5 = PC - (R5 - PC);

# Draw Everything
R5.SetDefaultColor(GetColor(5));
R4.SetDefaultColor(GetColor(5));
R3.SetDefaultColor(GetColor(5));
R2.SetDefaultColor(GetColor(5));
R1.SetDefaultColor(GetColor(5));
S1.SetDefaultColor(GetColor(6));
S2.SetDefaultColor(GetColor(6));
S3.SetDefaultColor(GetColor(6));
S4.SetDefaultColor(GetColor(6));
S5.SetDefaultColor(GetColor(6));

R5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
R1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
S4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
s5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

R5.SetStyle(Curve.SHORT_DASH);
R4.SetStyle(Curve.SHORT_DASH);
R3.SetStyle(Curve.SHORT_DASH);
R2.SetStyle(Curve.SHORT_DASH);
R1.SetStyle(Curve.SHORT_DASH);
S1.SetStyle(Curve.SHORT_DASH);
S2.SetStyle(Curve.SHORT_DASH);
S3.SetStyle(Curve.SHORT_DASH);
S4.SetStyle(Curve.SHORT_DASH);
S5.SetStyle(Curve.SHORT_DASH);

AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else R5 != R5[1], R5, "R5: " + AsText(Round(R5 / TickSize(), 0) * TickSize()), Color.RED);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else R4 != R4[1], R4, "R4: " + AsText(Round(R4 / TickSize(), 0) * TickSize()), Color.RED);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else R3 != R3[1], R3, "R3: " + AsText(Round(R3 / TickSize(), 0) * TickSize()), Color.RED);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else R2 != R2[1], R2, "R2: " + AsText(Round(R2 / TickSize(), 0) * TickSize()), Color.RED);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else R1 != R1[1], R1, "R1: " + AsText(Round(R1 / TickSize(), 0) * TickSize()), Color.RED);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else S5 != S5[1], S5, "S5: " + AsText(Round(S5 / TickSize(), 0) * TickSize()), Color.GREEN);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else S4 != S4[1], S4, "S4: " + AsText(Round(S4 / TickSize(), 0) * TickSize()), Color.GREEN);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else S3 != S3[1], S3, "S3: " + AsText(Round(S3 / TickSize(), 0) * TickSize()), Color.GREEN);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else S2 != S2[1], S2, "S2: " + AsText(Round(S2 / TickSize(), 0) * TickSize()), Color.GREEN);
AddChartBubble(show_bubble and
                if showonlyLastPeriod
                then thisDay[1] == 1 and thisDay == 0
                else S1 != S1[1], S1, "S1: " + AsText(Round(S1 / TickSize(), 0) * TickSize()), Color.GREEN);

Here are some screenshots comparing Das Pivots and my TOS Studies pivots.
zpcUx24.png

XbCOs6Z.png
 
Last edited:
I would like to add CamarillaPivot study as a watchlist column to see real-time Camarilla levels (from S5 to R5). TOS has 5 support and 5 Resistance level, which are S1, S2, S3, S4, S5, R1, R2, R3, R4 and R5.

If we can create 1 watchlist column which shows real-time camarilla level as per the below example -
1. At 9:30 when the market opens - if you see $AMD price was at S3 so column should say - S3
2. At 9:50 - $AMD price was at S4 so the column should say - S4
3. At 11:00 - $AMD price was back at S3 so the column should update and say - S3
so on....
4. if price goes to $106.1 anytime then column should update and say - R5

ORwuKMd.png



Final Result below - Real time and as per 1min chart


YBFgtDN.jpg


Thank you
Rik
 
Last edited by a moderator:

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

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
196 Online
Create Post

Similar threads

Similar threads

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