EMA & BarCountNothing. EMA & Bar Count
Nothing. EMA & Bar Count
Nothing. EMA & Bar Count
Nothing. EMA & Bar Count
Nothing. EMA & Bar Count
Thanks .
Indicadores e estratégias
Price Deviation StrategyThis strategy getting in long position only after the price drop
The % of the drop is Determined by SMA for the first trade
The inputs of SMA and % of the drop can be adjust from the User
After that bot start taking safe trades if not take profit from the first trade
The safe trades are Determined by step down deviation % and by quantity
There is no Stop loss is not for one with small tolerance to getting under
Take profit is average price + take profit - note if you use % trailing profit back test is not realistic but is working on real time
Max Safe Trades = 15
Capital max = $30000
Doge-USDT is just a example What the Strategy Can do
Green line - take profit
Black line - Brake even with fee - adjust for exchange
PSAR+EMA+Hull+BBDescription
This all-in-one indicator combines four proven tools:
Parabolic SAR (Everget) — trend direction and potential reversals.
Exponential Moving Averages (20/50/100/200) — customizable lengths, colors, and offsets.
Hull Suite (InSilico) — smooth trend detection with multiple variations (HMA, THMA, EHMA).
Bollinger Bands — volatility and dynamic support/resistance.
Features
Toggle each module on/off in settings.
Fully configurable inputs (lengths, colors, offsets, multipliers).
Optional PSAR labels, highlights, and state fill.
Hull can color candles, draw band fills, and pull from higher timeframes.
Bollinger Bands include multiple basis types, stdev multipliers, and fill transparency.
Built-in alerts: PSAR direction change, Hull trending up/down.
Category
Trend Analysis (with Volatility as secondary).
RSI Momentum ScalperOverview
The "RSI Momentum Scalper" is a Pine Script v5 strategy crafted for trading highly volatile markets, with a special focus on newly listed cryptocurrencies. This strategy harnesses the Relative Strength Index (RSI) alongside volume analysis and momentum thresholds to pinpoint short-term trading opportunities. It supports both long and short trades, managed with customizable take profit, stop loss, and trailing stop levels, which are visually plotted on the chart for easy tracking.
Why I Created This Strategy
I developed the "RSI Momentum Scalper" because I was seeking a reliable trading strategy tailored to newly listed, highly volatile cryptocurrencies. These assets often experience rapid price fluctuations, rendering traditional strategies less effective. I aimed to create a tool that could exploit momentum and volume spikes while managing risk through adaptable exit parameters. This strategy is designed to address that need, offering a flexible approach for traders in dynamic crypto markets.
How It Works
The strategy utilizes RSI to identify momentum shifts, combined with volume confirmation, to trigger long or short entries. Trades are controlled with take profit, stop loss, and trailing stop levels, which adjust dynamically as the price moves in your favor. The trailing stop helps lock in profits, while the plotted exit levels provide clear visual cues for trade management.
Customizable Settings
The script is highly customizable, allowing you to adjust it to various market conditions and trading styles. Here’s a brief overview of the key settings:
Trade Mode: Select "Both," "Long Only," or "Short Only" to determine the trade direction.
(Default: Both)
RSI Length: Sets the lookback period for the RSI calculation (2 to 30).
(Default: 8)
A shorter length increases RSI sensitivity, suitable for volatile assets.
RSI Overbought: Defines the upper RSI threshold (60 to 99) for short entries.
(Default: 90)
Higher values signal stronger overbought conditions.
RSI Oversold: Defines the lower RSI threshold (1 to 40) for long entries.
(Default: 10)
Lower values indicate stronger oversold conditions.
RSI Momentum Threshold: Sets the minimum RSI momentum change (1 to 15) to trigger entries.
(Default: 14)
Adjusts the sensitivity to price momentum.
Volume Multiplier: Multiplies the volume moving average to filter high-volume bars (1.0 to 3.0).
(Default: 1)
Higher values require stronger volume confirmation.
Volume MA Length: Sets the lookback period for the volume moving average (5 to 50).
(Default: 13)
Influences the volume trend sensitivity.
Take Profit %: Sets the profit target as a percentage of the entry price (0.1 to 10.0).
(Default: 4.15)
Determines when to close a winning trade.
Stop Loss %: Sets the loss limit as a percentage of the entry price (0.1 to 6.0).
(Default: 1.85)
Protects against significant losses.
Trailing Stop %: Sets the trailing stop distance as a percentage (0.1 to 4.0).
(Default: 2.55)
Locks in profits as the price moves favorably.
Visual Features
Exit Levels: Take profit (green), fixed stop loss (red), and trailing stop (orange) levels are plotted when in a position.
Performance Table: Displays win rate, total trades, and net profit in the top-right corner.
How to Use
Add the strategy to your chart in TradingView.
Adjust the input settings based on the cryptocurrency and timeframe you’re trading.
Monitor the plotted exit levels for trade management.
Use the performance table to assess the strategy’s performance over time.
Notes
Test the strategy on a demo account or with historical data before live trading.
The strategy is optimized for short-term scalping; adjust settings for longer timeframes if needed.
Bollinger Bands with 4 Moving AveragesCombines Bollinger Bands (BB) with up to four optional Moving Averages (MA) to read volatility, trend direction, and dynamic support–resistance in one overlay.
How It Works
BB: basis = MA(length, type) with standard deviation mult. upper = basis + dev, lower = basis − dev.
MA1–MA4: additional averages you can toggle (default only MA4/200 enabled).
Key Features
Flexible basis MA type for BB: SMA / EMA / RMA (Wilder) / WMA / VWMA.
Four optional MAs with independent length, color, and width (defaults: 7, 25, 99, 200; only 200 on by default).
Offset to shift BB for visual testing.
Overlay on price with shaded band between Upper–Lower.
Inputs & Defaults
BB Length = 20, StdDev = 2.0, Source = close.
Basis MA Type = SMA.
MA4 active (200), MA1–MA3 off (7/25/99 ready).
Offset = 0.
Practical Use
Use BB for volatility context: squeeze → potential breakout; expansion → strong trend.
Treat Basis / Upper / Lower as dynamic levels:
Pullbacks to Basis often become decision zones in trends.
Upper/Lower touches = relative extremes.
Add MA4(200) for primary bias; enable MA1–MA3 for finer timing.
Typical behavior:
Price > MA200 and rising basis → bullish bias; watch pullbacks to basis/MA25-like zones.
Price < MA200 and falling basis → bearish bias; watch rejections at basis/MAs.
Common Signals (not financial advice)
Breakout + BB expansion confirms momentum.
Squeeze + basis break can preface volatility expansion.
Confluence: Lower touch + fast MA in uptrends → mean-reversion setups; inverse for downtrends.
Notes
MA1–MA4 are SMA in the code; BB basis follows the selected MA type.
Test across timeframes; tune length and mult to the asset.
Disclaimer
Visual tool only. Combine with risk management, multi-timeframe confirmation, and a tested plan.
GCK CRT MODEL Purpose
Multi-timeframe execution toolkit that overlays HTF candle structure on any lower timeframe and automatically marks CRT (Counter-Reaction Tag) only when a lower-timeframe CISD occurs. It draws a short line from the exact liquidity wick/body to the break/rejection bar—never a long extended line. Includes bold C2 / C3 / C4 labels for clarity.
What it shows
HTF candles (bodies, wicks, start lines, timer, labels) on your LTF chart
CISD → CRT: prints only when an LTF CISD triggers; line is anchored to the liquidity candle and ends at the break bar
Midpoint (log-based) lines, sweep markers, FVG & VI zones (optional)
T-Spot & Silver T-Spot logic (bias-aware), with confirmation and optional projections
Compact info table (current TF → HTF model, time remaining, bias)
Optional position sizing readout for the most recent confirmed sweep
Key options
HTF Mode: Auto or Custom (e.g., 1D, 1W)
Use Body for Confirmation: choose body extremes vs wick for CISD/CRT anchoring
Show Only Latest: keep the most recent T-Spot/CRT clean on chart
Projections & CISD lines: on/off + levels
Label Size: C2/C3/C4 printed larger by default for visibility
How to use
Add to your lower timeframe chart.
Pick HTF (Auto is fine).
Choose whether CRT/CISD checks use wick or body (toggle).
(Optional) Enable projections/alerts/position sizing.
Notes
CRT only prints inside the current HTF phase when an LTF CISD happens.
Lines are intentionally short (liquidity candle → rejection bar).
For education/analysis only. Not financial advice.
RSI DivergenceStrat WCredit to faytterro. Buy when RSI is staying flat or going up while the ticker price is going down. Sell when RSI is staying flat or going down while the ticker price is going up.
Directional Strength IndicatorThe DSI fuses momentum (RSI), price acceleration (ROC), and volume strength across three hierarchical timeframes. When all three metrics align upward (or downward) it signals a strong directional move; otherwise it flags a lack of clear direction, useful as a filter or trigger in trading strategies. Watch the video at youtu.be
Market Movement Indicator (MMI) The indicator fuses trend‑following (Supertrend) and momentum (EMA hierarchy) filters to give a clear, binary‑plus‑neutral signal that can be used for entry/exit decisions, position sizing, or as a filter for other strategies. Watch the video at youtu.be
Multi-Timeframe Dual MA Downside DetectorThis indicator is designed to highlight potential downside moves using two customizable moving averages (MA1 and MA2) across multiple timeframes. It works on any chart and provides a visual cue when the price is trading below both selected moving averages on a red/down candle.
Key Features:
Dual Moving Averages: Supports EMA, SMA, VWMA, and HMA for both MA1 and MA2.
Multi-Timeframe Support: Each moving average can be calculated on a different timeframe, allowing higher timeframe trend context on lower timeframe charts.
Downside Detection: Highlights candles where the close is below both moving averages and forms a down candle (close < open).
Visual Signals:
Plots MA1 (orange) and MA2 (blue) on the chart.
Colors the downside candles blue when the price is below both MAs.
Customizable: Easily adjust the MA type, length, and timeframe to suit your trading style.
Usage:
Helps identify strong bearish conditions or potential pullbacks.
Can be combined with other technical analysis tools for trend confirmation.
Works across any market, instrument, or timeframe
ICT 369 Sniper MSS Indicator (HTF Bias) - H2LThis script is an ICT (Inner Circle Trader) concept-based trading indicator designed to identify high-probability reversal or continuation setups, primarily focusing on intraday trading using a Higher Timeframe (HTF) directional bias.
Here are the four core components of the indicator:
Higher Timeframe (HTF) Bias Filter (Market Structure Shift - MSS): It determines the overall trend by checking if the current price has broken the most recent high or low swing point of a larger timeframe (e.g., 4H). This establishes a Bullish or Bearish bias, ensuring trades align with the dominant trend.
Fair Value Gap (FVG) and OTE: It identifies price imbalances (FVGs) and calculates the Optimal Trade Entry (OTE) levels (50%, 62%, 70.5%, etc.) within those gaps, looking for price to retrace into these specific areas.
Kill Zones (Timing): It incorporates specific time windows (London and New York Kill Zones, based on NY Time) where institutional trading activity is high, only allowing entry signals during these defined periods.
Signal and Targets: It triggers a Long or Short signal when all criteria are met (HTF Bias, FVG, OTE retracement, and Kill Zone timing). It then calculates and plots suggested trade levels, including a Stop Loss (SL) and three Take Profit targets (TP1, TP2, and a dynamic Runner Target based on the weekly Average True Range or ATR).
In summary, it's a comprehensive tool for traders following ICT principles, automating the confluence check across trend, structure, liquidity, and timing.
VCP + TTM Squeeze Breakout Detection ToolThis open-source script combines two powerful concepts into a single breakout detection tool:
1. **VCP (Volatility Contraction Pattern)**
Based on Mark Minervini’s principle of structured volatility contraction.
The script identifies low ATR environments combined with a strong trend filter using EMA 50, EMA 100, and EMA 200.
A pivot high is fixed using a rolling high from the last X candles.
2. **TTM Squeeze (inspired by Beardy_Fred's Pro version)**
This module compares Bollinger Bands to Keltner Channels.
When the Bollinger Bands fit inside the Keltner Channels, it signals volatility compression.
The script classifies the squeeze intensity into four stages using colored dots:
- **Green:** No squeeze
- **Black:** Light compression
- **Red:** Medium compression
- **Orange:** Strong compression
A linear momentum oscillator adds directional confirmation by plotting aqua bars above price if momentum is positive.
---
### **Signal Logic**
- **Yellow Dots (Setup Potential)**
Appear when VCP criteria are met **and** either momentum is bearish or the squeeze is still active (non-green).
- **Green Dots (Breakout Active)**
Appear only when:
- Price breaks above pivot high
- EMA filter is valid
- Squeeze has resolved (green)
- Volume is higher than the previous bar
- Momentum is positive
Breakout status is removed once volume AND true range drop below their respective short-term averages.
---
### **Visual Elements**
- 3 EMA Lines: EMA 50 (blue), EMA 100 (orange), EMA 200 (red)
- Pivot line (red), based on recent high
- Colored squeeze state (dots at zero line)
- Yellow dots (pre-breakout tension)
- Green dots (confirmed breakout)
- Aqua bars above price (momentum strength)
---
**Note:**
This script is for educational purposes only and does not constitute financial advice.
No alerts included yet. No external dependencies. No embedded advertising.
---
**License**
Portions of the TTM Squeeze code are derived from “Beardy Squeeze Pro” and are used under the terms of the Mozilla Public License 2.0.
www.mozilla.org
Delta Volume Signals by Claudio [hapharmonic]Modifications:
Percentages without decimals.
I replaced the 'Current Volume' row with two boxes: "Δ Vol" and its value, which changes color depending on the direction of the bearish/bullish candle.
Signals can change color in the settings.
Box spacing so the table doesn't constantly change size.
To be modified:
The Net Volume sign shouldn't change to negative when the candle is red.
If anyone does this, let me know...
claudio.ventola@hotmail.com
Best regards!
Close Price & (% Change / Volume)this places the ratio of change with volume to give us idea if the price is moving or not with volume. If ratio is more more means percent change is high than volumne if ratio is less then % change is less than volume
All Key Levels CompleteHave lines created for Yesterday Close, Prior Day High, Prior Day -1 Close, Prior Day Low, Prior Day -1 Low, Premarket High and Premarket Low.
Previous Day Close (PDC)pdc price just watch how it reacts it will say if bearish or bullish on day or can get a good entry took a while to make who likes it
Order Block Volumatic FVG StrategyInspired by: Volumatic Fair Value Gaps —
License: CC BY-NC-SA 4.0 (Creative Commons Attribution–NonCommercial–ShareAlike).
This script is a non-commercial derivative work that credits the original author and keeps the same license.
What this strategy does
This turns BigBeluga’s visual FVG concept into an entry/exit strategy. It scans bullish and bearish FVG boxes, measures how deep price has mitigated into a box (as a percentage), and opens a long/short when your mitigation threshold and filters are satisfied. Risk is managed with a fixed Stop Loss % and a Trailing Stop that activates only after a user-defined profit trigger.
Additions vs. the original indicator
✅ Strategy entries based on % mitigation into FVGs (long/short).
✅ Lower-TF volume split using upticks/downticks; fallback if LTF data is missing (distributes prior bar volume by close’s position in its H–L range) to avoid NaN/0.
✅ Per-FVG total volume filter (min/max) so you can skip weak boxes.
✅ Age filter (min bars since the FVG was created) to avoid fresh/immature boxes.
✅ Bull% / Bear% share filter (the 46%/53% numbers you see inside each FVG).
✅ Optional candle confirmation and cooldown between trades.
✅ Risk management: fixed SL % + Trailing Stop with a profit trigger (doesn’t trail until your trigger is reached).
✅ Pine v6 safety: no unsupported args, no indexof/clamp/when, reverse-index deletes, guards against zero/NaN.
How a trade is decided (logic overview)
Detect FVGs (same rules as the original visual logic).
For each FVG currently intersected by the bar, compute:
Mitigation % (how deep price has entered the box).
Bull%/Bear% split (internal volume share).
Total volume (printed on the box) from LTF aggregation or fallback.
Age (bars) since the box was created.
Apply your filters:
Mitigation ≥ Long/Short threshold.
Volume between your min and max (if enabled).
Age ≥ min bars (if enabled).
Bull% / Bear% within your limits (if enabled).
(Optional) the current candle must be in trade direction (confirm).
If multiple FVGs qualify on the same bar, the strategy uses the most recent one.
Enter long/short (no pyramiding).
Exit with:
Fixed Stop Loss %, and
Trailing Stop that only starts after price reaches your profit trigger %.
Input settings (quick guide)
Mitigation source: close or high/low. Use high/low for intrabar touches; close is stricter.
Mitigation % thresholds: minimal mitigation for Long and Short.
TOTAL Volume filter: skip FVGs with too little/too much total volume (per box).
Bull/Bear share filter: require, e.g., Long only if Bull% ≥ 50; avoid Short when Bull% is high (Short Bull% max).
Age filter (bars): e.g., ≥ 20–30 bars to avoid fresh boxes.
Confirm candle: require candle direction to match the trade.
Cooldown (bars): minimum bars between entries.
Risk:
Stop Loss % (fixed from entry price).
Activate trailing at +% profit (the trigger).
Trailing distance % (the trailing gap once active).
Lower-TF aggregation:
Auto: TF/Divisor → picks 1/3/5m automatically.
Fixed: choose 1/3/5/15m explicitly.
If LTF can’t be fetched, fallback allocates prior bar’s volume by its close position in the bar’s H–L.
Suggested starting presets (you should optimize per market)
Mitigation: 60–80% for both Long/Short.
Bull/Bear share:
Long: Bull% ≥ 50–70, Bear% ≤ 100.
Short: Bull% ≤ 60 (avoid shorting into strong support), Bear% ≥ 0–70 as you prefer.
Age: ≥ 20–30 bars.
Volume: pick a min that filters noise for your symbol/timeframe.
Risk: SL 4–6%, trailing trigger 1–2%, distance 1–2% (crypto example).
Set slippage/fees in Strategy Properties.
Notes, limitations & best practices
Data differences: The LTF split uses request.security_lower_tf. If the exchange/data feed has sparse LTF data, the fallback kicks in (it’s deliberate to avoid NaNs but is a heuristic).
Real-time vs backtest: The current bar can update until close; results on historical bars use closed data. Use “Bar Replay” to understand intrabar effects.
No pyramiding: Only one position at a time. Modify pyramiding in the header if you need scaling.
Assets: For spot/crypto, TradingView “volume” is exchange volume; in some markets it may be tick volume—interpret filters accordingly.
Risk disclosure: Past performance ≠ future results. Use appropriate position sizing and risk controls; this is not financial advice.
Credits
Visual FVG concept and original implementation: BigBeluga.
This derivative strategy adds entry/exit logic, volume/age/share filters, robust LTF handling, and risk management while preserving the original spirit.
License remains CC BY-NC-SA 4.0 (non-commercial, attribution required, share-alike).
Jasons Bullish Reversal DetectorThis bullish reversal detector is designed to spot higher-quality turning points instead of shallow bounces. At its core, it looks for candles closing above the 20-period SMA, a MACD bullish crossover, and RSI strength above 50. On top of that, it layers in “depth” filters: price must reclaim and retest a long-term baseline (like the 200-period VWMA), momentum should confirm with RSI and +DI leading, short-term EMAs need to slope upward, and conditions like overheated ATR or strong downside ADX will block false signals. When all of these align, the script flags a depth-confirmed bullish reversal, aiming to highlight spots where structure, momentum, and volatility all support a sustainable shift upward.
DBO_Prod Updated Sept 27Added News Day Support, has support for variable sizing on recoup trading. This does a opposite trade using YM in real time, but keeps MYM on historical bars.
Known bug: On the historical view, I'm getting a ghost trade causing results to be 13% inflated.
Customizable MA 10/20/50/100/200Customizable EMA/SMA indicator. Select EMA (default) or SMA and support up to 5 timeframes.
Elliott Wave Auto + Fib Targets + Scalper Strategy (Fixed)// Elliott Wave Auto + Fib Targets + Scalper Strategy
//
// Fixed by expert trader:
// - Replaced table with label-based visualization to avoid 'Column 2 is out of table bounds' error.
// - Uses label.new to display buy/sell signal counts in top-right corner, mimicking table layout.
// - Fixed array.sum() error: Replaced invalid range-based array.sum() with custom sum_array_range() function.
// - Removed barstate usage to fix 'Undeclared identifier barstate' error.
// - Replaced barstate.isconfirmed with true (process every bar).
// - Replaced barstate.isfirstconfirmed with bar_index == 0 (first bar).
// - Replaced strategy.alert with label.new for long/short entry signals (buy/sell markers).
// - Fixed array index out-of-bounds: Protected array.get() calls with size checks.
// - Fixed pyramiding: Set constant pyramiding=4 (max 5 entries); use allow_pyramiding to limit entries.
// - Fixed default_qty_value: Set constant default_qty_value=100.0; use entry_size_pct to scale qty.
// - Replaced alertcondition with labels for Elliott Wave patterns.
// - Fixed partial exits: 50% at TP1 with fixed SL, 50% at TP2 with fixed SL or trailing.
// - Fixed Elliott Wave pivot indexing for alternating H/L check.
// - Ensured proper position sizing and exit logic.
Volume Delta Volume Signals by Claudio [hapharmonic]// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © hapharmonic
//@version=6
FV = format.volume
FP = format.percent
indicator('Volume Delta Volume Signals by Claudio ', format = FV, max_bars_back = 4999, max_labels_count = 500)
//------------------------------------------
// Settings |
//------------------------------------------
bool usecandle = input.bool(true, title = 'Volume on Candles',display=display.none)
color C_Up = input.color(#12cef8, title = 'Volume Buy', inline = ' ', group = 'Style')
color C_Down = input.color(#fe3f00, title = 'Volume Sell', inline = ' ', group = 'Style')
// ✅ Nueva entrada para colores de señales
color buySignalColor = input.color(color.new(color.green, 0), "Buy Signal Color", group = "Signals")
color sellSignalColor = input.color(color.new(color.red, 0), "Sell Signal Color", group = "Signals")
string P_ = input.string(position.top_right,"Position",options = ,
group = "Style",display=display.none)
string sL = input.string(size.small , 'Size Label', options = , group = 'Style',display=display.none)
string sT = input.string(size.normal, 'Size Table', options = , group = 'Style',display=display.none)
bool Label = input.bool(false, inline = 'l')
History = input.bool(true, inline = 'l')
// Inputs for EMA lengths and volume confirmation
bool MAV = input.bool(true, title = 'EMA', group = 'EMA')
string volumeOption = input.string('Use Volume Confirmation', title = 'Volume Option', options = , group = 'EMA',display=display.none)
bool useVolumeConfirmation = volumeOption == 'none' ? false : true
int emaFastLength = input(12, title = 'Fast EMA Length', group = 'EMA',display=display.none)
int emaSlowLength = input(26, title = 'Slow EMA Length', group = 'EMA',display=display.none)
int volumeConfirmationLength = input(6, title = 'Volume Confirmation Length', group = 'EMA',display=display.none)
string alert_freq = input.string(alert.freq_once_per_bar_close, title="Alert Frequency",
options= ,group = "EMA",
tooltip="If you choose once_per_bar, you will receive immediate notifications (but this may cause interference or indicator repainting).
However, if you choose once_per_bar_close, it will wait for the candle to confirm the signal before notifying.",display=display.none)
//------------------------------------------
// UDT_identifier |
//------------------------------------------
type OHLCV
float O = open
float H = high
float L = low
float C = close
float V = volume
type VolumeData
float buyVol
float sellVol
float pcBuy
float pcSell
bool isBuyGreater
float higherVol
float lowerVol
color higherCol
color lowerCol
//------------------------------------------
// Calculate volumes and percentages |
//------------------------------------------
calcVolumes(OHLCV ohlcv) =>
var VolumeData data = VolumeData.new()
data.buyVol := ohlcv.V * (ohlcv.C - ohlcv.L) / (ohlcv.H - ohlcv.L)
data.sellVol := ohlcv.V - data.buyVol
data.pcBuy := data.buyVol / ohlcv.V * 100
data.pcSell := 100 - data.pcBuy
data.isBuyGreater := data.buyVol > data.sellVol
data.higherVol := data.isBuyGreater ? data.buyVol : data.sellVol
data.lowerVol := data.isBuyGreater ? data.sellVol : data.buyVol
data.higherCol := data.isBuyGreater ? C_Up : C_Down
data.lowerCol := data.isBuyGreater ? C_Down : C_Up
data
//------------------------------------------
// Get volume data |
//------------------------------------------
ohlcv = OHLCV.new()
volData = calcVolumes(ohlcv)
// Plot volumes and create labels
plot(ohlcv.V, color=color.new(volData.higherCol, 90), style=plot.style_columns, title='Total',display = display.all - display.status_line)
plot(ohlcv.V, color=volData.higherCol, style=plot.style_stepline_diamond, title='Total2', linewidth = 2,display = display.pane)
plot(volData.higherVol, color=volData.higherCol, style=plot.style_columns, title='Higher Volume', display = display.all - display.status_line)
plot(volData.lowerVol , color=volData.lowerCol , style=plot.style_columns, title='Lower Volume',display = display.all - display.status_line)
S(D,F)=>str.tostring(D,F)
volStr = S(math.sign(ta.change(ohlcv.C)) * ohlcv.V, FV)
buyVolStr = S(volData.buyVol , FV )
sellVolStr = S(volData.sellVol , FV )
// ✅ MODIFICACIÓN: Porcentaje sin decimales
buyPercentStr = str.tostring(math.round(volData.pcBuy)) + " %"
sellPercentStr = str.tostring(math.round(volData.pcSell)) + " %"
totalbuyPercentC_ = volData.buyVol / (volData.buyVol + volData.sellVol) * 100
sup = not na(ohlcv.V)
if sup
TC = text.align_center
CW = color.white
var table tb = table.new(P_, 6, 6, bgcolor = na, frame_width = 2, frame_color = chart.fg_color, border_width = 1, border_color = CW)
tb.cell(0, 0, text = 'Volume Candles', text_color = #FFBF00, bgcolor = #0E2841, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 0, 5, 0)
tb.cell(0, 1, text = 'Current Volume', text_color = CW, bgcolor = #0B3040, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 1, 1, 1)
tb.cell(0, 2, text = 'Buy', text_color = #000000, bgcolor = #92D050, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 2, text = 'Sell', text_color = #000000, bgcolor = #FF0000, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(0, 3, text = buyVolStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 3, text = sellVolStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(0, 5, text = 'Net: ' + volStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 5, 1, 5)
tb.cell(0, 4, text = buyPercentStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 4, text = sellPercentStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
cellCount = 20
filledCells = 0
for r = 5 to 1 by 1
for c = 2 to 5 by 1
if filledCells < cellCount * (totalbuyPercentC_ / 100)
tb.cell(c, r, text = '', bgcolor = C_Up)
else
tb.cell(c, r, text = '', bgcolor = C_Down)
filledCells := filledCells + 1
filledCells
if Label
sp = ' '
l = label.new(bar_index, ohlcv.V,
text=str.format('Net: {0} Buy: {1} ({2}) Sell: {3} ({4}) {5}/\ {5}l {5}l',
volStr, buyVolStr, buyPercentStr, sellVolStr, sellPercentStr, sp),
style=label.style_none, textcolor=volData.higherCol, size=sL, textalign=text.align_left)
if not History
(l ).delete()
//------------------------------------------
// Draw volume levels on the candlesticks |
//------------------------------------------
float base = na,float value = na
bool uc = usecandle and sup
if volData.isBuyGreater
base := math.min(ohlcv.O, ohlcv.C)
value := base + math.abs(ohlcv.O - ohlcv.C) * (volData.pcBuy / 100)
else
base := math.max(ohlcv.O, ohlcv.C)
value := base - math.abs(ohlcv.O - ohlcv.C) * (volData.pcSell / 100)
barcolor(sup ? color.new(na, na) : ohlcv.C < ohlcv.O ? color.red : color.green,display = usecandle? display.all:display.none)
UseC = uc ? volData.higherCol:color.new(na, na)
plotcandle(uc?base:na, uc?base:na, uc?value:na, uc?value:na,
title='Body', color=UseC, bordercolor=na, wickcolor=UseC,
display = usecandle ? display.all - display.status_line : display.none, force_overlay=true,editable=false)
plotcandle(uc?ohlcv.O:na, uc?ohlcv.H:na, uc?ohlcv.L:na, uc?ohlcv.C:na,
title='Fill', color=color.new(UseC,80), bordercolor=UseC, wickcolor=UseC,
display = usecandle ? display.all - display.status_line : display.none, force_overlay=true,editable=false)
//------------------------------------------------------------
// Plot the EMA and filter out the noise with volume control. |
//------------------------------------------------------------
float emaFast = ta.ema(ohlcv.C, emaFastLength)
float emaSlow = ta.ema(ohlcv.C, emaSlowLength)
bool signal = emaFast > emaSlow
color c_signal = signal ? C_Up : C_Down
float volumeMA = ta.sma(ohlcv.V, volumeConfirmationLength)
bool crossover = ta.crossover(emaFast, emaSlow)
bool crossunder = ta.crossunder(emaFast, emaSlow)
isVolumeConfirmed(source, length, ma) =>
math.sum(source > ma ? source : 0, length) >= math.sum(source < ma ? source : 0, length)
bool ISV = isVolumeConfirmed(ohlcv.V, volumeConfirmationLength, volumeMA)
bool crossoverConfirmed = crossover and (not useVolumeConfirmation or ISV)
bool crossunderConfirmed = crossunder and (not useVolumeConfirmation or ISV)
PF = MAV ? emaFast : na
PS = MAV ? emaSlow : na
p1 = plot(PF, color = c_signal, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 80), linewidth = 10, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 90), linewidth = 20, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 95), linewidth = 30, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 98), linewidth = 45, editable = false, force_overlay = true, display = display.pane)
p2 = plot(PS, color = c_signal, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 80), linewidth = 10, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 90), linewidth = 20, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 95), linewidth = 30, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 98), linewidth = 45, editable = false, force_overlay = true, display = display.pane)
fill(p1, p2, top_value=crossover ? emaFast : emaSlow,
bottom_value =crossover ? emaSlow : emaFast,
top_color =color.new(c_signal, 80),
bottom_color =color.new(c_signal, 95)
)
// ✅ Usar colores configurables para señales
plotshape(crossoverConfirmed and MAV, style=shape.triangleup , location=location.belowbar, color=buySignalColor , size=size.small, force_overlay=true,display =display.pane)
plotshape(crossunderConfirmed and MAV, style=shape.triangledown, location=location.abovebar, color=sellSignalColor, size=size.small, force_overlay=true,display =display.pane)
string msg = '--------- '+"Buy volume ="+buyVolStr+" Buy Percent = "+buyPercentStr+" Sell volume = "+sellVolStr+" Sell Percent = "+sellPercentStr+" Net = "+volStr+' ---------'
if crossoverConfirmed
alert("Price (" + str.tostring(close) + ") Crossed over MA " + msg, alert_freq)
if crossunderConfirmed
alert("Price (" + str.tostring(close) + ") Crossed under MA " + msg, alert_freq)