Thank youYes, you can create a scan with that setting.
Thank youYes, you can create a scan with that setting.
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
can someone write the scan for SE and LE? Thanks,The Automatic Quadrant Lines is a trading strategy upper indicator that projects where price might go in the future. Use weekly/daily/4 hr chart for swing trading. Use 30 min or less for day trading. This indicator shows you the long entry and long target. It shows you a short entry and short target. In the indicator, L/E is Long Entry, and S/E is Short Entry. The targets show the price in the chart bubble. There is a break down target line (dark green) that indicates if price breaks lower than the support line, this is where price may break down to. The indicator includes an up and down arrow that indicates when price breaks through the Long or Short Entry line. There are also alerts built in when the arrows appear.
Long strategy lines are dashed and have a (2) weight while short strategy are solid and single weighted lines.
(NOTE: If price breaks down or up from the dark red support and resistance lines, a new set of lines will appear. There are no guarantees price will hit the target.)
Here are some examples.
/RTY on 4 hr chart.
/ES on 15m chart. Price broke above target on FED news.
/NQ on 4 hr chart. Hit target.
Tesla on 4 hr chart. Above the 50% line. Target at $751.80.
/SI on 10 min chart. Hit target.
Shareable Link:
http://tos.mx/2pnajoG
Long Entry Scan Alert
http://tos.mx/3Jppd0g
Short Entry Scan Alert
http://tos.mx/KGlOVLi
CODE:
Code:#Automatic Quadrant Lines #based on Mobius's Fractal Pivot Strategy #developed by Chewie76 on 8/27/2021 # User Inputs input n = 20; input FractalEnergyLength = 8; input FractalEnergyThreshold = .68; input AtrMult = .70; input nATR = 4; input AvgType = AverageType.HULL; input LabelsOn = yes; input AlertsOn = yes; # Variables def o = open; def h = high; def l = low; def c = close; def bar = BarNumber(); def TS = TickSize(); def nan = double.nan; def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS; def risk = if Between(c, 0, 1500) then ATR else if Between(c, 1500, 3500) then 2 else if Between(c, 3500, 5500) then 4 else 6; def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) / (Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength))) / Log(FractalEnergyLength); # Parent Aggregation Pivot High # Pivot High Variables def p_hh = fold i = 1 to n + 1 with p = 1 while p do h > GetValue(h, -1); def p_PivotH = if (bar > n and h == Highest(h, n) and p_hh) then h else NaN; def p_PHValue = if !IsNaN(p_PivotH) then p_PivotH else p_PHValue[1]; def p_PHBar = if !IsNaN(p_PivotH) then bar else nan; # Pivot High and Pivot High Exit Variables # Pivot High Variables def hh = fold ii = 1 to n + 1 with pp = 1 while pp do h > GetValue(h, -1); def PivotH = if (bar > n and h == Highest(h, n) and hh) then h else Double.NaN; def PHValue = if !IsNaN(PivotH) then PivotH else PHValue[1]; def PHBar = if !IsNaN(PivotH) then bar else nan; # Pivot High Exit Variables def PHExit = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then l[1] else fold r = 0 to 20 with a = NaN while IsNaN(a) do if GetValue(l[1], r) < l then GetValue(l[1], r) else NaN else Double.NaN; def PHExitValue = if !IsNaN(PHExit) then PHExit else PHExitValue[1]; def PHExitBar = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then bar - 1 else fold d = 0 to 20 with y = NaN while IsNaN(y) do if GetValue(l[1], d) < l then GetValue(bar - 1, d) else NaN else NaN; # Pivot Low and Pivot Low Entry Variables # Parent Pivot Low Variables def p_ll = fold j = 1 to n + 1 with q = 1 while q do l < GetValue(l, -1); def p_PivotL = if (bar > n and l == Lowest(l, n) and p_ll) then l else NaN; def p_PLValue = if !IsNaN(p_PivotL) then p_PivotL else p_PLValue[1]; def p_PLBar = if !IsNaN(p_PivotL) then bar else nan; # Pivot Low Variables def ll = fold jj = 1 to n + 1 with qq = 1 while qq do l < GetValue(l, -1); def PivotL = if (bar > n and l == Lowest(l, n) and ll) then l else NaN; def PLValue = if !IsNaN(PivotL) then PivotL else PLValue[1]; def PLBar = if !IsNaN(PivotL) then bar else nan; # Pivot Low Entry Variables def PLEntry = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then h[1] else fold t = 0 to 20 with w = NaN while IsNaN(w) do if GetValue(h[1], t) > h then GetValue(h[1], t) else NaN else NaN; def PLEntryValue = if !IsNaN(PLEntry) then PLEntry else PLEntryValue[1]; def PLEntryBar = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then bar - 1 else fold u = 0 to 20 with z = NaN while IsNaN(z) do if GetValue(h[1], u) > h then GetValue(bar - 1, u) else NaN else NaN; # Plots plot R1 = if bar >= HighestAll(PHBar) then HighestAll(if isNaN(close[-1]) then PHValue else nan) else nan; R1.SetDefaultColor(Color.dark_red); R1.SetLineWeight(1); plot ShortEntry = if bar >= HighestAll(PHexitBar) then HighestAll(if isNaN(close[-1]) then PHExitValue else nan) else nan; ShortEntry.SetDefaultColor(Color.red); def SE =(if isNaN(ShortEntry[1]) then ShortEntry else Double.NaN); addchartBubble(LabelsOn and ShortEntry, SE,"S/E",color.red); plot S1 = if bar >= HighestAll(PLBar) then HighestAll(if isNaN(c[-1]) then PLValue else nan) else nan; S1.SetDefaultColor(Color.dark_red); S1.SetLineWeight(3); plot LongEntry = if bar >= HighestAll(PLEntryBar) then HighestAll(if isNaN(c[-1]) then PLEntryValue else nan) else nan; LongEntry.SetDefaultColor(Color.GREEN); LongEntry.SetStyle(Curve.long_DASH); LongEntry.SetLineWeight(2); def LE =(if isNaN(LongEntry[1]) then LongEntry else Double.NaN); addchartBubble(LabelsOn and LongEntry, LE,"L/E",color.green); plot UpArrow = if c crosses above LongEntry and FE > .5 then l else Double.NaN; UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP); UpArrow.SetLineWeight(5); UpArrow.SetDefaultColor(Color.GREEN); plot DnArrow = if c crosses below ShortEntry and ((FE > .618) or (FE < .382)) then h else Double.NaN; DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN); DnArrow.SetLineWeight(5); DnArrow.SetDefaultColor(Color.RED); plot Fifty = (LongEntry - S1) + LongEntry; Fifty.setdefaultcolor(color.yellow); Fifty.SetStyle(Curve.long_DASH); Fifty.setlineweight(2); plot SeventyFive = (LongEntry - S1) + Fifty; SeventyFive.setdefaultcolor(color.cyan); SeventyFive.SetStyle(Curve.long_DASH); SeventyFive.setlineweight(2); plot Target = (LongEntry - S1) + SeventyFive; Target.setdefaultcolor(color.red); Target.SetStyle(Curve.long_DASH); Target.setlineweight(3); def LT =(if isNaN(TARGET[1]) then Target else Double.NaN); addchartBubble(LabelsOn and Target, LT,"LONG TARGET: " + asDollars(LT),color.red); plot BreakDownTarget = S1 -(LongEntry - S1); BreakDownTarget.setdefaultcolor(color.dark_Green); BreakDownTarget.SetStyle(Curve.long_DASH); BreakDownTarget.setlineweight(3); plot S_Fifty = ShortEntry - (R1 - ShortEntry); S_Fifty.setdefaultcolor(color.yellow); S_Fifty.setlineweight(1); plot S_SeventyFive = S_Fifty - (R1 - ShortEntry); S_SeventyFive.setdefaultcolor(color.cyan); S_SeventyFive.setlineweight(1); plot S_ShortTarget = S_SeventyFive - (R1 - ShortEntry); S_ShortTarget.setdefaultcolor(color.green); S_ShortTarget.setlineweight(1); def ST =(if isNaN(S_ShortTarget[1]) then S_ShortTarget else Double.NaN); addchartBubble(LabelsOn and S_ShortTarget, ST,"SHORT TARGET: " + asDollars(ST),color.light_green); # Alerts Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding); Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
I have noticed that as well. I'm not sure why sometimes the arrow appears and sometimes it does not. It's supposed to every time.Thanks for sharing!
If L/E is Long Entry, and S/E is Short Entry, then what is the significance of the Arrow? Sometimes the Arrow is produced; and sometimes it is not.
I usually wait for the Arrow and then miss the trade.
I loaded this code and am having trouble getting it to show any results. I loaded as a strategy and as a study. separately (deleting what I loaded in between) nothing shows. Love the idea!! Can you help?Im looking for something along these lines, this was done with the RSM indicator is it possible for this one?
- Provides chart labels (upper left corner of price chart) with current status of MTF RSM Trend for the following TF's
- 1m, 2m, 3m, 4m, 5m, 10m, 15m, 20m, 30m, 1h, 2h, 4h, 1d, 2d, 3d, 4d, 1wk, 1mnth
- Add indicator for each time frame you would like shown
Ruby:#START OF RSI/Stochastic/MACD Confluence Strategy for ThinkOrSwim # RSM_MTF_Labels # #CHANGELOG # 2020.12.30 V2.1 @SuryaKiranC - Fork from @cos251 Version, to reduce the number of lines in code and optimize for performance. # # 2020.12.11 V1.1 @cos251 - Added 2D, 3D, 4D, 1WK, 1MNTH Agg Period Labels # # 2020.12.02 V1.0 @cos251 - Added RSM signal calculation for following timeframes: # - 1m, 2m, 5m, 15m, 30m, 1h, 2h, 4h, D # - Label will be added to top of chart for every allowed TF # - Label will read "TF:L(Long):S(Short):I(Idle)" # - Label Color will be green, red or gray accordingly # # #REQUIREMENTS - RSI Set to 7, EXPONENTIAL # Stoch Slow 14 and 3 WILDERS # MACD 12,26,9 WEIGHTED # #ORIGINAL REQUEST - @Joseph Patrick 18 # - Link: https://usethinkscript.com/threads/mimicking-power-x-strategy-by-markus-heitkoetter.4283/ # # input period = AggregationPeriod.DAY; DefineGlobalColor("UpTrend", Color.Green); DefineGlobalColor("DownTrend", Color.RED); DefineGlobalColor("NoTrend", Color.GRAY); script RSM_ { input aP = AggregationPeriod.DAY; # RSI def lengthRSI = 7; def averageTypeRSI = AverageType.EXPONENTIAL; # Stochastic def over_boughtSt = 80; def over_soldSt = 20; def KPeriod = 14; def DPeriod = 3; input averageTypeStoch = AverageType.WILDERS; # MACD def fastLength = 12; def slowLength = 26; def MACDLength = 9; def averageTypeMACD = AverageType.WEIGHTED; ############################################################### ########## RSI ######### ################################################################ def NetChgAvg = MovingAverage(averageTypeRSI, close(period = aP) - close(period = aP)[1], lengthRSI); def TotChgAvg = MovingAverage(averageTypeRSI, AbsValue(close(period = aP) - close(period = aP)[1]), lengthRSI); def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0; def RSI_ = 50 * (ChgRatio + 1); ################################################################ ########## Stochastic Slow ######### ################################################################ def SlowK_ = reference StochasticFull(over_boughtSt, over_soldSt, KPeriod, DPeriod, high(period = aP), low(period = aP), close(period = aP), 3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullK; def SlowD_ = reference StochasticFull(over_boughtSt, over_soldSt, KPeriod, DPeriod, high(period = aP), low(period = aP), close(period = aP), 3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullD; ################################################################ ########## MACD ########### ################################################################ def Value_ = MovingAverage(averageTypeMACD, close(period = aP), fastLength) - MovingAverage(averageTypeMACD, close(period = aP), slowLength); def Avg_ = MovingAverage(averageTypeMACD, Value_, MACDLength); def Diff_ = Value_ - Avg_; ################################################################# ########## Trend & Labels ######### ################################################################# def UpTrend_ = if RSI_ >= 50 and SlowK_ >= 50 and Value_ > Avg_ then 1 else 0; def DownTrend_ = if RSI_ < 50 and SlowK_ < 50 and Value_ < Avg_ then 1 else 0; plot Trend_ = if UpTrend_ then 1 else if DownTrend_ then 0 else -1; } def currentPeriod = GetAggregationPeriod(); def RSM; if period >= currentPeriod { RSM = RSM_(aP = period); } else { RSM = Double.NaN; } AddLabel(!IsNaN(RSM), if period == AggregationPeriod.MONTH then "M" else if period == AggregationPeriod.WEEK then "W" else if period == AggregationPeriod.FOUR_DAYS then "4D" else if period == AggregationPeriod.THREE_DAYS then "3D" else if period == AggregationPeriod.TWO_DAYS then "2D" else if period == AggregationPeriod.DAY then "D" else if period == AggregationPeriod.FOUR_HOURS then "4H" else if period == AggregationPeriod.TWO_HOURS then "2H" else if period == AggregationPeriod.HOUR then "60m" else if period == AggregationPeriod.THIRTY_MIN then "30m" else if period == AggregationPeriod.TWENTY_MIN then "20m" else if period == AggregationPeriod.FIFTEEN_MIN then "15m" else if period == AggregationPeriod.TEN_MIN then "10m" else if period == AggregationPeriod.FIVE_MIN then "5m" else if period == AggregationPeriod.FOUR_MIN then "4m" else if period == AggregationPeriod.THREE_MIN then "3m" else if period == AggregationPeriod.TWO_MIN then "2m" else if period == AggregationPeriod.MIN then "1m" else "", if RSM == 1 then GlobalColor("UpTrend") else if RSM == 0 then GlobalColor("DownTrend") else GlobalColor("NoTrend"));
I loaded this code and am having trouble getting it to show any results. I loaded as a strategy and as a study. separately (deleting what I loaded in between) nothing shows. Love the idea!! Can you help?
The scan is in the post. After shareable link.can someone write the scan for SE and LE? Thanks,
You can try this code. Change input Period. 30 MIN is default.Awesome script, can someone make this Multi Time Frame, So I can see the long & short entry on the 15 or 30 min time frame on a smaller Time Frame like a 5 minute. Thank you in Advance.
#MTF Automatic Quadrant Lines
#based on Mobius's Fractal Pivot Strategy
#developed by Chewie76 on 8/27/2021
# User Inputs
input n = 20;
input FractalEnergyLength = 8;
input FractalEnergyThreshold = .68;
input AtrMult = .70;
input nATR = 4;
input AvgType = AverageType.HULL;
input LabelsOn = yes;
input AlertsOn = no;
input Period = aggregationPeriod.thirty_min;
# Variables
def o = open(period = Period);
def h = high(period = Period);
def l = low(period = Period);
def c = close(period = Period);
def bar = BarNumber();
def TS = TickSize();
def nan = double.nan;
def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS;
def risk = if Between(c, 0, 1500)
then ATR
else if Between(c, 1500, 3500)
then 2
else if Between(c, 3500, 5500)
then 4
else 6;
def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) /
(Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength)))
/ Log(FractalEnergyLength);
# Parent Aggregation Pivot High
# Pivot High Variables
def p_hh = fold i = 1 to n + 1
with p = 1
while p
do h > GetValue(h, -1);
def p_PivotH = if (bar > n and
h == Highest(h, n) and
p_hh)
then h
else NaN;
def p_PHValue = if !IsNaN(p_PivotH)
then p_PivotH
else p_PHValue[1];
def p_PHBar = if !IsNaN(p_PivotH)
then bar
else nan;
# Pivot High and Pivot High Exit Variables
# Pivot High Variables
def hh = fold ii = 1 to n + 1
with pp = 1
while pp
do h > GetValue(h, -1);
def PivotH = if (bar > n and
h == Highest(h, n) and
hh)
then h
else Double.NaN;
def PHValue = if !IsNaN(PivotH)
then PivotH
else PHValue[1];
def PHBar = if !IsNaN(PivotH)
then bar
else nan;
# Pivot High Exit Variables
def PHExit = if (bar > n and
h == Highest(h, n) and
hh)
then if l[1] < l
then l[1]
else fold r = 0 to 20
with a = NaN
while IsNaN(a)
do if GetValue(l[1], r) < l
then GetValue(l[1], r)
else NaN
else Double.NaN;
def PHExitValue = if !IsNaN(PHExit)
then PHExit
else PHExitValue[1];
def PHExitBar = if (bar > n and
h == Highest(h, n) and
hh)
then if l[1] < l
then bar - 1
else fold d = 0 to 20
with y = NaN
while IsNaN(y)
do if GetValue(l[1], d) < l
then GetValue(bar - 1, d)
else NaN
else NaN;
# Pivot Low and Pivot Low Entry Variables
# Parent Pivot Low Variables
def p_ll = fold j = 1 to n + 1
with q = 1
while q
do l < GetValue(l, -1);
def p_PivotL = if (bar > n and
l == Lowest(l, n) and
p_ll)
then l
else NaN;
def p_PLValue = if !IsNaN(p_PivotL)
then p_PivotL
else p_PLValue[1];
def p_PLBar = if !IsNaN(p_PivotL)
then bar
else nan;
# Pivot Low Variables
def ll = fold jj = 1 to n + 1
with qq = 1
while qq
do l < GetValue(l, -1);
def PivotL = if (bar > n and
l == Lowest(l, n) and
ll)
then l
else NaN;
def PLValue = if !IsNaN(PivotL)
then PivotL
else PLValue[1];
def PLBar = if !IsNaN(PivotL)
then bar
else nan;
# Pivot Low Entry Variables
def PLEntry = if (bar > n and
l == Lowest(l, n) and
ll)
then if h[1] > h
then h[1]
else fold t = 0 to 20
with w = NaN
while IsNaN(w)
do if GetValue(h[1], t) > h
then GetValue(h[1], t)
else NaN
else NaN;
def PLEntryValue = if !IsNaN(PLEntry)
then PLEntry
else PLEntryValue[1];
def PLEntryBar = if (bar > n and
l == Lowest(l, n) and
ll)
then if h[1] > h
then bar - 1
else fold u = 0 to 20
with z = NaN
while IsNaN(z)
do if GetValue(h[1], u) > h
then GetValue(bar - 1, u)
else NaN
else NaN;
# Plots
plot R1 = if bar >= HighestAll(PHBar)
then HighestAll(if isNaN(close[-1])
then PHValue
else nan)
else nan;
R1.SetDefaultColor(Color.dark_red);
R1.SetLineWeight(1);
plot ShortEntry = if bar >= HighestAll(PHexitBar)
then HighestAll(if isNaN(close[-1])
then PHExitValue
else nan)
else nan;
ShortEntry.SetDefaultColor(Color.red);
def SE =(if isNaN(ShortEntry[1]) then ShortEntry else Double.NaN);
addchartBubble(LabelsOn and ShortEntry, SE,"S/E",color.red);
plot S1 = if bar >= HighestAll(PLBar)
then HighestAll(if isNaN(c[-1])
then PLValue
else nan)
else nan;
S1.SetDefaultColor(Color.dark_red);
S1.SetLineWeight(3);
plot LongEntry = if bar >= HighestAll(PLEntryBar)
then HighestAll(if isNaN(c[-1])
then PLEntryValue
else nan)
else nan;
LongEntry.SetDefaultColor(Color.GREEN);
LongEntry.SetStyle(Curve.long_DASH);
LongEntry.SetLineWeight(2);
def LE =(if isNaN(LongEntry[1]) then LongEntry else Double.NaN);
addchartBubble(LabelsOn and LongEntry, LE,"L/E",color.green);
plot UpArrow = if c crosses above LongEntry and FE > .5
then l
else Double.NaN;
UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
UpArrow.SetLineWeight(5);
UpArrow.SetDefaultColor(Color.GREEN);
plot DnArrow = if c crosses below ShortEntry and ((FE > .618)
or (FE < .382))
then h
else Double.NaN;
DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
DnArrow.SetLineWeight(5);
DnArrow.SetDefaultColor(Color.RED);
plot Fifty = (LongEntry - S1) + LongEntry;
Fifty.setdefaultcolor(color.yellow);
Fifty.SetStyle(Curve.long_DASH);
Fifty.setlineweight(2);
plot SeventyFive = (LongEntry - S1) + Fifty;
SeventyFive.setdefaultcolor(color.cyan);
SeventyFive.SetStyle(Curve.long_DASH);
SeventyFive.setlineweight(2);
plot Target = (LongEntry - S1) + SeventyFive;
Target.setdefaultcolor(color.red);
Target.SetStyle(Curve.long_DASH);
Target.setlineweight(3);
def LT =(if isNaN(TARGET[1]) then Target else Double.NaN);
addchartBubble(LabelsOn and Target, LT,"LONG TARGET: " + asDollars(LT),color.red);
plot BreakDownTarget = S1 -(LongEntry - S1);
BreakDownTarget.setdefaultcolor(color.dark_Green);
BreakDownTarget.SetStyle(Curve.long_DASH);
BreakDownTarget.setlineweight(3);
plot S_Fifty = ShortEntry - (R1 - ShortEntry);
S_Fifty.setdefaultcolor(color.yellow);
S_Fifty.setlineweight(1);
plot S_SeventyFive = S_Fifty - (R1 - ShortEntry);
S_SeventyFive.setdefaultcolor(color.cyan);
S_SeventyFive.setlineweight(1);
plot S_ShortTarget = S_SeventyFive - (R1 - ShortEntry);
S_ShortTarget.setdefaultcolor(color.green);
S_ShortTarget.setlineweight(1);
def ST =(if isNaN(S_ShortTarget[1]) then S_ShortTarget else Double.NaN);
addchartBubble(LabelsOn and S_ShortTarget, ST,"SHORT TARGET: " + asDollars(ST),color.light_green);
# Alerts
Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding);
Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
On your ?NQ, /SI, and Tesla charts above, should Long arrows be paining? ThanksThe Automatic Quadrant Lines is a trading strategy upper indicator that projects where price might go in the future. Use weekly/daily/4 hr chart for swing trading. Use 30 min or less for day trading. This indicator shows you the long entry and long target. It shows you a short entry and short target. In the indicator, L/E is Long Entry, and S/E is Short Entry. The targets show the price in the chart bubble. There is a break down target line (dark green) that indicates if price breaks lower than the support line, this is where price may break down to. The indicator includes an up and down arrow that indicates when price breaks through the Long or Short Entry line. There are also alerts built in when the arrows appear.
Long strategy lines are dashed and have a (2) weight while short strategy are solid and single weighted lines.
(NOTE: If price breaks down or up from the dark red support and resistance lines, a new set of lines will appear. There are no guarantees price will hit the target.)
Here are some examples.
/RTY on 4 hr chart.
View attachment 11711
/ES on 15m chart. Price broke above target on FED news.
View attachment 11712
/NQ on 4 hr chart. Hit target.
View attachment 11713
Tesla on 4 hr chart. Above the 50% line. Target at $751.80.
View attachment 11714
/SI on 10 min chart. Hit target.
View attachment 11715
Shareable Link:
http://tos.mx/2pnajoG
Long Entry Scan Alert
http://tos.mx/3Jppd0g
Short Entry Scan Alert
http://tos.mx/KGlOVLi
CODE:
Code:#Automatic Quadrant Lines #based on Mobius's Fractal Pivot Strategy #developed by Chewie76 on 8/27/2021 # User Inputs input n = 20; input FractalEnergyLength = 8; input FractalEnergyThreshold = .68; input AtrMult = .70; input nATR = 4; input AvgType = AverageType.HULL; input LabelsOn = yes; input AlertsOn = yes; # Variables def o = open; def h = high; def l = low; def c = close; def bar = BarNumber(); def TS = TickSize(); def nan = double.nan; def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS; def risk = if Between(c, 0, 1500) then ATR else if Between(c, 1500, 3500) then 2 else if Between(c, 3500, 5500) then 4 else 6; def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) / (Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength))) / Log(FractalEnergyLength); # Parent Aggregation Pivot High # Pivot High Variables def p_hh = fold i = 1 to n + 1 with p = 1 while p do h > GetValue(h, -1); def p_PivotH = if (bar > n and h == Highest(h, n) and p_hh) then h else NaN; def p_PHValue = if !IsNaN(p_PivotH) then p_PivotH else p_PHValue[1]; def p_PHBar = if !IsNaN(p_PivotH) then bar else nan; # Pivot High and Pivot High Exit Variables # Pivot High Variables def hh = fold ii = 1 to n + 1 with pp = 1 while pp do h > GetValue(h, -1); def PivotH = if (bar > n and h == Highest(h, n) and hh) then h else Double.NaN; def PHValue = if !IsNaN(PivotH) then PivotH else PHValue[1]; def PHBar = if !IsNaN(PivotH) then bar else nan; # Pivot High Exit Variables def PHExit = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then l[1] else fold r = 0 to 20 with a = NaN while IsNaN(a) do if GetValue(l[1], r) < l then GetValue(l[1], r) else NaN else Double.NaN; def PHExitValue = if !IsNaN(PHExit) then PHExit else PHExitValue[1]; def PHExitBar = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then bar - 1 else fold d = 0 to 20 with y = NaN while IsNaN(y) do if GetValue(l[1], d) < l then GetValue(bar - 1, d) else NaN else NaN; # Pivot Low and Pivot Low Entry Variables # Parent Pivot Low Variables def p_ll = fold j = 1 to n + 1 with q = 1 while q do l < GetValue(l, -1); def p_PivotL = if (bar > n and l == Lowest(l, n) and p_ll) then l else NaN; def p_PLValue = if !IsNaN(p_PivotL) then p_PivotL else p_PLValue[1]; def p_PLBar = if !IsNaN(p_PivotL) then bar else nan; # Pivot Low Variables def ll = fold jj = 1 to n + 1 with qq = 1 while qq do l < GetValue(l, -1); def PivotL = if (bar > n and l == Lowest(l, n) and ll) then l else NaN; def PLValue = if !IsNaN(PivotL) then PivotL else PLValue[1]; def PLBar = if !IsNaN(PivotL) then bar else nan; # Pivot Low Entry Variables def PLEntry = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then h[1] else fold t = 0 to 20 with w = NaN while IsNaN(w) do if GetValue(h[1], t) > h then GetValue(h[1], t) else NaN else NaN; def PLEntryValue = if !IsNaN(PLEntry) then PLEntry else PLEntryValue[1]; def PLEntryBar = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then bar - 1 else fold u = 0 to 20 with z = NaN while IsNaN(z) do if GetValue(h[1], u) > h then GetValue(bar - 1, u) else NaN else NaN; # Plots plot R1 = if bar >= HighestAll(PHBar) then HighestAll(if isNaN(close[-1]) then PHValue else nan) else nan; R1.SetDefaultColor(Color.dark_red); R1.SetLineWeight(1); plot ShortEntry = if bar >= HighestAll(PHexitBar) then HighestAll(if isNaN(close[-1]) then PHExitValue else nan) else nan; ShortEntry.SetDefaultColor(Color.red); def SE =(if isNaN(ShortEntry[1]) then ShortEntry else Double.NaN); addchartBubble(LabelsOn and ShortEntry, SE,"S/E",color.red); plot S1 = if bar >= HighestAll(PLBar) then HighestAll(if isNaN(c[-1]) then PLValue else nan) else nan; S1.SetDefaultColor(Color.dark_red); S1.SetLineWeight(3); plot LongEntry = if bar >= HighestAll(PLEntryBar) then HighestAll(if isNaN(c[-1]) then PLEntryValue else nan) else nan; LongEntry.SetDefaultColor(Color.GREEN); LongEntry.SetStyle(Curve.long_DASH); LongEntry.SetLineWeight(2); def LE =(if isNaN(LongEntry[1]) then LongEntry else Double.NaN); addchartBubble(LabelsOn and LongEntry, LE,"L/E",color.green); plot UpArrow = if c crosses above LongEntry and FE > .5 then l else Double.NaN; UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP); UpArrow.SetLineWeight(5); UpArrow.SetDefaultColor(Color.GREEN); plot DnArrow = if c crosses below ShortEntry and ((FE > .618) or (FE < .382)) then h else Double.NaN; DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN); DnArrow.SetLineWeight(5); DnArrow.SetDefaultColor(Color.RED); plot Fifty = (LongEntry - S1) + LongEntry; Fifty.setdefaultcolor(color.yellow); Fifty.SetStyle(Curve.long_DASH); Fifty.setlineweight(2); plot SeventyFive = (LongEntry - S1) + Fifty; SeventyFive.setdefaultcolor(color.cyan); SeventyFive.SetStyle(Curve.long_DASH); SeventyFive.setlineweight(2); plot Target = (LongEntry - S1) + SeventyFive; Target.setdefaultcolor(color.red); Target.SetStyle(Curve.long_DASH); Target.setlineweight(3); def LT =(if isNaN(TARGET[1]) then Target else Double.NaN); addchartBubble(LabelsOn and Target, LT,"LONG TARGET: " + asDollars(LT),color.red); plot BreakDownTarget = S1 -(LongEntry - S1); BreakDownTarget.setdefaultcolor(color.dark_Green); BreakDownTarget.SetStyle(Curve.long_DASH); BreakDownTarget.setlineweight(3); plot S_Fifty = ShortEntry - (R1 - ShortEntry); S_Fifty.setdefaultcolor(color.yellow); S_Fifty.setlineweight(1); plot S_SeventyFive = S_Fifty - (R1 - ShortEntry); S_SeventyFive.setdefaultcolor(color.cyan); S_SeventyFive.setlineweight(1); plot S_ShortTarget = S_SeventyFive - (R1 - ShortEntry); S_ShortTarget.setdefaultcolor(color.green); S_ShortTarget.setlineweight(1); def ST =(if isNaN(S_ShortTarget[1]) then S_ShortTarget else Double.NaN); addchartBubble(LabelsOn and S_ShortTarget, ST,"SHORT TARGET: " + asDollars(ST),color.light_green); # Alerts Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding); Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
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.