Fibonacci LevelsThe 420 VWMA (Volume Weighted Moving Average) per period selected of the low price (Fib 0) and the high price (Fib 1). They are labeled in Color of the line they represent.
The other Fib lines are calculated using common fib ratios as follows:
longRange_fib2618 = highestHighperLongRange +
(highestHighperLongRange - lowestLowperLongRange) * 1.618
longRange_fib1618 = highestHighperLongRange +
(highestHighperLongRange - lowestLowperLongRange) * .618
longRange_fib786 = highestHighperLongRange -
(highestHighperLongRange - lowestLowperLongRange) * 0.236
longRange_fib618 = highestHighperLongRange -
(highestHighperLongRange - lowestLowperLongRange) * 0.382
longRange_fib50 = highestHighperLongRange -
(highestHighperLongRange - lowestLowperLongRange) * 0.500
longRange_fib382 = highestHighperLongRange -
(highestHighperLongRange - lowestLowperLongRange) * 0.618
longRange_fib236 = highestHighperLongRange -
(highestHighperLongRange - lowestLowperLongRange) * 0.764
Those lines are drawn and labeled to right of chart
The 2 heavy whites and the short range of the Fib1 (Top) and Fib0 (Bottom). Eyes on chart when it approaches one those two points. This is where I look for continuation or reversal patterns, especially near a Longterm Fib
The Red, Green, Yellow and Blue are colored ratio lines that I am experimenting with and will later combine with a multiple time frames to show discernable patterns of potential near future movements.
The prices interacts with the fib lines and each of the the colored ratio lines as you go from small to larger time frames.
I will be publishing this soon to allow the community to improve on it.
Search in scripts for "fib"
BAY_PIVOT S/R(4 Full Lines + ALL Labels)//@version=5
indicator("BAY_PIVOT S/R(4 Full Lines + ALL Labels)", overlay=true, max_labels_count=500, max_lines_count=500)
// ────────────────────── TOGGLES ──────────────────────
showPivot = input.bool(true, "Show Pivot (Full Line + Label)")
showTarget = input.bool(true, "Show Target (Full Line + Label)")
showLast = input.bool(true, "Show Last Close (Full Line + Label)")
showPrevClose = input.bool(true, "Show Previous Close (Full Line + Label)")
useBarchartLast = input.bool(true, "Use Barchart 'Last' (Settlement Price)")
showR1R2R3 = input.bool(true, "Show R1 • R2 • R3")
showS1S2S3 = input.bool(true, "Show S1 • S2 • S3")
showStdDev = input.bool(true, "Show ±1σ ±2σ ±3σ")
showFib4W = input.bool(true, "Show 4-Week Fibs")
showFib13W = input.bool(true, "Show 13-Week Fibs")
showMonthHL = input.bool(true, "Show 1M High / Low")
showEntry1 = input.bool(false, "Show Manual Entry 1")
showEntry2 = input.bool(false, "Show Manual Entry 2")
entry1 = input.float(0.0, "Manual Entry 1", step=0.25)
entry2 = input.float(0.0, "Manual Entry 2", step=0.25)
stdLen = input.int(20, "StdDev Length", minval=1)
fib4wBars = input.int(20, "4W Fib Lookback")
fib13wBars = input.int(65, "13W Fib Lookback")
// ────────────────────── DAILY CALCULATIONS ──────────────────────
high_y = request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on)
low_y = request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on)
close_y = request.security(syminfo.tickerid, "D", close , lookahead=barmerge.lookahead_on)
pivot = (high_y + low_y + close_y) / 3
r1 = pivot + 0.382 * (high_y - low_y)
r2 = pivot + 0.618 * (high_y - low_y)
r3 = pivot + (high_y - low_y)
s1 = pivot - 0.382 * (high_y - low_y)
s2 = pivot - 0.618 * (high_y - low_y)
s3 = pivot - (high_y - low_y)
prevClose = close_y
last = useBarchartLast ? request.security(syminfo.tickerid, "D", close , lookahead=barmerge.lookahead_off) : close
target = pivot + (pivot - prevClose)
// StdDev + Fibs + Monthly (unchanged)
basis = ta.sma(close, stdLen)
dev = ta.stdev(close, stdLen)
stdRes1 = basis + dev
stdRes2 = basis + dev*2
stdRes3 = basis + dev*3
stdSup1 = basis - dev
stdSup2 = basis - dev*2
stdSup3 = basis - dev*3
high4w = ta.highest(high, fib4wBars)
low4w = ta.lowest(low, fib4wBars)
fib382_4w = high4w - (high4w - low4w) * 0.382
fib50_4w = high4w - (high4w - low4w) * 0.500
high13w = ta.highest(high, fib13wBars)
low13w = ta.lowest(low, fib13wBars)
fib382_13w_high = high13w - (high13w - low13w) * 0.382
fib50_13w = high13w - (high13w - low13w) * 0.500
fib382_13w_low = low13w + (high13w - low13w) * 0.382
monthHigh = ta.highest(high, 30)
monthLow = ta.lowest(low, 30)
// ────────────────────── COLORS ──────────────────────
colRed = color.rgb(255,0,0)
colLime = color.rgb(0,255,0)
colYellow = color.rgb(255,255,0)
colOrange = color.rgb(255,165,0)
colWhite = color.rgb(255,255,255)
colGray = color.rgb(128,128,128)
colMagenta = color.rgb(255,0,255)
colPink = color.rgb(233,30,99)
colCyan = color.rgb(0,188,212)
colBlue = color.rgb(0,122,255)
colPurple = color.rgb(128,0,128)
colRed50 = color.new(colRed,50)
colGreen50 = color.new(colLime,50)
// ────────────────────── 4 KEY FULL LINES ──────────────────────
plot(showPivot ? pivot : na, title="PIVOT", color=colYellow, linewidth=3, style=plot.style_linebr)
plot(showTarget ? target : na, title="TARGET", color=colOrange, linewidth=2, style=plot.style_linebr)
plot(showLast ? last : na, title="LAST", color=colWhite, linewidth=2, style=plot.style_linebr)
plot(showPrevClose ? prevClose : na, title="PREV CLOSE",color=colGray, linewidth=1, style=plot.style_linebr)
// ────────────────────── LABELS FOR ALL 4 KEY LEVELS (SAME STYLE AS OTHERS) ──────────────────────
f_label(price, txt, bgColor, txtColor) =>
if barstate.islast and not na(price)
label.new(bar_index, price, txt, style=label.style_label_left, color=bgColor, textcolor=txtColor, size=size.small)
if barstate.islast
showPivot ? f_label(pivot, "PIVOT\n" + str.tostring(pivot, "#.##"), colYellow, color.black) : na
showTarget ? f_label(target, "TARGET\n" + str.tostring(target, "#.##"), colOrange, color.white) : na
showLast ? f_label(last, "LAST\n" + str.tostring(last, "#.##"), colWhite, color.black) : na
showPrevClose ? f_label(prevClose, "PREV CLOSE\n"+ str.tostring(prevClose, "#.##"), colGray, color.white) : na
// ────────────────────── OTHER LEVELS – line stops at label ──────────────────────
f_level(p, txt, tc, lc, w=1) =>
if barstate.islast and not na(p)
lbl = label.new(bar_index, p, txt, style=label.style_label_left, color=lc, textcolor=tc, size=size.small)
line.new(bar_index-400, p, label.get_x(lbl), p, extend=extend.none, color=lc, width=w)
if barstate.islast
if showR1R2R3
f_level(r1, "R1\n" + str.tostring(r1, "#.##"), color.white, colRed)
f_level(r2, "R2\n" + str.tostring(r2, "#.##"), color.white, colRed)
f_level(r3, "R3\n" + str.tostring(r3, "#.##"), color.white, colRed, 2)
if showS1S2S3
f_level(s1, "S1\n" + str.tostring(s1, "#.##"), color.black, colLime)
f_level(s2, "S2\n" + str.tostring(s2, "#.##"), color.black, colLime)
f_level(s3, "S3\n" + str.tostring(s3, "#.##"), color.black, colLime, 2)
if showStdDev
f_level(stdRes1, "+1σ\n" + str.tostring(stdRes1, "#.##"), color.white, colPink)
f_level(stdRes2, "+2σ\n" + str.tostring(stdRes2, "#.##"), color.white, colPink)
f_level(stdRes3, "+3σ\n" + str.tostring(stdRes3, "#.##"), color.white, colPink, 2)
f_level(stdSup1, "-1σ\n" + str.tostring(stdSup1, "#.##"), color.white, colCyan)
f_level(stdSup2, "-2σ\n" + str.tostring(stdSup2, "#.##"), color.white, colCyan)
f_level(stdSup3, "-3σ\n" + str.tostring(stdSup3, "#.##"), color.white, colCyan, 2)
if showFib4W
f_level(fib382_4w, "38.2% 4W\n" + str.tostring(fib382_4w, "#.##"), color.white, colMagenta)
f_level(fib50_4w, "50% 4W\n" + str.tostring(fib50_4w, "#.##"), color.white, colMagenta)
if showFib13W
f_level(fib382_13w_high, "38.2% 13W High\n" + str.tostring(fib382_13w_high, "#.##"), color.white, colMagenta)
f_level(fib50_13w, "50% 13W\n" + str.tostring(fib50_13w, "#.##"), color.white, colMagenta)
f_level(fib382_13w_low, "38.2% 13W Low\n" + str.tostring(fib382_13w_low, "#.##"), color.white, colMagenta)
if showMonthHL
f_level(monthHigh, "1M HIGH\n" + str.tostring(monthHigh, "#.##"), color.white, colRed50, 2)
f_level(monthLow, "1M LOW\n" + str.tostring(monthLow, "#.##"), color.white, colGreen50, 2)
// Manual entries
plot(showEntry1 and entry1 > 0 ? entry1 : na, "Entry 1", color=colBlue, linewidth=2, style=plot.style_linebr)
plot(showEntry2 and entry2 > 0 ? entry2 : na, "Entry 2", color=colPurple, linewidth=2, style=plot.style_linebr)
// Background
bgcolor(close > pivot ? color.new(color.blue, 95) : color.new(color.red, 95))
Fibonacci Projection with Volume & Delta Profile (Zeiierman)█ Overview
Fibonacci Projection with Volume & Delta Profile (Zeiierman) blends classic Fibonacci swing analysis with modern volume-flow reading to create a unified, projection-based market framework. The indicator automatically detects the latest swing high and swing low, builds a complete Fibonacci structure, and then projects future extension targets with clear visual pathways.
What makes this tool unique is the integration of two volume-based systems directly into the Fibonacci structure. A Fib-aligned Volume Profile shows how bullish and bearish volume accumulated inside the swing range, while a separate Delta Profile reveals the imbalance of buy–sell pressure inside each Fibonacci interval. Together, these elements transform the standard Fibonacci tool into a multi-dimensional structural and volume-flow map.
█ How It Works
The indicator first detects the most recent swing high and swing low using the Period setting. That swing defines the Fibonacci range, from which the script draws retracement levels (0.236–0.786) and builds a forward projection path using the chosen Projection Level and a 1.272 extension.
Along this path, it draws projection lines, target boxes, and percentage labels that show how far each projected leg extends relative to the previous one.
Inside the same swing range, the script builds a Fib-based Volume Profile by splitting price into rows and assigning each bar’s volume as bullish (close > open) or bearish (close ≤ open). On top of that, it calculates a Volume Delta Profile between each pair of fib levels, showing whether buyers or sellers dominated that band and how strong that imbalance was.
█ How to Use
This tool helps traders quickly understand market structure and where the price may be heading next. The projection engine shows the most likely future targets, highlights strong or weak legs in the move, and updates automatically whenever a new swing forms. This ensures you always see the most relevant and up-to-date projection path.
The Fib Volume Profile shows where volume supported the move and where it did not. Thick bullish buckets reveal zones where buyers stepped in aggressively, often becoming retestable support. Thick bearish buckets highlight zones of resistance or rejection, particularly useful if projected levels align with prior liquidity.
The Delta Profile adds a second dimension to volume reading by showing where buy–sell pressure was truly imbalanced. A projected Fibonacci target that aligns with a strong bullish delta, for example, may suggest continuation. A projection into a band dominated by bearish delta may warn of reversal or hesitation.
█ Settings
Period – bars used to determine swing high/low
Projection Level – chosen Fib ratio for projection path
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Fibonacci Retrace + 50 EMA Hariss 369This indicator combines 3 concepts:
Fibonacci retracement zones
50 EMA trend filter
Price interaction with specific Fib zones to generate Buy/Sell signals
Let’s break everything down in simple language.
1. Fibonacci Retracement Logic
The script finds:
Most recent swing high
Most recent swing low
Using these two points, it draws Fibonacci levels:
Fibonacci Levels Used
Level Meaning Calculation
0% Swing Low recentLow
38.2% Light retracement high - (range × 0.382)
50% Mid retracement high - (range × 0.50)
61.8% Deep retracement high - (range × 0.618)
100% Swing High recentHigh
🔍 Why only these levels?
Because trading signals are generated based ONLY on:38.2%, 50%,61.8%
These 3 levels define the golden retracement zones.
2. Trend Filter — 50 EMA
A powerful rule:
Trend Up (bullish)
➡️ Price > 50 EMA
Trend Down (bearish)
➡️ Price < 50 EMA
This prevents signals against the main trend.
3. BUY Conditions (Retracement + EMA)
A BUY signal appears when:
Price is above the 50 EMA (trend is up)
Price retraces into the BUY ZONE:
🔵 BUY ZONE = between 50% and 38.2% Fibonacci i.e.,close >= Fib50 AND close <= Fib38.2
This means:
Market is trending up
Price corrected to a healthy retracement level
Buyers are stepping back in
📘 Why this zone?
This is a moderate retracement (not too shallow, not too deep).
Smart money often enters at 38.2%–50% in a strong trend.
📘 BUY Signal Appears With:
Green “BUY” label
Green arrow below the candle
4. SELL Conditions (Retracement + EMA)
A SELL signal appears when:
Price is below the 50 EMA (trend is down)
Price retraces upward into the SELL ZONE:
🔴 SELL ZONE = between 50% and 61.8% Fibonacci i.e.,close <= Fib50 AND close >= Fib61.8
This means:
Market is trending down
Price made a pullback
Sellers regain control in the golden zone
📘 Why this zone?
50–61.8 retracement is the ideal bearish pullback level.
📘 SELL Signal Appears With:
Red “SELL” label
Red arrow above the candle
5. STOP-LOSS (SL) RULES
For BUY trades,
Place SL below 61.8% level.SL = Fib 61.8%
OR
more safe:SL = swing low (Fib 0%)
For SELL trades
Place SL above 38.2% level.SL = Fib 38.2%
OR conservative:
SL = swing high (Fib 100%)
6. TAKE-PROFIT (TP) RULES
Based on common Fibonacci extensions.
BUY Trade TP Options
TP Level Meaning
TP1 Return to 38.2% Quick scalping target
TP2 Return to swing high Full trend target
TP3 Breakout above swing high Trend continuation
Practical suggestion:
TP1 = 1× risk
TP2 = 2× risk
TP3 = trailing stop
SELL Trade TP Options
TP Level Meaning
TP1 Return to 61.8% Moderate bounce
TP2 Return to swing low Trend target
TP3 Break below swing low Trend continuation
7. Recommended Trading Plan (Simple)
BUY PLAN
Price > 50 EMA (uptrend)
Enter at BUY signal in 38.2–50% zone
SL at 61.8%
TP at swing high or structure break
SELL PLAN
Price < 50 EMA (downtrend)
Enter at SELL signal in 50–61.8% zone
SL above 38.2%
TP at swing low
🟩 Summary (Very Easy to Remember)
🔵 BUY
Trend: above 50 EMA
Zone: between 50% and 38.2%
SL: below 61.8%
TP: swing high
🔴 SELL
Trend: below 50 EMA
Zone: between 50% and 61.8%
SL: above 38.2%
TP: swing low
Auto Fibonacci RetraceNOTE: This script is for educational purposes only.
This Pine Script v6 indicator automates the drawing of Fibonacci retracement levels on a TradingView chart based on detected pivot highs and lows. It's designed to identify the most recent swing points in a price trend and plot horizontal lines at standard Fibonacci ratios (0%, 23.6%, 38.2%, 50%, 61.8%, 78.6%, 100%), along with optional labels for each level. The script is useful for traders who want dynamic, hands-free Fib retracements that update as new pivots form, helping to spot potential support/resistance zones without manual intervention.
Key Features
Automatic Pivot Detection: Uses TradingView's built-in ta.pivothigh and ta.pivotlow functions to find recent swing highs and lows. The sensitivity is adjustable via user inputs for "Left Bars" and "Right Bars" (default: 5 each), which define how many bars are checked on either side to confirm a pivot.
Trend Direction Awareness: Determines if the current swing is an uptrend (recent high after low) or downtrend (recent low after high) and orients the Fib levels accordingly—starting from the low in uptrends or high in downtrends.
Dynamic Drawing:
Plots dashed horizontal lines extending to the right of the chart for each Fib level.
Colors are predefined for visual distinction (e.g., blue for 23.6%, orange for 61.8%).
Lines and labels are cleared and redrawn only when a new pivot is detected or on initial load to prevent chart clutter.
Customizable Labels: Optional labels show the percentage (e.g., "61.8%") and can be positioned on the "Left" (at the swing start) or "Right" (pinned to the current bar, updating dynamically). Labels use semi-transparent backgrounds for readability.
Performance Optimizations: Uses arrays to manage lines and labels efficiently, with reverse-indexed loops for safe deletion. The max_bars_back=500 ensures it handles historical data without excessive computation.
User Inputs:
Left/Right Bars: Tune pivot detection (higher values for major trends, lower for shorter swings).
Show Fib Levels/Labels: Toggle visibility.
Label Position: "Left" or "Right" for placement flexibility.
Usage Instructions
Adding to Chart: Copy-paste into TradingView's Pine Editor, save as a new indicator, and add it to your chart via the "Indicators" menu.
Customization: Adjust inputs in the indicator settings panel. For example, set Left/Right Bars to 10 for daily charts in strong trends.
Best Practices:
Use on trending markets (e.g., stocks, forex, crypto like BTC/USD); avoid choppy sideways action.
Combine with other indicators (e.g., RSI for overbought/oversold confirmation) for better trade signals.
Test on historical data—zoom out to see how it redraws on past swings.
Limitations: Relies on pivot functions, so it may lag slightly (pivots confirm after "Right Bars"). Not a trading strategy—use for analysis only. No alerts built-in, but you can add alertcondition if extending it.
Potential Enhancements: Add extensions (e.g., 161.8%), user-defined levels, or alerts on price touches via simple modifications.
This script provides a clean, efficient way to visualize Fib retracements automatically, saving time compared to manual drawing. If you need further tweaks or integration into a full strategy, let me know!
Kootch EMA MapKootch EMA overlays the 200 EMA from M1, M5, M15, M30, H1, H4, and D1 on any chart so you always see where higher and lower-timeframe trend gravity actually is. It also builds an optional Fib channel between the most extreme MTF 200 EMAs (min/max), giving you clean intrachannel targets and confluence zones.
What it does
• Plots seven 200 EMAs (M1 → D1) simultaneously via MTF pulls
• Color/weight hierarchy: thicker lines = higher timeframe (clear priority)
• Right-edge TF tags (M1, M5, … D1) so you know exactly what you’re looking at
• Optional Fib levels between min/max MTF 200 EMAs (0 → 1 band) for entries, adds, and take-profit scaling
Why traders use it
• Immediate read on trend alignment vs. chop across timeframes
• Mean-reversion & continuation cues when price stretches from/returns to key EMAs
• Level stacking: use M30/H1/H4/D1 as bias, trade entries around lower-TF reactions
Inputs
• EMA Length (default 200)
• Label offset (push tags off the last bar)
• Show Fib channel toggle + color control
How I use it
• Bias from D1/H4/H1; execution from M5/M15.
• Fade or follow at Fib 0.382 / 0.618 inside the EMA envelope; scale out near Fib 1.0 into HTF EMAs.
• Skip trades when EMAs are braided and distances are compressed.
Notes
• Works on any symbol/timeframe; all TF EMAs are requested explicitly.
• This is a map, not a crystal ball: combine with your playbook (structure breaks, FVGs, liquidity, volume).
Fibonacci retracementHi all!
This indicator will show you the most recent Fibonacci retracement in the current trend. So if the trend is bullish the Fibonacci retracement will be drawn from swing low to high and from swing high to low in a bearish trend.
The uniqueness in this script lies in the adaptation to trend. To only plot the Fibonacci retracements according to the current market trend.
The trend is determined through break of structures (BOS) and change of characters (CHoCH). A change of character can be of type change of character plus (with a failed swing) and will then be shown as CHoCH+. This is possible through my library 'MarketStructure' (). It only uses break of structures and change of characters to be able to determine the trend, if you want a more detailed picture of the market structure you can use my script 'Market structure' ().
History and what to look for
Fibonacci retracement levels are used by many traders and are levels that are not Fibonacci sequence numbers themselves but they deriver from them. Some examples are:
23,6% - Divide a number by one three places ahead (e.g. 13/55)
38,2% - Divide a number by the one two places ahead (e.g. 21/55)
50% - Not from the Fibonacci sequence, but it's a number that price has reacted from in the past. Markets tend to retrace half a move before continuing
61,8% - The "golden retracement level". It derives from the "golden ratio" and is a core component of the Fibonacci sequence. The further you go in the Fibonacci sequence the preceding number divided by the current number will get closer and closer to this "golden ratio". This level is considered the most important Fibonacci retracement level by many traders
78,6% - Square root of 61.8%. This is often considered a deep correction (but not a trend reversal) and are often used for late entries
These levels are considered "key" and most significant. You want to look for a retracement of the price (down in a bullish trend and up in a bearish trend) to give you good entries.
Settings
For the trend you can set the pivot/swing lengths (right and left) and use the checkbox if you want these pivots to have labels. This can be done in the 'Market strucure' section.
In the 'Fibonacci retracement' section there is settings for the actual Fibonacci retracement. You can enable the trendline, set the color and the style of it. You can select which levels that should be shown by the indicator. There are 11 levels enabled by default, they are; 0-4.236. All settings in this section tries to be as similar to the "Fib Retracement" tool in Tradingview. You can also select the style of these lines (solid, dashed or dotted) and if you want them to extend to the right or not.
After this you can select if the Fibonacci retracement should be reversed or not, if prices should be displayed, if levels should be displayed and if to show the decimal levels or percentages and lastly the font size of these labels.
All defaults are based on the "Fib Retracement" tool by Tradingview.
Visualization
This indicator aims to be as visually similar to the default ("Fib Retracement") tool here on Tradingview. It will plot the Fibonacci retracement (called Auto Fibonacci/Auto fib) according to the trend from the library 'MarketStrucure'. The big differences from the "Fib Retracement" tool by Tradingview is that it's automatic (that adapts to trend), the market structure is visualized through lines and labels (showing 'BOS' for break of structures and 'CHoCH'/'CHoCH+' for change of characters) and that the labels showing information about the levels are positioned to be highly visible (left if <50% otherwise right if in a bullish trend, vice versa in a bearish trend or if reversed).
Don't hesitate if you have any feedback or nice feature suggestions!
Best of trading luck!
Fibonacci Extension Strt StrategyCore Logic and Steps:
Weekly Trend Identification:
Find the last significant Higher High (HH) and Lower Low (LL) or vice-versa on the Weekly timeframe.
Determine if it's an uptrend (HH followed by LL) or a downtrend (LL followed by HH).
Plot a Fibonacci Extension (or Retracement in reverse order) from the swing point determined to the other significant swing point.
Weekly Retracement Levels:
Display horizontal lines at the 0.236, 0.382, and 0.5 Fibonacci levels from the weekly extension.
Monitor price action on these levels.
Daily Confirmation:
When price hits the Fib levels, examine the Daily chart.
Look for a rejection wick (indicating the pull back is ending) on the identified weekly retracement levels.
Confirm that the price is indeed starting to continue in the direction of the original weekly trend.
Four-Hour Entry:
On the 4H timeframe, plot a new Fib Extension in the opposite direction of the weekly.
If it's an uptrend, the Fib is plotted from last swing low to its swing high. If the weekly trend was bearish the Fib will be plotted from last swing high to the swing low.
Generate an entry when price breaks the high of that candle.
Trade Management:
Entry is on the breakout of the current candle.
Stop Loss: Place the stop loss below the wick of the breakout candle.
Take Profit 1: Close 50% of the position at the 0.5 Fibonacci level. Move the stop loss to breakeven on this position.
Take Profit 2: Close another 25% of the position at the 0.236 Fib level.
Trailing Take Profit: Keep the last 25% open, using a trailing stop loss. (You'll need to define the logic for the trailing stop, e.g., trailing stop using the last high/low)
How to Use in TradingView:
Open a TradingView Chart.
Click on "Pine Editor" at the bottom.
Copy and paste the corrected Pine Script code.
Click "Add to Chart".
The indicator should now be displayed on your chart.
MTF VWAP + Fibo Incremental deviationsI made a Fibo variant of my first script "VWAPs + devs" :
This new indicator give you the possibility to plot multi timeframes VWAP (D, W, M, 3M and 12M ) and Fibo deviations for each one.
VWAP is a powerfull indicator which is used by big players to get informations if the price is "overbought" or "oversold". Deviations give the opportunity to have supports and resistances in those "over"-zones.
I searched for better results and found those defaults values :
Fib 1 level : 0.618
Fib 2 level : 0.786
Fib 3 level : 1.000
Fib 4 level : 1.618
Fib 5 level : 2.618
In the thumbnail, we can see that the 1.618 deviation level made a great support on the last uptrend for BTCUSDT .
You can change each values but low ones as 0.382 and 0.5 don't give really interesting supports/resistances.
I made this script as clear and simple as possible with only one menu in the parameters.
Some examples of what you can do :
BTCUSDT (Binance) H4 / D, W, M, 3M ,12M VWAP without devs
BTCUSDT (Binance) M5 / Daily VWAP + Fibo devs
Hope this will be useful for you !
Smart Money Concepts [XoRonX]# Smart Money Concepts (SMC) - Advanced Trading Indicator
## 📊 Deskripsi
**Smart Money Concepts ** adalah indicator trading komprehensif yang menggabungkan konsep Smart Money Trading dengan berbagai alat teknikal analisis modern. Indicator ini dirancang untuk membantu trader mengidentifikasi pergerakan institusional (smart money), struktur pasar, zona supply/demand, dan berbagai sinyal trading penting.
Indicator ini mengintegrasikan multiple timeframe analysis, order blocks detection, fair value gaps, fibonacci retracement, volume profile, RSI multi-timeframe, dan moving averages dalam satu platform yang powerful dan mudah digunakan.
---
## 🎯 Fitur Utama
### 1. **Smart Money Structure**
- **Internal Structure** - Struktur pasar jangka pendek untuk entry presisi
- **Swing Structure** - Struktur pasar jangka panjang untuk trend analysis
- **BOS (Break of Structure)** - Konfirmasi kelanjutan trend
- **CHoCH (Change of Character)** - Deteksi potensi reversal
### 2. **Order Blocks**
- **Internal Order Blocks** - Zona demand/supply jangka pendek
- **Swing Order Blocks** - Zona demand/supply jangka panjang
- Filter otomatis berdasarkan volatilitas (ATR/Range)
- Mitigation tracking (High/Low atau Close)
- Customizable display (jumlah order blocks yang ditampilkan)
### 3. **Equal Highs & Equal Lows (EQH/EQL)**
- Deteksi otomatis equal highs/lows
- Indikasi liquidity zones
- Threshold adjustment untuk sensitivitas
- Visual lines dan labels
### 4. **Fair Value Gaps (FVG)**
- Multi-timeframe FVG detection
- Auto threshold filtering
- Bullish & Bearish FVG boxes
- Extension control
- Color customization
### 5. **Premium & Discount Zones**
- Premium Zone (75-100% dari range)
- Equilibrium Zone (47.5-52.5% dari range)
- Discount Zone (0-25% dari range)
- Auto-update berdasarkan swing high/low
### 6. **Fibonacci Retracement**
- **Equilibrium to Discount** - Fib dari EQ ke discount zone
- **Equilibrium to Premium** - Fib dari EQ ke premium zone
- **Discount to Premium** - Fib full range
- Reverse option
- Show/hide lines
- Custom colors
### 7. **Volume Profile (VRVP)**
- Visible Range Volume Profile
- Point of Control (POC)
- Value Area (70% volume)
- Auto-adjust rows
- Placement options (Left/Right)
- Width customization
### 8. **RSI Multi-Timeframe**
- Monitor 3 timeframes sekaligus
- Overbought/Oversold signals
- Visual table display
- Color-coded signals (Red OB, Green OS)
- Customizable position & size
### 9. **Moving Averages**
- 3 Moving Average lines
- Pilihan tipe: EMA, SMA, WMA
- Automatic/Manual period mode
- Individual color & width settings
- Cross alerts (MA vs MA, Price vs MA)
### 10. **Multi-Timeframe Levels**
- Support up to 5 different timeframes
- Previous high/low levels
- Custom line styles
- Color customization
### 11. **Candle Color**
- Color candles berdasarkan trend
- Bullish = Green, Bearish = Red
- Optional toggle
---
## 🛠️ Cara Penggunaan
### **A. Setup Awal**
1. **Tambahkan Indicator ke Chart**
- Buka TradingView
- Klik "Indicators" → "My Scripts" atau paste code
- Pilih "Smart Money Concepts "
2. **Pilih Mode Display**
- **Historical**: Tampilkan semua struktur (untuk backtesting)
- **Present**: Hanya tampilkan struktur terbaru (clean chart)
3. **Pilih Style**
- **Colored**: Warna berbeda untuk bullish/bearish
- **Monochrome**: Tema warna abu-abu
---
### **B. Penggunaan Fitur**
#### **1. Smart Money Structure**
**Internal Structure (Real-time):**
- ✅ Aktifkan "Show Internal Structure"
- Pilih tampilan: All, BOS only, atau CHoCH only
- Gunakan untuk entry timing presisi
- Filter confluence untuk mengurangi noise
**Swing Structure:**
- ✅ Aktifkan "Show Swing Structure"
- Pilih tampilan struktur bullish/bearish
- Adjust "Swings Length" (default: 50)
- Gunakan untuk konfirmasi trend utama
**Tips:**
- BOS = Konfirmasi trend continuation
- CHoCH = Warning untuk possible reversal
- Tunggu price retest ke order block setelah BOS
---
#### **2. Order Blocks**
**Setup:**
- ✅ Aktifkan Internal/Swing Order Blocks
- Set jumlah blocks yang ditampil (1-20)
- Pilih filter: ATR atau Cumulative Mean Range
- Pilih mitigation: Close atau High/Low
**Cara Trading:**
1. Tunggu BOS/CHoCH terbentuk
2. Identifikasi order block terdekat
3. Wait for price pullback ke order block
4. Entry saat price respek order block (rejection)
5. Stop loss di bawah/atas order block
6. Target: swing high/low berikutnya
**Color Code:**
- 🔵 Light Blue = Internal Bullish OB
- 🔴 Light Red = Internal Bearish OB
- 🔵 Dark Blue = Swing Bullish OB
- 🔴 Dark Red = Swing Bearish OB
---
#### **3. Equal Highs/Lows (EQH/EQL)**
**Setup:**
- ✅ Aktifkan "Equal High/Low"
- Set "Bars Confirmation" (default: 3)
- Adjust threshold (0-0.5, default: 0.1)
**Interpretasi:**
- EQH = Liquidity di atas, kemungkinan sweep lalu dump
- EQL = Liquidity di bawah, kemungkinan sweep lalu pump
- Biasanya smart money akan grab liquidity sebelum move besar
**Trading Strategy:**
- Wait for EQH/EQL formation
- Anticipate liquidity grab
- Entry setelah sweep dengan konfirmasi (order block, FVG, CHoCH)
---
#### **4. Fair Value Gaps (FVG)**
**Setup:**
- ✅ Aktifkan "Fair Value Gaps"
- Pilih timeframe (default: chart timeframe)
- Enable/disable auto threshold
- Set extension bars
**Cara Trading:**
1. Bullish FVG = Support zone untuk buy
2. Bearish FVG = Resistance zone untuk sell
3. Price tends to fill FVG (retest)
4. Entry saat price kembali ke FVG
5. Partial fill = valid, full fill = invalidated
**Tips:**
- FVG + Order Block = High probability setup
- Multi-timeframe FVG lebih kuat
- Unfilled FVG = strong momentum
---
#### **5. Premium & Discount Zones**
**Setup:**
- ✅ Aktifkan "Premium/Discount Zones"
- Zones akan auto-update berdasarkan swing high/low
**Interpretasi:**
- 🟢 **Discount Zone** = Area BUY (price murah)
- ⚪ **Equilibrium** = Neutral (50%)
- 🔴 **Premium Zone** = Area SELL (price mahal)
**Trading Strategy:**
- BUY dari discount zone
- SELL dari premium zone
- Avoid trading di equilibrium
- Combine dengan structure confirmation
---
#### **6. Fibonacci Retracement**
**Setup:**
- Pilih Fib yang ingin ditampilkan:
- Equilibrium to Discount
- Equilibrium to Premium
- Discount to Premium
- Toggle show lines
- Enable reverse jika perlu
- Custom colors
**Key Levels:**
- 0.236 = Shallow retracement
- 0.382 = Common retracement
- 0.5 = 50% golden level
- 0.618 = Golden ratio (penting!)
- 0.786 = Deep retracement
**Cara Pakai:**
- 0.618-0.786 = Ideal entry zone dalam trend
- Combine dengan order blocks
- Wait for confirmation candle
---
#### **7. Volume Profile (VRVP)**
**Setup:**
- ✅ Aktifkan "Show Volume Profile"
- Set jumlah rows (10-100)
- Adjust width (5-50%)
- Pilih placement (Left/Right)
- Enable POC dan Value Area
**Interpretasi:**
- **POC (Point of Control)** = Harga dengan volume tertinggi = magnet
- **Value Area** = 70% volume = fair price range
- **Low Volume Nodes** = Weak support/resistance
- **High Volume Nodes** = Strong support/resistance
**Trading:**
- POC acts as support/resistance
- Price tends to return to POC
- Breakout dari Value Area = momentum
---
#### **8. RSI Multi-Timeframe**
**Setup:**
- ✅ Aktifkan "Show RSI Table"
- Set 3 timeframes (default: chart, 5m, 15m)
- Set RSI period (default: 14)
- Set Overbought level (default: 70)
- Set Oversold level (default: 30)
- Pilih posisi & ukuran table
**Interpretasi:**
- 🟢 **OS (Oversold)** = RSI ≤ 30 = Kondisi jenuh jual
- 🔴 **OB (Overbought)** = RSI ≥ 70 = Kondisi jenuh beli
- **-** = Neutral zone
**Trading Strategy:**
1. Multi-timeframe alignment = strong signal
2. OS + Bullish structure = BUY signal
3. OB + Bearish structure = SELL signal
4. Divergence RSI vs Price = reversal warning
**Contoh:**
- TF1: OS, TF2: OS, TF3: OS + Price di discount zone = STRONG BUY
---
#### **9. Moving Averages**
**Setup:**
- Pilih MA Type: EMA, SMA, atau WMA (berlaku untuk ketiga MA)
- Pilih Period Mode: Automatic atau Manual
- Set period untuk MA 1, 2, 3 (default: 20, 50, 100)
- Custom color & width per MA
- ✅ Enable Cross Alerts
**Interpretasi:**
- **Golden Cross** = MA fast cross above MA slow = Bullish
- **Death Cross** = MA fast cross below MA slow = Bearish
- Price above all MAs = Strong uptrend
- Price below all MAs = Strong downtrend
**Trading Strategy:**
1. MA1 (20) = Short-term trend
2. MA2 (50) = Medium-term trend
3. MA3 (100) = Long-term trend
**Entry Signals:**
- Price bounce dari MA dalam trend = continuation
- MA cross dengan konfirmasi structure = entry
- Multiple MA confluence = strong support/resistance
**Alerts Available:**
- MA1 cross MA2/MA3
- MA2 cross MA3
- Price cross any MA
---
#### **10. Multi-Timeframe Levels**
**Setup:**
- Enable HTF Level 1-5
- Set timeframes (contoh: 5m, 1H, 4H, D, W)
- Pilih line style (solid/dashed/dotted)
- Custom colors
**Cara Pakai:**
- Previous high/low dari HTF = strong S/R
- Breakout HTF level = significant move
- Multiple HTF levels confluence = major zone
---
### **C. Trading Setup Combination**
#### **Setup 1: High Probability Buy (Bullish)**
1. ✅ Swing structure: Bullish BOS
2. ✅ Price di Discount Zone
3. ✅ Pullback ke Bullish Order Block
4. ✅ Bullish FVG di bawah
5. ✅ RSI Multi-TF: Oversold
6. ✅ Price bounce dari MA
7. ✅ POC/Value Area support
8. ✅ Fibonacci 0.618-0.786 retracement
**Entry:** Saat price reject dari order block dengan confirmation candle
**Stop Loss:** Below order block
**Target:** Swing high atau premium zone
---
#### **Setup 2: High Probability Sell (Bearish)**
1. ✅ Swing structure: Bearish BOS
2. ✅ Price di Premium Zone
3. ✅ Pullback ke Bearish Order Block
4. ✅ Bearish FVG di atas
5. ✅ RSI Multi-TF: Overbought
6. ✅ Price reject dari MA
7. ✅ POC/Value Area resistance
8. ✅ Fibonacci 0.618-0.786 retracement
**Entry:** Saat price reject dari order block dengan confirmation candle
**Stop Loss:** Above order block
**Target:** Swing low atau discount zone
---
#### **Setup 3: Liquidity Grab (EQH/EQL)**
1. ✅ Identifikasi EQH atau EQL
2. ✅ Wait for liquidity sweep
3. ✅ Konfirmasi dengan CHoCH
4. ✅ Order block terbentuk setelah sweep
5. ✅ Entry saat retest order block
---
### **D. Tips & Best Practices**
**Risk Management:**
- Selalu gunakan stop loss
- Risk 1-2% per trade
- Risk:Reward minimum 1:2
- Jangan over-leverage
**Confluence adalah Kunci:**
- Minimal 3-4 konfirmasi sebelum entry
- Lebih banyak konfirmasi = higher probability
- Quality over quantity
**Timeframe Analysis:**
- HTF (Higher Timeframe) = Trend direction
- LTF (Lower Timeframe) = Entry timing
- Align dengan HTF trend
**Backtesting:**
- Gunakan mode "Historical"
- Test strategy di berbagai market condition
- Record dan analyze hasil
**Market Condition:**
- Trending market = Follow BOS, use order blocks
- Ranging market = Use premium/discount zones, EQH/EQL
- High volatility = Wider stops, wait for clear structure
**Avoid:**
- Trading di equilibrium zone
- Entry tanpa konfirmasi
- Fighting the trend
- Overleveraging
- Emotional trading
---
## 📈 Recommended Settings
### **For Scalping (1m - 5m):**
- Internal Structure: ON
- Swing Structure: OFF
- Order Blocks: Internal only
- RSI Timeframes: 1m, 5m, 15m
- MA Periods: 9, 21, 50
### **For Day Trading (15m - 1H):**
- Internal Structure: ON
- Swing Structure: ON
- Order Blocks: Both
- RSI Timeframes: 15m, 1H, 4H
- MA Periods: 20, 50, 100
### **For Swing Trading (4H - D):**
- Internal Structure: OFF
- Swing Structure: ON
- Order Blocks: Swing only
- RSI Timeframes: 4H, D, W
- MA Periods: 20, 50, 200
---
## ⚠️ Disclaimer
Indicator ini adalah alat bantu analisis teknikal. Tidak ada indicator yang 100% akurat. Selalu:
- Lakukan analisa fundamental
- Gunakan proper risk management
- Praktik di demo account terlebih dahulu
- Trading memiliki resiko, trade at your own risk
---
## 📝 Version Info
**Version:** 5.0
**Platform:** TradingView Pine Script v5
**Author:** XoRonX
**Max Labels:** 500
**Max Lines:** 500
**Max Boxes:** 500
---
## 🔄 Updates & Support
Untuk update, bug reports, atau pertanyaan:
- Check documentation regularly
- Test new features in replay mode
- Backup your settings before updates
---
## 🎓 Learning Resources
**Recommended Study:**
1. Smart Money Concepts (SMC) basics
2. Order blocks theory
3. Liquidity concepts
4. ICT (Inner Circle Trader) concepts
5. Volume profile analysis
6. Multi-timeframe analysis
**Practice:**
- Start with higher timeframes
- Master one concept at a time
- Keep a trading journal
- Review your trades weekly
---
**Happy Trading! 🚀📊**
_Remember: The best indicator is your own analysis and discipline._
Rawstocks 15 Minute ModelRawstocks 15-Minute Model
The Rawstocks 15-Minute Model is a precision intraday trading strategy designed for the US stock market (9:30 AM - 4:00 PM ET), optimized for the 15-minute timeframe. It combines institutional order flow concepts with Fibonacci retracements to identify high-probability reversal setups while enforcing strict risk management and session-based rules.
Key Features
Time-Based Execution
Trading Hours: 9:30 AM - 4:00 PM ET (no new entries after 4:00 PM)
Force Close: All positions auto-exit at 4:30 PM ET (prevents overnight risk)
Entry Logic
Order Block + Fib Confluence:
Identifies institutional order blocks (previous swing highs/lows)
Requires price pullback to 61.8% or 79% Fibonacci level
Liquidity Confirmation:
Waits for stop runs (liquidity sweeps) before reversal entries
Exit Rules
Stop Loss: 1x ATR (14) from entry
Take Profit: 2:1 Risk-Reward (adjustable)
Visual Signals
Green Triangle: Valid long setup (pullback to bullish OB + Fib)
Red Triangle: Valid short setup (pullback to bearish OB + Fib)
Blue/Purple Background: Highlights active trading vs. close period
How It Works
Identify the Setup
Wait for a strong impulse move (break of structure)
Mark the order block (institutional zone)
Confirm Pullback
Price must retrace to 61.8% or 79% Fib level
Must occur within trading hours (9:30 AM - 4:00 PM)
Enter on Confirmation
Long: Break of pullback candle high (stop below recent swing low)
Short: Break of pullback candle low (stop above recent swing high)
Manage the Trade
Trail stop or exit at 2R (risk-to-reward)
All positions close at 4:30 PM sharp
reversalchartpatternsLibrary "reversalchartpatterns"
User Defined Types and Methods for reversal chart patterns - Double Top, Double Bottom, Triple Top, Triple Bottom, Cup and Handle, Inverted Cup and Handle, Head and Shoulders, Inverse Head and Shoulders
method delete(this)
Deletes the drawing components of ReversalChartPatternDrawing object
Namespace types: ReversalChartPatternDrawing
Parameters:
this (ReversalChartPatternDrawing) : ReversalChartPatternDrawing object
Returns: current ReversalChartPatternDrawing object
method delete(this)
Deletes the drawing components of ReversalChartPattern object. In turn calls the delete of ReversalChartPatternDrawing
Namespace types: ReversalChartPattern
Parameters:
this (ReversalChartPattern) : ReversalChartPattern object
Returns: current ReversalChartPattern object
method lpush(this, obj, limit, deleteOld)
Array push with limited number of items in the array. Old items are deleted when new one comes and exceeds the limit
Namespace types: array
Parameters:
this (array) : array object
obj (ReversalChartPattern) : ReversalChartPattern object which need to be pushed to the array
limit (int) : max items on the array. Default is 10
deleteOld (bool) : If set to true, also deletes the drawing objects. If not, the drawing objects are kept but the pattern object is removed from array. Default is false.
Returns: current ReversalChartPattern object
method draw(this)
Draws the components of ReversalChartPatternDrawing
Namespace types: ReversalChartPatternDrawing
Parameters:
this (ReversalChartPatternDrawing) : ReversalChartPatternDrawing object
Returns: current ReversalChartPatternDrawing object
method draw(this)
Draws the components of ReversalChartPatternDrawing within the ReversalChartPattern object.
Namespace types: ReversalChartPattern
Parameters:
this (ReversalChartPattern) : ReversalChartPattern object
Returns: current ReversalChartPattern object
method scan(zigzag, patterns, errorPercent, shoulderStart, shoulderEnd, allowedPatterns, offset)
Scans zigzag for ReversalChartPattern occurences
Namespace types: zg.Zigzag
Parameters:
zigzag (Zigzag type from Trendoscope/Zigzag/11) : ZigzagTypes.Zigzag object having array of zigzag pivots and other information on each pivots
patterns (array) : Existing patterns array. Used for validating duplicates
errorPercent (float) : Error threshold for considering ratios. Default is 13
shoulderStart (float) : Starting range of shoulder ratio. Used for identifying shoulders, handles and necklines
shoulderEnd (float) : Ending range of shoulder ratio. Used for identifying shoulders, handles and necklines
allowedPatterns (array) : array of int containing allowed pattern types
offset (int) : Offset of zigzag to consider only confirmed pivots
Returns: int pattern type
method createPattern(zigzag, patternType, patternColor, properties, offset)
Create Pattern from ZigzagTypes.Zigzag object
Namespace types: zg.Zigzag
Parameters:
zigzag (Zigzag type from Trendoscope/Zigzag/11) : ZigzagTypes.Zigzag object having array of zigzag pivots and other information on each pivots
patternType (int) : Type of pattern being created. 1 - Double Tap, 2 - Triple Tap, 3 - Cup and Handle, 4 - Head and Shoulders
patternColor (color) : Color in which the patterns are drawn
properties (ReversalChartTradeProperties)
offset (int)
Returns: ReversalChartPattern object created
method getName(this)
get pattern name of ReversalChartPattern object
Namespace types: ReversalChartPattern
Parameters:
this (ReversalChartPattern) : ReversalChartPattern object
Returns: string name of the pattern
method getDescription(this)
get consolidated description of ReversalChartPattern object
Namespace types: ReversalChartPattern
Parameters:
this (ReversalChartPattern) : ReversalChartPattern object
Returns: string consolidated description
method init(this)
initializes the ReversalChartPattern object and creates sub object types
Namespace types: ReversalChartPattern
Parameters:
this (ReversalChartPattern) : ReversalChartPattern object
Returns: ReversalChartPattern current object
ReversalChartPatternDrawing
Type which holds the drawing objects for Reversal Chart Pattern Types
Fields:
patternLines (array type from Trendoscope/Drawing/2) : array of Line objects representing pattern
entry (Line type from Trendoscope/Drawing/2) : Entry price Line
targets (array type from Trendoscope/Drawing/2)
stop (Line type from Trendoscope/Drawing/2) : Stop price Line
patternLabel (Label type from Trendoscope/Drawing/2)
ReversalChartTradeProperties
Trade properties of ReversalChartPattern
Fields:
riskAdjustment (series float) : Risk Adjustment for calculation of stop
useFixedTarget (series bool) : Boolean flag saying use fixed target type wherever possible. If fixed target type is not possible, then risk reward/fib ratios are used for calculation of targets
variableTargetType (series int) : Integer value which defines whether to use fib based targets or risk reward based targets. 1 - Risk Reward, 2 - Fib Ratios
variableTargetRatios (array) : Risk reward or Fib Ratios to be used for calculation of targets when fixed target is not possible or not enabled
entryPivotForWm (series int) : which Pivot should be considered as entry point for WM patterns. 0 refers to the latest breakout pivot where as 5 refers to initial pivot of the pattern
ReversalChartPattern
Reversal Chart Pattern master type which holds the pattern components, drawings and trade details
Fields:
pivots (array type from Trendoscope/Zigzag/11) : Array of Zigzag Pivots forming the pattern
patternType (series int) : Defines the main type of pattern 1 - Double Tap, 1 - Triple Tap, 3 - Cup and Handle, 4 - Head and Shoulders, 5- W/M Patterns, 6 - Full Trend, 7 - Half Trend
patternColor (series color) : Color in which the pattern will be drawn on chart
properties (ReversalChartTradeProperties)
drawing (ReversalChartPatternDrawing) : ReversalChartPatternDrawing object which holds the drawing components
trade (Trade type from Trendoscope/TradeTracker/1) : TradeTracker.Trade object holding trade components
Vietnamese Stocks: Multi-Ticker Fibonacci AlertThis Pine Script™ indicator is designed specifically for traders monitoring the Vietnamese stock market (HOSE, HNX). Its primary goal is to automate the tracking of Fibonacci retracement levels across a large list of stocks, alerting you when prices breach key support zones.
Core Functionality:
The script calculates Fibonacci retracement levels (23.6%, 38.2%, 50%, 61.8%, 78.6%) for up to 40 tickers simultaneously. The calculation is based on the highest high and lowest low identified since a user-defined Start Time. This allows you to anchor the Fibonacci analysis to a specific market event, trend start, or time period relevant to your strategy.
What it Does For You:
Automated Watchlist Scanning: Instead of drawing Fib levels on dozens of charts, select one of the two pre-configured watchlists (up to 40 symbols each, customizable in settings) populated with popular Vietnamese stocks.
Time-Based Fibonacci: Define a Start Time in the settings. The script uses this date to find the subsequent highest high and lowest low for each symbol in your chosen watchlist, forming the basis for the Fib calculation.
Intelligent Alerts: Get notified via TradingView's alerts when the candle closing price of any stock in your active watchlist falls below the critical 38.2%, 50%, 61.8%, or 78.6% levels relative to its own high/low range since the start time. Alerts are consolidated for efficiency.
Visual Aids:
- Plots the same time-based Fibonacci levels directly on your current chart symbol for quick reference.
- Includes an optional on-chart table showing which monitored stocks are currently below key Fib levels (enable "Show Debug Info").
- Features experimental background coloring to highlight potential bullish signals on the current chart.
Configuration:
Start Time: Crucial input – sets the anchor point for Fib calculations.
WatchList Selection: Choose between WatchList #1 (Bluechip/Midcap focus) or WatchList #2 (Defensive/Other focus) using the boolean toggles.
Symbol Customization: Easily replace the default symbols with your preferred Vietnamese stocks directly in the indicator settings.
Notification Prefix: Add custom text to the beginning of your alert messages.
Alert Setup: Remember to create an alert in TradingView, selecting this indicator and the alert() condition, usually with "Once Per Bar Close" frequency.
This tool is open-source under the MPL 2.0 license. Feel free to use, modify, and learn from it.
Midnight Range Standard DeviationsCredit to Lex Fx for the basic framework of this script
This indicator is designed to assist traders in identifying potential trading opportunities based on the Intraday Concurrency Technique (ICT) concepts, specifically the midnight range deviations and their relationship to Fibonacci levels. It builds upon the work of Lex-FX, whom we gratefully acknowledge for the original concept and inspiration for this indicator.
Core Concept: ICT Midnight Range
The core of this indicator revolves around the concept of the midnight range. According to ICT, the high and low formed in a specific time window (typically the first 30 minutes after midnight, New York Time) can serve as a key reference point for intraday price action. The indicator identifies this range and projects potential support and resistance levels based on deviations from this range, combined with Fibonacci ratios.
How ICT Uses Midnight Range Deviations
ICT methodology often involves looking for price to move away from the initial midnight range, then return to it, or deviate beyond it, as key areas for potential entries.
Range Identification: The indicator automatically identifies the high and low of the midnight range (00:00 - 00:30 NY Time).
Deviation Levels: The indicator calculates and displays deviation levels based on multiples of the initial midnight range. These levels are often used to identify potential areas of support and resistance, as well as potential targets for price movement. These levels can be set in the additional fib levels section, which can be configured in increments of .5 deviations all the way up to 12 deviations.
Fibonacci Confluence: ICT often emphasizes the confluence of multiple factors. This indicator adds Fibonacci levels to the midnight range deviations. This allows traders to identify areas where Fibonacci retracements or extensions align with the deviation levels, potentially creating stronger areas of support or resistance.
Looking for Sweeps: ICT often uses these levels to look for times that the high and low are swept as potential areas of liquidity, indicating the start of potential continuations.
Time-Based Analysis: The time at which price interacts with these levels can also be significant in ICT. The indicator provides options to extend the range lines to specific times (e.g., 3 hours, 6 hours, 10 hours, 12 hours, or a custom defined time) after midnight, allowing traders to focus on specific periods of the trading day.
Indicator Settings Explained:
Time Zone (TZ): Defines the time zone used for calculating the midnight range. The default is "America/New_York".
Range High Color, Range Low Color, Range Mid Color: Customize the colors of the high, low, and mid-range lines.
Range Fill Color: Sets the fill color for the area between the range high and low.
Line Style: Choose the style of the range lines (solid, dashed, dotted).
Range Line Thickness: Adjust the thickness of the range lines for better visibility.
Show Fibonacci Levels: Enable or disable the display of Fibonacci deviation levels.
Fib Up Color, Fib Down Color: Customize the colors of the Fibonacci levels above (up) and below (down) the midnight range.
Show Trendline: Enables a trendline that plots the close price, colored according to whether the price is above the high, below the low, or within the midnight range.
Show Range Lines, Show Range Labels: Toggles the visibility of the range lines and their associated labels.
Label Size: Adjust the size of the labels for better readability.
Hide Prices: Option to display only the deviation values on labels, hiding price values.
Place Fibonacci Labels on Left Side: Option to switch label position from right side to left side.
Extend Range To (Hours from Midnight): This section gives you a wide variety of options on how far you want to extend the range to, you can do 3,6,10,12, and 23 hours. Alternatively, you can select the "Use Custom Length" and set a specific time in hours.
Additional Fib Levels: This section allows the trader to set additional deviation points in increments of .5 deviations from .5 all the way up to 12 deviations
TradingView Community Guidelines Compliance:
This indicator description adheres to the TradingView community guidelines by:
Being educational: It explains the ICT methodology and how the indicator can be used in trading.
Being transparent: It clearly describes all the indicator's settings and their purpose.
Providing credit: It acknowledges Lex-FX as the original author of the concept.
Avoiding misleading claims: It does not guarantee profits or imply that the indicator is a "holy grail."
Disclaimer: Usage of this indicator and the information provided is at your own risk. The author is not responsible for any losses incurred as a result of using this indicator.
Important Considerations:
This indicator is intended for educational purposes and to assist in applying the ICT methodology.
It should not be used as a standalone trading system.
Always combine this indicator with other forms of technical analysis and risk management techniques.
Backtest thoroughly on your chosen market and timeframe before using in live trading.
Trading involves risk. Only trade with capital you can afford to lose.
IronBot v3Introduction
IronBot V3 is a TradingView indicator that analyzes market trends, identifies potential trading opportunities, and helps manage trades by visualizing entry points, stop-loss levels, and take-profit targets.
How It Works
The indicator evaluates price action within a specified analysis window to determine market trends. It uses Fibonacci retracement levels to identify key price levels for trend detection and trading signals. Based on user-defined inputs, it calculates and displays trade levels, including entry points, stop-loss, and multiple take-profit levels.
Trend Definition:
The highest high and lowest low are calculated over a specified number of candles.
The price range is determined as the difference between the highest high and lowest low.
Three Fibonacci levels are calculated within this range:
- Fib Level 0.236
- Trend Line (0.5 level)
- Fib Level 0.786
Determining Long and Short Conditions:
Long Conditions (Buy):
The closing price must be above both the trend line (0.5 level) and the Fib Level 0.236.
Additionally, the market must not currently be in a bearish trend.
Short Conditions (Sell):
The closing price must be below both the trend line and the Fib Level 0.786.
The market must not currently be in a bullish trend.
Trend State Updates:
When a condition is met, the indicator sets the trend to bullish or bearish and turns off bearish or bullish trend conditions.
If neither buy nor sell conditions are met, the trend remains unchanged, and no new trade signals are generated.
Inputs and Their Role in the Algorithm
General Settings
Analysis Window: Specifies the number of historical candles to analyze. This influences the calculation of key levels such as highs and lows, which are critical for determining Fibonacci retracement levels.
First Trade: Defines the start date for generating trading signals.
Trade Configuration
Display TP/SL: Enables or disables the visualization of take-profit and stop-loss levels on the chart.
Leverage: Defines the leverage applied to trades for risk and position size calculations.
Initial Capital: Specifies the starting capital, which is used for calculating position sizes and profits.
Exchange Fees (%): Sets the percentage of fees applied by the exchange, which is factored into profit calculations.
Country Tax (%): Allows users to define applicable taxes, which are subtracted from net profits.
Stop-Loss Configuration
Break Even: Toggles the break-even functionality. When enabled, the stop-loss level adjusts dynamically as take-profit levels are reached.
Stop Loss (%): Defines the percentage distance from the entry price to the stop-loss level.
Take-Profit Settings
The indicator supports up to four take-profit levels:
- TP1 through TP4 Ratios: Specify the price levels for each take-profit target as a percentage of the entry price.
- Profit Percentages: Allocate a percentage of the position size to each take-profit level.
Visualization Elements
Trend Indicators: Displays Fibonacci-based trend lines and markers for bullish or bearish conditions.
Trade Levels: Entry, stop-loss, and take-profit levels are visualized on the chart by dotted lines for clarity. Additionally, a semi-transparent background is applied when a portion of the trade is closed to enhance visualization. Positive profits from a closed trade are green; otherwise, they are red.
Trade Profit Indicator: On each trade, every time a part of the trade is closed (e.g., take profit is reached), the profit indicator will be updated.
Performance Panel: Summarizes key account statistics, including net balance, profit/loss, and trading performance metrics.
Usage Guidelines
Add the indicator to your TradingView chart.
Configure the input settings based on your trading strategy.
Use the displayed levels and trend signals to make informed trading decisions.
Contact
For further assistance, including automation inquiries, feel free to contact me through TradingView’s messaging system.
Purpose and Disclaimer
IronBot V3 is designed for educational purposes and to assist in analyzing market trends. It is not financial advice, and users should perform their own due diligence before making any trading decisions.
Trading involves significant risk, and past performance is not indicative of future results. Use this indicator responsibly.
DTFX Algo Zones [LuxAlgo]DTFX Algo Zones are auto-generated Fibonacci Retracements based on market structure shifts.
These retracement levels are intended to be used as support and resistance levels to look for price to bounce off of to confirm direction.
🔶 USAGE
Due to the retracement levels only being generated from identified market structure shifts, the retracements are confined to only draw from areas considered more important due to the technical Break of Structure (BOS) or Change of Character (CHoCH).
The simple action that causes a market structure shift occurs is price breaking above or below a specific swing point. When a market structure shift happens, a retracement is drawn from the point of break to the highest or lowest point since that point. Due to the price action necessary for a market structure shift, these retracements will not always be immediately actionable.
These retracement levels are intended to be used as points to watch for price to retrace to and bounce from, confirming the current direction of price.
In the example below, after the retracement is initiated, by bouncing off of the retracement levels formed from the previous market structure shift it would further confirm the bias of the market structure shift. A break going through these levels would display a weakness from the current market structure shift, implying that it could simply be noise.
🔶 DETAILS
The script uses standard SMC Market structure identification to determine Break of Structures (BOS) and Change of Characters (CHoCH). The specific swing points can be identified by the shapes placed above or below the specific swing high/low candle.
By unchecking the "Display All Zones" setting, users are able to specify the exact number of retracement zones to display using the "Show Last" parameter. This is handy for cleaning up the chart to stay focused on the most recent retracements.
Additionally, when displaying multiple zones, the "Clean-Up Level Overlap" setting may be helpful for decluttering as well. This option optimizes the display of retracement levels to minimize their overlap on other adjacent zones.
The script allows for up to 5 Fib levels to be displayed from each zone, with options for display, value, line style, and color for each of the 5.
The calculation for Fib Levels changes depending on the direction of market structure shifts. When an upwards (Bullish) zone is generated, the retracement is drawn with the bottom of the zone being 0 and the top of the zone being 1. This is reversed for downwards (Bearish) zones.
🔶 SETTINGS
Structure Length: Sets the SMC structure length to use for finding MMS.
Show Last: Displays this number of retracement zones. (Display All Zones Must be Unchecked)
Display All Zones: Ignores "Show Last" number and displays all historical MMS Retracement Zones.
Zone Display: Choose which zones to display, only bearish, only bullish, or both.
Clean-Up Level Overlap: Minimizes overlap between adjacent zones and levels.
Fib Levels: Settings to display and customize up to 5 Fib levels for each zone.
CandleAnalysisLibrary "CandleAnalysis"
A collection of frequently used candle analysis functions in my scripts.
isBullish(barsBack)
Checks if a specific bar is bullish.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar is bullish, otherwise returns false.
isBearish(barsBack)
Checks if a specific bar is bearish.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar is bearish, otherwise returns false.
isBE(barsBack)
Checks if a specific bar is break even.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar is break even, otherwise returns false.
getBodySize(barsBack, inPriceChg)
Calculates a specific candle's body size.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
inPriceChg (bool) : (bool) True to return the body size as a price change value. The default is false (in points).
Returns: The candle's body size in points.
getTopWickSize(barsBack, inPriceChg)
Calculates a specific candle's top wick size.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
inPriceChg (bool) : (bool) True to return the wick size as a price change value. The default is false (in points).
Returns: The candle's top wick size in points.
getBottomWickSize(barsBack, inPriceChg)
Calculates a specific candle's bottom wick size.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
inPriceChg (bool) : (bool) True to return the wick size as a price change value. The default is false (in points).
Returns: The candle's bottom wick size in points.
getBodyPercent(barsBack)
Calculates a specific candle's body size as a percentage of its entire size including its wicks.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: The candle's body size percentage.
isHammer(fib, bullish, barsBack)
Checks if a specific bar is a hammer candle based on a given fibonacci level.
Parameters:
fib (float) : (float) The fibonacci level to base candle's body on. The default is 0.382.
bullish (bool) : (bool) True if the candle must to be green. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a hammer candle, otherwise returns false.
isShootingStar(fib, bearish, barsBack)
Checks if a specific bar is a shooting star candle based on a given fibonacci level.
Parameters:
fib (float) : (float) The fibonacci level to base candle's body on. The default is 0.382.
bearish (bool) : (bool) True if the candle must to be red. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a shooting star candle, otherwise returns false.
isDoji(wickSize, bodySize, barsBack)
Checks if a specific bar is a doji candle based on a given wick and body size.
Parameters:
wickSize (float) : (float) The maximum top wick size compared to the bottom and vice versa. The default is 1.5.
bodySize (float) : (bool) The maximum body size as a percentage compared to the entire candle size. The default is 5.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a doji candle.
isBullishEC(gapTolerance, rejectionWickSize, engulfWick, barsBack)
Checks if a specific bar is a bullish engulfing candle.
Parameters:
gapTolerance (int)
rejectionWickSize (int) : (int) The maximum top wick size compared to the body as a percentage. The default is 10.
engulfWick (bool) : (bool) True if the engulfed candle's wick requires to be engulfed as well. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a bullish engulfing candle.
isBearishEC(gapTolerance, rejectionWickSize, engulfWick, barsBack)
Checks if a specific bar is a bearish engulfing candle.
Parameters:
gapTolerance (int)
rejectionWickSize (int) : (int) The maximum bottom wick size compared to the body as a percentage. The default is 10.
engulfWick (bool) : (bool) True if the engulfed candle's wick requires to be engulfed as well. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a bearish engulfing candle.
MarcosLibraryLibrary "MarcosLibrary"
A colection of frequently used functions in my scripts.
bullFibRet(priceLow, priceHigh, fibLevel)
Calculates a bullish fibonacci retracement value.
Parameters:
priceLow (float) : (float) The lowest price point.
priceHigh (float) : (float) The highest price point.
fibLevel (float) : (float) The fibonacci level to calculate.
Returns: The fibonacci value of the given retracement level.
bearFibRet(priceLow, priceHigh, fibLevel)
Calculates a bearish fibonacci retracement value.
Parameters:
priceLow (float) : (float) The lowest price point.
priceHigh (float) : (float) The highest price point.
fibLevel (float) : (float) The fibonacci level to calculate.
Returns: The fibonacci value of the given retracement level.
bullFibExt(priceLow, priceHigh, thirdPivot, fibLevel)
Calculates a bullish fibonacci extension value.
Parameters:
priceLow (float) : (float) The lowest price point.
priceHigh (float) : (float) The highest price point.
thirdPivot (float) : (float) The third price point.
fibLevel (float) : (float) The fibonacci level to calculate.
Returns: The fibonacci value of the given extension level.
bearFibExt(priceLow, priceHigh, thirdPivot, fibLevel)
Calculates a bearish fibonacci extension value.
Parameters:
priceLow (float) : (float) The lowest price point.
priceHigh (float) : (float) The highest price point.
thirdPivot (float) : (float) The third price point.
fibLevel (float) : (float) The fibonacci level to calculate.
Returns: The fibonacci value of the given extension level.
isBullish(barsBack)
Checks if a specific bar is bullish.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar is bullish, otherwise returns false.
isBearish(barsBack)
Checks if a specific bar is bearish.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar is bearish, otherwise returns false.
isBE(barsBack)
Checks if a specific bar is break even.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar is break even, otherwise returns false.
getBodySize(barsBack, inPriceChg)
Calculates a specific candle's body size.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
inPriceChg (bool) : (bool) True to return the body size as a price change value. The default is false (in points).
Returns: The candle's body size in points.
getTopWickSize(barsBack, inPriceChg)
Calculates a specific candle's top wick size.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
inPriceChg (bool) : (bool) True to return the wick size as a price change value. The default is false (in points).
Returns: The candle's top wick size in points.
getBottomWickSize(barsBack, inPriceChg)
Calculates a specific candle's bottom wick size.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
inPriceChg (bool) : (bool) True to return the wick size as a price change value. The default is false (in points).
Returns: The candle's bottom wick size in points.
getBodyPercent(barsBack)
Calculates a specific candle's body size as a percentage of its entire size including its wicks.
Parameters:
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: The candle's body size percentage.
isHammer(fib, bullish, barsBack)
Checks if a specific bar is a hammer candle based on a given fibonacci level.
Parameters:
fib (float) : (float) The fibonacci level to base candle's body on. The default is 0.382.
bullish (bool) : (bool) True if the candle must to be green. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a hammer candle, otherwise returns false.
isShootingStar(fib, bearish, barsBack)
Checks if a specific bar is a shooting star candle based on a given fibonacci level.
Parameters:
fib (float) : (float) The fibonacci level to base candle's body on. The default is 0.382.
bearish (bool) : (bool) True if the candle must to be red. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a shooting star candle, otherwise returns false.
isDoji(wickSize, bodySize, barsBack)
Checks if a specific bar is a doji candle based on a given wick and body size.
Parameters:
wickSize (float) : (float) The maximum top wick size compared to the bottom and vice versa. The default is 1.5.
bodySize (float) : (bool) The maximum body size as a percentage compared to the entire candle size. The default is 5.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a doji candle.
isBullishEC(gapTolerance, rejectionWickSize, engulfWick, barsBack)
Checks if a specific bar is a bullish engulfing candle.
Parameters:
gapTolerance (int)
rejectionWickSize (int) : (int) The maximum top wick size compared to the body as a percentage. The default is 10.
engulfWick (bool) : (bool) True if the engulfed candle's wick requires to be engulfed as well. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a bullish engulfing candle.
isBearishEC(gapTolerance, rejectionWickSize, engulfWick, barsBack)
Checks if a specific bar is a bearish engulfing candle.
Parameters:
gapTolerance (int)
rejectionWickSize (int) : (int) The maximum bottom wick size compared to the body as a percentage. The default is 10.
engulfWick (bool) : (bool) True if the engulfed candle's wick requires to be engulfed as well. The default is false.
barsBack (int) : (int) The number of bars to look back. The default is 0 (current bar).
Returns: True if the bar matches the requirements of a bearish engulfing candle.
75-100pipsGreen/Red Arrowed Buy/Sell signals are just simple buy sell signals based on SuperTrend, VWAP, Bollinger, Linear Regression
Purple Arrowed Buy/Sell Signals happen when the price/candle cross over or under the yellow outer lines (4.236 fib lines) It's extremely rare and hard for price to stay above these lines therefore we can usually and comfortably buy/sell it, a key information here though when price pumps or dumps super fast and hard to the point of crossing these borders, the trend might also be extremely strong and continous so even if the price temporarily goes back inside the borders as the lines expand over time price can continue riding or crossing these lines back again and continue the uptrend/downtrend, therefore crossing these outer borders doesn't necessarilly and always mean a reversal is due.
When analyzing the instrument you're trading the important factors for support/resistance areas are usually the outer lines like i said previously it's super hard for price to be outside these and will almost always get back inside quickly. The Middle thicker green/red line which is Variable Index Dynamic Average should also be a nice pivot line for major support and resistance . All the other lines are also important dynamic support/resistance lines.
Their Importance Order
1- Outer Yellow Line (4.236 Fibs)
2- Thicker Middle Green/Red Line (VIDYA)
3- Thinner Upper/Lower Green/Red Line (VIDYA +3, VIDYA -3)
4- The Rest Of The Lines (Fib Lines)
You can use this indicator in any market condition in any market to determine key support/resistance levels, use it for mean reversion through price expanding to outside of the most outer line therefore being overbought/oversold basically using the purple buy/sell signals or only follow the normal buy/sell signals or use it in confluence with each other. You can also use this indicator in confluence with your own manual technical analysis or other indicators/strategies you are already using and are comfortable with.
A good part is the support/resistance lines from timeframe to timeframe pictures the whole situation quite well, you can use lower timeframe to find your entry/exit positions and higher timeframe to find your key support/resistance points, they all should be somewhat in confluence from timeframe to timeframe anyways. My recommendation would be to look at 1HR, 4HR and 1D charts for swing trading and 5-15 Min for quick scalping/day trading
You should still probably at least take a look to higher timeframes so that you don't get burned when you realize there is a huge resistance line at price XXXXX on the 4 hour chart but you're expecting it to go above it on the 5 minute chart, it can go above it temporarily but we analyze everything on a closing basis so it most likely won't close above it. Again don't take a position or FOMO when price breaks a support/resistance line, we're looking for a CLOSE above/below them and a retest to see if S/R flip happened would even be better.
Sometimes the most outer line won't be the 4.236 (Yellow) lines as when it gets quite volatile the Thinner Upper/Lower Green/Red Lines (VIDYA +3, VIDYA-3) might cross them to be the most outer line, in this case i have observed that the trend is extremely strong this time price almost always doesn't go above or below the VIDYA line but can stay outside of the Yellow 4.236 Fib line for an extended amount of time (price will still get back inside the channel relatively quickly, just not as fast as the normal condition)
With Proper Risk Management and Discipline this indicator can be of great use to you as it's surprisingly successful especially at mean reversion and pointing out the support/resistance lines, they are so much more successful than your average MA/EMA lines.
CNTLibraryLibrary "CNTLibrary"
Custom Functions To Help Code In Pinescript V5
Coded By Christian Nataliano
First Coded In 10/06/2023
Last Edited In 22/06/2023
Huge Shout Out To © ZenAndTheArtOfTrading and his ZenLibrary V5, Some Of The Custom Functions Were Heavily Inspired By Matt's Work & His Pine Script Mastery Course
Another Shout Out To The TradingView's Team Library ta V5
//====================================================================================================================================================
// Custom Indicator Functions
//====================================================================================================================================================
GetKAMA(KAMA_lenght, Fast_KAMA, Slow_KAMA)
Calculates An Adaptive Moving Average Based On Perry J Kaufman's Calculations
Parameters:
KAMA_lenght (int) : Is The KAMA Lenght
Fast_KAMA (int) : Is The KAMA's Fastes Moving Average
Slow_KAMA (int) : Is The KAMA's Slowest Moving Average
Returns: Float Of The KAMA's Current Calculations
GetMovingAverage(Source, Lenght, Type)
Get Custom Moving Averages Values
Parameters:
Source (float) : Of The Moving Average, Defval = close
Lenght (simple int) : Of The Moving Average, Defval = 50
Type (string) : Of The Moving Average, Defval = Exponential Moving Average
Returns: The Moving Average Calculation Based On Its Given Source, Lenght & Calculation Type (Please Call Function On Global Scope)
GetDecimals()
Calculates how many decimals are on the quote price of the current market © ZenAndTheArtOfTrading
Returns: The current decimal places on the market quote price
Truncate(number, decimalPlaces)
Truncates (cuts) excess decimal places © ZenAndTheArtOfTrading
Parameters:
number (float)
decimalPlaces (simple float)
Returns: The given number truncated to the given decimalPlaces
ToWhole(number)
Converts pips into whole numbers © ZenAndTheArtOfTrading
Parameters:
number (float)
Returns: The converted number
ToPips(number)
Converts whole numbers back into pips © ZenAndTheArtOfTrading
Parameters:
number (float)
Returns: The converted number
GetPctChange(value1, value2, lookback)
Gets the percentage change between 2 float values over a given lookback period © ZenAndTheArtOfTrading
Parameters:
value1 (float)
value2 (float)
lookback (int)
BarsAboveMA(lookback, ma)
Counts how many candles are above the MA © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are above the MA
BarsBelowMA(lookback, ma)
Counts how many candles are below the MA © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are below the EMA
BarsCrossedMA(lookback, ma)
Counts how many times the EMA was crossed recently © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many times price recently crossed the EMA
GetPullbackBarCount(lookback, direction)
Counts how many green & red bars have printed recently (ie. pullback count) © ZenAndTheArtOfTrading
Parameters:
lookback (int)
direction (int)
Returns: The bar count of how many candles have retraced over the given lookback & direction
GetSwingHigh(Lookback, SwingType)
Check If Price Has Made A Recent Swing High
Parameters:
Lookback (int) : Is For The Swing High Lookback Period, Defval = 7
SwingType (int) : Is For The Swing High Type Of Identification, Defval = 1
Returns: A Bool - True If Price Has Made A Recent Swing High
GetSwingLow(Lookback, SwingType)
Check If Price Has Made A Recent Swing Low
Parameters:
Lookback (int) : Is For The Swing Low Lookback Period, Defval = 7
SwingType (int) : Is For The Swing Low Type Of Identification, Defval = 1
Returns: A Bool - True If Price Has Made A Recent Swing Low
//====================================================================================================================================================
// Custom Risk Management Functions
//====================================================================================================================================================
CalculateStopLossLevel(OrderType, Entry, StopLoss)
Calculate StopLoss Level
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, Defval = na
StopLoss (float) : Is The Custom StopLoss Distance, Defval = 2x ATR Below Close
Returns: Float - The StopLoss Level In Actual Price As A
CalculateStopLossDistance(OrderType, Entry, StopLoss)
Calculate StopLoss Distance In Pips
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
StopLoss (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
Returns: Float - The StopLoss Value In Pips
CalculateTakeProfitLevel(OrderType, Entry, StopLossDistance, RiskReward)
Calculate TakeProfit Level
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, Defval = na
StopLossDistance (float)
RiskReward (float)
Returns: Float - The TakeProfit Level In Actual Price
CalculateTakeProfitDistance(OrderType, Entry, TakeProfit)
Get TakeProfit Distance In Pips
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
TakeProfit (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
Returns: Float - The TakeProfit Value In Pips
CalculateConversionCurrency(AccountCurrency, SymbolCurrency, BaseCurrency)
Get The Conversion Currecny Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
Parameters:
AccountCurrency (simple string) : Is For The Account Currency Used
SymbolCurrency (simple string) : Is For The Current Symbol Currency (Front Symbol)
BaseCurrency (simple string) : Is For The Current Symbol Base Currency (Back Symbol)
Returns: Tuple Of A Bollean (Convert The Currency ?) And A String (Converted Currency)
CalculateConversionRate(ConvertCurrency, ConversionRate)
Get The Conversion Rate Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
Parameters:
ConvertCurrency (bool) : Is To Check If The Current Symbol Needs To Be Converted Or Not
ConversionRate (float) : Is The Quoted Price Of The Conversion Currency (Input The request.security Function Here)
Returns: Float Price Of Conversion Rate (If In The Same Currency Than Return Value Will Be 1.0)
LotSize(LotSizeSimple, Balance, Risk, SLDistance, ConversionRate)
Get Current Lot Size
Parameters:
LotSizeSimple (bool) : Is To Toggle Lot Sizing Calculation (Simple Is Good Enough For Stocks & Crypto, Whilst Complex Is For Forex)
Balance (float) : Is For The Current Account Balance To Calculate The Lot Sizing Based Off
Risk (float) : Is For The Current Risk Per Trade To Calculate The Lot Sizing Based Off
SLDistance (float) : Is The Current Position StopLoss Distance From Its Entry Price
ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
Returns: Float - Position Size In Units
ToLots(Units)
Converts Units To Lots
Parameters:
Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
Returns: Float - Position Size In Lots
ToUnits(Lots)
Converts Lots To Units
Parameters:
Lots (float) : Is For How Many Lots Need To Be Converted Into Units (Minimun 0.01 Units)
Returns: Int - Position Size In Units
ToLotsInUnits(Units)
Converts Units To Lots Than Back To Units
Parameters:
Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
Returns: Float - Position Size In Lots That Were Rounded To Units
ATRTrail(OrderType, SourceType, ATRPeriod, ATRMultiplyer, SwingLookback)
Calculate ATR Trailing Stop
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
SourceType (int) : Is To Determine Where To Calculate The ATR Trailing From, Defval = close
ATRPeriod (simple int) : Is To Change Its ATR Period, Defval = 20
ATRMultiplyer (float) : Is To Change Its ATR Trailing Distance, Defval = 1
SwingLookback (int) : Is To Change Its Swing HiLo Lookback (Only From Source Type 5), Defval = 7
Returns: Float - Number Of The Current ATR Trailing
DangerZone(WinRate, AvgRRR, Filter)
Calculate Danger Zone Of A Given Strategy
Parameters:
WinRate (float) : Is The Strategy WinRate
AvgRRR (float) : Is The Strategy Avg RRR
Filter (float) : Is The Minimum Profit It Needs To Be Out Of BE Zone, Defval = 3
Returns: Int - Value, 1 If Out Of Danger Zone, 0 If BE, -1 If In Danger Zone
IsQuestionableTrades(TradeTP, TradeSL)
Checks For Questionable Trades (Which Are Trades That Its TP & SL Level Got Hit At The Same Candle)
Parameters:
TradeTP (float) : Is The Trade In Question Take Profit Level
TradeSL (float) : Is The Trade In Question Stop Loss Level
Returns: Bool - True If The Last Trade Was A "Questionable Trade"
//====================================================================================================================================================
// Custom Strategy Functions
//====================================================================================================================================================
OpenLong(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue)
Open A Long Order Based On The Given Params
Parameters:
EntryID (string) : Is The Trade Entry ID, Defval = "Long"
LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
Comment (string) : Is The Order Comment, Defval = Long Entry Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
OpenShort(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue)
Open A Short Order Based On The Given Params
Parameters:
EntryID (string) : Is The Trade Entry ID, Defval = "Short"
LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
Comment (string) : Is The Order Comment, Defval = Short Entry Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
TP_SLExit(FromID, TPLevel, SLLevel, PercentageClose, Comment, CommentValue)
Exits Based On Predetermined TP & SL Levels
Parameters:
FromID (string) : Is The Trade ID That The TP & SL Levels Be Palced
TPLevel (float) : Is The Take Profit Level
SLLevel (float) : Is The StopLoss Level
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
CloseLong(ExitID, PercentageClose, Comment, CommentValue, Instant)
Exits A Long Order Based On A Specified Condition
Parameters:
ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Long"
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Instant (bool) : Is For Exit Execution Type, Defval = false
Returns: Void
CloseShort(ExitID, PercentageClose, Comment, CommentValue, Instant)
Exits A Short Order Based On A Specified Condition
Parameters:
ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Short"
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Instant (bool) : Is For Exit Execution Type, Defval = false
Returns: Void
BrokerCheck(Broker)
Checks Traded Broker With Current Loaded Chart Broker
Parameters:
Broker (string) : Is The Current Broker That Is Traded
Returns: Bool - True If Current Traded Broker Is Same As Loaded Chart Broker
OpenPC(LicenseID, OrderType, UseLimit, LimitPrice, SymbolPrefix, Symbol, SymbolSuffix, Risk, SL, TP, OrderComment, Spread)
Compiles Given Parameters Into An Alert String Format To Open Trades Using Pine Connector
Parameters:
LicenseID (string) : Is The Users PineConnector LicenseID
OrderType (int) : Is The Desired OrderType To Open
UseLimit (bool) : Is If We Want To Enter The Position At Exactly The Previous Closing Price
LimitPrice (float) : Is The Limit Price Of The Trade (Only For Pending Orders)
SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
Symbol (string) : Is The Traded Symbol
SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
Risk (float) : Is The Trade Risk Per Trade / Fixed Lot Sizing
SL (float) : Is The Trade SL In Price / In Pips
TP (float) : Is The Trade TP In Price / In Pips
OrderComment (string) : Is The Executed Trade Comment
Spread (float) : is The Maximum Spread For Execution
Returns: String - Pine Connector Order Syntax Alert Message
ClosePC(LicenseID, OrderType, SymbolPrefix, Symbol, SymbolSuffix)
Compiles Given Parameters Into An Alert String Format To Close Trades Using Pine Connector
Parameters:
LicenseID (string) : Is The Users PineConnector LicenseID
OrderType (int) : Is The Desired OrderType To Close
SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
Symbol (string) : Is The Traded Symbol
SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
Returns: String - Pine Connector Order Syntax Alert Message
//====================================================================================================================================================
// Custom Backtesting Calculation Functions
//====================================================================================================================================================
CalculatePNL(EntryPrice, ExitPrice, LotSize, ConversionRate)
Calculates Trade PNL Based On Entry, Eixt & Lot Size
Parameters:
EntryPrice (float) : Is The Trade Entry
ExitPrice (float) : Is The Trade Exit
LotSize (float) : Is The Trade Sizing
ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
Returns: Float - The Current Trade PNL
UpdateBalance(PrevBalance, PNL)
Updates The Previous Ginve Balance To The Next PNL
Parameters:
PrevBalance (float) : Is The Previous Balance To Be Updated
PNL (float) : Is The Current Trade PNL To Be Added
Returns: Float - The Current Updated PNL
CalculateSlpComm(PNL, MaxRate)
Calculates Random Slippage & Commisions Fees Based On The Parameters
Parameters:
PNL (float) : Is The Current Trade PNL
MaxRate (float) : Is The Upper Limit (In Percentage) Of The Randomized Fee
Returns: Float - A Percentage Fee Of The Current Trade PNL
UpdateDD(MaxBalance, Balance)
Calculates & Updates The DD Based On Its Given Parameters
Parameters:
MaxBalance (float) : Is The Maximum Balance Ever Recorded
Balance (float) : Is The Current Account Balance
Returns: Float - The Current Strategy DD
CalculateWR(TotalTrades, LongID, ShortID)
Calculate The Total, Long & Short Trades Win Rate
Parameters:
TotalTrades (int) : Are The Current Total Trades That The Strategy Has Taken
LongID (string) : Is The Order ID Of The Long Trades Of The Strategy
ShortID (string) : Is The Order ID Of The Short Trades Of The Strategy
Returns: Tuple Of Long WR%, Short WR%, Total WR%, Total Winning Trades, Total Losing Trades, Total Long Trades & Total Short Trades
CalculateAvgRRR(WinTrades, LossTrades)
Calculates The Overall Strategy Avg Risk Reward Ratio
Parameters:
WinTrades (int) : Are The Strategy Winning Trades
LossTrades (int) : Are The Strategy Losing Trades
Returns: Float - The Average RRR Values
CAGR(StartTime, StartPrice, EndTime, EndPrice)
Calculates The CAGR Over The Given Time Period © TradingView
Parameters:
StartTime (int) : Is The Starting Time Of The Calculation
StartPrice (float) : Is The Starting Price Of The Calculation
EndTime (int) : Is The Ending Time Of The Calculation
EndPrice (float) : Is The Ending Price Of The Calculation
Returns: Float - The CAGR Values
//====================================================================================================================================================
// Custom Plot Functions
//====================================================================================================================================================
EditLabels(LabelID, X1, Y1, Text, Color, TextColor, EditCondition, DeleteCondition)
Edit / Delete Labels
Parameters:
LabelID (label) : Is The ID Of The Selected Label
X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
Text (string) : Is The Text Than Wants To Be Written In The Label
Color (color) : Is The Color Value Change Of The Label Text
TextColor (color)
EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
Returns: Void
EditLine(LineID, X1, Y1, X2, Y2, Color, EditCondition, DeleteCondition)
Edit / Delete Lines
Parameters:
LineID (line) : Is The ID Of The Selected Line
X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
X2 (int) : Is The X2 Coordinate IN BARINDEX Xloc
Y2 (float) : Is The Y2 Coordinate IN PRICE Yloc
Color (color) : Is The Color Value Change Of The Line
EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
Returns: Void
//====================================================================================================================================================
// Custom Display Functions (Using Tables)
//====================================================================================================================================================
FillTable(TableID, Column, Row, Title, Value, BgColor, TextColor, ToolTip)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
Column (int) : Is The Current Column Of The Table That Wants To Be Edited
Row (int) : Is The Current Row Of The Table That Wants To Be Edited
Title (string) : Is The String Title Of The Current Cell Table
Value (string) : Is The String Value Of The Current Cell Table
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
ToolTip (string) : Is The ToolTip Of The Current Cell In The Table
Returns: Void
DisplayBTResults(TableID, BgColor, TextColor, StartingBalance, Balance, DollarReturn, TotalPips, MaxDD)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
StartingBalance (float) : Is The Account Starting Balance
Balance (float)
DollarReturn (float) : Is The Account Dollar Reture
TotalPips (float) : Is The Total Pips Gained / loss
MaxDD (float) : Is The Maximum Drawdown Over The Backtesting Period
Returns: Void
DisplayBTResultsV2(TableID, BgColor, TextColor, TotalWR, QTCount, LongWR, ShortWR, InitialCapital, CumProfit, CumFee, AvgRRR, MaxDD, CAGR, MeanDD)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
TotalWR (float) : Is The Strategy Total WR In %
QTCount (int) : Is The Strategy Questionable Trades Count
LongWR (float) : Is The Strategy Total WR In %
ShortWR (float) : Is The Strategy Total WR In %
InitialCapital (float) : Is The Strategy Initial Starting Capital
CumProfit (float) : Is The Strategy Ending Cumulative Profit
CumFee (float) : Is The Strategy Ending Cumulative Fee (Based On Randomized Fee Assumptions)
AvgRRR (float) : Is The Strategy Average Risk Reward Ratio
MaxDD (float) : Is The Strategy Maximum DrawDown In Its Backtesting Period
CAGR (float) : Is The Strategy Compounded Average GRowth In %
MeanDD (float) : Is The Strategy Mean / Average Drawdown In The Backtesting Period
Returns: Void
//====================================================================================================================================================
// Custom Pattern Detection Functions
//====================================================================================================================================================
BullFib(priceLow, priceHigh, fibRatio)
Calculates A Bullish Fibonacci Value (From Swing Low To High) © ZenAndTheArtOfTrading
Parameters:
priceLow (float)
priceHigh (float)
fibRatio (float)
Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
BearFib(priceLow, priceHigh, fibRatio)
Calculates A Bearish Fibonacci Value (From Swing High To Low) © ZenAndTheArtOfTrading
Parameters:
priceLow (float)
priceHigh (float)
fibRatio (float)
Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
GetBodySize()
Gets The Current Candle Body Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Body Size IN POINTS
GetTopWickSize()
Gets The Current Candle Top Wick Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Top Wick Size IN POINTS
GetBottomWickSize()
Gets The Current Candle Bottom Wick Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Bottom Wick Size IN POINTS
GetBodyPercent()
Gets The Current Candle Body Size As A Percentage Of Its Entire Size Including Its Wicks © ZenAndTheArtOfTrading
Returns: The Current Candle Body Size IN PERCENTAGE
GetTopWickPercent()
Gets The Current Top Wick Size As A Percentage Of Its Entire Body Size
Returns: Float - The Current Candle Top Wick Size IN PERCENTAGE
GetBottomWickPercent()
Gets The Current Bottom Wick Size As A Percentage Of Its Entire Bodu Size
Returns: Float - The Current Candle Bottom Size IN PERCENTAGE
BullishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Engulfing Candle
Parameters:
Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Engulfing Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Engulfing Candle
BearishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bearish Engulfing Candle
Parameters:
Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Engulfing Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Engulfing Candle
Hammer(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod)
Checks If The Current Bar Is A Hammer Candle
Parameters:
Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
Star(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod)
Checks If The Current Bar Is A Hammer Candle
Parameters:
Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
Doji(MaxWickSize, MaxBodySize, DojiType, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Doji Candle
Parameters:
MaxWickSize (float) : To Specify The Maximum Lenght Of Its Upper & Lower Wick, Defval = 2
MaxBodySize (float) : To Specify The Maximum Lenght Of Its Candle Body IN PERCENT, Defval = 0.05
DojiType (int)
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Doji Candle
BullishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Harami Candle
Parameters:
Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Harami Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Harami Candle
BearishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Harami Candle
Parameters:
Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Harami Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Harami Candle
//====================================================================================================================================================
// Custom Time Functions
//====================================================================================================================================================
BarInSession(sess, useFilter)
Determines if the current price bar falls inside the specified session © ZenAndTheArtOfTrading
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls within the given time session
BarOutSession(sess, useFilter)
Determines if the current price bar falls outside the specified session © ZenAndTheArtOfTrading
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls outside the given time session
DateFilter(startTime, endTime)
Determines if this bar's time falls within date filter range © ZenAndTheArtOfTrading
Parameters:
startTime (int)
endTime (int)
Returns: A boolean - true if the current bar falls within the given dates
DayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday)
Checks if the current bar's day is in the list of given days to analyze © ZenAndTheArtOfTrading
Parameters:
monday (bool)
tuesday (bool)
wednesday (bool)
thursday (bool)
friday (bool)
saturday (bool)
sunday (bool)
Returns: A boolean - true if the current bar's day is one of the given days
AUSSess()
Checks If The Current Australian Forex Session In Running
Returns: Bool - True If Currently The Australian Session Is Running
ASIASess()
Checks If The Current Asian Forex Session In Running
Returns: Bool - True If Currently The Asian Session Is Running
EURSess()
Checks If The Current European Forex Session In Running
Returns: Bool - True If Currently The European Session Is Running
USSess()
Checks If The Current US Forex Session In Running
Returns: Bool - True If Currently The US Session Is Running
UNIXToDate(Time, ConversionType, TimeZone)
Converts UNIX Time To Datetime
Parameters:
Time (int) : Is The UNIX Time Input
ConversionType (int) : Is The Datetime Output Format, Defval = DD-MM-YYYY
TimeZone (string) : Is To Convert The Outputed Datetime Into The Specified Time Zone, Defval = Exchange Time Zone
Returns: String - String Of Datetime
LYGLibraryLibrary "LYGLibrary"
A collection of custom tools & utility functions commonly used with my scripts
getDecimals()
Calculates how many decimals are on the quote price of the current market
Returns: The current decimal places on the market quote price
truncate(number, decimalPlaces)
Truncates (cuts) excess decimal places
Parameters:
number (float)
decimalPlaces (simple float)
Returns: The given number truncated to the given decimalPlaces
toWhole(number)
Converts pips into whole numbers
Parameters:
number (float)
Returns: The converted number
toPips(number)
Converts whole numbers back into pips
Parameters:
number (float)
Returns: The converted number
getPctChange(value1, value2, lookback)
Gets the percentage change between 2 float values over a given lookback period
Parameters:
value1 (float)
value2 (float)
lookback (int)
av_getPositionSize(balance, risk, stopPoints, conversionRate)
Calculates OANDA forex position size for AutoView based on the given parameters
Parameters:
balance (float)
risk (float)
stopPoints (float)
conversionRate (float)
Returns: The calculated position size (in units - only compatible with OANDA)
bullFib(priceLow, priceHigh, fibRatio)
Calculates a bullish fibonacci value
Parameters:
priceLow (float) : The lowest price point
priceHigh (float) : The highest price point
fibRatio (float) : The fibonacci % ratio to calculate
Returns: The fibonacci value of the given ratio between the two price points
bearFib(priceLow, priceHigh, fibRatio)
Calculates a bearish fibonacci value
Parameters:
priceLow (float) : The lowest price point
priceHigh (float) : The highest price point
fibRatio (float) : The fibonacci % ratio to calculate
Returns: The fibonacci value of the given ratio between the two price points
getMA(length, maType)
Gets a Moving Average based on type (MUST BE CALLED ON EVERY CALCULATION)
Parameters:
length (simple int)
maType (string)
Returns: A moving average with the given parameters
getEAP(atr)
Performs EAP stop loss size calculation (eg. ATR >= 20.0 and ATR < 30, returns 20)
Parameters:
atr (float)
Returns: The EAP SL converted ATR size
getEAP2(atr)
Performs secondary EAP stop loss size calculation (eg. ATR < 40, add 5 pips, ATR between 40-50, add 10 pips etc)
Parameters:
atr (float)
Returns: The EAP SL converted ATR size
barsAboveMA(lookback, ma)
Counts how many candles are above the MA
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are above the MA
barsBelowMA(lookback, ma)
Counts how many candles are below the MA
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are below the EMA
barsCrossedMA(lookback, ma)
Counts how many times the EMA was crossed recently
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many times price recently crossed the EMA
getPullbackBarCount(lookback, direction)
Counts how many green & red bars have printed recently (ie. pullback count)
Parameters:
lookback (int)
direction (int)
Returns: The bar count of how many candles have retraced over the given lookback & direction
getBodySize()
Gets the current candle's body size (in POINTS, divide by 10 to get pips)
Returns: The current candle's body size in POINTS
getTopWickSize()
Gets the current candle's top wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's top wick size in POINTS
getBottomWickSize()
Gets the current candle's bottom wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's bottom wick size in POINTS
getBodyPercent()
Gets the current candle's body size as a percentage of its entire size including its wicks
Returns: The current candle's body size percentage
isHammer(fib, colorMatch)
Checks if the current bar is a hammer candle based on the given parameters
Parameters:
fib (float)
colorMatch (bool)
Returns: A boolean - true if the current bar matches the requirements of a hammer candle
isStar(fib, colorMatch)
Checks if the current bar is a shooting star candle based on the given parameters
Parameters:
fib (float)
colorMatch (bool)
Returns: A boolean - true if the current bar matches the requirements of a shooting star candle
isDoji(wickSize, bodySize)
Checks if the current bar is a doji candle based on the given parameters
Parameters:
wickSize (float)
bodySize (float)
Returns: A boolean - true if the current bar matches the requirements of a doji candle
isBullishEC(allowance, rejectionWickSize, engulfWick)
Checks if the current bar is a bullish engulfing candle
Parameters:
allowance (float)
rejectionWickSize (float)
engulfWick (bool)
Returns: A boolean - true if the current bar matches the requirements of a bullish engulfing candle
isBearishEC(allowance, rejectionWickSize, engulfWick)
Checks if the current bar is a bearish engulfing candle
Parameters:
allowance (float)
rejectionWickSize (float)
engulfWick (bool)
Returns: A boolean - true if the current bar matches the requirements of a bearish engulfing candle
isInsideBar()
Detects inside bars
Returns: Returns true if the current bar is an inside bar
isOutsideBar()
Detects outside bars
Returns: Returns true if the current bar is an outside bar
barInSession(sess, useFilter)
Determines if the current price bar falls inside the specified session
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls within the given time session
barOutSession(sess, useFilter)
Determines if the current price bar falls outside the specified session
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls outside the given time session
dateFilter(startTime, endTime)
Determines if this bar's time falls within date filter range
Parameters:
startTime (int)
endTime (int)
Returns: A boolean - true if the current bar falls within the given dates
dayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday)
Checks if the current bar's day is in the list of given days to analyze
Parameters:
monday (bool)
tuesday (bool)
wednesday (bool)
thursday (bool)
friday (bool)
saturday (bool)
sunday (bool)
Returns: A boolean - true if the current bar's day is one of the given days
atrFilter(atrValue, maxSize)
Parameters:
atrValue (float)
maxSize (float)
fillCell(tableID, column, row, title, value, bgcolor, txtcolor)
This updates the given table's cell with the given values
Parameters:
tableID (table)
column (int)
row (int)
title (string)
value (string)
bgcolor (color)
txtcolor (color)
Returns: A boolean - true if the current bar falls within the given dates
RSI Overbought/Oversold + Divergence IndicatorDESCRIPTION:
This script combines the Relative Strength Index ( RSI ), Moving Average and Divergence indicator to make a better decision when to enter or exit a trade.
- The Moving Average line (MA) has been made hidden by default but enhanced with an RSIMA cloud.
- When the RSI is above the selected MA it turns into green and when the RSI is below the select MA it turns into red.
- When the RSI is moving into the Overbought or Oversold area, some highlighted areas will appear.
- When some divergences or hidden divergences are detected an extra indication will be highlighted.
- When the divergence appear in the Overbought or Oversold area the more weight it give to make a decision.
- The same color pallet has been used as the default candlestick colors so it looks familiar.
HOW TO USE:
The prerequisite is that we have some knowledge about the Elliot Wave Theory, the Fibonacci Retracement and the Fibonacci Extension tools.
Wave 1
(1) When we receive some buy signals we wait until we receive some extra indications.
(2) On the RSI Overbought/Oversold + Divergence Indicator we can see a Bullish Divergence and our RSI is changing from red to green ( RSI is higher then the MA).
(3) If we are getting here into the trade then we need to use a stop loss. We put our stop loss 1 a 2 pips just below the lowest wick. We also invest maximum 50% of the total amount we want to invest.
Wave 2
(4) Now we wait until we see a clear reversal and here we starting to use the Fibonacci Retracement tool. We draw a line from the lowest point of wave(1) till the highest point of wave (1). When we are retraced till the 0.618 fib also called the golden ratio we check again the RSI Overbought/Oversold + Divergence Indicator. When we see a reversal we do our second buy. We set again a stop loss just below the lowest wick (this is the yellow line on the chart). We also move the stop loss we have set in step (3) to this level.
Wave 3
(5) To identify how far the uptrend can go we need to use the Fibonacci Extension tool. We draw a line from the lowest point of wave(1) till the highest point of wave (1) and draw it back to the lowest point of wave (2). Wave (3) is most of the time the longest wave and can go till it has reached the 1.618 or 2.618 fib. On the 1.618 we can take some profit. If we don't want to sell we move our stop loss to the 1 fib line (yellow line on the chart).
(6) We wait until we see a clear reversal on the Overbought/Oversold + Divergence Indicator and sell 33% to 50% of our investment.
Wave 4
(7) Now we wait again until we see a clear reversal and here we starting to use the Fibonacci Retracement tool. We draw a line from the lowest point of wave(2) till the highest point of wave (3). When we are retraced till the 0.618 fib also called the golden ratio we check again the RSI Overbought/Oversold + Divergence Indicator. When we see a reversal we buy again. We set again a stop loss just below the lowest wick (this is the yellow line on the chart).
(8) If we bought at the first reversal ours stop los was triggered (9) and we got out of the trade.
(9) If we did not bought at step (7) because our candle did not hit the 0.618 fib or we got stopped out of the trade we buy again at the reversal.
Wave 5
(10) To identify how far the uptrend can go we need to use the Fibonacci Extension tool. We draw a line from the lowest point of wave(2) till the highest point of wave (3) and draw it back to the lowest point of wave (4). Most of the time wave 5 goes up till it has reached the 1 fib. And that is the point where we got out of the trade with all of our investment. In this trade we got out of the trade a bit earlier. We received the sell signals and got a reversal on the Overbought/Oversold + Divergence Indicator.
We are hoping you learned something so you can make better decisions when to get into or out of a trade.
If you have any question just drop it into the comments below.
FEATURES:
• You can show/hide the RSI .
• You can show/hide the MA.
• You can show/hide the lRSIMA cloud.
• You can show/hide the Stoch RSI cloud.
• You can show/hide and adjust the Overbought and Oversold zones.
• You can show/hide and adjust the Overbought Extended and Oversold Extended zones.
• You can show/hide the Overbought and Oversold highlighted zones.
• Etc...
HOW TO GET ACCESS TO THE SCRIPT:
• Favorite the script and add it to your chart.
REMARKS:
• This advice is NOT financial advice.
• We do not provide personal investment advice and we are not a qualified licensed investment advisor.
• All information found here, including any ideas, opinions, views, predictions, forecasts, commentaries, suggestions, or stock picks, expressed or implied herein, are for informational, entertainment or educational purposes only and should not be construed as personal investment advice.
• We will not and cannot be held liable for any actions you take as a result of anything you read here.
• We only provide this information to help you make a better decision.
• While the information provided is believed to be accurate, it may include errors or inaccuracies.
Good Luck and have fun,
The CryptoSignalScanner Team
Attrition Scalper v2.0Green/Red Arrowed Buy/Sell signals are just simple buy sell signals based on SuperTrend, VWAP, Bollinger, Linear Regression
Purple Arrowed Buy/Sell Signals happen when the price/candle cross over or under the yellow outer lines (4.236 fib lines) It's extremely rare and hard for price to stay above these lines therefore we can usually and comfortably buy/sell it, a key information here though when price pumps or dumps super fast and hard to the point of crossing these borders, the trend might also be extremely strong and continous so even if the price temporarily goes back inside the borders as the lines expand over time price can continue riding or crossing these lines back again and continue the uptrend/downtrend, therefore crossing these outer borders doesn't necessarilly and always mean a reversal is due.
When analyzing the instrument you're trading the important factors for support/resistance areas are usually the outer lines like i said previously it's super hard for price to be outside these and will almost always get back inside quickly. The Middle thicker green/red line which is Variable Index Dynamic Average should also be a nice pivot line for major support and resistance . All the other lines are also important dynamic support/resistance lines.
Their Importance Order
1- Outer Yellow Line (4.236 Fibs)
2- Thicker Middle Green/Red Line (VIDYA)
3- Thinner Upper/Lower Green/Red Line (VIDYA +3, VIDYA -3)
4- The Rest Of The Lines (Fib Lines)
You can use this indicator in any market condition in any market to determine key support/resistance levels, use it for mean reversion through price expanding to outside of the most outer line therefore being overbought/oversold basically using the purple buy/sell signals or only follow the normal buy/sell signals or use it in confluence with each other. You can also use this indicator in confluence with your own manual technical analysis or other indicators/strategies you are already using and are comfortable with.
A good part is the support/resistance lines from timeframe to timeframe pictures the whole situation quite well, you can use lower timeframe to find your entry/exit positions and higher timeframe to find your key support/resistance points, they all should be somewhat in confluence from timeframe to timeframe anyways. My recommendation would be to look at 1HR, 4HR and 1D charts for swing trading and 5-15 Min for quick scalping/day trading
You should still probably at least take a look to higher timeframes so that you don't get burned when you realize there is a huge resistance line at price XXXXX on the 4 hour chart but you're expecting it to go above it on the 5 minute chart, it can go above it temporarily but we analyze everything on a closing basis so it most likely won't close above it. Again don't take a position or FOMO when price breaks a support/resistance line, we're looking for a CLOSE above/below them and a retest to see if S/R flip happened would even be better.
Sometimes the most outer line won't be the 4.236 (Yellow) lines as when it gets quite volatile the Thinner Upper/Lower Green/Red Lines (VIDYA +3, VIDYA-3) might cross them to be the most outer line, in this case i have observed that the trend is extremely strong this time price almost always doesn't go above or below the VIDYA line but can stay outside of the Yellow 4.236 Fib line for an extended amount of time (price will still get back inside the channel relatively quickly, just not as fast as the normal condition)
With Proper Risk Management and Discipline this indicator can be of great use to you as it's surprisingly successful especially at mean reversion and pointing out the support/resistance lines, they are so much more successful than your average MA/EMA lines.






















