Still testing. Gimme a little more time. I need to get @Hypoluxa ’s opinion also before posting.Can you please share the indicator?
Still testing. Gimme a little more time. I need to get @Hypoluxa ’s opinion also before posting.Can you please share the indicator?
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
So this morning i looked at /ES for the first time to monitor this. /ES at 9:00EST was $3859....so the GANN target was $3859.52 and then $3873 would be next. I did this to see if SPX would do that - make sense so far? well at 9:45 SPX hit $3873. Maybe a coincidence, but I'm def going to start testing this for GANN on /ES at 9:00 for SPX after opening.Still testing. Gimme a little more time. I need to get @Hypoluxa ’s opinion also before posting.
whats ur opinion on barbados indication? @HypoluxaSo this morning i looked at /ES for the first time to monitor this. /ES at 9:00EST was $3859....so the GANN target was $3859.52 and then $3873 would be next. I did this to see if SPX would do that - make sense so far? well at 9:45 SPX hit $3873. Maybe a coincidence, but I'm def going to start testing this for GANN on /ES at 9:00 for SPX after opening.
for SPX? Was this at 10:00?I have this setup now
Buy at / above: 3937.56 Targets: 3951.28 - 3967.01 - 3982.77 - 3998.56
Stoploss : 3921.89
Sell at / below: 3921.89 Targets: 3908.2 - 3892.58 - 3877 - 3861.44
Stoploss : 3937.56
sorry it is for ES and it was at 9 central... so far nothing triggered yet.for SPX? Was this at 10:00?
stopped at 3937in a short 3921.75
So trying to understand what you said. You are using the /ES price at 9.00EST If /ES is at 3960 at 9.00EST, SPX should be about 10 points higher or at 3970. So do you then put the SPX price of 3970 into the GANN calculator?So this morning i looked at /ES for the first time to monitor this. /ES at 9:00EST was $3859....so the GANN target was $3859.52 and then $3873 would be next. I did this to see if SPX would do that - make sense so far? well at 9:45 SPX hit $3873. Maybe a coincidence, but I'm def going to start testing this for GANN on /ES at 9:00 for SPX after opening.
Hello @bhaskar_madugula can you please share the code for this strategy? It seems like MACD_BB but I just like to see how strategy is working. Thank you very much.I am not seeing a red dot when the price hit $3845, can u please help understand what time you checked?
Is there code that can produce the same information on a chart like in the link shared? I tried to use the code shared here but could not see anything close or was able to figure it out. Thanks!Something like this....
https://www.thebeardedinvestor.net/product-page/gann-square-of-9-for-thinkorswim
# GANN9 by bigboss
# v 1.2 - 20211222 - Added function to normalize to two decimal places, fixed fit studies bug
# v 1.1 - 20210727 - Added Buy Above / Sell Below Labels
# v 1.0 - 20210724 - Initial Release
# Calculates the GANN Square of Nine buy/sell lines, and 5 Support / Resistance targets
# based on the open price at the following times:
# 1. Regular Trading Start
# 2. First Update minutes after RTH Start defined by input FirstUpdate
# 3. Second Update minutes after RTH Start defined by input SecondUpdate
# 4. After Hours Start
declare upper;
input FirstUpdate = 30; #hint FirstUpdate: Minutes after Regular Trading Start to update
input SecondUpdate = 90; #hint SecondUpdate: Minutes after Regular Trading Start to update
input PlotTargetsInsteadOfSR = no; #hint PlotTargetsInsteadOfSR: Plot targets instead of support/resistance. Targets are 99.95% of the S/R level.
input ShowAfterHours = yes; #hint ShowAfterHours: show gann9 levels after hours
input normalizeToTwoDps = yes; #hint normalizeToTwoSDs: treat small values (e.g. forex, penny stocks) as if they are large values with two digits after the decimal.
# This gets the # of significant digits to round values to.
def rf = fold index = 1 to 10 with c = 1 while power(10,index)*ticksize()%1 != 0 do c+1;
def mf = if normalizeToTwoDps then power(10,rf-2) else 1;
def srFactor = if plotTargetsInsteadOfSR then .0005 else 0;
def rthStart = RegularTradingStart(GetYYYYMMDD());
def rthEnd = RegularTradingEnd(GetYYYYMMDD());
def isupdateTime =
if (GetTime() > rthstart and GetTime()[1] < rthstart) or # Regular Hours Start
(GetTime() > rthstart + firstUpdate * 60 * 1000 and GetTime()[1] < rthstart + firstUpdate * 60 * 1000) or # Firt Update
(GetTime() > rthstart + secondupdate * 60 * 1000 and GetTime()[1] < rthstart + secondupdate * 60 * 1000) or # Second Update
(GetTime() > rthend and getTime()[1] < rthend) # After Hours Start
or barnumber() == 1
then 1 else 0;
# if Show after hours is yes, then always show the lines, otherwise only between RTH
def showlines = if showafterhours then yes else (GetTime() between rthstart and rthend);
def gannprice = if !showlines then double.nan else if isupdateTime then sqrt(open * mf) else gannprice[1];
def gannpricebase = rounddown(gannprice,0);
# Calculate the angle of price, and adjust if it is a multiple of 45 degrees so the buy/sell lines are unique.
def angle = gannprice - gannpricebase;
def angleAdjusted = if angle % .125 == 0 then angle+.001 else angle;
# Calculate the buy and sell lines, which are the nearest angle cleanly divisible by 45 above and below price.
def lowergannangle = rounddown(angleadjusted / .125,0)*.125;
def uppergannangle = roundup(angleadjusted / .125,0)*.125;
plot SellBelow = round(power(gannpricebase + lowergannangle,2)/mf,rf);
plot BuyAbove = round(power(gannpricebase + uppergannangle,2)/mf,rf);
# Calculate the next 5 resistance/targets, each in +45 degrees increments from the BuyAbove price
plot R1 = round(power(gannpricebase + uppergannangle+.125,2)*(1-srfactor)/mf,rf);
plot R2 = round(power(gannpricebase + uppergannangle+.250,2)*(1-srfactor)/mf,rf);
plot R3 = round(power(gannpricebase + uppergannangle+.375,2)*(1-srfactor)/mf,rf);
plot R4 = round(power(gannpricebase + uppergannangle+.500,2)*(1-srfactor)/mf,rf);
plot R5 = round(power(gannpricebase + uppergannangle+.625,2)*(1-srfactor)/mf,rf);
# Calculate the next 5 support/targets, each in -45 degree increments from the SellBelow price
plot S1 = round(power(gannpricebase + lowergannangle-.125,2)*(1+srfactor)/mf,rf);
plot S2 = round(power(gannpricebase + lowergannangle-.250,2)*(1+srfactor)/mf,rf);
plot S3 = round(power(gannpricebase + lowergannangle-.375,2)*(1+srfactor)/mf,rf);
plot S4 = round(power(gannpricebase + lowergannangle-.500,2)*(1+srfactor)/mf,rf);
plot S5 = round(power(gannpricebase + lowergannangle-.625,2)*(1+srfactor)/mf,rf);
SellBelow.SetDefaultColor(Color.RED);
BuyAbove.SetDefaultColor(Color.GREEN);
R1.SetDefaultColor(color.dark_gray);
R2.SetDefaultColor(color.dark_gray);
R3.SetDefaultColor(color.dark_gray);
R4.SetDefaultColor(color.dark_gray);
R5.SetDefaultColor(color.dark_gray);
S1.SetDefaultColor(color.dark_gray);
S2.SetDefaultColor(color.dark_gray);
S3.SetDefaultColor(color.dark_gray);
S4.SetDefaultColor(color.dark_gray);
S5.SetDefaultColor(color.dark_gray);
AddLabel(showlines, "Buy Above: $" + BuyAbove, color.green);
AddLabel(showlines, "Sell Below: $" + SellBelow, color.red);
Thanks for this! Will try this out during trading hours.Here is a GANN square of 9 indicator I put together based on the spreadsheet @Hypoluxa posted a few months back. It updates at RTH open, 30 minutes after open, 90 minutes after open, and then once finally at after hours start. Looks to work well on various futures and stocks with varying start times.
Ruby:# GANN9 by bigboss # v 1.0 - 20210724 - Initial Release # Calculates the GANN Square of Nine buy/sell lines, and 5 Support / Resistance targets # based on the open price at the following times: # 1. Regular Trading Start # 2. First Update minutes after RTH Start defined by input FirstUpdate # 3. Second Update minutes after RTH Start defined by input SecondUpdate # 4. After Hours Start declare upper; input FirstUpdate = 30; #hint FirstUpdate: Minutes after Regular Trading Start to update input SecondUpdate = 90; #hint SecondUpdate: Minutes after Regular Trading Start to update input PlotTargetsInsteadOfSR = no; #hint PlotTargetsInsteadOfSR: Plot targets instead of support/resistance. Targets are 99.95% of the S/R level. input ShowAfterHours = yes; #hint ShowAfterHours: show gann9 levels after hours def srFactor = if plotTargetsInsteadOfSR then .0005 else 0; def rthStart = RegularTradingStart(GetYYYYMMDD()); def rthEnd = RegularTradingEnd(GetYYYYMMDD()); def isupdateTime = if (GetTime() > rthstart and GetTime()[1] < rthstart) or # Regular Hours Start (GetTime() > rthstart + firstUpdate * 60 * 1000 and GetTime()[1] < rthstart + firstUpdate * 60 * 1000) or # Firt Update (GetTime() > rthstart + secondupdate * 60 * 1000 and GetTime()[1] < rthstart + secondupdate * 60 * 1000) or # Second Update (GetTime() > rthend and getTime()[1] < rthend) # After Hours Start then 1 else 0; # if Show after hours is yes, then always show the lines, otherwise only between RTH def showlines = if showafterhours then yes else (GetTime() between rthstart and rthend); def gannprice = if !showlines then double.nan else if isupdateTime == 1 then open else gannprice[1]; # Calculate the angle of price, and adjust if it is a multiple of 45 degrees so the buy/sell lines are unique. def angle = sqrt(gannprice) - rounddown(sqrt(gannprice),0); def angleAdjusted = if angle % .125 == 0 then angle+.001 else angle; # Calculate the buy and sell lines, which are the nearest angle cleanly divisible by 45 above and below price. def lowergannangle = rounddown(angleadjusted / .125,0)*.125; def uppergannangle = roundup(angleadjusted / .125,0)*.125; plot SellBelow = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle,2),2); plot BuyAbove = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle,2),2); # Calculate the next 5 resistance/targets, each in +45 degrees increments from the BuyAbove price plot R1 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.125,2)*(1-srfactor),2); plot R2 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.250,2)*(1-srfactor),2); plot R3 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.375,2)*(1-srfactor),2); plot R4 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.50,2)*(1-srfactor),2); plot R5 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.625,2)*(1-srfactor),2); # Calculate the next 5 support/targets, each in -45 degree increments from the SellBelow price plot S1 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.125,2)*(1+srfactor),2); plot S2 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.250,2)*(1+srfactor),2); plot S3 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.375,2)*(1+srfactor),2); plot S4 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.50,2)*(1+srfactor),2); plot S5 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.625,2)*(1+srfactor),2); SellBelow.SetDefaultColor(Color.RED); BuyAbove.SetDefaultColor(Color.GREEN); R1.SetDefaultColor(color.dark_gray); R2.SetDefaultColor(color.dark_gray); R3.SetDefaultColor(color.dark_gray); R4.SetDefaultColor(color.dark_gray); R5.SetDefaultColor(color.dark_gray); S1.SetDefaultColor(color.dark_gray); S2.SetDefaultColor(color.dark_gray); S3.SetDefaultColor(color.dark_gray); S4.SetDefaultColor(color.dark_gray); S5.SetDefaultColor(color.dark_gray);
Here is a GANN square of 9 indicator I put together based on the spreadsheet @Hypoluxa posted a few months back. It updates at RTH open, 30 minutes after open, 90 minutes after open, and then once finally at after hours start. Looks to work well on various futures and stocks with varying start times.
Ruby:# GANN9 by bigboss # v 1.0 - 20210724 - Initial Release # Calculates the GANN Square of Nine buy/sell lines, and 5 Support / Resistance targets # based on the open price at the following times: # 1. Regular Trading Start # 2. First Update minutes after RTH Start defined by input FirstUpdate # 3. Second Update minutes after RTH Start defined by input SecondUpdate # 4. After Hours Start declare upper; input FirstUpdate = 30; #hint FirstUpdate: Minutes after Regular Trading Start to update input SecondUpdate = 90; #hint SecondUpdate: Minutes after Regular Trading Start to update input PlotTargetsInsteadOfSR = no; #hint PlotTargetsInsteadOfSR: Plot targets instead of support/resistance. Targets are 99.95% of the S/R level. input ShowAfterHours = yes; #hint ShowAfterHours: show gann9 levels after hours def srFactor = if plotTargetsInsteadOfSR then .0005 else 0; def rthStart = RegularTradingStart(GetYYYYMMDD()); def rthEnd = RegularTradingEnd(GetYYYYMMDD()); def isupdateTime = if (GetTime() > rthstart and GetTime()[1] < rthstart) or # Regular Hours Start (GetTime() > rthstart + firstUpdate * 60 * 1000 and GetTime()[1] < rthstart + firstUpdate * 60 * 1000) or # Firt Update (GetTime() > rthstart + secondupdate * 60 * 1000 and GetTime()[1] < rthstart + secondupdate * 60 * 1000) or # Second Update (GetTime() > rthend and getTime()[1] < rthend) # After Hours Start then 1 else 0; # if Show after hours is yes, then always show the lines, otherwise only between RTH def showlines = if showafterhours then yes else (GetTime() between rthstart and rthend); def gannprice = if !showlines then double.nan else if isupdateTime == 1 then open else gannprice[1]; # Calculate the angle of price, and adjust if it is a multiple of 45 degrees so the buy/sell lines are unique. def angle = sqrt(gannprice) - rounddown(sqrt(gannprice),0); def angleAdjusted = if angle % .125 == 0 then angle+.001 else angle; # Calculate the buy and sell lines, which are the nearest angle cleanly divisible by 45 above and below price. def lowergannangle = rounddown(angleadjusted / .125,0)*.125; def uppergannangle = roundup(angleadjusted / .125,0)*.125; plot SellBelow = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle,2),2); plot BuyAbove = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle,2),2); # Calculate the next 5 resistance/targets, each in +45 degrees increments from the BuyAbove price plot R1 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.125,2)*(1-srfactor),2); plot R2 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.250,2)*(1-srfactor),2); plot R3 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.375,2)*(1-srfactor),2); plot R4 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.50,2)*(1-srfactor),2); plot R5 = round(power(RoundDown(sqrt(gannprice),0) + uppergannangle+.625,2)*(1-srfactor),2); # Calculate the next 5 support/targets, each in -45 degree increments from the SellBelow price plot S1 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.125,2)*(1+srfactor),2); plot S2 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.250,2)*(1+srfactor),2); plot S3 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.375,2)*(1+srfactor),2); plot S4 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.50,2)*(1+srfactor),2); plot S5 = round(power(RoundDown(sqrt(gannprice),0) + lowergannangle-.625,2)*(1+srfactor),2); SellBelow.SetDefaultColor(Color.RED); BuyAbove.SetDefaultColor(Color.GREEN); R1.SetDefaultColor(color.dark_gray); R2.SetDefaultColor(color.dark_gray); R3.SetDefaultColor(color.dark_gray); R4.SetDefaultColor(color.dark_gray); R5.SetDefaultColor(color.dark_gray); S1.SetDefaultColor(color.dark_gray); S2.SetDefaultColor(color.dark_gray); S3.SetDefaultColor(color.dark_gray); S4.SetDefaultColor(color.dark_gray); S5.SetDefaultColor(color.dark_gray);
@bigboss ..thanks for sharing your code.
Couple of requests, I tried to do it myself but was unable to as there is no reference of isupdatetime in the plots.
1. Can we have the labels related to the time. For ex: "RTH Buy Above: xxx.xx", "30min Buy Above. xxx.xx", "90 min Buy Above: xxx.xx"
2. Can this be used in a scanner to check if the price is above the plot line (5m aggregation) ?
Thanks!
Thanks
close crosses above GANN9()."BuyAbove" within 5 bars
Thanks @bigboss, I too was able to add the labels for the current above/below, but was not able to get it for the other times.. thought that would be easy to do.I updated post 114 with version 1.1, which adds in labels for Buy Above and Sell Below. They'll always show the current buy above/sell below price. If it is after hours and the lines are set not to show outside of trading hours, then the labels won't display either.
The scan syntax you would use would look like this, if you saved the script as "GANN9":
Code:close crosses above GANN9()."BuyAbove" within 5 bars
Obviously you can sub out for crossing below SellBelow, or crossing below BuyAbove if looking for a reversal, etc.
Uncheck "Fit Study" on Price Axis settings, you will be all set after that.When I add the latest GANN9 my candlesticks are really small. I changed it to the left axis and that seems to work. Will the indicator work correctly if I change it to the left axis?
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
Gann Angles Indicator for ThinkorSwim | Indicators | 18 | ||
Gann High Low Indicator for ThinkorSwim | Indicators | 19 | ||
Repaints Cup and Handle Indicator for ThinkorSwim | Indicators | 24 | ||
The Ultimate Buy and Sell Indicator for ThinkOrSwim | Indicators | 5 | ||
Z-Score Probability Indicator for ThinkOrSwim | Indicators | 26 |
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.