Sexy RSI for sexy tradersHello fellow sexy traders.
I was tired of constantly having to add my own horizontals/MAs to the default RSI so I decided to make this modification.
The default settings include channels from 40-80 (green horizontals) for a bullish range, and 20-60 (red horizontals) for the bearish range.
Also includes white line at 50 level, and blue horizontals at extremes (90 and 10).
If RSI stays in one of the red or green range that can signify the trend direction, as directed by Andrew Cardwell (inventor of the RSI).
If you wish for other levels to be included, just let me know! Comment on here or dm me on twitter @boss_charts and I can add the settings for you, so all you have to do is click a button and it will set it to your desired config. I want this to be a tool that is useful for heavy traders to save them time.
Additionally, in order to tell the level of the RSI and how overextended it might be, I added the setting for the RSI to change color depending on its level. Current settings are as follows:
Normal RSI (30-70) = PURPLE
Conventional Overbought/Oversold (30-20 + 70-80) = RED
1st extended (20-15 + 80-85) = PINK
2nd extended (15-10 + 85-90) = ORANGE
VERY EXTENDED (<10 + >90) = YELLOW
That way you can get an idea of how drastic a move is by the color alone. According to Dr. Cardwell, a drastic move to over/under extended can be a sign of strength.
Finally, there are the default MAs added that Mr. Cardwell defines as useful for defining the trend. These being the 9 MA and 45 EMA/WMA.
The strategy with these is to have the MAs on both price and RSI. If the 9MA is above the 45 MA on both price and RSI, then this is bullish and you can look for longs.
Conversely, if the 9 is below the 45 on both RSI and price that is bearish, and you can look for shorts.
I added the background color change for the points where the MAs cross each other, so you do not have to have the MAs fogging up your charts to know where they are relative to one another. This is similar to my MA cross indicator which contains the same functionality.
Never financial advice. Backtest it for yourself and find MA configurations that work for you.
Enjoy! Feel free to send feedback/requests whenever.
Pesquisar nos scripts por "20年美元汇率"
Multi SMA EMA WMA HMA BB (5x8 MAs Bollinger Bands) MAX MTF - RRBMulti SMA EMA WMA HMA 4x7 Moving Averages with Bollinger Bands MAX MTF by RagingRocketBull 2019
Version 1.0
All available MAX MTF versions are listed below (They are very similar and I don't want to publish them as separate indicators):
ver 1.0: 4x7 = 28 MTF MAs + 28 Levels + 3 BB = 59 < 64
ver 2.0: 5x6 = 30 MTF MAs + 30 Levels + 3 BB = 63 < 64
ver 3.0: 3x10 = 30 MTF MAs + 30 Levels + 3 BB = 63 < 64
ver 4.0: 5(4+1)x8 = 8 CurTF MAs + 32 MTF MAs + 20 Levels + 3 BB = 63 < 64
ver 5.0: 6(5+1)x6 = 6 CurTF MAs + 30 MTF MAs + 24 Levels + 3 BB = 63 < 64
ver 6.0: 4(3+1)x10 = 10 CurTF MAs + 30 MTF MAs + 20 Levels + 3 BB = 63 < 64
Fib numbers: 8, 13, 21, 34, 55, 89, 144, 233, 377
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 7 MAs = 28 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 9,12,26,50,100,200,400 x H1, H4, D1, W1 (4 TFs x 7 MAs x 1 type)
- EMAs 8,13,21,30,34,50,55,89,100,144,200,233,377,400 x M15, H1 (2 TFs x 14 MAs x 1 type)
- D1 EMAs and SMAs 8,13,21,30,34,50,55,89,100,144,200,233,377,400 (1 TF x 14 MAs x 2 types)
- H1 WMAs 13,21,34,55,89,144,233; H4 HMAs 9,12,26,50,100,200,400; D1 EMAs 12,26,89,144,169,233,377; W1 SMAs 9,12,26,50,100,200,400 (4 TFs x 7 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF, MAX MTF and Ultimate MTF. This is the MAX MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +4 extra MAs/group (4x7 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- MAX MTF: +2 subtypes/group, packed to the limit with max possible MAs/TFs: 4x7, 5x6, 3x10, 4(3+1)x10, 5(4+1)x8, 6(5+1)x6
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
MAX MTF version tests the limits of Pinescript trying to squeeze as many MAs/TFs as possible into a single indicator.
It's basically a maxed out Advanced version with subtypes allowing for mixed types within a group (i.e. both emas and smas in a single group/TF)
Pinescript has the following limits:
- max 40 security calls (6 calls are reserved for dupe checks and smoothing, 2 are used for BB, so only 32 calls are available)
- max 64 plot outputs (BB uses 3 outputs, so only 61 plot outputs are available)
- max 50000 (50kb) size of the compiled code
Based on those limits, you can only have the following MAs/TFs combos in a single script:
1. 4x7, 5x6, 3x10 - total number of MTF MAs must always be <= 32, and you can still have BB and Num Levels = total MAs, without any compromises
2. 5(4+1)x8, 6(5+1)x6, 4(3+1)x10 - you can use the Current Symbol/Timeframe as an extra (+1) fixed TF with the same number of MTF MAs
- you don't need to call security to display MAs on the Current Symbol/Timeframe, so the total number of MTF MAs remains the same and is still <= 32
- to fit that many MAs into the max 64 plot outputs limit you need to reduce the number of levels (not every MA Group will have corresponding levels)
Features:
- 4x7 = 28 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 2 MA subtypes within each group/TF
- 4x7 = 28 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- for charts with low/fractional prices i.e. 0.00002 << 0.001 (default Y smoothing step) decrease Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- for charts with high price values i.e. 20000 >> 0.001 increase Y smoothing as needed (set Y = 10-20). Higher values exceeding MAs point density will cause it to disappear as there will be no points to plot. Different TFs may require diff adjustments
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example: D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec. M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
- Dupe check includes symbol: symbol, tf, both subtypes - all must match for a duplicate group
- For the dupe check to work correctly a custom symbol must always include an exchange prefix. BB is not checked for dupes
Good Luck! Feel free to learn from/reuse the code to build your own indicators.
Multi SMA EMA WMA HMA BB (4x5 MAs Bollinger Bands) Adv MTF - RRBMulti SMA EMA WMA HMA 4x5 Moving Averages with Bollinger Bands Advanced MTF by RagingRocketBull 2019
Version 1.0
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 5 MAs = 20 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 12,26,50,100,200 x H1, H4, D1, W1 (4 TFs x 5 MAs x 1 type)
- EMAs 8,10,13,21,30,50,55,100,200,400 x M15, H1 (2 TFs x 10 MAs x 1 type)
- D1 EMAs and SMAs 8,10,12,26,30,50,55,100,200,400 (1 TF x 10 MAs x 2 types)
- H1 WMAs 7,77,89,167,231; H4 HMAs 12,26,50,100,200; D1 EMAs 89,144,169,233,377; W1 SMAs 12,26,50,100,200 (4 TFs x 5 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF and Ultimate MTF. This is the Advanced MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +2 extra MAs/group (4x5 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
Features:
- 4x5 = 20 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 4x5 = 20 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group - you can compare MAs of the same symbol across exchanges
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- price << default Y smoothing step 5. For charts with low/fractional prices (i.e. 0.00002 << 5) adjust X Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example:
D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec.
M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
1. based on 3EmaBB, uses plot*, barssince and security functions
2. you can't set certain constants from input due to Pinescript limitations - change the code as needed, recompile and use as a private version
3. Levels = trackprice implementation
4. Show Max Bars Back = show_last implementation
5. swma has a fixed length = 4, alma and linreg have additional offset and smoothing params
6. Smoothing is applied by default for visual aesthetics on MTF. To use exact ma mtf values (lines with stair stepping) - disable it
Good Luck! You can explore, modify/reuse the code to build your own indicators.
ADX +- DiThis Adx +-Di is just a complete version of what the ADX is supposed to signal.
So you have:
15 (contraction), 20 (threshold), 30 (expansion), 40 (resistance) levels.
Below 20 the price is not trending
Above 30 the price is trending
Below 15 price has been in contraction for too long
Between 20 and 30 price is in a "transition zone".
I finally added a "Resistance" level (40), which has to be adapted to best represent the historical levels where price usually encounters resistance, and where the price can be declared "overtrending", which means a return to lower levels is likely to happen.
I've chosen mild colors, and set the Adx Color to White, because I use black background, you can easily change that.
Enjoy
-Maurice
Average Directional Index with DI SpreadThis indicator converts conventional triple lined ADX, DI+ and DI- into two lines. First line is the
original ADX line and second line is obtained by subtracting DI- from DI+ which named DI Spread(DIS)
If ADX is greater than 20 there is a trend and if greater than 40 there is a strong trend but ADX does not tell
the trend direction
To determine trend direction, DIS can be used with ADX; Sımply; If DIS is greater than 0, it is an uptrend and If DIS
is less than 0, it is a downtrend.
To sum up;
If ADX is greater than 20 and especially greater than 40 with positive DIS value, this implies an uptrend.
If ADX is greater than 20 and especially greater than 40 with negative DIS value, this implies a downtrend.
*Because of coloration and reference levels used, this indicator is really simple and efficient to analyze trend direction.
MFI Multi-TimeframeThe Money Flow Index (MFI) is an oscillating momentum and market strength indicator that was developed by Gene Quong and Avrum Soudack. It is also a leading indicator, which means it tends to lead price action, and is similar in calculation as J. Welles Wilder's Relative Strength Index (RSI) with the significant difference being that the MFI uses both price and volume. Like the RSI, the MFI is a range-bound oscillator that oscillates between zero and 100 and is interpreted in a similar way as the RSI. The ultimate aim of the MFI is to determine whether money is flowing in or out of a security over a specified look-back period.
HOW IS IT USED ?
The MFI oscillates between 0 and 100 and a security is considered overbought when its MFI rises above 80 and oversold when its MFI falls below 20. These levels are the suggested overbought and oversold levels as suggested by Quong and Soudack, though they do not suggest these levels as entry signals. Instead, these caution levels warn that the price action and the current trend have reached extremes that may be unsustainable. Quong and Soudack also recommend using the 90 and 10 lines as truly overbought and truly oversold levels respectively. MFI movements above 90 and below 10 are rare and indicate a higher level of unsustainability.
Finally, failure swings from the 20 or 80 levels can also be used to identify potential price reversals and trade entries. A failure swing occurs when the MFI moves over the overbought or oversold level but reverses back before reaching the opposite level. Thus, when the MFI crosses up over the 20 (oversold) level but reverses before it reaches the 80 (overbought) level, it indicates that the uptrend is weak and that it may reverse soon. This signals that you should cover any long positions or go short. Similarly, when the MFI crosses down over the 80 (overbought) level but reverses before it reaches the 20 (oversold) level, it indicates a weakness in the down trend and the probability that the trend will reverse. This would be a signal to close of any short positions; or a signal to long buy.
I added the possibility to add on the chart a 2nd timeframe for confirmation.
If you found this script useful, a tip is always welcome... :)
Exponential Moving Average (Set of 3) [Krypt] + 13/34 EMAsI took Krypt's script and essentially added on to it.
the 20/50/100/200 EMAs should be used together as support and resistance as normal.
Wait for price to break 200 EMA
Wait for 50 EMA to cross 200 EMA
Wait for pullback to 50 EMA to open position
20 and 100 EMAs are for extra information about moving support and resistance
and 13/34 EMAs should be used in conjunction
When 13 EMA crosses 34 EMA, open position
When price gets far from 13/34, close position (because price will attempt to revert back to mean)
This is better for scalping and swing trades than the 20/50/100/200 setup.
Twitter: @AzorAhai06
Gap Gain Test V1.0 by @overratedtraderOddball indicators for entertainment purposes only. This is best used on daily chart.
Look at the 20 ALMA to gauge likelihood of stock following its up or down gap.
- if above the 20 ALMA , follow the gap direction
- if below the 20 ALMA , take counter trend trade
If stock gaps up AND closes higher than it opens, that gain % (close/open) is colored green and if stock gaps down and closes lower than it opens, that gain % (close/open) is colored green
Conversely if the stock gaps up BUT closes lower than it opens, red and if a stop gaps down but closes higher than it opens, red.
Enjoy and follow me on twitter @overratedtrader for more nonsensical and out-of-the-box ideas.
Adaptive Donchian ChannelThis indicator adds a level of adaptivity to the simple Donchian Channel by adjusting the sensitivity (lookback periods) of the channel's upper and lower bounds based on the amount of time that has elapsed since the price has hit/expanded the channel boundaries. Comparing the results of this indicator to the standard Donchian Channel, the readier level of responsiveness may prove self-evident.
METHODOLOGY:
Specifically, the more recently the channel was expanded in one direction, the longer the lookback period grows in that direction. Conversely, if the channel has not been expanded in a given direction, the lookback period will contract so as to allow for a tighter channel.
For example, let the initial lookback period be 20 bars and let the factor argument be 0.1 (or 2 bars to start, as 20*0.1 = 2). Now say the current bar sets a new 20-period high. Then the lookback period for the upper bound is expanded by 2 bars to 22, and the lookback period for the lower bound is contracted by 2 bars to 18, thereby making it simultaneously harder to set new highs and easier to set new lows (and vice versa for hitting new lows). If neither a new high nor a new low is formed, both periods contract by the given factor.
TonyUX EMA Scalper - Buy / SellThis is a simple scalping strategy that works for all time frames... I have only tested it on FOREX
It works by checking if the price is currently in an uptrend and if it crosses the 20 EMA.
If it crosses the 20 EMA and its in and uptrend it will post a BUY SIGNAL.
If it crosses the 20 EMA and its in and down it will post a SELL SIGNAL.
The red line is the highest close of the previous 8 bars --- This is resistance
The green line is the lowest close of the previous 8 bars -- This is support
EMA_ConvergenceFirst I have to give kudos to my son who I asked to take a shot at creating this little indicator. Nice work son!
While trading, one of the things I look for is when price or certain EMA's approach another EMA. The example that I use on this 1 minute SPY chart is an 8 EMA and 20 EMA. I am looking for when the 8 and 20 are within' 3 cents of each other. Many times when they are getting close, price is approaching a top or bottom. I am looking for a candlestick reversal around that area. You may want to know when PRICE is near the 50 EMA: Use EMA 1 and 50 for that. Having it light up on top of the page, or elsewhere, makes it easier to look for the convergence when it occurs. If it lights up for a long period, price may be going sideways. I don't enter into a trade until the EMA starts separating, usually with another candlestick formation.
You are able to change the distance for convergence and two EMA's. Unfortunately you will have to adjust the convergence number up as you increase in time frames. This is designed to see when they are close, not when they cross.
The bars on top of this example are lit up purple due to the 8 and 20 EMA are within' 3 cents of each other.
If you want to overlay the price bars, instead of having it separate, just change overlay to "true"
Enjoy.
IU Trade ManagementDESCRIPTION
IU Trade Management is a powerful utility tool designed to help traders manage their trades with precision and clarity. It provides automated Stop Loss, Take Profit, and Break Even calculations using multiple customizable methods. Along with clear SL/TP plotting on the chart, it also displays a detailed trade status table that tracks every important detail including entry price, SL/TP levels, break-even, PNL, and trade duration. This tool is perfect for traders who want to manage risk and rewards visually and systematically.
USER INPUTS :
-Entry Candle Time: Default 20 Jul 2021 00:00 +0300 (select the candle from which the trade begins)
- Entry Price: Default 2333 (define the price at which the trade is executed)
- Trade Direction: Default Long (choose between Long or Short)
- SL/TP Method: Default ATR (options: ATR, Points/Pips, Percentage %, Standard Deviation, Highest/Lowest, Previous High/Low)
- Risk to Reward: Default 3 (set custom risk-to-reward ratio)
- Use Break Even: Default false (option to enable break-even)
- Plot Break Even Line: Default false (option to display BE line)
- RTR of Break Even Point: Default 2 (factor used for BE calculation)
SL/TP Method Specific Inputs:
- ATR Length: Default 14
- ATR Factor: Default 2
- Points/Pips: Default 100
- Percentage: Default 1%
- Standard Deviation Length: Default 20
- Standard Deviation Factor: Default 2
- Highest/Lowest Length: Default 10
Trade Status Table Settings:
- Show Trade Status: Default true
- Table Size: Default small (options: normal, tiny, small, large)
- Table Position: Default top right
- Frame Width: Default 2
- Table Color: Default black
- Frame Color: Default gray
- Border Width: Default 2
- Border Color: Default gray
- Text Color: Default purple (RGB 212, 0, 255)
HOW TO USE THE INDICATOR:
1. Set the entry candle time and entry price manually.
2. Select whether the trade is Long or Short.
3. Choose the preferred SL/TP calculation method (ATR, Percentage, Points, STD, High/Low, Previous High/Low).
4. Define your risk-to-reward ratio and enable break-even if required.
5. The indicator will automatically plot your Entry, Stop Loss, Take Profit, and Break Even levels on the chart.
6. A detailed trade management table will appear, showing trade direction, SL, TP, PNL (points and %), SL/TP method, and total trade time.
WHY IT IS UNIQUE:
- Offers multiple methods to calculate SL and TP (ATR, Percentage, Points, Standard Deviation, High/Low, Previous High/Low)
- Built-in Break Even functionality for risk-free trade management
- Real-time PNL tracking in both points and percentage
- Trade status table for complete transparency on all trade details
- Visual plotting of SL, TP, and Entry with color-coded zones for clarity
HOW USER CAN BENEFIT FROM IT :
- Helps traders manage risk and reward with discipline
- Eliminates guesswork by automating SL and TP levels
- Provides clear visual guidance on trade exits and risk management
- Enhances decision-making with live trade tracking and performance statistics
- Suitable for manual traders as a trade manager and for strategy developers as a risk management reference
Consolidation Breakout Signal//@version=5
indicator("Consolidation Breakout Signal", overlay=true, timeframe="")
// Inputs
length = input.int(20, "Consolidation Lookback")
atrMult = input.float(1.5, "ATR Breakout Multiplier")
bbLength = input.int(20, "Bollinger Band Length")
bbMult = input.float(2.0, "Bollinger Band Width Multiplier")
// ATR for volatility
atr = ta.atr(length)
// Bollinger Bands for consolidation
basis = ta.sma(close, bbLength)
dev = bbMult * ta.stdev(close, bbLength)
upperBB = basis + dev
lowerBB = basis - dev
bbWidth = (upperBB - lowerBB) / basis * 100
// Define consolidation as narrow BB width
consolidation = bbWidth < ta.sma(bbWidth, length)
// Breakout conditions
breakUp = consolidation and close > upperBB and close > close + atrMult * atr
breakDown = consolidation and close < lowerBB and close < close - atrMult * atr
// Plot Bollinger Bands
plot(upperBB, "Upper BB", color=color.new(color.blue, 70))
plot(lowerBB, "Lower BB", color=color.new(color.blue, 70))
// Plot signals
plotshape(breakUp, title="Breakout Up", style=shape.labelup, color=color.green, text="UP 🔼", size=size.large, location=location.belowbar)
plotshape(breakDown, title="Breakout Down", style=shape.labeldown, color=color.red, text="DOWN 🔽", size=size.large, location=location.abovebar)
// Alerts
alertcondition(breakUp, title="Breakout Up Alert", message="Big Up Move Likely 🚀")
alertcondition(breakDown, title="Breakout Down Alert", message="Big Down Move Likely 📉")
ATAI Volume analysis with price action V 1.00ATAI Volume Analysis with Price Action
1. Introduction
1.1 Overview
ATAI Volume Analysis with Price Action is a composite indicator designed for TradingView. It combines per‑side volume data —that is, how much buying and selling occurs during each bar—with standard price‑structure elements such as swings, trend lines and support/resistance. By blending these elements the script aims to help a trader understand which side is in control, whether a breakout is genuine, when markets are potentially exhausted and where liquidity providers might be active.
The indicator is built around TradingView’s up/down volume feed accessed via the TradingView/ta/10 library. The following excerpt from the script illustrates how this feed is configured:
import TradingView/ta/10 as tvta
// Determine lower timeframe string based on user choice and chart resolution
string lower_tf_breakout = use_custom_tf_input ? custom_tf_input :
timeframe.isseconds ? "1S" :
timeframe.isintraday ? "1" :
timeframe.isdaily ? "5" : "60"
// Request up/down volume (both positive)
= tvta.requestUpAndDownVolume(lower_tf_breakout)
Lower‑timeframe selection. If you do not specify a custom lower timeframe, the script chooses a default based on your chart resolution: 1 second for second charts, 1 minute for intraday charts, 5 minutes for daily charts and 60 minutes for anything longer. Smaller intervals provide a more precise view of buyer and seller flow but cover fewer bars. Larger intervals cover more history at the cost of granularity.
Tick vs. time bars. Many trading platforms offer a tick / intrabar calculation mode that updates an indicator on every trade rather than only on bar close. Turning on one‑tick calculation will give the most accurate split between buy and sell volume on the current bar, but it typically reduces the amount of historical data available. For the highest fidelity in live trading you can enable this mode; for studying longer histories you might prefer to disable it. When volume data is completely unavailable (some instruments and crypto pairs), all modules that rely on it will remain silent and only the price‑structure backbone will operate.
Figure caption, Each panel shows the indicator’s info table for a different volume sampling interval. In the left chart, the parentheses “(5)” beside the buy‑volume figure denote that the script is aggregating volume over five‑minute bars; the center chart uses “(1)” for one‑minute bars; and the right chart uses “(1T)” for a one‑tick interval. These notations tell you which lower timeframe is driving the volume calculations. Shorter intervals such as 1 minute or 1 tick provide finer detail on buyer and seller flow, but they cover fewer bars; longer intervals like five‑minute bars smooth the data and give more history.
Figure caption, The values in parentheses inside the info table come directly from the Breakout — Settings. The first row shows the custom lower-timeframe used for volume calculations (e.g., “(1)”, “(5)”, or “(1T)”)
2. Price‑Structure Backbone
Even without volume, the indicator draws structural features that underpin all other modules. These features are always on and serve as the reference levels for subsequent calculations.
2.1 What it draws
• Pivots: Swing highs and lows are detected using the pivot_left_input and pivot_right_input settings. A pivot high is identified when the high recorded pivot_right_input bars ago exceeds the highs of the preceding pivot_left_input bars and is also higher than (or equal to) the highs of the subsequent pivot_right_input bars; pivot lows follow the inverse logic. The indicator retains only a fixed number of such pivot points per side, as defined by point_count_input, discarding the oldest ones when the limit is exceeded.
• Trend lines: For each side, the indicator connects the earliest stored pivot and the most recent pivot (oldest high to newest high, and oldest low to newest low). When a new pivot is added or an old one drops out of the lookback window, the line’s endpoints—and therefore its slope—are recalculated accordingly.
• Horizontal support/resistance: The highest high and lowest low within the lookback window defined by length_input are plotted as horizontal dashed lines. These serve as short‑term support and resistance levels.
• Ranked labels: If showPivotLabels is enabled the indicator prints labels such as “HH1”, “HH2”, “LL1” and “LL2” near each pivot. The ranking is determined by comparing the price of each stored pivot: HH1 is the highest high, HH2 is the second highest, and so on; LL1 is the lowest low, LL2 is the second lowest. In the case of equal prices the newer pivot gets the better rank. Labels are offset from price using ½ × ATR × label_atr_multiplier, with the ATR length defined by label_atr_len_input. A dotted connector links each label to the candle’s wick.
2.2 Key settings
• length_input: Window length for finding the highest and lowest values and for determining trend line endpoints. A larger value considers more history and will generate longer trend lines and S/R levels.
• pivot_left_input, pivot_right_input: Strictness of swing confirmation. Higher values require more bars on either side to form a pivot; lower values create more pivots but may include minor swings.
• point_count_input: How many pivots are kept in memory on each side. When new pivots exceed this number the oldest ones are discarded.
• label_atr_len_input and label_atr_multiplier: Determine how far pivot labels are offset from the bar using ATR. Increasing the multiplier moves labels further away from price.
• Styling inputs for trend lines, horizontal lines and labels (color, width and line style).
Figure caption, The chart illustrates how the indicator’s price‑structure backbone operates. In this daily example, the script scans for bars where the high (or low) pivot_right_input bars back is higher (or lower) than the preceding pivot_left_input bars and higher or lower than the subsequent pivot_right_input bars; only those bars are marked as pivots.
These pivot points are stored and ranked: the highest high is labelled “HH1”, the second‑highest “HH2”, and so on, while lows are marked “LL1”, “LL2”, etc. Each label is offset from the price by half of an ATR‑based distance to keep the chart clear, and a dotted connector links the label to the actual candle.
The red diagonal line connects the earliest and latest stored high pivots, and the green line does the same for low pivots; when a new pivot is added or an old one drops out of the lookback window, the end‑points and slopes adjust accordingly. Dashed horizontal lines mark the highest high and lowest low within the current lookback window, providing visual support and resistance levels. Together, these elements form the structural backbone that other modules reference, even when volume data is unavailable.
3. Breakout Module
3.1 Concept
This module confirms that a price break beyond a recent high or low is supported by a genuine shift in buying or selling pressure. It requires price to clear the highest high (“HH1”) or lowest low (“LL1”) and, simultaneously, that the winning side shows a significant volume spike, dominance and ranking. Only when all volume and price conditions pass is a breakout labelled.
3.2 Inputs
• lookback_break_input : This controls the number of bars used to compute moving averages and percentiles for volume. A larger value smooths the averages and percentiles but makes the indicator respond more slowly.
• vol_mult_input : The “spike” multiplier; the current buy or sell volume must be at least this multiple of its moving average over the lookback window to qualify as a breakout.
• rank_threshold_input (0–100) : Defines a volume percentile cutoff: the current buyer/seller volume must be in the top (100−threshold)%(100−threshold)% of all volumes within the lookback window. For example, if set to 80, the current volume must be in the top 20 % of the lookback distribution.
• ratio_threshold_input (0–1) : Specifies the minimum share of total volume that the buyer (for a bullish breakout) or seller (for bearish) must hold on the current bar; the code also requires that the cumulative buyer volume over the lookback window exceeds the seller volume (and vice versa for bearish cases).
• use_custom_tf_input / custom_tf_input : When enabled, these inputs override the automatic choice of lower timeframe for up/down volume; otherwise the script selects a sensible default based on the chart’s timeframe.
• Label appearance settings : Separate options control the ATR-based offset length, offset multiplier, label size and colors for bullish and bearish breakout labels, as well as the connector style and width.
3.3 Detection logic
1. Data preparation : Retrieve per‑side volume from the lower timeframe and take absolute values. Build rolling arrays of the last lookback_break_input values to compute simple moving averages (SMAs), cumulative sums and percentile ranks for buy and sell volume.
2. Volume spike: A spike is flagged when the current buy (or, in the bearish case, sell) volume is at least vol_mult_input times its SMA over the lookback window.
3. Dominance test: The buyer’s (or seller’s) share of total volume on the current bar must meet or exceed ratio_threshold_input. In addition, the cumulative sum of buyer volume over the window must exceed the cumulative sum of seller volume for a bullish breakout (and vice versa for bearish). A separate requirement checks the sign of delta: for bullish breakouts delta_breakout must be non‑negative; for bearish breakouts it must be non‑positive.
4. Percentile rank: The current volume must fall within the top (100 – rank_threshold_input) percent of the lookback distribution—ensuring that the spike is unusually large relative to recent history.
5. Price test: For a bullish signal, the closing price must close above the highest pivot (HH1); for a bearish signal, the close must be below the lowest pivot (LL1).
6. Labeling: When all conditions above are satisfied, the indicator prints “Breakout ↑” above the bar (bullish) or “Breakout ↓” below the bar (bearish). Labels are offset using half of an ATR‑based distance and linked to the candle with a dotted connector.
Figure caption, (Breakout ↑ example) , On this daily chart, price pushes above the red trendline and the highest prior pivot (HH1). The indicator recognizes this as a valid breakout because the buyer‑side volume on the lower timeframe spikes above its recent moving average and buyers dominate the volume statistics over the lookback period; when combined with a close above HH1, this satisfies the breakout conditions. The “Breakout ↑” label appears above the candle, and the info table highlights that up‑volume is elevated relative to its 11‑bar average, buyer share exceeds the dominance threshold and money‑flow metrics support the move.
Figure caption, In this daily example, price breaks below the lowest pivot (LL1) and the lower green trendline. The indicator identifies this as a bearish breakout because sell‑side volume is sharply elevated—about twice its 11‑bar average—and sellers dominate both the bar and the lookback window. With the close falling below LL1, the script triggers a Breakout ↓ label and marks the corresponding row in the info table, which shows strong down volume, negative delta and a seller share comfortably above the dominance threshold.
4. Market Phase Module (Volume Only)
4.1 Concept
Not all markets trend; many cycle between periods of accumulation (buying pressure building up), distribution (selling pressure dominating) and neutral behavior. This module classifies the current bar into one of these phases without using ATR , relying solely on buyer and seller volume statistics. It looks at net flows, ratio changes and an OBV‑like cumulative line with dual‑reference (1‑ and 2‑bar) trends. The result is displayed both as on‑chart labels and in a dedicated row of the info table.
4.2 Inputs
• phase_period_len: Number of bars over which to compute sums and ratios for phase detection.
• phase_ratio_thresh : Minimum buyer share (for accumulation) or minimum seller share (for distribution, derived as 1 − phase_ratio_thresh) of the total volume.
• strict_mode: When enabled, both the 1‑bar and 2‑bar changes in each statistic must agree on the direction (strict confirmation); when disabled, only one of the two references needs to agree (looser confirmation).
• Color customisation for info table cells and label styling for accumulation and distribution phases, including ATR length, multiplier, label size, colors and connector styles.
• show_phase_module: Toggles the entire phase detection subsystem.
• show_phase_labels: Controls whether on‑chart labels are drawn when accumulation or distribution is detected.
4.3 Detection logic
The module computes three families of statistics over the volume window defined by phase_period_len:
1. Net sum (buyers minus sellers): net_sum_phase = Σ(buy) − Σ(sell). A positive value indicates a predominance of buyers. The code also computes the differences between the current value and the values 1 and 2 bars ago (d_net_1, d_net_2) to derive up/down trends.
2. Buyer ratio: The instantaneous ratio TF_buy_breakout / TF_tot_breakout and the window ratio Σ(buy) / Σ(total). The current ratio must exceed phase_ratio_thresh for accumulation or fall below 1 − phase_ratio_thresh for distribution. The first and second differences of the window ratio (d_ratio_1, d_ratio_2) determine trend direction.
3. OBV‑like cumulative net flow: An on‑balance volume analogue obv_net_phase increments by TF_buy_breakout − TF_sell_breakout each bar. Its differences over the last 1 and 2 bars (d_obv_1, d_obv_2) provide trend clues.
The algorithm then combines these signals:
• For strict mode , accumulation requires: (a) current ratio ≥ threshold, (b) cumulative ratio ≥ threshold, (c) both ratio differences ≥ 0, (d) net sum differences ≥ 0, and (e) OBV differences ≥ 0. Distribution is the mirror case.
• For loose mode , it relaxes the directional tests: either the 1‑ or the 2‑bar difference needs to agree in each category.
If all conditions for accumulation are satisfied, the phase is labelled “Accumulation” ; if all conditions for distribution are satisfied, it’s labelled “Distribution” ; otherwise the phase is “Neutral” .
4.4 Outputs
• Info table row : Row 8 displays “Market Phase (Vol)” on the left and the detected phase (Accumulation, Distribution or Neutral) on the right. The text colour of both cells matches a user‑selectable palette (typically green for accumulation, red for distribution and grey for neutral).
• On‑chart labels : When show_phase_labels is enabled and a phase persists for at least one bar, the module prints a label above the bar ( “Accum” ) or below the bar ( “Dist” ) with a dashed or dotted connector. The label is offset using ATR based on phase_label_atr_len_input and phase_label_multiplier and is styled according to user preferences.
Figure caption, The chart displays a red “Dist” label above a particular bar, indicating that the accumulation/distribution module identified a distribution phase at that point. The detection is based on seller dominance: during that bar, the net buyer-minus-seller flow and the OBV‑style cumulative flow were trending down, and the buyer ratio had dropped below the preset threshold. These conditions satisfy the distribution criteria in strict mode. The label is placed above the bar using an ATR‑based offset and a dashed connector. By the time of the current bar in the screenshot, the phase indicator shows “Neutral” in the info table—signaling that neither accumulation nor distribution conditions are currently met—yet the historical “Dist” label remains to mark where the prior distribution phase began.
Figure caption, In this example the market phase module has signaled an Accumulation phase. Three bars before the current candle, the algorithm detected a shift toward buyers: up‑volume exceeded its moving average, down‑volume was below average, and the buyer share of total volume climbed above the threshold while the on‑balance net flow and cumulative ratios were trending upwards. The blue “Accum” label anchored below that bar marks the start of the phase; it remains on the chart because successive bars continue to satisfy the accumulation conditions. The info table confirms this: the “Market Phase (Vol)” row still reads Accumulation, and the ratio and sum rows show buyers dominating both on the current bar and across the lookback window.
5. OB/OS Spike Module
5.1 What overbought/oversold means here
In many markets, a rapid extension up or down is often followed by a period of consolidation or reversal. The indicator interprets overbought (OB) conditions as abnormally strong selling risk at or after a price rally and oversold (OS) conditions as unusually strong buying risk after a decline. Importantly, these are not direct trade signals; rather they flag areas where caution or contrarian setups may be appropriate.
5.2 Inputs
• minHits_obos (1–7): Minimum number of oscillators that must agree on an overbought or oversold condition for a label to print.
• syncWin_obos: Length of a small sliding window over which oscillator votes are smoothed by taking the maximum count observed. This helps filter out choppy signals.
• Volume spike criteria: kVolRatio_obos (ratio of current volume to its SMA) and zVolThr_obos (Z‑score threshold) across volLen_obos. Either threshold can trigger a spike.
• Oscillator toggles and periods: Each of RSI, Stochastic (K and D), Williams %R, CCI, MFI, DeMarker and Stochastic RSI can be independently enabled; their periods are adjustable.
• Label appearance: ATR‑based offset, size, colors for OB and OS labels, plus connector style and width.
5.3 Detection logic
1. Directional volume spikes: Volume spikes are computed separately for buyer and seller volumes. A sell volume spike (sellVolSpike) flags a potential OverBought bar, while a buy volume spike (buyVolSpike) flags a potential OverSold bar. A spike occurs when the respective volume exceeds kVolRatio_obos times its simple moving average over the window or when its Z‑score exceeds zVolThr_obos.
2. Oscillator votes: For each enabled oscillator, calculate its overbought and oversold state using standard thresholds (e.g., RSI ≥ 70 for OB and ≤ 30 for OS; Stochastic %K/%D ≥ 80 for OB and ≤ 20 for OS; etc.). Count how many oscillators vote for OB and how many vote for OS.
3. Minimum hits: Apply the smoothing window syncWin_obos to the vote counts using a maximum‑of‑last‑N approach. A candidate bar is only considered if the smoothed OB hit count ≥ minHits_obos (for OverBought) or the smoothed OS hit count ≥ minHits_obos (for OverSold).
4. Tie‑breaking: If both OverBought and OverSold spike conditions are present on the same bar, compare the smoothed hit counts: the side with the higher count is selected; ties default to OverBought.
5. Label printing: When conditions are met, the bar is labelled as “OverBought X/7” above the candle or “OverSold X/7” below it. “X” is the number of oscillators confirming, and the bracket lists the abbreviations of contributing oscillators. Labels are offset from price using half of an ATR‑scaled distance and can optionally include a dotted or dashed connector line.
Figure caption, In this chart the overbought/oversold module has flagged an OverSold signal. A sell‑off from the prior highs brought price down to the lower trend‑line, where the bar marked “OverSold 3/7 DeM” appears. This label indicates that on that bar the module detected a buy‑side volume spike and that at least three of the seven enabled oscillators—in this case including the DeMarker—were in oversold territory. The label is printed below the candle with a dotted connector, signaling that the market may be temporarily exhausted on the downside. After this oversold print, price begins to rebound towards the upper red trend‑line and higher pivot levels.
Figure caption, This example shows the overbought/oversold module in action. In the left‑hand panel you can see the OB/OS settings where each oscillator (RSI, Stochastic, Williams %R, CCI, MFI, DeMarker and Stochastic RSI) can be enabled or disabled, and the ATR length and label offset multiplier adjusted. On the chart itself, price has pushed up to the descending red trendline and triggered an “OverBought 3/7” label. That means the sell‑side volume spiked relative to its average and three out of the seven enabled oscillators were in overbought territory. The label is offset above the candle by half of an ATR and connected with a dashed line, signaling that upside momentum may be overextended and a pause or pullback could follow.
6. Buyer/Seller Trap Module
6.1 Concept
A bull trap occurs when price appears to break above resistance, attracting buyers, but fails to sustain the move and quickly reverses, leaving a long upper wick and trapping late entrants. A bear trap is the opposite: price breaks below support, lures in sellers, then snaps back, leaving a long lower wick and trapping shorts. This module detects such traps by looking for price structure sweeps, order‑flow mismatches and dominance reversals. It uses a scoring system to differentiate risk from confirmed traps.
6.2 Inputs
• trap_lookback_len: Window length used to rank extremes and detect sweeps.
• trap_wick_threshold: Minimum proportion of a bar’s range that must be wick (upper for bull traps, lower for bear traps) to qualify as a sweep.
• trap_score_risk: Minimum aggregated score required to flag a trap risk. (The code defines a trap_score_confirm input, but confirmation is actually based on price reversal rather than a separate score threshold.)
• trap_confirm_bars: Maximum number of bars allowed for price to reverse and confirm the trap. If price does not reverse in this window, the risk label will expire or remain unconfirmed.
• Label settings: ATR length and multiplier for offsetting, size, colours for risk and confirmed labels, and connector style and width. Separate settings exist for bull and bear traps.
• Toggle inputs: show_trap_module and show_trap_labels enable the module and control whether labels are drawn on the chart.
6.3 Scoring logic
The module assigns points to several conditions and sums them to determine whether a trap risk is present. For bull traps, the score is built from the following (bear traps mirror the logic with highs and lows swapped):
1. Sweep (2 points): Price trades above the high pivot (HH1) but fails to close above it and leaves a long upper wick at least trap_wick_threshold × range. For bear traps, price dips below the low pivot (LL1), fails to close below and leaves a long lower wick.
2. Close break (1 point): Price closes beyond HH1 or LL1 without leaving a long wick.
3. Candle/delta mismatch (2 points): The candle closes bullish yet the order flow delta is negative or the seller ratio exceeds 50%, indicating hidden supply. Conversely, a bearish close with positive delta or buyer dominance suggests hidden demand.
4. Dominance inversion (2 points): The current bar’s buyer volume has the highest rank in the lookback window while cumulative sums favor sellers, or vice versa.
5. Low‑volume break (1 point): Price crosses the pivot but total volume is below its moving average.
The total score for each side is compared to trap_score_risk. If the score is high enough, a “Bull Trap Risk” or “Bear Trap Risk” label is drawn, offset from the candle by half of an ATR‑scaled distance using a dashed outline. If, within trap_confirm_bars, price reverses beyond the opposite level—drops back below the high pivot for bull traps or rises above the low pivot for bear traps—the label is upgraded to a solid “Bull Trap” or “Bear Trap” . In this version of the code, there is no separate score threshold for confirmation: the variable trap_score_confirm is unused; confirmation depends solely on a successful price reversal within the specified number of bars.
Figure caption, In this example the trap module has flagged a Bear Trap Risk. Price initially breaks below the most recent low pivot (LL1), but the bar closes back above that level and leaves a long lower wick, suggesting a failed push lower. Combined with a mismatch between the candle direction and the order flow (buyers regain control) and a reversal in volume dominance, the aggregate score exceeds the risk threshold, so a dashed “Bear Trap Risk” label prints beneath the bar. The green and red trend lines mark the current low and high pivot trajectories, while the horizontal dashed lines show the highest and lowest values in the lookback window. If, within the next few bars, price closes decisively above the support, the risk label would upgrade to a solid “Bear Trap” label.
Figure caption, In this example the trap module has identified both ends of a price range. Near the highs, price briefly pushes above the descending red trendline and the recent pivot high, but fails to close there and leaves a noticeable upper wick. That combination of a sweep above resistance and order‑flow mismatch generates a Bull Trap Risk label with a dashed outline, warning that the upside break may not hold. At the opposite extreme, price later dips below the green trendline and the labelled low pivot, then quickly snaps back and closes higher. The long lower wick and subsequent price reversal upgrade the previous bear‑trap risk into a confirmed Bear Trap (solid label), indicating that sellers were caught on a false breakdown. Horizontal dashed lines mark the highest high and lowest low of the lookback window, while the red and green diagonals connect the earliest and latest pivot highs and lows to visualize the range.
7. Sharp Move Module
7.1 Concept
Markets sometimes display absorption or climax behavior—periods when one side steadily gains the upper hand before price breaks out with a sharp move. This module evaluates several order‑flow and volume conditions to anticipate such moves. Users can choose how many conditions must be met to flag a risk and how many (plus a price break) are required for confirmation.
7.2 Inputs
• sharp Lookback: Number of bars in the window used to compute moving averages, sums, percentile ranks and reference levels.
• sharpPercentile: Minimum percentile rank for the current side’s volume; the current buy (or sell) volume must be greater than or equal to this percentile of historical volumes over the lookback window.
• sharpVolMult: Multiplier used in the volume climax check. The current side’s volume must exceed this multiple of its average to count as a climax.
• sharpRatioThr: Minimum dominance ratio (current side’s volume relative to the opposite side) used in both the instant and cumulative dominance checks.
• sharpChurnThr: Maximum ratio of a bar’s range to its ATR for absorption/churn detection; lower values indicate more absorption (large volume in a small range).
• sharpScoreRisk: Minimum number of conditions that must be true to print a risk label.
• sharpScoreConfirm: Minimum number of conditions plus a price break required for confirmation.
• sharpCvdThr: Threshold for cumulative delta divergence versus price change (positive for bullish accumulation, negative for bearish distribution).
• Label settings: ATR length (sharpATRlen) and multiplier (sharpLabelMult) for positioning labels, label size, colors and connector styles for bullish and bearish sharp moves.
• Toggles: enableSharp activates the module; show_sharp_labels controls whether labels are drawn.
7.3 Conditions (six per side)
For each side, the indicator computes six boolean conditions and sums them to form a score:
1. Dominance (instant and cumulative):
– Instant dominance: current buy volume ≥ sharpRatioThr × current sell volume.
– Cumulative dominance: sum of buy volumes over the window ≥ sharpRatioThr × sum of sell volumes (and vice versa for bearish checks).
2. Accumulation/Distribution divergence: Over the lookback window, cumulative delta rises by at least sharpCvdThr while price fails to rise (bullish), or cumulative delta falls by at least sharpCvdThr while price fails to fall (bearish).
3. Volume climax: The current side’s volume is ≥ sharpVolMult × its average and the product of volume and bar range is the highest in the lookback window.
4. Absorption/Churn: The current side’s volume divided by the bar’s range equals the highest value in the window and the bar’s range divided by ATR ≤ sharpChurnThr (indicating large volume within a small range).
5. Percentile rank: The current side’s volume percentile rank is ≥ sharp Percentile.
6. Mirror logic for sellers: The above checks are repeated with buyer and seller roles swapped and the price break levels reversed.
Each condition that passes contributes one point to the corresponding side’s score (0 or 1). Risk and confirmation thresholds are then applied to these scores.
7.4 Scoring and labels
• Risk: If scoreBull ≥ sharpScoreRisk, a “Sharp ↑ Risk” label is drawn above the bar. If scoreBear ≥ sharpScoreRisk, a “Sharp ↓ Risk” label is drawn below the bar.
• Confirmation: A risk label is upgraded to “Sharp ↑” when scoreBull ≥ sharpScoreConfirm and the bar closes above the highest recent pivot (HH1); for bearish cases, confirmation requires scoreBear ≥ sharpScoreConfirm and a close below the lowest pivot (LL1).
• Label positioning: Labels are offset from the candle by ATR × sharpLabelMult (full ATR times multiplier), not half, and may include a dashed or dotted connector line if enabled.
Figure caption, In this chart both bullish and bearish sharp‑move setups have been flagged. Earlier in the range, a “Sharp ↓ Risk” label appears beneath a candle: the sell‑side score met the risk threshold, signaling that the combination of strong sell volume, dominance and absorption within a narrow range suggested a potential sharp decline. The price did not close below the lower pivot, so this label remains a “risk” and no confirmation occurred. Later, as the market recovered and volume shifted back to the buy side, a “Sharp ↑ Risk” label prints above a candle near the top of the channel. Here, buy‑side dominance, cumulative delta divergence and a volume climax aligned, but price has not yet closed above the upper pivot (HH1), so the alert is still a risk rather than a confirmed sharp‑up move.
Figure caption, In this chart a Sharp ↑ label is displayed above a candle, indicating that the sharp move module has confirmed a bullish breakout. Prior bars satisfied the risk threshold — showing buy‑side dominance, positive cumulative delta divergence, a volume climax and strong absorption in a narrow range — and this candle closes above the highest recent pivot, upgrading the earlier “Sharp ↑ Risk” alert to a full Sharp ↑ signal. The green label is offset from the candle with a dashed connector, while the red and green trend lines trace the high and low pivot trajectories and the dashed horizontals mark the highest and lowest values of the lookback window.
8. Market‑Maker / Spread‑Capture Module
8.1 Concept
Liquidity providers often “capture the spread” by buying and selling in almost equal amounts within a very narrow price range. These bars can signal temporary congestion before a move or reflect algorithmic activity. This module flags bars where both buyer and seller volumes are high, the price range is only a few ticks and the buy/sell split remains close to 50%. It helps traders spot potential liquidity pockets.
8.2 Inputs
• scalpLookback: Window length used to compute volume averages.
• scalpVolMult: Multiplier applied to each side’s average volume; both buy and sell volumes must exceed this multiple.
• scalpTickCount: Maximum allowed number of ticks in a bar’s range (calculated as (high − low) / minTick). A value of 1 or 2 captures ultra‑small bars; increasing it relaxes the range requirement.
• scalpDeltaRatio: Maximum deviation from a perfect 50/50 split. For example, 0.05 means the buyer share must be between 45% and 55%.
• Label settings: ATR length, multiplier, size, colors, connector style and width.
• Toggles : show_scalp_module and show_scalp_labels to enable the module and its labels.
8.3 Signal
When, on the current bar, both TF_buy_breakout and TF_sell_breakout exceed scalpVolMult times their respective averages and (high − low)/minTick ≤ scalpTickCount and the buyer share is within scalpDeltaRatio of 50%, the module prints a “Spread ↔” label above the bar. The label uses the same ATR offset logic as other modules and draws a connector if enabled.
Figure caption, In this chart the spread‑capture module has identified a potential liquidity pocket. Buyer and seller volumes both spiked above their recent averages, yet the candle’s range measured only a couple of ticks and the buy/sell split stayed close to 50 %. This combination met the module’s criteria, so it printed a grey “Spread ↔” label above the bar. The red and green trend lines link the earliest and latest high and low pivots, and the dashed horizontals mark the highest high and lowest low within the current lookback window.
9. Money Flow Module
9.1 Concept
To translate volume into a monetary measure, this module multiplies each side’s volume by the closing price. It tracks buying and selling system money default currency on a per-bar basis and sums them over a chosen period. The difference between buy and sell currencies (Δ$) shows net inflow or outflow.
9.2 Inputs
• mf_period_len_mf: Number of bars used for summing buy and sell dollars.
• Label appearance settings: ATR length, multiplier, size, colors for up/down labels, and connector style and width.
• Toggles: Use enableMoneyFlowLabel_mf and showMFLabels to control whether the module and its labels are displayed.
9.3 Calculations
• Per-bar money: Buy $ = TF_buy_breakout × close; Sell $ = TF_sell_breakout × close. Their difference is Δ$ = Buy $ − Sell $.
• Summations: Over mf_period_len_mf bars, compute Σ Buy $, Σ Sell $ and ΣΔ$ using math.sum().
• Info table entries: Rows 9–13 display these values as texts like “↑ USD 1234 (1M)” or “ΣΔ USD −5678 (14)”, with colors reflecting whether buyers or sellers dominate.
• Money flow status: If Δ$ is positive the bar is marked “Money flow in” ; if negative, “Money flow out” ; if zero, “Neutral”. The cumulative status is similarly derived from ΣΔ.Labels print at the bar that changes the sign of ΣΔ, offset using ATR × label multiplier and styled per user preferences.
Figure caption, The chart illustrates a steady rise toward the highest recent pivot (HH1) with price riding between a rising green trend‑line and a red trend‑line drawn through earlier pivot highs. A green Money flow in label appears above the bar near the top of the channel, signaling that net dollar flow turned positive on this bar: buy‑side dollar volume exceeded sell‑side dollar volume, pushing the cumulative sum ΣΔ$ above zero. In the info table, the “Money flow (bar)” and “Money flow Σ” rows both read In, confirming that the indicator’s money‑flow module has detected an inflow at both bar and aggregate levels, while other modules (pivots, trend lines and support/resistance) remain active to provide structural context.
In this example the Money Flow module signals a net outflow. Price has been trending downward: successive high pivots form a falling red trend‑line and the low pivots form a descending green support line. When the latest bar broke below the previous low pivot (LL1), both the bar‑level and cumulative net dollar flow turned negative—selling volume at the close exceeded buying volume and pushed the cumulative Δ$ below zero. The module reacts by printing a red “Money flow out” label beneath the candle; the info table confirms that the “Money flow (bar)” and “Money flow Σ” rows both show Out, indicating sustained dominance of sellers in this period.
10. Info Table
10.1 Purpose
When enabled, the Info Table appears in the lower right of your chart. It summarises key values computed by the indicator—such as buy and sell volume, delta, total volume, breakout status, market phase, and money flow—so you can see at a glance which side is dominant and which signals are active.
10.2 Symbols
• ↑ / ↓ — Up (↑) denotes buy volume or money; down (↓) denotes sell volume or money.
• MA — Moving average. In the table it shows the average value of a series over the lookback period.
• Σ (Sigma) — Cumulative sum over the chosen lookback period.
• Δ (Delta) — Difference between buy and sell values.
• B / S — Buyer and seller share of total volume, expressed as percentages.
• Ref. Price — Reference price for breakout calculations, based on the latest pivot.
• Status — Indicates whether a breakout condition is currently active (True) or has failed.
10.3 Row definitions
1. Up volume / MA up volume – Displays current buy volume on the lower timeframe and its moving average over the lookback period.
2. Down volume / MA down volume – Shows current sell volume and its moving average; sell values are formatted in red for clarity.
3. Δ / ΣΔ – Lists the difference between buy and sell volume for the current bar and the cumulative delta volume over the lookback period.
4. Σ / MA Σ (Vol/MA) – Total volume (buy + sell) for the bar, with the ratio of this volume to its moving average; the right cell shows the average total volume.
5. B/S ratio – Buy and sell share of the total volume: current bar percentages and the average percentages across the lookback period.
6. Buyer Rank / Seller Rank – Ranks the bar’s buy and sell volumes among the last (n) bars; lower rank numbers indicate higher relative volume.
7. Σ Buy / Σ Sell – Sum of buy and sell volumes over the lookback window, indicating which side has traded more.
8. Breakout UP / DOWN – Shows the breakout thresholds (Ref. Price) and whether the breakout condition is active (True) or has failed.
9. Market Phase (Vol) – Reports the current volume‑only phase: Accumulation, Distribution or Neutral.
10. Money Flow – The final rows display dollar amounts and status:
– ↑ USD / Σ↑ USD – Buy dollars for the current bar and the cumulative sum over the money‑flow period.
– ↓ USD / Σ↓ USD – Sell dollars and their cumulative sum.
– Δ USD / ΣΔ USD – Net dollar difference (buy minus sell) for the bar and cumulatively.
– Money flow (bar) – Indicates whether the bar’s net dollar flow is positive (In), negative (Out) or neutral.
– Money flow Σ – Shows whether the cumulative net dollar flow across the chosen period is positive, negative or neutral.
The chart above shows a sequence of different signals from the indicator. A Bull Trap Risk appears after price briefly pushes above resistance but fails to hold, then a green Accum label identifies an accumulation phase. An upward breakout follows, confirmed by a Money flow in print. Later, a Sharp ↓ Risk warns of a possible sharp downturn; after price dips below support but quickly recovers, a Bear Trap label marks a false breakdown. The highlighted info table in the center summarizes key metrics at that moment, including current and average buy/sell volumes, net delta, total volume versus its moving average, breakout status (up and down), market phase (volume), and bar‑level and cumulative money flow (In/Out).
11. Conclusion & Final Remarks
This indicator was developed as a holistic study of market structure and order flow. It brings together several well‑known concepts from technical analysis—breakouts, accumulation and distribution phases, overbought and oversold extremes, bull and bear traps, sharp directional moves, market‑maker spread bars and money flow—into a single Pine Script tool. Each module is based on widely recognized trading ideas and was implemented after consulting reference materials and example strategies, so you can see in real time how these concepts interact on your chart.
A distinctive feature of this indicator is its reliance on per‑side volume: instead of tallying only total volume, it separately measures buy and sell transactions on a lower time frame. This approach gives a clearer view of who is in control—buyers or sellers—and helps filter breakouts, detect phases of accumulation or distribution, recognize potential traps, anticipate sharp moves and gauge whether liquidity providers are active. The money‑flow module extends this analysis by converting volume into currency values and tracking net inflow or outflow across a chosen window.
Although comprehensive, this indicator is intended solely as a guide. It highlights conditions and statistics that many traders find useful, but it does not generate trading signals or guarantee results. Ultimately, you remain responsible for your positions. Use the information presented here to inform your analysis, combine it with other tools and risk‑management techniques, and always make your own decisions when trading.
Parabolic Move Indicator for catching moves with Penny Stocks.
Catch the day’s first big moves! Track premarket gap-ups or gap-downs, then spot early momentum shifts using volume, RSI, VWAP, EMAs, and breakout levels—perfect for acting on strong intraday setups right at market open.
**Description:**
The Parabolic Move Scanner + VWAP Bands + EMAs indicator helps traders identify **high-probability intraday moves**, particularly immediately after market open. It is ideal for stocks that **gap up or down premarket, pull back slightly, and then show renewed strength or weakness** once regular trading begins.
The indicator combines multiple components for precise signals:
* **Relative Volume Filter: ** Highlights bars with unusually high activity to ensure signals are backed by real participation.
* **RSI Momentum Change: ** Detects sudden momentum shifts to identify early strength or weakness.
* **Recent Highs/Lows Breakout: ** Confirms price is breaking short-term resistance or support.
* **VWAP & Standard Deviation Bands: ** Provides intraday trend reference points, with optional daily reset.
* **Exponential Moving Averages (EMAs): ** Tracks trend across short, medium, and long-term intraday periods.
* **Visual Signals: ** Background highlights and horizontal breakout lines make it easy to spot key bars.
* **Alerts: ** Configurable alerts notify you of bullish or bearish parabolic moves.
**Optimal Use Case: **
Use in the first 15–30 minutes after market open at 1 minute Time Frame. Best for **stocks showing a premarket gap followed by a pullback**, then resuming strength (bullish) or weakness (bearish). The combination of **volume, RSI, breakouts, VWAP, and EMAs** ensures you identify the **day’s biggest marktet open moves especially with penny stocks moves** with higher confidence.
---
### **Recommended Settings**
**Component** | **Recommended Setting** | **Description / Purpose**
| **Volume Average Length** | 20 bars | Period for calculating average volume to detect relative spikes. |
| **Volume Multiplier** | 2.0 | Current bar volume must exceed 2× average to signal high activity. |
| **RSI Length** | 7 bars | Short-term RSI period to measure momentum changes. |
| **RSI Change Threshold** | 7 | Minimum RSI change required to trigger momentum signal. |
| **Recent Highs Lookback** | 5 bars | Number of bars to check for short-term breakout levels. |
| **Horizontal Line Length** | 10 bars | Length of horizontal breakout line drawn on the chart. |
| **Horizontal Line Color** | Green (bullish) / Red (bearish) | Visual identification of breakout levels. |
| **Horizontal Line Thickness** | 1 | Line width for breakout visualization. |
| **VWAP Source** | hlc3 | Price source for VWAP calculation. |
| **VWAP Bands Multipliers** | 1×, 2×, 3× | Standard deviation multiples for intraday bands.
| **VWAP Daily Reset** | Enabled | Resets VWAP at the start of each trading day.
| **EMA Lengths** | 9, 13, 20, 33, 50 | Short, medium, and long-term EMAs to track intraday trend. |
| **Enable Bearish Signals** | True | Allows detection of bearish parabolic moves. |
|
MAxRSI Signals [KedArc Quant]Description
Indicator Shows fast/slow moving averages on the chart and prints LONG/SHORT signals when they cross. You can add an RSI filter to confirm signals. Optional higher-timeframe (HTF) smoothing and alert conditions are included.
How signals are made
* LONG: Fast MA crosses above Slow MA and (if enabled) RSI ≥ your “RSI Long Min”.
* SHORT: Fast MA crosses below Slow MA and (if enabled) RSI ≤ your “RSI Short Max”.
* If “Repaint-Safe” is ON, signals confirm at bar close to avoid repainting.
Inputs
* Fast MA / Slow MA Length
* MA Type: SMA / EMA / WMA / HMA
* RSI Filter (length + thresholds)
* Source: Usually close
* Optional HTF for MAs & RSI
* Show MAs / Show Signals toggles
* Repaint-Safe confirmation
* RSI Overlay (visual only)
* Alert Options
On the chart
* Green line = Fast MA, Red line = Slow MA
* Green “LONG” arrow below bar; Red “SHORT” arrow above bar
* Optional bar coloring in trend direction
* Optional RSI overlay line + thresholds
Alerts
* MAxRSI Long / Short fire on crossovers with RSI check
* Bullish/Bearish State fire when the trend flips
Tips
* If no signals appear, check that Fast < Slow and test with RSI filter off
* EMA/HMA often give smoother results
* Use larger MA lengths or HTF for swing setups
Notes & Usage
* Intraday trading: EMA(9–20) as Fast, EMA(50) as Slow is a common setup.
* Swing trading: EMA(20) as Fast, EMA(200) as Slow helps capture broader trend shifts.
* RSI filter works well with default 14 length and 50 level, but you can adjust (e.g., 55/45) for stricter confirmation.
* This script is flexible — test and adapt the settings to your asset and timeframe.
Acknowledgements
This indicator is built on TradingView’s built-in Pine Script v6 functions and features, including:
* `ta.sma`, `ta.ema`, `ta.wma` for moving averages
* Custom Hull MA formula built using `ta.wma`
* `ta.rsi` for Relative Strength Index filtering
* `ta.crossover`, `ta.crossunder` for signal logic
* `request.security` for higher-timeframe (HTF) data
* `plot`, `plotshape`, `barcolor` for visuals
* `alertcondition` for alerts
* General Pine Script v6 features: `input.*` controls, `math.*` helpers, `color.*` utilities
⚠️ Disclaimer
This script is provided for educational purposes only.
Past performance does not guarantee future results.
Trading involves risk, and users should exercise caution and use proper risk management when applying this strategy.
% of Average Volume% of Average Volume (RVOL)
What it is
This indicator measures cumulative volume during pre market and separately during the first 10 minutes of trading and compares it to the average 30 day volume. This matters as a high ratio of volume within the premarket and then during the first 10 minutes of trading can correlate to a stock that has a higher probability of trending in that direction throughout the day.
What it’s meant to do
Identify abnormally high or low participation early in the day.
Normalize volume by time of session, so 9:40 volume is compared to past 9:40 volume—not to the full-day total.
Provide consistent RVOL across 1–5–15–60 minute charts (the same market state yields similar readings).
Handle pre-market cleanly (optional) without inflating RVOL.
How it works (plain English)
Cumulative Intraday Volume: Adds up all bars from the session (or pre-market, if enabled) up to “now.”
Time-Matched Baseline: For each prior day in your lookback, it accumulates only up to the same intraday minute and averages those values.
RVOL %: RVOL = (Today cumulative / Average cumulative at same time) × 100.
This “like-for-like” approach prevents the classic mistakes that overstate RVOL in pre-market or make it drift with timeframe changes.
Works best on
Intraday charts: 1, 2, 3, 4, 5, 10, 15, 30, 45, 60 min
Regular & extended hours: NYSE/Nasdaq equities, futures, ETFs
Daily/weekly views are supported for reference, but the edge comes from intraday time-matched analysis.
Tip: For thin names or very early pre-market, expect more variability—lower liquidity increases noise.
Customization (Inputs → Settings)
Lookback Sessions (e.g., 20): How many prior trading days to build the average.
Include Pre-Market (on/off): If on, RVOL accumulates from pre-market start and compares to historical pre-market at the same time; if off, it begins at the regular session open only.
Session Timezone / Exchange Hours: Choose the session definition that matches your market (e.g., NYSE) so “time-matched” means the same thing every day.
Cutoff Minute (Optional): Fix a reference minute (e.g., 6:40 a.m. PT / 9:40 a.m. ET) to evaluate RVOL at a standard check-in time.
Smoothing (Optional): Apply a short moving average to the RVOL line to reduce jitter.
Thresholds & Colors: Set levels (e.g., 150%, 300%) to color the plot/labels and trigger alerts.
Show Labels/Debug: Toggle on-chart labels (current RVOL%, baseline vols) for quick audits.
On-chart visuals & alerts
RVOL% Line/Histogram: Color-coded by thresholds (e.g., >300% “exceptional”, >150% “elevated”).
Session Markers: Optional vertical lines for pre-market/regular open.
Alerts:
RVOL Crosses Above X% (e.g., 150%, 300%)
RVOL Crosses Below X%
RVOL Rising/Falling (slope-based, optional)
Good defaults to start
Lookback: 20 sessions
Pre-market: Off for large caps, On for momentum screens
Thresholds: 150% (notable), 300% (exceptional)
Smoothing: 0–3 bars (or off for fastest response)
Notes & best practices
Timeframe consistency: Because calculations are time-matched, RVOL should remain directionally consistent across intraday timeframes. If you see divergences, confirm your session hours & timezone match your instrument’s exchange.
Holiday/half days: These are included in history; you can shorten lookback or exclude such sessions if your workflow prefers.
Low-float names: Consider a slightly longer lookback to reduce outlier effects.
TL;DR
A time-matched RVOL that treats pre-market correctly, stays stable across intraday timeframes, and is fully customizable for your exchange hours, thresholds, and alerts—so you can spot real participation when it matters.
Perp Imbalance Zones • Pro (clean)USD Premium (perp vs spot) → (Perp − Spot) / Spot.
Imbalance (z-score of that premium) → how extreme the current premium is relative to its own history over lenPrem bars.
Hysteresis state machine → flips to a SHORT bias when perp-long pressure is extreme; flips to LONG bias when perp-short pressure is extreme. It exits only after the imbalance cools (prevents whipsaw).
Price stretch filter (±σ) → optional Bollinger check so signals only fire when price is already stretched.
HTF confirmation (optional) → require higher-timeframe imbalance to agree with the current-TF bias.
Gradient visuals → line + background tint deepen as |z| grows (more extreme pressure).
What you see on the pane
A single line (z):
Above 0 = perp richer than spot (perp longs pressing).
Below 0 = perp cheaper than spot (perp shorts pressing).
Guides: dotted levels at ±enterZ (entry) and ±exitZ (cool-off/exit).
Background tint:
Red when state = SHORT bias (perp longs heavy).
Blue when state = LONG bias (perp shorts heavy).
Tint intensity scales with |z| (via hotZ).
Labels (optional): prints when bias flips.
Alerts (optional): “Enter SHORT/LONG bias” and “Exit bias”.
How to use it (playbook)
Attach & set symbols
Put the script on your chart.
Set Spot symbol and Perp symbol to the venue you trade (e.g., BINANCE:BTCUSDT + BINANCE:BTCUSDTPERP).
Read the bias
SHORT bias (red background): perp longs over-extended. Look for short entries if price is at resistance, σ-stretched, or your PA system agrees.
LONG bias (blue background): perp shorts over-extended. Look for long entries at support/σ-stretched down.
Entries
Use the bias flip as a context/confirm. Combine with your structure trigger (OB/level sweep, rejection wick, micro-break in market structure, etc.).
If useSigma=true, only trade when price is already ≥ upper band (shorts) or ≤ lower band (longs).
Exits
Bias auto-exits when |z| falls below exitZ.
You can also take profits at your levels or when the line fades back toward 0 while price mean-reverts to the middle band.
Tuning (what each knob does)
enterZ / exitZ (signal strictness + hysteresis)
Higher enterZ → fewer, cleaner signals (e.g., 1.8–2.2).
exitZ should be lower than enterZ (e.g., 0.6–1.0) to prevent flicker.
lenPrem (context window for z)
Larger (50–100) = steadier baseline, fewer signals.
Smaller (20–30) = more reactive, more signals.
smoothLen (EMA on z)
2–3 = snappier; 5–7 = smoother/laggier but cleaner.
useSigma, bbLen, bbK (price-stretch filter)
On filters chop. Try bbLen=100, bbK=1.0–1.5.
Off if you want more frequent signals or you already gate with your own σ/Keltner.
useHTF, htfTF, htfZmin (trend/confirmation)
Turn on to require higher-TF imbalance agreement (e.g., trading 1H → confirm with 4H htfTF=240, htfZmin≈0.6–1.0).
hotZ (visual intensity)
Lower (2.0–2.5) heats up faster; higher (4.0) is more subtle.
Ready-made presets
Conservative swing (fewer, higher-conviction):
enterZ=2.0, exitZ=1.0, lenPrem=60–80, smoothLen=5, useSigma=true, bbK=1.5, useHTF=true (240/0.8).
Balanced intraday (default feel):
enterZ=1.6–1.8, exitZ=0.8–1.0, lenPrem=50, smoothLen=3–4, useSigma=true, bbK=1.0–1.25, useHTF=false/true depending on trendiness.
Aggressive scalping (more signals):
enterZ=1.2–1.4, exitZ=0.6–0.8, lenPrem=20–30, smoothLen=2–3, useSigma=false, useHTF=false.
Practical tips
Don’t trade the line in isolation. Use it to time trades into your levels: VWAP bands, Monday high/low, prior POC/VAH/VAL, order blocks, etc.
Perp-led reversals often snap—be ready to scale out quickly back to mid-bands.
Venue matters. Keep spot & perp from the same exchange family to avoid cross-venue quirks.
Alerts: enable after you’ve tuned thresholds for your timeframe so you only get high-quality pings.
Engulfing Candles Tarama// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © dipavcisi0007
//@version=5
indicator('Engulfing Candles Tarama', overlay=true)
longer = ta.sma(close, 50)
short = ta.sma(close, 20)
length1 = input(14)
price = close
length = input.int(20, minval=1)
ad = close == high and close == low or high == low ? 0 : (close - open) / (high - low) * volume
//ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = math.sum(ad, length) / math.sum(volume, length)
crsis = mf
openBarCurrent1 = open
closeBarCurrent1 = close
highBarCurrent1 = high
lowBarCurrent1 = low
volumeBarCurrent1 = volume
topvolumeBarCurrent1 = math.sum(volume , 50) / 50
BarOran1 = (closeBarCurrent1 - openBarCurrent1) / (highBarCurrent1 - lowBarCurrent1)
//BarOran1=(2*closeBarCurrent1-lowBarCurrent1-highBarCurrent1)/(highBarCurrent1-lowBarCurrent1)
openBarCurrent2 = open
closeBarCurrent2 = close
highBarCurrent2 = high
lowBarCurrent2 = low
volumeBarCurrent2 = volume
topvolumeBarCurrent2 = math.sum(volume , 50) / 50
BarOran2 = (closeBarCurrent2 - openBarCurrent2) / (highBarCurrent2 - lowBarCurrent2)
//BarOran2=(2*closeBarCurrent2-lowBarCurrent2-highBarCurrent2)/(highBarCurrent2-lowBarCurrent2)
openBarCurrent3 = open
closeBarCurrent3 = close
highBarCurrent3 = high
lowBarCurrent3 = low
volumeBarCurrent3 = volume
topvolumeBarCurrent3 = math.sum(volume , 50) / 50
BarOran3 = (closeBarCurrent3 - openBarCurrent3) / (highBarCurrent3 - lowBarCurrent3)
//BarOran3=(2*closeBarCurrent3-lowBarCurrent3-highBarCurrent3)/(highBarCurrent3-lowBarCurrent3)
cmi = 0.15
oran = 0.90
katsayi = 1.05
stoporan = 1
length2 = input(14)
price1 = close
vrsi = ta.rsi(price1, length2)
//If current bar open is less than equal to the previous bar close AND current bar open is less than previous bar open AND current bar close is greater than previous bar open THEN True
bullishEngulfing1 = BarOran1 > oran and BarOran1 * volumeBarCurrent1 > topvolumeBarCurrent1 * katsayi and crsis > cmi and close > highBarCurrent1
//If current bar open is greater than equal to previous bar close AND current bar open is greater than previous bar open AND current bar close is less than previous bar open THEN True
bullishEngulfing2 = BarOran2 > oran and BarOran2 * volumeBarCurrent2 > topvolumeBarCurrent2 * katsayi and crsis > cmi and close > highBarCurrent2
//If current bar open is greater than equal to previous bar close AND current bar open is greater than previous bar open AND current bar close is less than previous bar open THEN True
bullishEngulfing3 = BarOran3 > oran and BarOran3 * volumeBarCurrent3 > topvolumeBarCurrent3 * katsayi and crsis > cmi and close > highBarCurrent3
var K1 = 0.0
res = input.timeframe(title='Time Frame', defval='D')
if bullishEngulfing1
K1 := lowBarCurrent1
else if bullishEngulfing2
K1 := lowBarCurrent2
else if bullishEngulfing3
K1 := lowBarCurrent3
plot(K1, linewidth=2, color=color.new(color.purple, 0), title='TSL')
//bullishEngulfing/bearishEngulfing return a value of 1 or 0; if 1 then plot on chart, if 0 then don't plot
plotshape(bullishEngulfing1 or bullishEngulfing2 or bullishEngulfing3, style=shape.triangleup, location=location.belowbar, color=color.new(#43A047, 0), size=size.tiny)
////////////////////////
grupSec = input.string(defval='1', options= , group='Taraması yapılacak 40\'arlı gruplardan birini seçin', title='Grup seç')
per = input.timeframe(defval='', title='PERİYOT',group = "Tarama yapmak istediğiniz periyotu seçin")
func() =>
cond = bullishEngulfing1 or bullishEngulfing2 or bullishEngulfing3
//GRUP VE TARANACAK HİSSE SAYISINI AYNI ÅEKİLDE DİLEDİÄİNİZ GİBİ ARTIRABİLİRSİNİZ.
a01 = grupSec == '1' ? 'BIST:A1CAP' : grupSec == '2' ? 'BIST:ANSGR' : grupSec == '3' ? 'BIST:BEYAZ' : grupSec == '4' ? 'BIST:CEMZY' : grupSec == '5' ? 'BIST:DURKN' : grupSec == '6' ? 'BIST:EUYO' : grupSec == '7' ? 'BIST:HALKB' : grupSec == '8' ? 'BIST:ISGYO' : grupSec == '9' ? 'BIST:KOPOL' : grupSec == '10' ? 'BIST:MARKA' : grupSec == '11' ? 'BIST:ONCSM' : grupSec == '12' ? 'BIST:POLTK' : grupSec == '13' ? 'BIST:SISE' : grupSec == '14' ? 'BIST:TOASO' : grupSec == '15' ? 'BIST:YBTAS' : na
a02 = grupSec == '1' ? 'BIST:ACSEL' : grupSec == '2' ? 'BIST:ARASE' : grupSec == '3' ? 'BIST:BFREN' : grupSec == '4' ? 'BIST:CEOEM' : grupSec == '5' ? 'BIST:DYOBY' : grupSec == '6' ? 'BIST:EYGYO' : grupSec == '7' ? 'BIST:HATEK' : grupSec == '8' ? 'BIST:ISKPL' : grupSec == '9' ? 'BIST:KORDS' : grupSec == '10' ? 'BIST:MARTI' : grupSec == '11' ? 'BIST:ONRYT' : grupSec == '12' ? 'BIST:PRDGS' : grupSec == '13' ? 'BIST:SKBNK' : grupSec == '14' ? 'BIST:TRCAS' : grupSec == '15' ? 'BIST:YEOTK' : na
a03 = grupSec == '1' ? 'BIST:ADEL' : grupSec == '2' ? 'BIST:ARCLK' : grupSec == '3' ? 'BIST:BIENY' : grupSec == '4' ? 'BIST:CIMSA' : grupSec == '5' ? 'BIST:DZGYO' : grupSec == '6' ? 'BIST:FADE' : grupSec == '7' ? 'BIST:HATSN' : grupSec == '8' ? 'BIST:ISKUR' : grupSec == '9' ? 'BIST:KOTON' : grupSec == '10' ? 'BIST:MAVI' : grupSec == '11' ? 'BIST:ORCAY' : grupSec == '12' ? 'BIST:PRKAB' : grupSec == '13' ? 'BIST:SKTAS' : grupSec == '14' ? 'BIST:TRGYO' : grupSec == '15' ? 'BIST:YESIL' : na
a04 = grupSec == '1' ? 'BIST:ADESE' : grupSec == '2' ? 'BIST:ARDYZ' : grupSec == '3' ? 'BIST:BIGCH' : grupSec == '4' ? 'BIST:CLEBI' : grupSec == '5' ? 'BIST:EBEBK' : grupSec == '6' ? 'BIST:FENER' : grupSec == '7' ? 'BIST:HDFGS' : grupSec == '8' ? 'BIST:ISMEN' : grupSec == '9' ? 'BIST:KOZAA' : grupSec == '10' ? 'BIST:MEDTR' : grupSec == '11' ? 'BIST:ORGE' : grupSec == '12' ? 'BIST:PRKME' : grupSec == '13' ? 'BIST:SKYLP' : grupSec == '14' ? 'BIST:TRILC' : grupSec == '15' ? 'BIST:YGGYO' : na
a05 = grupSec == '1' ? 'BIST:ADGYO' : grupSec == '2' ? 'BIST:ARENA' : grupSec == '3' ? 'BIST:BIMAS' : grupSec == '4' ? 'BIST:CMBTN' : grupSec == '5' ? 'BIST:ECILC' : grupSec == '6' ? 'BIST:FLAP' : grupSec == '7' ? 'BIST:HEDEF' : grupSec == '8' ? 'BIST:ISSEN' : grupSec == '9' ? 'BIST:KOZAL' : grupSec == '10' ? 'BIST:MEGAP' : grupSec == '11' ? 'BIST:ORMA' : grupSec == '12' ? 'BIST:PRZMA' : grupSec == '13' ? 'BIST:SKYMD' : grupSec == '14' ? 'BIST:TSGYO' : grupSec == '15' ? 'BIST:YGYO' : na
a06 = grupSec == '1' ? 'BIST:AEFES' : grupSec == '2' ? 'BIST:ARSAN' : grupSec == '3' ? 'BIST:BINBN' : grupSec == '4' ? 'BIST:CMENT' : grupSec == '5' ? 'BIST:ECZYT' : grupSec == '6' ? 'BIST:FMIZP' : grupSec == '7' ? 'BIST:HEKTS' : grupSec == '8' ? 'BIST:ISYAT' : grupSec == '9' ? 'BIST:KRDMA' : grupSec == '10' ? 'BIST:MEGMT' : grupSec == '11' ? 'BIST:OSMEN' : grupSec == '12' ? 'BIST:PSDTC' : grupSec == '13' ? 'BIST:SMART' : grupSec == '14' ? 'BIST:TSKB' : grupSec == '15' ? 'BIST:YIGIT' : na
a07 = grupSec == '1' ? 'BIST:AFYON' : grupSec == '2' ? 'BIST:ARTMS' : grupSec == '3' ? 'BIST:BINHO' : grupSec == '4' ? 'BIST:CONSE' : grupSec == '5' ? 'BIST:EDATA' : grupSec == '6' ? 'BIST:FONET' : grupSec == '7' ? 'BIST:HKTM' : grupSec == '8' ? 'BIST:IZENR' : grupSec == '9' ? 'BIST:KRDMB' : grupSec == '10' ? 'BIST:MEKAG' : grupSec == '11' ? 'BIST:OSTIM' : grupSec == '12' ? 'BIST:PSGYO' : grupSec == '13' ? 'BIST:SMRTG' : grupSec == '14' ? 'BIST:TSPOR' : grupSec == '15' ? 'BIST:YKBNK' : na
a08 = grupSec == '1' ? 'BIST:AGESA' : grupSec == '2' ? 'BIST:ARZUM' : grupSec == '3' ? 'BIST:BIOEN' : grupSec == '4' ? 'BIST:COSMO' : grupSec == '5' ? 'BIST:EDIP' : grupSec == '6' ? 'BIST:FORMT' : grupSec == '7' ? 'BIST:HLGYO' : grupSec == '8' ? 'BIST:IZFAS' : grupSec == '9' ? 'BIST:KRDMD' : grupSec == '10' ? 'BIST:MEPET' : grupSec == '11' ? 'BIST:OTKAR' : grupSec == '12' ? 'BIST:QNBFK' : grupSec == '13' ? 'BIST:SNGYO' : grupSec == '14' ? 'BIST:TTKOM' : grupSec == '15' ? 'BIST:YKSLN' : na
a09 = grupSec == '1' ? 'BIST:AGHOL' : grupSec == '2' ? 'BIST:ASELS' : grupSec == '3' ? 'BIST:BIZIM' : grupSec == '4' ? 'BIST:CRDFA' : grupSec == '5' ? 'BIST:EFORC' : grupSec == '6' ? 'BIST:FORTE' : grupSec == '7' ? 'BIST:HOROZ' : grupSec == '8' ? 'BIST:IZINV' : grupSec == '9' ? 'BIST:KRGYO' : grupSec == '10' ? 'BIST:MERCN' : grupSec == '11' ? 'BIST:OTTO' : grupSec == '12' ? 'BIST:QNBTR' : grupSec == '13' ? 'BIST:SNICA' : grupSec == '14' ? 'BIST:TTRAK' : grupSec == '15' ? 'BIST:YONGA' : na
a10 = grupSec == '1' ? 'BIST:AGROT' : grupSec == '2' ? 'BIST:ASGYO' : grupSec == '3' ? 'BIST:BJKAS' : grupSec == '4' ? 'BIST:CRFSA' : grupSec == '5' ? 'BIST:EGEEN' : grupSec == '6' ? 'BIST:FRIGO' : grupSec == '7' ? 'BIST:HRKET' : grupSec == '8' ? 'BIST:IZMDC' : grupSec == '9' ? 'BIST:KRONT' : grupSec == '10' ? 'BIST:MERIT' : grupSec == '11' ? 'BIST:OYAKC' : grupSec == '12' ? 'BIST:QUAGR' : grupSec == '13' ? 'BIST:SNKRN' : grupSec == '14' ? 'BIST:TUCLK' : grupSec == '15' ? 'BIST:YUNSA' : na
a11 = grupSec == '1' ? 'BIST:AGYO' : grupSec == '2' ? 'BIST:ASTOR' : grupSec == '3' ? 'BIST:BLCYT' : grupSec == '4' ? 'BIST:CUSAN' : grupSec == '5' ? 'BIST:EGEPO' : grupSec == '6' ? 'BIST:FROTO' : grupSec == '7' ? 'BIST:HTTBT' : grupSec == '8' ? 'BIST:JANTS' : grupSec == '9' ? 'BIST:KRPLS' : grupSec == '10' ? 'BIST:MERKO' : grupSec == '11' ? 'BIST:OYAYO' : grupSec == '12' ? 'BIST:RALYH' : grupSec == '13' ? 'BIST:SNPAM' : grupSec == '14' ? 'BIST:TUKAS' : grupSec == '15' ? 'BIST:YYAPI' : na
a12 = grupSec == '1' ? 'BIST:AHGAZ' : grupSec == '2' ? 'BIST:ASUZU' : grupSec == '3' ? 'BIST:BMSCH' : grupSec == '4' ? 'BIST:CVKMD' : grupSec == '5' ? 'BIST:EGGUB' : grupSec == '6' ? 'BIST:FZLGY' : grupSec == '7' ? 'BIST:HUBVC' : grupSec == '8' ? 'BIST:KAPLM' : grupSec == '9' ? 'BIST:KRSTL' : grupSec == '10' ? 'BIST:METRO' : grupSec == '11' ? 'BIST:OYLUM' : grupSec == '12' ? 'BIST:RAYSG' : grupSec == '13' ? 'BIST:SODSN' : grupSec == '14' ? 'BIST:TUPRS' : grupSec == '15' ? 'BIST:YYLGD' : na
a13 = grupSec == '1' ? 'BIST:AHSGY' : grupSec == '2' ? 'BIST:ATAGY' : grupSec == '3' ? 'BIST:BMSTL' : grupSec == '4' ? 'BIST:CWENE' : grupSec == '5' ? 'BIST:EGPRO' : grupSec == '6' ? 'BIST:GARAN' : grupSec == '7' ? 'BIST:HUNER' : grupSec == '8' ? 'BIST:KAREL' : grupSec == '9' ? 'BIST:KRTEK' : grupSec == '10' ? 'BIST:METUR' : grupSec == '11' ? 'BIST:OYYAT' : grupSec == '12' ? 'BIST:REEDR' : grupSec == '13' ? 'BIST:SOKE' : grupSec == '14' ? 'BIST:TUREX' : grupSec == '15' ? 'BIST:ZEDUR' : na
a14 = grupSec == '1' ? 'BIST:AKBNK' : grupSec == '2' ? 'BIST:ATAKP' : grupSec == '3' ? 'BIST:BNTAS' : grupSec == '4' ? 'BIST:DAGHL' : grupSec == '5' ? 'BIST:EGSER' : grupSec == '6' ? 'BIST:GARFA' : grupSec == '7' ? 'BIST:HURGZ' : grupSec == '8' ? 'BIST:KARSN' : grupSec == '9' ? 'BIST:KRVGD' : grupSec == '10' ? 'BIST:MGROS' : grupSec == '11' ? 'BIST:OZATD' : grupSec == '12' ? 'BIST:RGYAS' : grupSec == '13' ? 'BIST:SOKM' : grupSec == '14' ? 'BIST:TURGG' : grupSec == '15' ? 'BIST:ZOREN' : na
a15 = grupSec == '1' ? 'BIST:AKCNS' : grupSec == '2' ? 'BIST:ATATP' : grupSec == '3' ? 'BIST:BOBET' : grupSec == '4' ? 'BIST:DAGI' : grupSec == '5' ? 'BIST:EKGYO' : grupSec == '6' ? 'BIST:GEDIK' : grupSec == '7' ? 'BIST:ICBCT' : grupSec == '8' ? 'BIST:KARTN' : grupSec == '9' ? 'BIST:KSTUR' : grupSec == '10' ? 'BIST:MHRGY' : grupSec == '11' ? 'BIST:OZGYO' : grupSec == '12' ? 'BIST:RNPOL' : grupSec == '13' ? 'BIST:SONME' : grupSec == '14' ? 'BIST:TURSG' : grupSec == '15' ? 'BIST:ZRGYO' : na
a16 = grupSec == '1' ? 'BIST:AKENR' : grupSec == '2' ? 'BIST:ATEKS' : grupSec == '3' ? 'BIST:BORLS' : grupSec == '4' ? 'BIST:DAPGM' : grupSec == '5' ? 'BIST:EKIZ' : grupSec == '6' ? 'BIST:GEDZA' : grupSec == '7' ? 'BIST:ICUGS' : grupSec == '8' ? 'BIST:KARYE' : grupSec == '9' ? 'BIST:KTLEV' : grupSec == '10' ? 'BIST:MIATK' : grupSec == '11' ? 'BIST:OZKGY' : grupSec == '12' ? 'BIST:RODRG' : grupSec == '13' ? 'BIST:SRVGY' : grupSec == '14' ? 'BIST:UFUK' : grupSec == '15' ? 'BIST:AKFIS' :na
a17 = grupSec == '1' ? 'BIST:AKFGY' : grupSec == '2' ? 'BIST:ATLAS' : grupSec == '3' ? 'BIST:BORSK' : grupSec == '4' ? 'BIST:DARDL' : grupSec == '5' ? 'BIST:EKOS' : grupSec == '6' ? 'BIST:GENIL' : grupSec == '7' ? 'BIST:IDGYO' : grupSec == '8' ? 'BIST:KATMR' : grupSec == '9' ? 'BIST:KTSKR' : grupSec == '10' ? 'BIST:MMCAS' : grupSec == '11' ? 'BIST:OZRDN' : grupSec == '12' ? 'BIST:ROYAL' : grupSec == '13' ? 'BIST:SUMAS' : grupSec == '14' ? 'BIST:ULAS' : grupSec == '15' ? 'BIST:ARMGD': na
a18 = grupSec == '1' ? 'BIST:AKFYE' : grupSec == '2' ? 'BIST:ATSYH' : grupSec == '3' ? 'BIST:BOSSA' : grupSec == '4' ? 'BIST:DCTTR' : grupSec == '5' ? 'BIST:EKSUN' : grupSec == '6' ? 'BIST:GENTS' : grupSec == '7' ? 'BIST:IEYHO' : grupSec == '8' ? 'BIST:KAYSE' : grupSec == '9' ? 'BIST:KUTPO' : grupSec == '10' ? 'BIST:MNDRS' : grupSec == '11' ? 'BIST:OZSUB' : grupSec == '12' ? 'BIST:RTALB' : grupSec == '13' ? 'BIST:SUNTK' : grupSec == '14' ? 'BIST:ULKER' : grupSec == '15' ? 'BIST:BALSU': na
a19 = grupSec == '1' ? 'BIST:AKGRT' : grupSec == '2' ? 'BIST:AVGYO' : grupSec == '3' ? 'BIST:BRISA' : grupSec == '4' ? 'BIST:DENGE' : grupSec == '5' ? 'BIST:ELITE' : grupSec == '6' ? 'BIST:GEREL' : grupSec == '7' ? 'BIST:IHAAS' : grupSec == '8' ? 'BIST:KBORU' : grupSec == '9' ? 'BIST:KUVVA' : grupSec == '10' ? 'BIST:MNDTR' : grupSec == '11' ? 'BIST:OZYSR' : grupSec == '12' ? 'BIST:RUBNS' : grupSec == '13' ? 'BIST:SURGY' : grupSec == '14' ? 'BIST:ULUFA' : grupSec == '15' ? 'BIST:BESLR':na
a20 = grupSec == '1' ? 'BIST:AKMGY' : grupSec == '2' ? 'BIST:AVHOL' : grupSec == '3' ? 'BIST:BRKO' : grupSec == '4' ? 'BIST:DERHL' : grupSec == '5' ? 'BIST:EMKEL' : grupSec == '6' ? 'BIST:GESAN' : grupSec == '7' ? 'BIST:IHEVA' : grupSec == '8' ? 'BIST:KCAER' : grupSec == '9' ? 'BIST:KUYAS' : grupSec == '10' ? 'BIST:MOBTL' : grupSec == '11' ? 'BIST:PAGYO' : grupSec == '12' ? 'BIST:RYGYO' : grupSec == '13' ? 'BIST:SUWEN' : grupSec == '14' ? 'BIST:ULUSE' : grupSec == '15' ? 'BIST:DSTKF': na
a21 = grupSec == '1' ? 'BIST:AKSA' : grupSec == '2' ? 'BIST:AVOD' : grupSec == '3' ? 'BIST:BRKSN' : grupSec == '4' ? 'BIST:DERIM' : grupSec == '5' ? 'BIST:EMNIS' : grupSec == '6' ? 'BIST:GIPTA' : grupSec == '7' ? 'BIST:IHGZT' : grupSec == '8' ? 'BIST:KCHOL' : grupSec == '9' ? 'BIST:KZBGY' : grupSec == '10' ? 'BIST:MOGAN' : grupSec == '11' ? 'BIST:PAMEL' : grupSec == '12' ? 'BIST:RYSAS' : grupSec == '13' ? 'BIST:TABGD' : grupSec == '14' ? 'BIST:ULUUN' : grupSec == '15' ? 'BIST:GLRMK': na
a22 = grupSec == '1' ? 'BIST:AKSEN' : grupSec == '2' ? 'BIST:AVPGY' : grupSec == '3' ? 'BIST:BRKVY' : grupSec == '4' ? 'BIST:DESA' : grupSec == '5' ? 'BIST:ENERY' : grupSec == '6' ? 'BIST:GLBMD' : grupSec == '7' ? 'BIST:IHLAS' : grupSec == '8' ? 'BIST:KENT' : grupSec == '9' ? 'BIST:KZGYO' : grupSec == '10' ? 'BIST:MPARK' : grupSec == '11' ? 'BIST:PAPIL' : grupSec == '12' ? 'BIST:SAFKR' : grupSec == '13' ? 'BIST:TARKM' : grupSec == '14' ? 'BIST:UMPAS' : grupSec == '15' ? 'BIST:KLYPV': na
a23 = grupSec == '1' ? 'BIST:AKSGY' : grupSec == '2' ? 'BIST:AVTUR' : grupSec == '3' ? 'BIST:BRLSM' : grupSec == '4' ? 'BIST:DESPC' : grupSec == '5' ? 'BIST:ENJSA' : grupSec == '6' ? 'BIST:GLCVY' : grupSec == '7' ? 'BIST:IHLGM' : grupSec == '8' ? 'BIST:KERVN' : grupSec == '9' ? 'BIST:LIDER' : grupSec == '10' ? 'BIST:MRGYO' : grupSec == '11' ? 'BIST:PARSN' : grupSec == '12' ? 'BIST:SAHOL' : grupSec == '13' ? 'BIST:TATEN' : grupSec == '14' ? 'BIST:UNLU' :grupSec == '15' ? 'BIST:MOPAS': na
a24 = grupSec == '1' ? 'BIST:AKSUE' : grupSec == '2' ? 'BIST:AYCES' : grupSec == '3' ? 'BIST:BRMEN' : grupSec == '4' ? 'BIST:DEVA' : grupSec == '5' ? 'BIST:ENKAI' : grupSec == '6' ? 'BIST:GLRYH' : grupSec == '7' ? 'BIST:IHYAY' : grupSec == '8' ? 'BIST:LIDFA' : grupSec == '10' ? 'BIST:MRSHL' : grupSec == '11' ? 'BIST:PASEU' : grupSec == '12' ? 'BIST:SAMAT' : grupSec == '13' ? 'BIST:TATGD' : grupSec == '14' ? 'BIST:USAK' : grupSec == '15' ? 'BIST:A1YEN': na
a25 = grupSec == '1' ? 'BIST:AKYHO' : grupSec == '2' ? 'BIST:AYDEM' : grupSec == '3' ? 'BIST:BRSAN' : grupSec == '4' ? 'BIST:DGATE' : grupSec == '5' ? 'BIST:ENSRI' : grupSec == '6' ? 'BIST:GLYHO' : grupSec == '7' ? 'BIST:IMASM' : grupSec == '8' ? 'BIST:KFEIN' : grupSec == '9' ? 'BIST:LILAK' : grupSec == '10' ? 'BIST:MSGYO' : grupSec == '11' ? 'BIST:PATEK' : grupSec == '12' ? 'BIST:SANEL' : grupSec == '13' ? 'BIST:TAVHL' : grupSec == '14' ? 'BIST:VAKBN' : grupSec == '15' ? 'BIST:BIGEN': na
a26 = grupSec == '1' ? 'BIST:ALARK' : grupSec == '2' ? 'BIST:AYEN' : grupSec == '3' ? 'BIST:BRYAT' : grupSec == '4' ? 'BIST:DGGYO' : grupSec == '5' ? 'BIST:ENTRA' : grupSec == '6' ? 'BIST:GMTAS' : grupSec == '7' ? 'BIST:INDES' : grupSec == '8' ? 'BIST:KGYO' : grupSec == '9' ? 'BIST:LINK' : grupSec == '10' ? 'BIST:MTRKS' : grupSec == '11' ? 'BIST:PCILT' : grupSec == '12' ? 'BIST:SANFM' : grupSec == '13' ? 'BIST:TBORG' : grupSec == '14' ? 'BIST:VAKFN' : grupSec == '15' ? 'BIST:BULGS': na
a27 = grupSec == '1' ? 'BIST:ALBRK' : grupSec == '2' ? 'BIST:AYES' : grupSec == '3' ? 'BIST:BSOKE' : grupSec == '4' ? 'BIST:DGNMO' : grupSec == '5' ? 'BIST:EPLAS' : grupSec == '6' ? 'BIST:GOKNR' : grupSec == '7' ? 'BIST:INFO' : grupSec == '8' ? 'BIST:KIMMR' : grupSec == '9' ? 'BIST:LKMNH' : grupSec == '10' ? 'BIST:MTRYO' : grupSec == '11' ? 'BIST:PEHOL' : grupSec == '12' ? 'BIST:SANKO' : grupSec == '13' ? 'BIST:TCELL' : grupSec == '14' ? 'BIST:VAKKO' : grupSec == '15' ? 'BIST:CGCAM': na
a28 = grupSec == '1' ? 'BIST:ALCAR' : grupSec == '2' ? 'BIST:AYGAZ' : grupSec == '3' ? 'BIST:BTCIM' : grupSec == '4' ? 'BIST:DIRIT' : grupSec == '5' ? 'BIST:ERBOS' : grupSec == '6' ? 'BIST:GOLTS' : grupSec == '7' ? 'BIST:INGRM' : grupSec == '8' ? 'BIST:KLGYO' : grupSec == '9' ? 'BIST:LMKDC' : grupSec == '10' ? 'BIST:MZHLD' : grupSec == '11' ? 'BIST:PEKGY' : grupSec == '12' ? 'BIST:SARKY' : grupSec == '13' ? 'BIST:TCKRC' : grupSec == '14' ? 'BIST:VANGD' : grupSec == '15' ? 'BIST:EGEGY': na
a29 = grupSec == '1' ? 'BIST:ALCTL' : grupSec == '2' ? 'BIST:AZTEK' : grupSec == '3' ? 'BIST:BUCIM' : grupSec == '4' ? 'BIST:DITAS' : grupSec == '5' ? 'BIST:ERCB' : grupSec == '6' ? 'BIST:GOODY' : grupSec == '7' ? 'BIST:INTEK' : grupSec == '8' ? 'BIST:KLKIM' : grupSec == '9' ? 'BIST:LOGO' : grupSec == '10' ? 'BIST:NATEN' : grupSec == '11' ? 'BIST:PENGD' : grupSec == '12' ? 'BIST:SASA' : grupSec == '13' ? 'BIST:TDGYO' : grupSec == '14' ? 'BIST:VBTYZ' : grupSec == '15' ? 'BIST:ENDAE':na
a30 = grupSec == '1' ? 'BIST:ALFAS' : grupSec == '2' ? 'BIST:BAGFS' : grupSec == '3' ? 'BIST:BURCE' : grupSec == '4' ? 'BIST:DMRGD' : grupSec == '5' ? 'BIST:EREGL' : grupSec == '6' ? 'BIST:GOZDE' : grupSec == '7' ? 'BIST:INTEM' : grupSec == '8' ? 'BIST:KLMSN' : grupSec == '9' ? 'BIST:LRSHO' : grupSec == '10' ? 'BIST:NETAS' : grupSec == '11' ? 'BIST:PENTA' : grupSec == '12' ? 'BIST:SAYAS' : grupSec == '13' ? 'BIST:TEKTU' : grupSec == '14' ? 'BIST:VERTU' : grupSec == '15' ? 'BIST:RUZYE': na
a31 = grupSec == '1' ? 'BIST:ALGYO' : grupSec == '2' ? 'BIST:BAHKM' : grupSec == '3' ? 'BIST:BURVA' : grupSec == '4' ? 'BIST:DMSAS' : grupSec == '5' ? 'BIST:ERSU' : grupSec == '6' ? 'BIST:GRNYO' : grupSec == '7' ? 'BIST:INVEO' : grupSec == '8' ? 'BIST:KLNMA' : grupSec == '9' ? 'BIST:LUKSK' : grupSec == '10' ? 'BIST:NIBAS' : grupSec == '11' ? 'BIST:PETKM' : grupSec == '12' ? 'BIST:SDTTR' : grupSec == '13' ? 'BIST:TERA' : grupSec == '14' ? 'BIST:VERUS' : grupSec == '15' ? 'BIST:SERNT': na
a32 = grupSec == '1' ? 'BIST:ALKA' : grupSec == '2' ? 'BIST:BAKAB' : grupSec == '3' ? 'BIST:BVSAN' : grupSec == '4' ? 'BIST:DNISI' : grupSec == '5' ? 'BIST:ESCAR' : grupSec == '6' ? 'BIST:GRSEL' : grupSec == '7' ? 'BIST:INVES' : grupSec == '8' ? 'BIST:KLRHO' : grupSec == '9' ? 'BIST:LYDHO' : grupSec == '10' ? 'BIST:NTGAZ' : grupSec == '11' ? 'BIST:PETUN' : grupSec == '12' ? 'BIST:SEGMN' : grupSec == '13' ? 'BIST:TEZOL' : grupSec == '14' ? 'BIST:VESBE' : grupSec == '15' ? 'BIST:SMRVA':na
a33 = grupSec == '1' ? 'BIST:ALKIM' : grupSec == '2' ? 'BIST:BALAT' : grupSec == '3' ? 'BIST:BYDNR' : grupSec == '4' ? 'BIST:DOAS' : grupSec == '5' ? 'BIST:ESCOM' : grupSec == '6' ? 'BIST:GRTHO' : grupSec == '7' ? 'BIST:IPEKE' : grupSec == '8' ? 'BIST:KLSER' : grupSec == '9' ? 'BIST:LYDYE' : grupSec == '10' ? 'BIST:NTHOL' : grupSec == '11' ? 'BIST:PGSUS' : grupSec == '12' ? 'BIST:SEGYO' : grupSec == '13' ? 'BIST:TGSAS' : grupSec == '14' ? 'BIST:VESTL' : grupSec == '15' ? 'BIST:VSNMD':na
a34 = grupSec == '1' ? 'BIST:ALKLC' : grupSec == '2' ? 'BIST:BANVT' : grupSec == '3' ? 'BIST:CANTE' : grupSec == '4' ? 'BIST:DOBUR' : grupSec == '5' ? 'BIST:ESEN' : grupSec == '6' ? 'BIST:GSDDE' : grupSec == '7' ? 'BIST:ISATR' : grupSec == '8' ? 'BIST:KLSYN' : grupSec == '9' ? 'BIST:MAALT' : grupSec == '10' ? 'BIST:NUGYO' : grupSec == '11' ? 'BIST:PINSU' : grupSec == '12' ? 'BIST:SEKFK' : grupSec == '13' ? 'BIST:THYAO' : grupSec == '14' ? 'BIST:VKFYO' : na
a35 = grupSec == '1' ? 'BIST:ALMAD' : grupSec == '2' ? 'BIST:BARMA' : grupSec == '3' ? 'BIST:CASA' : grupSec == '4' ? 'BIST:DOCO' : grupSec == '5' ? 'BIST:ETILR' : grupSec == '6' ? 'BIST:GSDHO' : grupSec == '7' ? 'BIST:ISBIR' : grupSec == '8' ? 'BIST:KMPUR' : grupSec == '9' ? 'BIST:MACKO' : grupSec == '10' ? 'BIST:NUHCM' : grupSec == '11' ? 'BIST:PKART' : grupSec == '12' ? 'BIST:SEKUR' : grupSec == '13' ? 'BIST:TKFEN' : grupSec == '14' ? 'BIST:VKGYO' : na
a36 = grupSec == '1' ? 'BIST:ALTNY' : grupSec == '2' ? 'BIST:BASCM' : grupSec == '3' ? 'BIST:CATES' : grupSec == '4' ? 'BIST:DOFER' : grupSec == '5' ? 'BIST:ETYAT' : grupSec == '6' ? 'BIST:GSRAY' : grupSec == '7' ? 'BIST:ISBTR' : grupSec == '8' ? 'BIST:KNFRT' : grupSec == '9' ? 'BIST:MAGEN' : grupSec == '10' ? 'BIST:OBAMS' : grupSec == '11' ? 'BIST:PKENT' : grupSec == '12' ? 'BIST:SELEC' : grupSec == '13' ? 'BIST:TKNSA' : grupSec == '14' ? 'BIST:VKING' : na
a37 = grupSec == '1' ? 'BIST:ALVES' : grupSec == '2' ? 'BIST:BASGZ' : grupSec == '3' ? 'BIST:CCOLA' : grupSec == '4' ? 'BIST:DOGUB' : grupSec == '5' ? 'BIST:EUHOL' : grupSec == '6' ? 'BIST:GUBRF' : grupSec == '7' ? 'BIST:ISCTR' : grupSec == '8' ? 'BIST:KOCMT' : grupSec == '9' ? 'BIST:MAKIM' : grupSec == '10' ? 'BIST:OBASE' : grupSec == '11' ? 'BIST:PLTUR' : grupSec == '12' ? 'BIST:SELGD' : grupSec == '13' ? 'BIST:TLMAN' : grupSec == '14' ? 'BIST:VRGYO' : na
a38 = grupSec == '1' ? 'BIST:ANELE' : grupSec == '2' ? 'BIST:BAYRK' : grupSec == '3' ? 'BIST:CELHA' : grupSec == '4' ? 'BIST:DOHOL' : grupSec == '5' ? 'BIST:EUKYO' : grupSec == '6' ? 'BIST:GUNDG' : grupSec == '7' ? 'BIST:ISDMR' : grupSec == '8' ? 'BIST:KONKA' : grupSec == '9' ? 'BIST:MAKTK' : grupSec == '10' ? 'BIST:ODAS' : grupSec == '11' ? 'BIST:PNLSN' : grupSec == '12' ? 'BIST:SELVA' : grupSec == '13' ? 'BIST:TMPOL' : grupSec == '14' ? 'BIST:YAPRK' : na
a39 = grupSec == '1' ? 'BIST:ANGEN' : grupSec == '2' ? 'BIST:BEGYO' : grupSec == '3' ? 'BIST:CEMAS' : grupSec == '4' ? 'BIST:DOKTA' : grupSec == '5' ? 'BIST:EUPWR' : grupSec == '6' ? 'BIST:GWIND' : grupSec == '7' ? 'BIST:ISFIN' : grupSec == '8' ? 'BIST:KONTR' : grupSec == '9' ? 'BIST:MANAS' : grupSec == '10' ? 'BIST:ODINE' : grupSec == '11' ? 'BIST:PNSUT' : grupSec == '12' ? 'BIST:SEYKM' : grupSec == '13' ? 'BIST:TMSN' : grupSec == '14' ? 'BIST:YATAS' : na
a40 = grupSec == '1' ? 'BIST:ANHYT' : grupSec == '2' ? 'BIST:BERA' : grupSec == '3' ? 'BIST:CEMTS' : grupSec == '4' ? 'BIST:DURDO' : grupSec == '5' ? 'BIST:EUREN' : grupSec == '6' ? 'BIST:GZNMI' : grupSec == '7' ? 'BIST:ISGSY' : grupSec == '8' ? 'BIST:KONYA' : grupSec == '9' ? 'BIST:MARBL' : grupSec == '10' ? 'BIST:OFSYM' : grupSec == '11' ? 'BIST:POLHO' : grupSec == '12' ? 'BIST:SILVR' : grupSec == '13' ? 'BIST:TNZTP' : grupSec == '14' ? 'BIST:YAYLA' : na
= request.security(a01, per, func())
= request.security(a02, per, func())
= request.security(a03, per, func())
= request.security(a04, per, func())
= request.security(a05, per, func())
= request.security(a06, per, func())
= request.security(a07, per, func())
= request.security(a08, per, func())
= request.security(a09, per, func())
= request.security(a10, per, func())
= request.security(a11, per, func())
= request.security(a12, per, func())
= request.security(a13, per, func())
= request.security(a14, per, func())
= request.security(a15, per, func())
= request.security(a16, per, func())
= request.security(a17, per, func())
= request.security(a18, per, func())
= request.security(a19, per, func())
= request.security(a20, per, func())
= request.security(a21, per, func())
= request.security(a22, per, func())
= request.security(a23, per, func())
= request.security(a24, per, func())
= request.security(a25, per, func())
= request.security(a26, per, func())
= request.security(a27, per, func())
= request.security(a28, per, func())
= request.security(a29, per, func())
= request.security(a30, per, func())
= request.security(a31, per, func())
= request.security(a32, per, func())
= request.security(a33, per, func())
= request.security(a34, per, func())
= request.security(a35, per, func())
= request.security(a36, per, func())
= request.security(a37, per, func())
= request.security(a38, per, func())
= request.security(a39, per, func())
= request.security(a40, per, func())
roundn(x, n) =>
mult = 1
if n != 0
for i = 1 to math.abs(n) by 1
mult *= 10
mult
n >= 0 ? math.round(x * mult) / mult : math.round(x / mult) * mult
scr_label = 'TARAMA\n'
scr_label := s1 ? scr_label + syminfo.ticker(a01) + ' ' + str.tostring(roundn(v1, 2)) + '\n' : scr_label
scr_label := s2 ? scr_label + syminfo.ticker(a02) + ' ' + str.tostring(roundn(v2, 2)) + '\n' : scr_label
scr_label := s3 ? scr_label + syminfo.ticker(a03) + ' ' + str.tostring(roundn(v3, 2)) + '\n' : scr_label
scr_label := s4 ? scr_label + syminfo.ticker(a04) + ' ' + str.tostring(roundn(v4, 2)) + '\n' : scr_label
scr_label := s5 ? scr_label + syminfo.ticker(a05) + ' ' + str.tostring(roundn(v5, 2)) + '\n' : scr_label
scr_label := s6 ? scr_label + syminfo.ticker(a06) + ' ' + str.tostring(roundn(v6, 2)) + '\n' : scr_label
scr_label := s7 ? scr_label + syminfo.ticker(a07) + ' ' + str.tostring(roundn(v7, 2)) + '\n' : scr_label
scr_label := s8 ? scr_label + syminfo.ticker(a08) + ' ' + str.tostring(roundn(v8, 2)) + '\n' : scr_label
scr_label := s9 ? scr_label + syminfo.ticker(a09) + ' ' + str.tostring(roundn(v9, 2)) + '\n' : scr_label
scr_label := s10 ? scr_label + syminfo.ticker(a10) + ' ' + str.tostring(roundn(v10, 2)) + '\n' : scr_label
scr_label := s11 ? scr_label + syminfo.ticker(a11) + ' ' + str.tostring(roundn(v11, 2)) + '\n' : scr_label
scr_label := s12 ? scr_label + syminfo.ticker(a12) + ' ' + str.tostring(roundn(v12, 2)) + '\n' : scr_label
scr_label := s13 ? scr_label + syminfo.ticker(a13) + ' ' + str.tostring(roundn(v13, 2)) + '\n' : scr_label
scr_label := s14 ? scr_label + syminfo.ticker(a14) + ' ' + str.tostring(roundn(v14, 2)) + '\n' : scr_label
scr_label := s15 ? scr_label + syminfo.ticker(a15) + ' ' + str.tostring(roundn(v15, 2)) + '\n' : scr_label
scr_label := s16 ? scr_label + syminfo.ticker(a16) + ' ' + str.tostring(roundn(v16, 2)) + '\n' : scr_label
scr_label := s17 ? scr_label + syminfo.ticker(a17) + ' ' + str.tostring(roundn(v17, 2)) + '\n' : scr_label
scr_label := s18 ? scr_label + syminfo.ticker(a18) + ' ' + str.tostring(roundn(v18, 2)) + '\n' : scr_label
scr_label := s19 ? scr_label + syminfo.ticker(a19) + ' ' + str.tostring(roundn(v19, 2)) + '\n' : scr_label
scr_label := s20 ? scr_label + syminfo.ticker(a20) + ' ' + str.tostring(roundn(v20, 2)) + '\n' : scr_label
scr_label := s21 ? scr_label + syminfo.ticker(a21) + ' ' + str.tostring(roundn(v21, 2)) + '\n' : scr_label
scr_label := s22 ? scr_label + syminfo.ticker(a22) + ' ' + str.tostring(roundn(v22, 2)) + '\n' : scr_label
scr_label := s23 ? scr_label + syminfo.ticker(a23) + ' ' + str.tostring(roundn(v23, 2)) + '\n' : scr_label
scr_label := s24 ? scr_label + syminfo.ticker(a24) + ' ' + str.tostring(roundn(v24, 2)) + '\n' : scr_label
scr_label := s25 ? scr_label + syminfo.ticker(a25) + ' ' + str.tostring(roundn(v25, 2)) + '\n' : scr_label
scr_label := s26 ? scr_label + syminfo.ticker(a26) + ' ' + str.tostring(roundn(v26, 2)) + '\n' : scr_label
scr_label := s27 ? scr_label + syminfo.ticker(a27) + ' ' + str.tostring(roundn(v27, 2)) + '\n' : scr_label
scr_label := s28 ? scr_label + syminfo.ticker(a28) + ' ' + str.tostring(roundn(v28, 2)) + '\n' : scr_label
scr_label := s29 ? scr_label + syminfo.ticker(a29) + ' ' + str.tostring(roundn(v29, 2)) + '\n' : scr_label
scr_label := s30 ? scr_label + syminfo.ticker(a30) + ' ' + str.tostring(roundn(v30, 2)) + '\n' : scr_label
scr_label := s31 ? scr_label + syminfo.ticker(a31) + ' ' + str.tostring(roundn(v31, 2)) + '\n' : scr_label
scr_label := s32 ? scr_label + syminfo.ticker(a32) + ' ' + str.tostring(roundn(v32, 2)) + '\n' : scr_label
scr_label := s33 ? scr_label + syminfo.ticker(a33) + ' ' + str.tostring(roundn(v33, 2)) + '\n' : scr_label
scr_label := s34 ? scr_label + syminfo.ticker(a34) + ' ' + str.tostring(roundn(v34, 2)) + '\n' : scr_label
scr_label := s35 ? scr_label + syminfo.ticker(a35) + ' ' + str.tostring(roundn(v35, 2)) + '\n' : scr_label
scr_label := s36 ? scr_label + syminfo.ticker(a36) + ' ' + str.tostring(roundn(v36, 2)) + '\n' : scr_label
scr_label := s37 ? scr_label + syminfo.ticker(a37) + ' ' + str.tostring(roundn(v37, 2)) + '\n' : scr_label
scr_label := s38 ? scr_label + syminfo.ticker(a38) + ' ' + str.tostring(roundn(v38, 2)) + '\n' : scr_label
scr_label := s39 ? scr_label + syminfo.ticker(a39) + ' ' + str.tostring(roundn(v39, 2)) + '\n' : scr_label
scr_label := s40 ? scr_label + syminfo.ticker(a40) + ' ' + str.tostring(roundn(v40, 2)) + '\n' : scr_label
var panel =table.new(position = position.top_right,columns = 10,rows=10,bgcolor = color.green,frame_color = color.black,border_color = color.red)
//lab_1 = label.new(bar_index + loc,50, scr_label, color=color.green, textcolor=color.white, style=label.style_label_center)
//label.delete(lab_1 )
if barstate.islast
table.cell(panel,0,0,text = str.tostring(scr_label))
if str.length(scr_label) > 8
alert(scr_label,alert.freq_once_per_bar_close)
//------------------------------------------------------
buy sell ultra systemWhat it is
EMA-POC Momentum System Ultra combines a proven trend stack (EMA 20/50/238), a price-of-control layer (POC via Bar-POC or VWAP alternative), and a momentum trigger (RSI) to surface higher-quality entries only when multiple, independent conditions align. This is not a cosmetic mashup; each component gates the others.
How components work together
Trend (EMA 20/50/238): Defines short/medium/long bias and filters counter-trend signals.
POC (Bar-POC or Alt-POC/VWAP): Locates the most-traded/weighted price area; a neutral band around POC helps avoid chop.
Control background: Above POC → buyers likely in control; below → sellers.
Momentum (RSI): Entry arrows print only when RSI confirms with trend and price location vs POC; optional “cross 50” requirement reduces noise.
Optional HTF trend: Confluence with a higher-timeframe EMA stack for stricter filtering.
Why it’s original/useful
Signals require confluence of (1) EMA trend stack, (2) POC location and neutral-zone filtering, (3) momentum confirmation, (4) optional slope and distance-to-POC checks, and (5) optional HTF trend. This reduces false positives compared with using any layer in isolation.
How to use
Markets/TFs: Built for XAUUSD (Gold) and US30. Works 1m–1h for intraday; 2h–4h for swing.
Entries:
Long: EMA stack bullish, price above POC, not in neutral band, RSI condition true → “Buy” arrow.
Short: Opposite conditions → “Sell” arrow.
Stops/Targets (suggested):
Initial stop beyond POC/neutral band or recent swing.
First target around 1R; trail with EMA20/50 or structure breaks.
Settings to tune:
POC Mode: Bar-POC (highest-volume bar’s close over lookback) or Alt-POC (VWAP).
Neutral Band %: 0.10–0.35 typical intraday.
Min distance from POC: 0.10–0.50% helps avoid low-RR entries right at POC.
RSI: Choose “cross 50” for stricter triggers or simple >/< 50 for more signals.
HTF trend: Turn on for extra confluence.
Alerts:
Buy Signal and Sell Signal (separate), or one Combined Buy/Sell alert.
Set to “Once per bar close” if you want only confirmed arrows.
Repainting / limitations
Shapes can move until bar close (standard Pine behavior) when using intrabar conditions; final confirmation at close. No system guarantees profitability—forward test and adapt to your market/instrument.
Clean chart
The published chart contains only this script so outputs are easy to identify.
Versions / updates
Use Publish → Update for minor changes; do not create new publications for small tweaks. If you fork to preserve older behavior, explain why and how your fork differs.
Changelog
v1.1 – Tuning for Gold/US30, neutral-band & distance filters, optional HTF trend, combined alert.
v1.0 – Initial public release (EMA stack + POC modes + RSI + alerts).
License & credits
Open-source for learning and improvement. Please credit on forks and explain modifications in your description.
Daily Volume Ratio Bands (20MA)
Daily Volume Ratio Bands (20MA) — by CryptoDaily
This indicator normalizes daily trading volume against the recent 20-day moving average (20MA) and plots it as a volume ratio.
It allows traders to quickly identify whether current volume is strong, weak, or within a normal range compared to historical averages.
Key Features
Normalized volume ratio with 20-day average = baseline (1.0)
Clear bands for easy interpretation (1.0 ~ 1.3 = normal, above = overheated, below = weak)
Intuitive color coding:
🟨 Yellow: Normal range (1.0 ~ 1.3)
🔵 Blue: Above 1.3× average (high/strong volume, breakout confirmation)
⚪️ Gray: Below average (low volume)
🔴 Red: At or below 0.7× (extremely low volume / lack of interest)
How to Use
Breakouts with strong volume (Blue) → higher confidence in trend continuation
Gray/Red during consolidation → signal of weak momentum or sideways phase
Quickly assess whether the market is in overheated or low-activity conditions
Notes
Designed for Daily timeframe (1D) only. It will not function properly on intraday charts.
For educational purposes only. This is not financial advice.
Author
CryptoDaily (YouTube & TradingView)
YouTube channel: cryptodaily_tv
EMA20 Cross Strategy with countertrades and signalsEMA20 Cross Strategy Documentation
Overview
The EMA20 Cross Strategy with Counter-Trades and Instant Signals is a Pine Script (version 6) trading strategy designed for the TradingView platform. It implements an Exponential Moving Average (EMA) crossover system to generate buy and sell signals, with optional trend filtering, session-based trading, instant signal processing, and visual/statistical feedback. The strategy supports counter-trades (closing opposing positions before entering new ones) and operates with a fixed trade size in EUR.
Features
EMA Crossover Mechanism:
Uses a short-term EMA (configurable length, default: 1) and a long-term EMA (default: 20) to detect crossovers.
A buy signal is generated when the short EMA crosses above the long EMA.
A sell signal is generated when the short EMA crosses below the long EMA.
Instant Signals:
If enabled (useInstantSignals), signals are based on the current price crossing the short EMA, rather than waiting for the candle close.
This allows faster trade execution but may increase sensitivity to price fluctuations.
Trend Filter:
Optionally filters trades based on the trend direction (useTrendFilter).
Long trades are allowed only when the short EMA (or price, for instant signals) is above the long EMA.
Short trades are allowed only when the short EMA (or price) is below the long EMA.
Session Filter:
Restricts trading to specific market hours (sessionStart, default: 09:00–17:00) if enabled (useSessionFilter).
Ensures trades occur only during active market sessions, reducing exposure to low-liquidity periods.
Customizable Timeframe:
The EMA calculations can use a higher timeframe (e.g., 5m, 15m, 1H, 4H, 1D, default: 1H) via request.security.
This allows the strategy to base signals on longer-term trends while operating on a shorter-term chart.
Trade Management:
Fixed trade size of €100,000 per trade (tradeAmount), with a maximum quantity cap (maxQty = 10,000) to prevent oversized trades.
Counter-trades: Closes short positions before entering a long position and vice versa.
Trades are executed with a minimum quantity of 1 to ensure valid orders.
Visualization:
EMA Lines: The short EMA is colored based on the last signal (green for buy, red for sell, gray for neutral), and the long EMA is orange.
Signal Markers: Displays buy/sell signals as arrows (triangles) above/below candles if enabled (showSignalShapes).
Background/Candle Coloring: Optionally colors the chart background or candles green (bullish) or red (bearish) based on the trend (useColoredBars).
Statistics Display:
If enabled (useStats), a label on the chart shows:
Total closed trades
Open trades
Win rate (%)
Number of winning/losing trades
Profit factor (gross profit / gross loss)
Net profit
Maximum drawdown
Configuration Inputs
EMA Short Length (emaLength): Length of the short-term EMA (default: 1).
Trend EMA Length (trendLength): Length of the long-term EMA (default: 20).
Enable Trend Filter (useTrendFilter): Toggles trend-based filtering (default: true).
Color Candles (useColoredBars): Colors candles instead of the background (default: true).
Enable Session Filter (useSessionFilter): Restricts trading to specified hours (default: false).
Trading Session (sessionStart): Defines trading hours (default: 09:00–17:00).
Show Statistics (useStats): Displays performance stats on the chart (default: true).
Show Signal Arrows (showSignalShapes): Displays buy/sell signals as arrows (default: true).
Use Instant Signals (useInstantSignals): Generates signals based on live price action (default: false).
EMA Timeframe (emaTimeframe): Timeframe for EMA calculations (options: 5m, 15m, 1H, 4H, 1D; default: 1H).
Strategy Logic
Signal Generation:
Standard Mode: Signals are based on EMA crossovers (short EMA crossing long EMA) at candle close.
Instant Mode: Signals are based on the current price crossing the short EMA, enabling faster reactions.
Trade Execution:
On a buy signal, closes any short position and opens a long position.
On a sell signal, closes any long position and opens a short position.
Position size is calculated as the minimum of €100,000 or available equity, divided by the current price, capped at 10,000 units.
Filters:
Trend Filter: Ensures trades align with the trend direction (if enabled).
Session Filter: Restricts trades to user-defined market hours (if enabled).
Visual Feedback
EMA Lines: Provide a clear view of the short and long EMAs, with the short EMA’s color reflecting the latest signal.
Signal Arrows: Large green triangles (buy) below candles or red triangles (sell) above candles for easy signal identification.
Chart Coloring: Highlights bullish (green) or bearish (red) trends via background or candle colors.
Statistics Label: Displays key performance metrics in a label above the chart for quick reference.
Usage Notes
Initial Capital: €100,000 (configurable via initial_capital).
Currency: EUR (set via currency).
Order Processing: Orders are processed at candle close (process_orders_on_close=true) unless instant signals are enabled.
Dynamic Requests: Allows dynamic timeframe adjustments for EMA calculations (dynamic_requests=true).
Platform: Designed for TradingView, compatible with any market supported by the platform (e.g., stocks, forex, crypto).
Example Use Case
Scenario: Trading on a 5-minute chart with a 1-hour EMA timeframe, trend filter enabled, and session filter set to 09:00–17:00.
Behavior: The strategy will:
Calculate EMAs on the 1-hour timeframe.
Generate buy signals when the short EMA crosses above the long EMA (and price is above the long EMA).
Generate sell signals when the short EMA crosses below the long EMA (and price is below the long EMA).
Execute trades only during 09:00–17:00.
Display green/red candles and performance stats on the chart.
Limitations
Instant Signals: May lead to more frequent signals, increasing the risk of false positives in volatile markets.
Fixed Trade Size: Does not adjust dynamically based on market conditions beyond equity and max quantity limits.
Session Filter: Simplified and may not account for complex session rules or holidays.
Statistics: Displayed on-chart, which may clutter the view in smaller charts.
Customization
Adjust emaLength and trendLength to suit different market conditions (e.g., shorter for scalping, longer for swing trading).
Toggle useInstantSignals for faster or more stable signal generation.
Modify sessionStart to align with specific market hours.
Disable useStats or showSignalShapes for a cleaner chart.
This strategy is versatile for both manual and automated trading, offering flexibility for various markets and trading styles while providing clear visual and statistical feedback.
SMC Analysis - Fair Value Gaps (Enhanced)SMC Analysis - Fair Value Gaps (Enhanced) Script Summary
Overview
The "SMC Analysis - Fair Value Gaps (Enhanced)" script, written in Pine Script (version 6), is a technical analysis indicator designed for TradingView to identify and visualize Fair Value Gaps (FVGs) on a price chart. It supports both the main timeframe and multiple higher timeframes (MTF) for comprehensive market analysis. FVGs are price gaps formed by a three-candle pattern, indicating potential areas of market inefficiency where price may return to fill the gap.
Key Features
FVG Detection:
Identifies bullish FVGs: Occur when the high of a candle two bars prior is lower than the low of the current candle, with the middle candle being bullish (close > open).
Identifies bearish FVGs: Occur when the low of a candle two bars prior is higher than the high of the current candle, with the middle candle being bearish (close < open).
Visualizes FVGs as colored boxes on the chart (green for bullish, red for bearish).
Mitigation Tracking:
Tracks when FVGs are touched (price overlaps the gap range) or mitigated (price fully closes the gap).
Strict Mode: Marks an FVG as mitigated when price touches the gap range.
Normal Mode: Requires a full breakthrough (price crossing the gap’s bottom for bullish FVGs or top for bearish FVGs) for mitigation.
Optionally converts FVG box borders to dashed lines and increases transparency when partially touched.
Multi-Timeframe (MTF) Support:
Analyzes FVGs on three user-defined higher timeframes (default: 15m, 60m, 240m).
Displays MTF FVGs with distinct labels and slightly more transparent colors.
Ensures no duplicate processing of MTF bars to maintain performance.
Customization Options:
FVG Length: Adjustable duration for how long FVGs are displayed (default: 20 bars).
Show/Hide FVGs: Toggle visibility for main timeframe and each MTF.
Color Customization: User-defined colors for bullish and bearish FVGs (default: green and red).
Display Options: Toggle for showing dashed lines after partial touches and strict mitigation mode.
Performance Optimization:
Limits the number of displayed boxes (50 for main timeframe, 20 per MTF) to prevent performance issues.
Automatically removes older boxes to maintain a clean chart.
Functionality
Visualization: Draws boxes around detected FVGs, with customizable colors and text labels ("FVG" for main timeframe, "FVG " for MTF).
Dynamic Updates: Extends or terminates FVG boxes based on mitigation status and user settings.
Efficient Storage: Uses arrays to manage FVG data (boxes, tops, bottoms, indices, mitigation status, and touch status) separately for main and MTF analyses.
Use Case
This indicator is designed for traders using Smart Money Concepts (SMC) to identify areas of market inefficiency (FVGs) for potential price reversals or continuations. The MTF support allows analysis across different timeframes, aiding in confirming trends or spotting higher-timeframe support/resistance zones.