JSun - Guppy Multiple Moving AverAgeThe Guppy Multiple Moving Average (GMMA) is a technical indicator that identifies changing trends, breakouts, and trading opportunities in the price of an asset by combining two groups of moving averages (MA) with different time periods. There is a short-term group of MAs, and a long-term group of MA. Both contain six MAs, for a total of 12. The term gets its name from Daryl Guppy, an Australian trader who is credited with its development.
Key Takeaways:
1. The Gruppy Multiple Moving Average (GMMA) is applied as an overlay on the price chart of an asset.
2. The short-term MAs are typically set at 3, 5, 8, 10, 12, and 15 periods. The longer-term MAs are typically set at 30, 35, 40, 45, 50, and 60.
3. When the short-term group of averages moves above the longer-term group, it indicates a price uptrend in the asset could be emerging.
4. When the short-term group falls below the longer-term group of MAs, a price downtrend in the asset could be starting.
5. When there is lots of separation between the MAs, this helps confirm the price trend in the current direction.
6. If both groups become compressed with each other, or crisscross, it indicates the price has paused and a price trend reversal is possible.
7. Traders often trade in the direction the longer-term MA group is moving, and use the short-term group for trade signals to enter or exit.
Cerca negli script per "TAKE"
Wolf Exit Oscillator Enhanced
# Wolf Exit Oscillator Enhanced
## What it is (quick take)
**Wolf Exit Oscillator Enhanced** is a clean, rules-first **exit timing tool** built on the **True Strength Index (TSI)** with two optional safeguards:
1. **Signal-line crossover** (to avoid bailing on shallow dips), and
2. **EMA confirmation** (price-based “is the trend actually weakening/strengthening?” check).
Use it to standardize when you **take profits, cut losers, or scale out**—especially after momentum runs hot or cold.
> Works best **paired** with:
>
> * **ABS NR — Fail-Safe Confirm (v4.2.2)** for entries
> * **ABS Companion Oscillator — Trend / Exhaustion / New Trend** for trend/exhaustion context
---
## How to use it (operational workflow)
1. **Set your bands**
* `exitHigh` and `exitLow` mark “overcooked” zones on the TSI scale (default: +60 / –60).
* Above `exitHigh` = momentum stretched **up** (good place to **exit shorts** or **take long profits**).
* Below `exitLow` = momentum stretched **down** (good place to **exit longs** or **take short profits**).
2. **Choose strictness**
* **Base mode**: the moment TSI crosses out of a band, you get an exit signal.
* **Add Signal-Line Cross** (`enableSignalX = true`): require TSI to cross its signal in the same direction → **fewer, cleaner exits**.
* **Add EMA Filter** (`enableEMAFilter = true`): also require **price** to confirm (e.g., long exit only if price < EMA). This avoids bailing during healthy trends.
3. **Execute with structure**
* **Full exit** when a signal fires, or
* **Scale out** (e.g., 50% on first signal, remainder on trail/secondary signal), or
* **Move stop** to lock gains once an exit signal prints.
4. **Alerts**
* Set to **“Once per bar close”** to avoid intrabar flip-flop.
* Use the two provided alert names for automation (see “Alerts” below).
---
## Signals & visuals
* **TSI line** (solid) and **Signal line** (dashed) with optional **histogram** (TSI − Signal).
* **Horizontal bands** at `exitHigh` and `exitLow`.
* **Labels**:
* **Exit Long** appears when long-side momentum breaks down (below `exitLow`, plus any enabled filters).
* **Exit Short** appears when short-side momentum breaks down (above `exitHigh`, plus any enabled filters).
**Alerts (stable names):**
* **WolfExit — Exit Long**
* **WolfExit — Exit Short**
---
## Non-repainting behavior (what to expect)
* The oscillator is computed with **EMAs on current timeframe**—no higher-timeframe lookahead, no repaint.
* **Intrabar**: TSI/Signal can fluctuate; use **bar-close evaluation** (and alert setting “Once per bar close”) to lock signals.
* If you enable the EMA filter, that check is also evaluated at bar close.
---
## Every input explained (and how changing it alters behavior)
### Momentum engine (TSI)
* **TSI Long EMA Length (`tsiLongLen`, default 25)**
Higher = smoother, slower momentum; fewer signals. Lower = twitchier, more signals.
* **TSI Short EMA Length (`tsiShortLen`, default 13)**
Fine-tunes responsiveness on top of the long length. Lower short → snappier TSI.
* **TSI Signal Line Length (`tsisigLen`, default 7)**
Higher = slower signal line (harder to cross) → fewer signals. Lower = easier crosses → more signals.
### Thresholds (the bands)
* **Exit Threshold High (`exitHigh`, default +60)**
Raise to demand **stronger** overbought before signaling short exits / long profit-takes. Lower to trigger sooner.
* **Exit Threshold Low (`exitLow`, default −60)**
Raise (toward 0) to trigger **earlier** on longs; lower (more negative) to wait for deeper downside stretch.
### Confirmation layers
* **Require Signal Line Crossover (`enableSignalX`, default true)**
On = TSI must cross its signal (same direction as exit) → **filters out shallow wiggles**. Off = faster, more frequent exits.
* **Enable EMA Confirmation Filter (`enableEMAFilter`, default true)**
On = require **price < EMA** for **Exit Long** and **price > EMA** for **Exit Short**.
* **EMA Exit Confirmation Length (`exitEMALen`, default 50)**
Higher = **trendier** filter (harder to flip) → fewer exits; Lower = more reactive → more exits.
### Visuals
* **Show Histogram (`showHist`)**
On = quick visual for TSI–Signal spread (helps spot weakening momentum before a cross).
* **Plot Exit Signals (`showSignals`)**
Toggle labels if you only want the lines/bands with alerts.
---
## Tuning recipes (quick, practical)
* **Strong trend days (avoid premature exits)**
* Keep **`enableSignalX = true`** and **`enableEMAFilter = true`**
* Increase **`exitEMALen`** (e.g., 80)
* Consider raising **`exitHigh`** to 65–70 (and lowering **`exitLow`** to −65/−70)
* **Choppy/range days (exit faster, take the cash)**
* **`enableEMAFilter = false`** (don’t wait for price filter)
* **`enableSignalX`** optional; try off for quicker responses
* Bring bands closer to **±50** to take profits earlier
* **Scalping / lower timeframes**
* Shorten **TSI lengths** a bit (e.g., 21/9/5)
* Consider **`exitHigh=55 / exitLow=-55`**
* Keep **histogram on** to visualize momentum flip risk
* **Swing trading / higher timeframes**
* Lengthen **TSI** (e.g., 35/21/9) and **`exitEMALen`** (e.g., 100)
* Wider bands (±65 to ±75) to catch bigger moves before exiting
---
## Playbooks (how to actually trade it)
* **Entry from ABS NR FS, exit with Wolf**
* Take entries from **ABS NR — Fail-Safe Confirm** (triangle).
* Use **Wolf Exit** to scale out: 50% on first exit label, trail remainder with price/EMA or your stop logic.
* **Pyramid & protect**
* Add on re-accelerations (TSI pulls back toward zero without breaching the opposite band).
* The first **Exit** signal → take partial, raise stop to last higher low / lower high.
* **Mean-reversion fade management**
* When fading with ABS NR (KC band pokes + stretched |Z|), target the first opposite **Exit** signal as your “don’t overstay” cue.
---
## Suggested starting points
* **Day trading (5–15m):**
* TSI: **25 / 13 / 7** (default)
* Bands: **+60 / −60**
* Confirmations: **SignalX = on**, **EMA Filter = on**, **EMA Len = 50**
* Alerts: **Once per bar close**
* **Scalping (1–3m):**
* TSI: **21 / 9 / 5**
* Bands: **±55**
* Confirmations: **SignalX = on**, **EMA Filter = off** (optional for speed)
* **Swing (1h–D):**
* TSI: **35 / 21 / 9**
* Bands: **+65 / −65** (or ±70)
* Confirmations: **SignalX = on**, **EMA Filter = on**, **EMA Len = 100**
---
## Best-practice pairings
* **Entries:** **ABS NR — Fail-Safe Confirm (v4.2.2)**
* Take ABS triangles; let Wolf standardize exits so you’re not guessing.
* **Context:** **ABS Companion Oscillator**
* Prefer holding longer when the companion stays above (for longs) or below (for shorts) its neutral band and **no EXH tag** prints.
* If companion flags **EXH** against your position, tighten stops; Wolf’s next exit signal becomes high priority.
---
## Notes & disclaimers
* This is an **exit signal tool**, not a strategy or broker.
* Signals are strongest when aligned with your **entry logic** and a **risk framework** (position sizing, stops, partials).
* All evaluations are **current timeframe**; no higher-timeframe lookahead is used.
* Markets change—tune the bands and confirmations per symbol/timeframe.
---
**Tip:** Keep your alerts simple—one for **Exit Long**, one for **Exit Short**, **Once per bar close**. Use partial exits on the first signal, and let your stop/trailing logic handle the rest.
Gold Breakout Strategy - RR 4Strategy Name: Gold Breakout Strategy - RR 4
🧠 Main Objective
This strategy aims to capitalize on breakouts from the Donchian Channel on Gold (XAU/USD) by filtering trades with:
Volume confirmation,
A custom momentum indicator (LWTI - Linear Weighted Trend Index),
And a specific trading session (8 PM to 8 AM Quebec time — GMT-5).
It takes only one trade per day, either a buy or a sell, using a fixed stop-loss at the wick of the breakout candle and a 4:1 reward-to-risk (RR) ratio.
📊 Indicators Used
Donchian Channel
Length: 96
Detects breakouts of recent highs or lows.
Volume
Simple Moving Average (SMA) over 30 bars.
A breakout is only valid if the current volume is above the SMA.
LWTI (Linear Weighted Trend Index)
Measures momentum using price differences over 25 bars, smoothed over 5.
Used to confirm trend direction:
Buy when LWTI > its smoothed version (uptrend).
Sell when LWTI < its smoothed version (downtrend).
⏰ Time Filter
The strategy only allows entries between 8 PM and 8 AM (GMT-5 / Quebec time).
A timestamp-based filter ensures the system recognizes the correct trading session even across midnight.
📌 Entry Conditions
🟢 Buy (Long)
Price breaks above the previous Donchian Channel high.
The current channel high is higher than the previous one.
Volume is above its moving average.
LWTI confirms an uptrend.
The time is within the trading session (20:00 to 08:00).
No trade has been taken yet today.
🔴 Sell (Short)
Price breaks below the previous Donchian Channel low.
The current channel low is lower than the previous one.
Volume is above its moving average.
LWTI confirms a downtrend.
The time is within the trading session.
No trade has been taken yet today.
💸 Trade Management
Stop-Loss (SL):
For long entries: placed below the wick low of the breakout candle.
For short entries: placed above the wick high of the breakout candle.
Take-Profit (TP):
Set at a fixed 4:1 reward-to-risk ratio.
Calculated as 4x the distance between the entry price and stop-loss.
No trailing stop, no break-even, no scaling in/out.
🎨 Visuals
Green triangle appears below the candle on a buy signal.
Red triangle appears above the candle on a sell signal.
Donchian Channel lines are plotted on the chart.
The strategy is designed for the 5-minute timeframe.
🔄 One Trade Per Day Rule
Once a trade is taken (buy or sell), no more trades will be executed for the rest of the day. This prevents overtrading and limits exposure.
Enigma Sniper 369The "Enigma Sniper 369" is a custom-built Pine Script indicator designed for TradingView, tailored specifically for forex traders seeking high-probability entries during high-volatility market sessions.
Unlike generic trend-following or scalping tools, this indicator uniquely combines session-based "kill zones" (London and US sessions), momentum-based candle analysis, and an optional EMA trend filter to pinpoint liquidity grabs and reversal opportunities.
Its originality lies in its focus on liquidity hunting—identifying levels where stop losses are likely clustered (around swing highs/lows and wick midpoints)—and providing visual entry zones that are dynamically removed once price breaches them, reducing clutter and focusing on actionable signals.
The name "369" reflects the structured approach of three key components (session timing, candle logic, and trend filter) working in harmony to snipe precise entries.
What It Does
"Enigma Sniper 369" identifies potential buy and sell opportunities by drawing two types of horizontal lines on the chart during user-defined London and US
session kill zones:
Solid Lines: Mark the swing low (for buys) or swing high (for sells) of a trigger candle, indicating a potential entry point where stop losses might be clustered.
Dotted Lines: Mark the 50% level of the candle’s wick (lower wick for buys, upper wick for sells), serving as a secondary confirmation zone for entries or tighter stop-loss placement.
These lines are plotted only when specific candle conditions are met within the kill zones, and they are automatically deleted once the price crosses them, signaling that the liquidity at that level has likely been grabbed. The indicator also includes an optional EMA filter to ensure trades align with the broader trend, reducing false signals in choppy markets.
How It Works
The indicator’s logic is built on a multi-layered approach:
Kill Zone Timing: Trades are only considered during user-defined London and US session hours (e.g., London from 02:00 to 12:00 UTC, as seen in the screenshots). These sessions are known for high volatility and liquidity, making them ideal for capturing institutional moves.
Candle-Based Momentum Logic:
Buy Signal: A candle must close above its midpoint (indicating bullish momentum) and have a lower low than the previous candle (suggesting a potential liquidity grab below the previous swing low). This is expressed as close > (high + low) / 2 and low < low .
Sell Signal: A candle must close below its midpoint (bearish momentum) and have a higher high than the previous candle (indicating a potential liquidity grab above the previous swing high), expressed as close < (high + low) / 2 and high > high .
These conditions ensure the indicator targets candles that break recent structure to hunt stop losses while showing directional momentum.
Optional EMA Filter: A 50-period EMA (customizable) can be enabled to filter signals based on trend direction.
Buy signals are only generated if the EMA is trending upward (ema_value > ema_value ), and sell signals require a downward EMA trend (ema_value < ema_value ). This reduces noise by aligning entries with the broader market trend.
Liquidity Levels and Deletion Logic:
For a buy signal, a solid green line is drawn at the candle’s low, and a dotted green line at the 50% level of the lower wick (from the candle body’s bottom to the low).
For a sell signal, a solid red line is drawn at the candle’s high, and a dotted red line at the 50% level of the upper wick (from the body’s top to the high).
These lines extend to the right until the price crosses them, at which point they are deleted, indicating the liquidity at that level has been taken (e.g., stop losses triggered).
Alerts: The indicator includes alert conditions for buy and sell signals, notifying traders when a new setup is identified.
Underlying Concepts
The indicator is grounded in the concept of liquidity hunting, a strategy often employed by institutional traders. Markets frequently move to levels where stop losses are clustered—typically just beyond swing highs or lows—before reversing in the opposite direction. The "Enigma Sniper 369" targets these moves by identifying candles that break structure (e.g., a lower low or higher high) during high-volatility sessions, suggesting a potential sweep of stop losses. The 50% wick level acts as a secondary confirmation, as this midpoint often represents a zone where tighter stop losses are placed by retail traders. The optional EMA filter adds a trend-following element, ensuring entries are taken in the direction of the broader market momentum, which is particularly useful on lower timeframes like the 15-minute chart shown in the screenshots.
How to Use It
Here’s a step-by-step guide based on the provided usage example on the GBP/USD 15-minute chart:
Setup the Indicator: Add "Enigma Sniper 369" to your TradingView chart. Adjust the London and US session hours to match your timezone (e.g., London from 02:00 to 12:00 UTC, US from 13:00 to 22:00 UTC). Customize the EMA period (default 50) and line styles/colors if desired.
Identify Kill Zones: The indicator highlights the London session in light green and the US session in light purple, as seen in the screenshots. Focus on these periods for signals, as they are the most volatile and likely to produce liquidity grabs.
Wait for a Signal: Look for solid and dotted lines to appear during the kill zones:
Buy Setup: A solid green line at the swing low and a dotted green line at the 50% lower wick level indicate a potential buy. This suggests the market may have grabbed liquidity below the swing low and is now poised to move higher.
Sell Setup: A solid red line at the swing high and a dotted red line at the 50% upper wick level indicate a potential sell, suggesting liquidity was taken above the swing high.
Place Your Trade:
For a buy, set a buy limit order at the dotted green line (50% wick level), as this is a more conservative entry point. Place your stop loss just below the solid green line (swing low) to cover the full swing. For example, in the screenshots, the market retraces to the dotted line at 1.32980 after a liquidity grab below the swing low, triggering a buy limit order.
For a sell, set a sell limit order at the dotted red line, with a stop loss just above the solid red line.
Monitor Price Action: Once the price crosses a line, it is deleted, indicating the liquidity at that level has been taken. In the screenshots, after the buy limit is triggered, the market moves higher, confirming the setup. The caption notes, “The market returns and tags us in long with a buy limit,” highlighting this retracement strategy.
Additional Context: Use the indicator to identify liquidity levels that may be targeted later. For example, the screenshot notes, “If a new session is about to open I will wait for the grab liquidity to go long,” showing how the indicator can be used to anticipate future moves at session opens (e.g., London open at 1.32980).
Risk Management: Always set a stop loss below the swing low (for buys) or above the swing high (for sells) to protect against adverse moves. The 50% wick level helps tighten entries, improving the risk-reward ratio.
Practical Example
On the GBP/USD 15-minute chart, during the London session (02:00 UTC), the indicator identifies a buy setup with a solid green line at 1.32901 (swing low) and a dotted green line at 1.32980 (50% wick level). The market initially dips below the swing low, grabbing liquidity, then retraces to the dotted line, triggering a buy limit order. The price subsequently rises to 1.33404, yielding a profitable trade. The user notes, “The logic is in the last candle it provides new level to go long,” emphasizing the indicator’s ability to identify fresh levels after a liquidity sweep.
Customization Tips
Adjust the EMA period to suit your timeframe (e.g., a shorter period like 20 for faster signals on lower timeframes).
Modify the session hours to align with your broker’s timezone or specific market conditions.
Use the alert feature to get notified of new setups without constantly monitoring the chart.
Why It’s Useful for Traders
The "Enigma Sniper 369" stands out by combining session timing, momentum-based candle analysis, and liquidity hunting into a single tool. It provides clear, actionable levels for entries and stop losses, removes invalid signals dynamically, and aligns trades with high-probability market conditions. Whether you’re a scalper looking for quick moves during London open or a swing trader targeting session-based reversals, this indicator offers a structured, data-driven approach to trading.
Dskyz (DAFE) Quantum Sentiment Flux - Beginners Dskyz (DAFE) Quantum Sentiment Flux - Beginners:
Welcome to the Dskyz (DAFE) Quantum Sentiment Flux - Beginners , a strategy and concept that’s your ultimate wingman for trading futures like MNQ, NQ, MES, and ES. This gem combines lightning-fast momentum signals, market sentiment smarts, and bulletproof risk management into a system so intuitive, even newbies can trade like pros. With clean DAFE visuals, preset modes for every vibe, and a revamped dashboard that’s basically a market GPS, this strategy makes futures trading feel like a high-octane sci-fi mission.
Built on the Dskyz (DAFE) legacy of Aurora Divergence, the Quantum Sentiment Flux is designed to empower beginners while giving seasoned traders a lean, sentiment-driven edge. It uses fast/slow EMA crossovers for entries, filters trades with VIX, SPX trends, and sector breadth, and keeps your account safe with adaptive stops and cooldowns. Tuned for more action with faster signals and a slick bottom-left dashboard, this updated version is ready to light up your charts and outsmart institutional traps. Let’s dive into why this strat’s a must-have and break down its brilliance.
Why Traders Need This Strategy
Futures markets are a wild ride—fast moves, volatility spikes (like the April 28, 2025 NQ 1k-point drop), and institutional games that can wreck unprepared traders. Beginners often get lost in complex systems or burned by impulsive trades. The Quantum Sentiment Flux is the antidote, offering:
Dead-Simple Setup: Preset modes (Aggressive, Balanced, Conservative) auto-tune signals, risk, and sizing, so you can trade without a quant degree.
Sentiment Superpower: VIX filter, SPX trend, and sector breadth visuals keep you aligned with market health, dodging chop and riding trends.
Ironclad Safety: Tighter ATR-based stops, 2:1 take-profits, and preset cooldowns protect your capital, even in chaotic sessions.
Next-Level Visuals: Green/red entry triangles, vibrant EMAs, a sector breadth background, and a beefed-up dashboard make signals and context pop.
DAFE Swagger: The clean aesthetics, sleek dashboard—ties it to Dskyz’s elite brand, making your charts a work of art.
Traders need this because it’s a plug-and-play system that blends beginner-friendly simplicity with pro-level market awareness. Whether you’re just starting or scalping 5min MNQ, this strat’s your key to trading with confidence and style.
Strategy Components
1. Core Signal Logic (High-Speed Momentum)
The strategy’s engine is a momentum-based system using fast and slow Exponential Moving Averages (EMAs), now tuned for faster, more frequent trades.
How It Works:
Fast/Slow EMAs: Fast EMA (Aggressive: 5, Balanced: 7, Conservative: 9 bars) and slow EMA (12/14/18 bars) track short-term vs. longer-term momentum.
Crossover Signals:
Buy: Fast EMA crosses above slow EMA, and trend_dir = 1 (fast EMA > slow EMA + ATR * strength threshold).
Sell: Fast EMA crosses below slow EMA, and trend_dir = -1 (fast EMA < slow EMA - ATR * strength threshold).
Strength Filter: ma_strength = fast EMA - slow EMA must exceed an ATR-scaled threshold (Aggressive: 0.15, Balanced: 0.18, Conservative: 0.25) for robust signals.
Trend Direction: trend_dir confirms momentum, filtering out weak crossovers in choppy markets.
Evolution:
Faster EMAs (down from 7–10/21–50) catch short-term trends, perfect for active futures markets.
Lower strength thresholds (0.15–0.25 vs. 0.3–0.5) make signals more sensitive, boosting trade frequency without sacrificing quality.
Preset tuning ensures beginners get optimized settings, while pros can tweak via mode selection.
2. Market Sentiment Filters
The strategy leans hard into market sentiment with a VIX filter, SPX trend analysis, and sector breadth visuals, keeping trades aligned with the big picture.
VIX Filter:
Logic: Blocks long entries if VIX > threshold (default: 20, can_long = vix_close < vix_limit). Shorts are always allowed (can_short = true).
Impact: Prevents longs during high-fear markets (e.g., VIX spikes in crashes), while allowing shorts to capitalize on downturns.
SPX Trend Filter:
Logic: Compares S&P 500 (SPX) close to its SMA (Aggressive: 5, Balanced: 8, Conservative: 12 bars). spx_trend = 1 (UP) if close > SMA, -1 (DOWN) if < SMA, 0 (FLAT) if neutral.
Impact: Provides dashboard context, encouraging trades that align with market direction (e.g., longs in UP trend).
Sector Breadth (Visual):
Logic: Tracks 10 sector ETFs (XLK, XLF, XLE, etc.) vs. their SMAs (same lengths as SPX). Each sector scores +1 (bullish), -1 (bearish), or 0 (neutral), summed as breadth (-10 to +10).
Display: Green background if breadth > 4, red if breadth < -4, else neutral. Dashboard shows sector trends (↑/↓/-).
Impact: Faster SMA lengths make breadth more responsive, reflecting sector rotations (e.g., tech surging, energy lagging).
Why It’s Brilliant:
- VIX filter adds pro-level volatility awareness, saving beginners from panic-driven losses.
- SPX and sector breadth give a 360° view of market health, boosting signal confidence (e.g., green BG + buy signal = high-probability trade).
- Shorter SMAs make sentiment visuals react faster, perfect for 5min charts.
3. Risk Management
The risk controls are a fortress, now tighter and more dynamic to support frequent trading while keeping accounts safe.
Preset-Based Risk:
Aggressive: Fast EMAs (5/12), tight stops (1.1x ATR), 1-bar cooldown. High trade frequency, higher risk.
Balanced: EMAs (7/14), 1.2x ATR stops, 1-bar cooldown. Versatile for most traders.
Conservative: EMAs (9/18), 1.3x ATR stops, 2-bar cooldown. Safer, fewer trades.
Impact: Auto-scales risk to match style, making it foolproof for beginners.
Adaptive Stops and Take-Profits:
Logic: Stops = entry ± ATR * atr_mult (1.1–1.3x, down from 1.2–2.0x). Take-profits = entry ± ATR * take_mult (2x stop distance, 2:1 reward/risk). Longs: stop below entry, TP above; shorts: vice versa.
Impact: Tighter stops increase trade turnover while maintaining solid risk/reward, adapting to volatility.
Trade Cooldown:
Logic: Preset-driven (Aggressive/Balanced: 1 bar, Conservative: 2 bars vs. old user-input 2). Ensures bar_index - last_trade_bar >= cooldown.
Impact: Faster cooldowns (especially Aggressive/Balanced) allow more trades, balanced by VIX and strength filters.
Contract Sizing:
Logic: User sets contracts (default: 1, max: 10), no preset cap (unlike old 7/5/3 suggestion).
Impact: Flexible but risks over-leverage; beginners should stick to low contracts.
Built To Be Reliable and Consistent:
- Tighter stops and faster cooldowns make it a high-octane system without blowing up accounts.
- Preset-driven risk removes guesswork, letting newbies trade confidently.
- 2:1 TPs ensure profitable trades outweigh losses, even in volatile sessions like April 27, 2025 ES slippage.
4. Trade Entry and Exit Logic
The entry/exit rules are simple yet razor-sharp, now with VIX filtering and faster signals:
Entry Conditions:
Long Entry: buy_signal (fast EMA crosses above slow EMA, trend_dir = 1), no position (strategy.position_size = 0), cooldown passed (can_trade), and VIX < 20 (can_long). Enters with user-defined contracts.
Short Entry: sell_signal (fast EMA crosses below slow EMA, trend_dir = -1), no position, cooldown passed, can_short (always true).
Logic: Tracks last_entry_bar for visuals, last_trade_bar for cooldowns.
Exit Conditions:
Stop-Loss/Take-Profit: ATR-based stops (1.1–1.3x) and TPs (2x stop distance). Longs exit if price hits stop (below) or TP (above); shorts vice versa.
No Other Exits: Keeps it straightforward, relying on stops/TPs.
5. DAFE Visuals
The visuals are pure DAFE magic, blending clean function with informative metrics utilized by professionals, now enhanced by faster signals and a responsive breadth background:
EMA Plots:
Display: Fast EMA (blue, 2px), slow EMA (orange, 2px), using faster lengths (5–9/12–18).
Purpose: Highlights momentum shifts, with crossovers signaling entries.
Sector Breadth Background:
Display: Green (90% transparent) if breadth > 4, red (90%) if breadth < -4, else neutral.
Purpose: Faster breadth_sma_len (5–12 vs. 10–50) reflects sector shifts in real-time, reinforcing signal strength.
- Visuals are intuitive, turning complex signals into clear buy/sell cues.
- Faster breadth background reacts to market rotations (e.g., tech vs. energy), giving a pro-level edge.
6. Sector Breadth Dashboard
The new bottom-left dashboard is a game-changer, a 3x16 table (black/gray theme) that’s your market command center:
Metrics:
VIX: Current VIX (red if > 20, gray if not).
SPX: Trend as “UP” (green), “DOWN” (red), or “FLAT” (gray).
Trade Longs: “OK” (green) if VIX < 20, “BLOCK” (red) if not.
Sector Breadth: 10 sectors (Tech, Financial, etc.) with trend arrows (↑ green, ↓ red, - gray).
Placeholder Row: Empty for future metrics (e.g., ATR, breadth score).
Purpose: Consolidates regime, volatility, market trend, and sector data, making decisions a breeze.
- VIX and SPX metrics add context, helping beginners avoid bad trades (e.g., no longs if “BLOCK”).
Sector arrows show market health at a glance, like a cheat code for sentiment.
Key Features
Beginner-Ready: Preset modes and clear visuals make futures trading a breeze.
Sentiment-Driven: VIX filter, SPX trend, and sector breadth keep you in sync with the market.
High-Frequency: Faster EMAs, tighter stops, and short cooldowns boost trade volume.
Safe and Smart: Adaptive stops/TPs and cooldowns protect capital while maximizing wins.
Visual Mastery: DAFE’s clean flair, EMAs, dashboard—makes trading fun and clear.
Backtestable: Lean code and fixed qty ensure accurate historical testing.
How to Use
Add to Chart: Load on a 5min MNQ/ES chart in TradingView.
Pick Preset: Aggressive (scalping), Balanced (versatile), or Conservative (safe). Balanced is default.
Set Contracts: Default 1, max 10. Stick low for safety.
Check Dashboard: Bottom-left shows preset, VIX, SPX, and sectors. “OK” + green breadth = strong buy.
Backtest: Run in strategy tester to compare modes.
Live Trade: Connect to Tradovate or similar. Watch for slippage (e.g., April 27, 2025 ES issues).
Replay Test: Try April 28, 2025 NQ drop to see VIX filter and stops in action.
Why It’s Brilliant
The Dskyz (DAFE) Quantum Sentiment Flux - Beginners is a masterpiece of simplicity and power. It takes pro-level tools—momentum, VIX, sector breadth—and wraps them in a system anyone can run. Faster signals and tighter stops make it a trading machine, while the VIX filter and dashboard keep you ahead of market chaos. The DAFE visuals and bottom-left command center turn your chart into a futuristic cockpit, guiding you through every trade. For beginners, it’s a safe entry to futures; for pros, it’s a scalping beast with sentiment smarts. This strat doesn’t just trade—it transforms how you see the market.
Final Notes
This is more than a strategy—it’s your launchpad to mastering futures with Dskyz (DAFE) flair. The Quantum Sentiment Flux blends accessibility, speed, and market savvy to help you outsmart the game. Load it, watch those triangles glow, and let’s make the markets your canvas!
Official Statement from Pine Script Team
(see TradingView help docs and forums):
"This warning may appear when you call functions such as ta.sma inside a request.security in a loop. There is no runtime impact. If you need to loop through a dynamic list of tickers, this cannot be avoided in the present version... Values will still be correct. Ignore this warning in such contexts."
(This publishing will most likely be taken down do to some miscellaneous rule about properly displaying charting symbols, or whatever. Once I've identified what part of the publishing they want to pick on, I'll adjust and repost.)
Use it with discipline. Use it with clarity. Trade smarter.
**I will continue to release incredible strategies and indicators until I turn this into a brand or until someone offers me a contract.
Created by Dskyz, powered by DAFE Trading Systems. Trade fast, trade bold.
Overnight Positioning w EMA - Strategy [presentTrading]I've recently started researching Market Timing strategies, and it’s proving to be quite an interesting area of study. The idea of predicting optimal times to enter and exit the market, based on historical data and various indicators, brings a dynamic edge to trading. Additionally, it is integrated with the 3commas bot for automated trade execution.
I'm still working on it. Welcome to share your point of view.
█ Introduction and How it is Different
The "Overnight Positioning with EMA " is designed to capitalize on market inefficiencies during the overnight trading period. This strategy takes a position shortly before the market closes and exits shortly after it opens the following day. What sets this strategy apart is the integration of an optional Exponential Moving Average (EMA) filter, which ensures that trades are aligned with the underlying trend. The strategy provides flexibility by allowing users to select between different global market sessions, such as the US, Asia, and Europe.
It is integrated with the 3commas bot for automated trade execution and has a built-in mechanism to avoid holding positions over the weekend by force-closing positions on Fridays before the market closes.
BTCUSD 20 mins Performance
█ Strategy, How it Works: Detailed Explanation
The core logic of this strategy is simple: enter trades before market close and exit them after market open, taking advantage of potential price movements during the overnight period. Here’s how it works in more detail:
🔶 Market Timing
The strategy determines the local market open and close times based on the selected market (US, Asia, Europe) and adjusts entry and exit points accordingly. The entry is triggered a specific number of minutes before market close, and the exit is triggered a specific number of minutes after market open.
🔶 EMA Filter
The strategy includes an optional EMA filter to help ensure that trades are taken in the direction of the prevailing trend. The EMA is calculated over a user-defined timeframe and length. The entry is only allowed if the closing price is above the EMA (for long positions), which helps to filter out trades that might go against the trend.
The EMA formula:
```
EMA(t) = +
```
Where:
- EMA(t) is the current EMA value
- Close(t) is the current closing price
- n is the length of the EMA
- EMA(t-1) is the previous period's EMA value
🔶 Entry Logic
The strategy monitors the market time in the selected timezone. Once the current time reaches the defined entry period (e.g., 20 minutes before market close), and the EMA condition is satisfied, a long position is entered.
- Entry time calculation:
```
entryTime = marketCloseTime - entryMinutesBeforeClose * 60 * 1000
```
🔶 Exit Logic
Exits are triggered based on a specified time after the market opens. The strategy checks if the current time is within the defined exit period (e.g., 20 minutes after market open) and closes any open long positions.
- Exit time calculation:
exitTime = marketOpenTime + exitMinutesAfterOpen * 60 * 1000
🔶 Force Close on Fridays
To avoid the risk of holding positions over the weekend, the strategy force-closes any open positions 5 minutes before the market close on Fridays.
- Force close logic:
isFriday = (dayofweek(currentTime, marketTimezone) == dayofweek.friday)
█ Trade Direction
This strategy is designed exclusively for long trades. It enters a long position before market close and exits the position after market open. There is no shorting involved in this strategy, and it focuses on capturing upward momentum during the overnight session.
█ Usage
This strategy is suitable for traders who want to take advantage of price movements that occur during the overnight period without holding positions for extended periods. It automates entry and exit times, ensuring that trades are placed at the appropriate times based on the market session selected by the user. The 3commas bot integration also allows for automated execution, making it ideal for traders who wish to set it and forget it. The strategy is flexible enough to work across various global markets, depending on the trader's preference.
█ Default Settings
1. entryMinutesBeforeClose (Default = 20 minutes):
This setting determines how many minutes before the market close the strategy will enter a long position. A shorter duration could mean missing out on potential movements, while a longer duration could expose the position to greater price fluctuations before the market closes.
2. exitMinutesAfterOpen (Default = 20 minutes):
This setting controls how many minutes after the market opens the position will be exited. A shorter exit time minimizes exposure to market volatility at the open, while a longer exit time could capture more of the overnight price movement.
3. emaLength (Default = 100):
The length of the EMA affects how the strategy filters trades. A shorter EMA (e.g., 50) reacts more quickly to price changes, allowing more frequent entries, while a longer EMA (e.g., 200) smooths out price action and only allows entries when there is a stronger underlying trend.
The effect of using a longer EMA (e.g., 200) would be:
```
EMA(t) = +
```
4. emaTimeframe (Default = 240):
This is the timeframe used for calculating the EMA. A higher timeframe (e.g., 360) would base entries on longer-term trends, while a shorter timeframe (e.g., 60) would respond more quickly to price movements, potentially allowing more frequent trades.
5. useEMA (Default = true):
This toggle enables or disables the EMA filter. When enabled, trades are only taken when the price is above the EMA. Disabling the EMA allows the strategy to enter trades without any trend validation, which could increase the number of trades but also increase risk.
6. Market Selection (Default = US):
This setting determines which global market's open and close times the strategy will use. The selection of the market affects the timing of entries and exits and should be chosen based on the user's preference or geographic focus.
Martingale with MACD+KDJ opening conditionsStrategy Overview:
This strategy is based on a Martingale trading approach, incorporating MACD and KDJ indicators. It features pyramiding, trailing stops, and dynamic profit-taking mechanisms, suitable for both long and short trades. The strategy increases position size progressively using a Multiplier, a key feature of Martingale systems.
Key Concepts:
Martingale Strategy: A trading system where positions are doubled or increased after a loss to recover previous losses with a single successful trade. In this script, the position size is incremented using a Multiplier for each addition.
Pyramiding: Allows adding to existing trades when market conditions are favorable, enhancing profitability during trends.
Settings:
Basic Inputs:
Initial Order: Defines the starting size of the position.
Default: 150.0
MACD Settings: Customize the fast, slow, and signal smoothing lengths.
Default: Fast Length: 9, Slow Length: 26, Signal Smoothing: 9
KDJ Settings: Customize the length and smoothing parameters for KDJ.
Default: Length: 14, Smooth K: 3, Smooth D: 3
Max Additions: Sets the number of additional positions (pyramiding).
Default: 5 (Min: 1, Max: 10)
Position Sizing: Percent to add to positions on favorable conditions.
Default: 1.0%
Martingale Multiplier:
Add Multiplier: This value controls the scaling of additional positions according to the Martingale principle. After each loss, a new position is added, and its size is increased by the Multiplier factor. For example, with a multiplier of 2, each new addition will be twice as large as the previous one, accelerating recovery if the price moves favorably.
Default: 1.0 (no multiplication)
Can be adjusted up to 10x to aggressively increase position size after losses.
Trade Execution:
Long Trades:
Entry Condition: A long position is opened when the MACD line crosses over the signal line, and the KDJ’s %K crosses above %D.
Additions (Martingale): After the initial long position, new positions are added if the price drops by the defined percentage, and each new addition is increased using the Multiplier. This continues up to the set Max Additions.
Short Trades:
Entry Condition: A short position is opened when the MACD line crosses under the signal line, and the KDJ’s %K crosses below %D.
Additions (Martingale): After the initial short position, new positions are added if the price rises by the defined percentage, and each new addition is increased using the Multiplier.
Exit Conditions:
Take Profit: Exits are triggered when the price reaches the take-profit threshold.
Stop Loss: If the price moves unfavorably, the position will be closed at the set stop-loss level.
Trailing Stop: Adjusts dynamically as the price moves in favor of the trade to lock in profits.
On-Chart Visuals:
Long Signals: Blue triangles below the bars indicate long entries, and green triangles mark additional long positions.
Short Signals: Red triangles above the bars indicate short entries, and orange triangles mark additional short positions.
Information Table:
The strategy displays a table with key metrics:
Open Price: The entry price of the trade.
Average Price: The average price of the current position.
Additions: The number of additional positions taken.
Next Add Price: The price level for the next position.
Take Profit: The price at which profits will be taken.
Stop Loss: The stop-loss level to minimize risk.
Usage Instructions:
Adjust the parameters to your trading style using the input settings.
The Multiplier amplifies your position size after each addition, so use it cautiously, especially in volatile markets.
Monitor the signals and table on the chart for entry/exit decisions and trade management.
Universal Ratio Trend Matrix [InvestorUnknown]The Universal Ratio Trend Matrix is designed for trend analysis on asset/asset ratios, supporting up to 40 different assets. Its primary purpose is to help identify which assets are outperforming others within a selection, providing a broad overview of market trends through a matrix of ratios. The indicator automatically expands the matrix based on the number of assets chosen, simplifying the process of comparing multiple assets in terms of performance.
Key features include the ability to choose from a narrow selection of indicators to perform the ratio trend analysis, allowing users to apply well-defined metrics to their comparison.
Drawback: Due to the computational intensity involved in calculating ratios across many assets, the indicator has a limitation related to loading speed. TradingView has time limits for calculations, and for users on the basic (free) plan, this could result in frequent errors due to exceeded time limits. To use the indicator effectively, users with any paid plans should run it on timeframes higher than 8h (the lowest timeframe on which it managed to load with 40 assets), as lower timeframes may not reliably load.
Indicators:
RSI_raw: Simple function to calculate the Relative Strength Index (RSI) of a source (asset price).
RSI_sma: Calculates RSI followed by a Simple Moving Average (SMA).
RSI_ema: Calculates RSI followed by an Exponential Moving Average (EMA).
CCI: Calculates the Commodity Channel Index (CCI).
Fisher: Implements the Fisher Transform to normalize prices.
Utility Functions:
f_remove_exchange_name: Strips the exchange name from asset tickers (e.g., "INDEX:BTCUSD" to "BTCUSD").
f_remove_exchange_name(simple string name) =>
string parts = str.split(name, ":")
string result = array.size(parts) > 1 ? array.get(parts, 1) : name
result
f_get_price: Retrieves the closing price of a given asset ticker using request.security().
f_constant_src: Checks if the source data is constant by comparing multiple consecutive values.
Inputs:
General settings allow users to select the number of tickers for analysis (used_assets) and choose the trend indicator (RSI, CCI, Fisher, etc.).
Table settings customize how trend scores are displayed in terms of text size, header visibility, highlighting options, and top-performing asset identification.
The script includes inputs for up to 40 assets, allowing the user to select various cryptocurrencies (e.g., BTCUSD, ETHUSD, SOLUSD) or other assets for trend analysis.
Price Arrays:
Price values for each asset are stored in variables (price_a1 to price_a40) initialized as na. These prices are updated only for the number of assets specified by the user (used_assets).
Trend scores for each asset are stored in separate arrays
// declare price variables as "na"
var float price_a1 = na, var float price_a2 = na, var float price_a3 = na, var float price_a4 = na, var float price_a5 = na
var float price_a6 = na, var float price_a7 = na, var float price_a8 = na, var float price_a9 = na, var float price_a10 = na
var float price_a11 = na, var float price_a12 = na, var float price_a13 = na, var float price_a14 = na, var float price_a15 = na
var float price_a16 = na, var float price_a17 = na, var float price_a18 = na, var float price_a19 = na, var float price_a20 = na
var float price_a21 = na, var float price_a22 = na, var float price_a23 = na, var float price_a24 = na, var float price_a25 = na
var float price_a26 = na, var float price_a27 = na, var float price_a28 = na, var float price_a29 = na, var float price_a30 = na
var float price_a31 = na, var float price_a32 = na, var float price_a33 = na, var float price_a34 = na, var float price_a35 = na
var float price_a36 = na, var float price_a37 = na, var float price_a38 = na, var float price_a39 = na, var float price_a40 = na
// create "empty" arrays to store trend scores
var a1_array = array.new_int(40, 0), var a2_array = array.new_int(40, 0), var a3_array = array.new_int(40, 0), var a4_array = array.new_int(40, 0)
var a5_array = array.new_int(40, 0), var a6_array = array.new_int(40, 0), var a7_array = array.new_int(40, 0), var a8_array = array.new_int(40, 0)
var a9_array = array.new_int(40, 0), var a10_array = array.new_int(40, 0), var a11_array = array.new_int(40, 0), var a12_array = array.new_int(40, 0)
var a13_array = array.new_int(40, 0), var a14_array = array.new_int(40, 0), var a15_array = array.new_int(40, 0), var a16_array = array.new_int(40, 0)
var a17_array = array.new_int(40, 0), var a18_array = array.new_int(40, 0), var a19_array = array.new_int(40, 0), var a20_array = array.new_int(40, 0)
var a21_array = array.new_int(40, 0), var a22_array = array.new_int(40, 0), var a23_array = array.new_int(40, 0), var a24_array = array.new_int(40, 0)
var a25_array = array.new_int(40, 0), var a26_array = array.new_int(40, 0), var a27_array = array.new_int(40, 0), var a28_array = array.new_int(40, 0)
var a29_array = array.new_int(40, 0), var a30_array = array.new_int(40, 0), var a31_array = array.new_int(40, 0), var a32_array = array.new_int(40, 0)
var a33_array = array.new_int(40, 0), var a34_array = array.new_int(40, 0), var a35_array = array.new_int(40, 0), var a36_array = array.new_int(40, 0)
var a37_array = array.new_int(40, 0), var a38_array = array.new_int(40, 0), var a39_array = array.new_int(40, 0), var a40_array = array.new_int(40, 0)
f_get_price(simple string ticker) =>
request.security(ticker, "", close)
// Prices for each USED asset
f_get_asset_price(asset_number, ticker) =>
if (used_assets >= asset_number)
f_get_price(ticker)
else
na
// overwrite empty variables with the prices if "used_assets" is greater or equal to the asset number
if barstate.isconfirmed // use barstate.isconfirmed to avoid "na prices" and calculation errors that result in empty cells in the table
price_a1 := f_get_asset_price(1, asset1), price_a2 := f_get_asset_price(2, asset2), price_a3 := f_get_asset_price(3, asset3), price_a4 := f_get_asset_price(4, asset4)
price_a5 := f_get_asset_price(5, asset5), price_a6 := f_get_asset_price(6, asset6), price_a7 := f_get_asset_price(7, asset7), price_a8 := f_get_asset_price(8, asset8)
price_a9 := f_get_asset_price(9, asset9), price_a10 := f_get_asset_price(10, asset10), price_a11 := f_get_asset_price(11, asset11), price_a12 := f_get_asset_price(12, asset12)
price_a13 := f_get_asset_price(13, asset13), price_a14 := f_get_asset_price(14, asset14), price_a15 := f_get_asset_price(15, asset15), price_a16 := f_get_asset_price(16, asset16)
price_a17 := f_get_asset_price(17, asset17), price_a18 := f_get_asset_price(18, asset18), price_a19 := f_get_asset_price(19, asset19), price_a20 := f_get_asset_price(20, asset20)
price_a21 := f_get_asset_price(21, asset21), price_a22 := f_get_asset_price(22, asset22), price_a23 := f_get_asset_price(23, asset23), price_a24 := f_get_asset_price(24, asset24)
price_a25 := f_get_asset_price(25, asset25), price_a26 := f_get_asset_price(26, asset26), price_a27 := f_get_asset_price(27, asset27), price_a28 := f_get_asset_price(28, asset28)
price_a29 := f_get_asset_price(29, asset29), price_a30 := f_get_asset_price(30, asset30), price_a31 := f_get_asset_price(31, asset31), price_a32 := f_get_asset_price(32, asset32)
price_a33 := f_get_asset_price(33, asset33), price_a34 := f_get_asset_price(34, asset34), price_a35 := f_get_asset_price(35, asset35), price_a36 := f_get_asset_price(36, asset36)
price_a37 := f_get_asset_price(37, asset37), price_a38 := f_get_asset_price(38, asset38), price_a39 := f_get_asset_price(39, asset39), price_a40 := f_get_asset_price(40, asset40)
Universal Indicator Calculation (f_calc_score):
This function allows switching between different trend indicators (RSI, CCI, Fisher) for flexibility.
It uses a switch-case structure to calculate the indicator score, where a positive trend is denoted by 1 and a negative trend by 0. Each indicator has its own logic to determine whether the asset is trending up or down.
// use switch to allow "universality" in indicator selection
f_calc_score(source, trend_indicator, int_1, int_2) =>
int score = na
if (not f_constant_src(source)) and source > 0.0 // Skip if you are using the same assets for ratio (for example BTC/BTC)
x = switch trend_indicator
"RSI (Raw)" => RSI_raw(source, int_1)
"RSI (SMA)" => RSI_sma(source, int_1, int_2)
"RSI (EMA)" => RSI_ema(source, int_1, int_2)
"CCI" => CCI(source, int_1)
"Fisher" => Fisher(source, int_1)
y = switch trend_indicator
"RSI (Raw)" => x > 50 ? 1 : 0
"RSI (SMA)" => x > 50 ? 1 : 0
"RSI (EMA)" => x > 50 ? 1 : 0
"CCI" => x > 0 ? 1 : 0
"Fisher" => x > x ? 1 : 0
score := y
else
score := 0
score
Array Setting Function (f_array_set):
This function populates an array with scores calculated for each asset based on a base price (p_base) divided by the prices of the individual assets.
It processes multiple assets (up to 40), calling the f_calc_score function for each.
// function to set values into the arrays
f_array_set(a_array, p_base) =>
array.set(a_array, 0, f_calc_score(p_base / price_a1, trend_indicator, int_1, int_2))
array.set(a_array, 1, f_calc_score(p_base / price_a2, trend_indicator, int_1, int_2))
array.set(a_array, 2, f_calc_score(p_base / price_a3, trend_indicator, int_1, int_2))
array.set(a_array, 3, f_calc_score(p_base / price_a4, trend_indicator, int_1, int_2))
array.set(a_array, 4, f_calc_score(p_base / price_a5, trend_indicator, int_1, int_2))
array.set(a_array, 5, f_calc_score(p_base / price_a6, trend_indicator, int_1, int_2))
array.set(a_array, 6, f_calc_score(p_base / price_a7, trend_indicator, int_1, int_2))
array.set(a_array, 7, f_calc_score(p_base / price_a8, trend_indicator, int_1, int_2))
array.set(a_array, 8, f_calc_score(p_base / price_a9, trend_indicator, int_1, int_2))
array.set(a_array, 9, f_calc_score(p_base / price_a10, trend_indicator, int_1, int_2))
array.set(a_array, 10, f_calc_score(p_base / price_a11, trend_indicator, int_1, int_2))
array.set(a_array, 11, f_calc_score(p_base / price_a12, trend_indicator, int_1, int_2))
array.set(a_array, 12, f_calc_score(p_base / price_a13, trend_indicator, int_1, int_2))
array.set(a_array, 13, f_calc_score(p_base / price_a14, trend_indicator, int_1, int_2))
array.set(a_array, 14, f_calc_score(p_base / price_a15, trend_indicator, int_1, int_2))
array.set(a_array, 15, f_calc_score(p_base / price_a16, trend_indicator, int_1, int_2))
array.set(a_array, 16, f_calc_score(p_base / price_a17, trend_indicator, int_1, int_2))
array.set(a_array, 17, f_calc_score(p_base / price_a18, trend_indicator, int_1, int_2))
array.set(a_array, 18, f_calc_score(p_base / price_a19, trend_indicator, int_1, int_2))
array.set(a_array, 19, f_calc_score(p_base / price_a20, trend_indicator, int_1, int_2))
array.set(a_array, 20, f_calc_score(p_base / price_a21, trend_indicator, int_1, int_2))
array.set(a_array, 21, f_calc_score(p_base / price_a22, trend_indicator, int_1, int_2))
array.set(a_array, 22, f_calc_score(p_base / price_a23, trend_indicator, int_1, int_2))
array.set(a_array, 23, f_calc_score(p_base / price_a24, trend_indicator, int_1, int_2))
array.set(a_array, 24, f_calc_score(p_base / price_a25, trend_indicator, int_1, int_2))
array.set(a_array, 25, f_calc_score(p_base / price_a26, trend_indicator, int_1, int_2))
array.set(a_array, 26, f_calc_score(p_base / price_a27, trend_indicator, int_1, int_2))
array.set(a_array, 27, f_calc_score(p_base / price_a28, trend_indicator, int_1, int_2))
array.set(a_array, 28, f_calc_score(p_base / price_a29, trend_indicator, int_1, int_2))
array.set(a_array, 29, f_calc_score(p_base / price_a30, trend_indicator, int_1, int_2))
array.set(a_array, 30, f_calc_score(p_base / price_a31, trend_indicator, int_1, int_2))
array.set(a_array, 31, f_calc_score(p_base / price_a32, trend_indicator, int_1, int_2))
array.set(a_array, 32, f_calc_score(p_base / price_a33, trend_indicator, int_1, int_2))
array.set(a_array, 33, f_calc_score(p_base / price_a34, trend_indicator, int_1, int_2))
array.set(a_array, 34, f_calc_score(p_base / price_a35, trend_indicator, int_1, int_2))
array.set(a_array, 35, f_calc_score(p_base / price_a36, trend_indicator, int_1, int_2))
array.set(a_array, 36, f_calc_score(p_base / price_a37, trend_indicator, int_1, int_2))
array.set(a_array, 37, f_calc_score(p_base / price_a38, trend_indicator, int_1, int_2))
array.set(a_array, 38, f_calc_score(p_base / price_a39, trend_indicator, int_1, int_2))
array.set(a_array, 39, f_calc_score(p_base / price_a40, trend_indicator, int_1, int_2))
a_array
Conditional Array Setting (f_arrayset):
This function checks if the number of used assets is greater than or equal to a specified number before populating the arrays.
// only set values into arrays for USED assets
f_arrayset(asset_number, a_array, p_base) =>
if (used_assets >= asset_number)
f_array_set(a_array, p_base)
else
na
Main Logic
The main logic initializes arrays to store scores for each asset. Each array corresponds to one asset's performance score.
Setting Trend Values: The code calls f_arrayset for each asset, populating the respective arrays with calculated scores based on the asset prices.
Combining Arrays: A combined_array is created to hold all the scores from individual asset arrays. This array facilitates further analysis, allowing for an overview of the performance scores of all assets at once.
// create a combined array (work-around since pinescript doesn't support having array of arrays)
var combined_array = array.new_int(40 * 40, 0)
if barstate.islast
for i = 0 to 39
array.set(combined_array, i, array.get(a1_array, i))
array.set(combined_array, i + (40 * 1), array.get(a2_array, i))
array.set(combined_array, i + (40 * 2), array.get(a3_array, i))
array.set(combined_array, i + (40 * 3), array.get(a4_array, i))
array.set(combined_array, i + (40 * 4), array.get(a5_array, i))
array.set(combined_array, i + (40 * 5), array.get(a6_array, i))
array.set(combined_array, i + (40 * 6), array.get(a7_array, i))
array.set(combined_array, i + (40 * 7), array.get(a8_array, i))
array.set(combined_array, i + (40 * 8), array.get(a9_array, i))
array.set(combined_array, i + (40 * 9), array.get(a10_array, i))
array.set(combined_array, i + (40 * 10), array.get(a11_array, i))
array.set(combined_array, i + (40 * 11), array.get(a12_array, i))
array.set(combined_array, i + (40 * 12), array.get(a13_array, i))
array.set(combined_array, i + (40 * 13), array.get(a14_array, i))
array.set(combined_array, i + (40 * 14), array.get(a15_array, i))
array.set(combined_array, i + (40 * 15), array.get(a16_array, i))
array.set(combined_array, i + (40 * 16), array.get(a17_array, i))
array.set(combined_array, i + (40 * 17), array.get(a18_array, i))
array.set(combined_array, i + (40 * 18), array.get(a19_array, i))
array.set(combined_array, i + (40 * 19), array.get(a20_array, i))
array.set(combined_array, i + (40 * 20), array.get(a21_array, i))
array.set(combined_array, i + (40 * 21), array.get(a22_array, i))
array.set(combined_array, i + (40 * 22), array.get(a23_array, i))
array.set(combined_array, i + (40 * 23), array.get(a24_array, i))
array.set(combined_array, i + (40 * 24), array.get(a25_array, i))
array.set(combined_array, i + (40 * 25), array.get(a26_array, i))
array.set(combined_array, i + (40 * 26), array.get(a27_array, i))
array.set(combined_array, i + (40 * 27), array.get(a28_array, i))
array.set(combined_array, i + (40 * 28), array.get(a29_array, i))
array.set(combined_array, i + (40 * 29), array.get(a30_array, i))
array.set(combined_array, i + (40 * 30), array.get(a31_array, i))
array.set(combined_array, i + (40 * 31), array.get(a32_array, i))
array.set(combined_array, i + (40 * 32), array.get(a33_array, i))
array.set(combined_array, i + (40 * 33), array.get(a34_array, i))
array.set(combined_array, i + (40 * 34), array.get(a35_array, i))
array.set(combined_array, i + (40 * 35), array.get(a36_array, i))
array.set(combined_array, i + (40 * 36), array.get(a37_array, i))
array.set(combined_array, i + (40 * 37), array.get(a38_array, i))
array.set(combined_array, i + (40 * 38), array.get(a39_array, i))
array.set(combined_array, i + (40 * 39), array.get(a40_array, i))
Calculating Sums: A separate array_sums is created to store the total score for each asset by summing the values of their respective score arrays. This allows for easy comparison of overall performance.
Ranking Assets: The final part of the code ranks the assets based on their total scores stored in array_sums. It assigns a rank to each asset, where the asset with the highest score receives the highest rank.
// create array for asset RANK based on array.sum
var ranks = array.new_int(used_assets, 0)
// for loop that calculates the rank of each asset
if barstate.islast
for i = 0 to (used_assets - 1)
int rank = 1
for x = 0 to (used_assets - 1)
if i != x
if array.get(array_sums, i) < array.get(array_sums, x)
rank := rank + 1
array.set(ranks, i, rank)
Dynamic Table Creation
Initialization: The table is initialized with a base structure that includes headers for asset names, scores, and ranks. The headers are set to remain constant, ensuring clarity for users as they interpret the displayed data.
Data Population: As scores are calculated for each asset, the corresponding values are dynamically inserted into the table. This is achieved through a loop that iterates over the scores and ranks stored in the combined_array and array_sums, respectively.
Automatic Extending Mechanism
Variable Asset Count: The code checks the number of assets defined by the user. Instead of hardcoding the number of rows in the table, it uses a variable to determine the extent of the data that needs to be displayed. This allows the table to expand or contract based on the number of assets being analyzed.
Dynamic Row Generation: Within the loop that populates the table, the code appends new rows for each asset based on the current asset count. The structure of each row includes the asset name, its score, and its rank, ensuring that the table remains consistent regardless of how many assets are involved.
// Automatically extending table based on the number of used assets
var table table = table.new(position.bottom_center, 50, 50, color.new(color.black, 100), color.white, 3, color.white, 1)
if barstate.islast
if not hide_head
table.cell(table, 0, 0, "Universal Ratio Trend Matrix", text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.merge_cells(table, 0, 0, used_assets + 3, 0)
if not hide_inps
table.cell(table, 0, 1,
text = "Inputs: You are using " + str.tostring(trend_indicator) + ", which takes: " + str.tostring(f_get_input(trend_indicator)),
text_color = color.white, text_size = fontSize), table.merge_cells(table, 0, 1, used_assets + 3, 1)
table.cell(table, 0, 2, "Assets", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, 2, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.cell(table, 0, x + 3, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = f_asset_col(array.get(ranks, x)), text_size = fontSize)
for r = 0 to (used_assets - 1)
for c = 0 to (used_assets - 1)
table.cell(table, c + 1, r + 3, text = str.tostring(array.get(combined_array, c + (r * 40))),
text_color = hl_type == "Text" ? f_get_col(array.get(combined_array, c + (r * 40))) : color.white, text_size = fontSize,
bgcolor = hl_type == "Background" ? f_get_col(array.get(combined_array, c + (r * 40))) : na)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, x + 3, "", bgcolor = #010c3b)
table.cell(table, used_assets + 1, 2, "", bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 1, x + 3, "==>", text_color = color.white)
table.cell(table, used_assets + 2, 2, "SUM", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
table.cell(table, used_assets + 3, 2, "RANK", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 2, x + 3,
text = str.tostring(array.get(array_sums, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_sum(array.get(array_sums, x), array.get(ranks, x)))
table.cell(table, used_assets + 3, x + 3,
text = str.tostring(array.get(ranks, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_rank(array.get(ranks, x)))
Uptrick: MultiTrend Squeeze System**Uptrick: MultiTrend Squeeze System Indicator: The Ultimate Trading Tool for Precision and Versatility 📈🔥**
### Introduction
The MultiTrend Squeeze System is a powerful, multi-faceted trading indicator designed to provide traders with precise buy and sell signals by combining the strengths of multiple technical analysis tools. This script isn't just an indicator; it's a comprehensive trading system that merges the power of SuperTrend, RSI, Volume Filtering, and Squeeze Momentum to give you an unparalleled edge in the market. Whether you're a day trader looking for short-term opportunities or a swing trader aiming to catch longer-term trends, this indicator is tailored to meet your needs.
### Key Features and Unique Aspects
1. **SuperTrend with Dynamic Adjustments 📊**
- **Adaptive SuperTrend Calculation:** The SuperTrend is a popular trend-following indicator that adjusts dynamically based on market conditions. It uses the Average True Range (ATR) to calculate upper and lower bands, which shift according to market volatility. This script takes it further by combining it with the RSI and Volume filtering to provide more accurate signals.
- **Direction Sensitivity:** The SuperTrend here is not static. It adjusts based on the direction of the previous SuperTrend value, ensuring that the indicator remains relevant even in choppy markets.
2. **RSI Integration for Overbought/Oversold Conditions 💹**
- **RSI Calculation:** The Relative Strength Index (RSI) is incorporated to identify overbought and oversold conditions, adding an extra layer of precision. This helps in filtering out false signals and ensuring that trades are taken only in optimal conditions.
- **Customizable RSI Settings:** The RSI settings are fully customizable, allowing traders to adjust the RSI length and the overbought/oversold levels according to their trading style and market.
3. **Volume Filtering for Enhanced Signal Confirmation 📉**
- **Volume Multiplier:** This unique feature integrates volume analysis, ensuring that signals are only generated when there is sufficient market participation. The Volume Multiplier can be adjusted to filter out weak signals that occur during low-volume periods.
- **Optional Volume Filtering:** Traders have the flexibility to turn the volume filter on or off, depending on their preference or market conditions. This makes the indicator versatile, allowing it to be used across different asset classes and market conditions.
4. **Squeeze Momentum Indicator (SMI) for Market Pressure Analysis 💥**
- **Squeeze Detection:** The Squeeze Momentum Indicator detects periods of market compression and expansion. This script goes beyond the traditional Bollinger Bands and Keltner Channels by incorporating true range calculations, offering a more nuanced view of market momentum.
- **Customizable Squeeze Settings:** The lengths and multipliers for both Bollinger Bands and Keltner Channels are customizable, giving traders the flexibility to fine-tune the indicator based on their specific needs.
5. **Visual and Aesthetic Customization 🎨**
- **Color-Coding for Clarity:** The indicator is color-coded to make it easy to interpret signals. Bullish trends are marked with a vibrant green color, while bearish trends are highlighted in red. Neutral or unconfirmed signals are displayed in softer tones to reduce noise.
- **Histogram Visualization:** The primary trend direction and strength are displayed as a histogram, making it easy to visualize the market's momentum at a glance. The height and color of the bars provide immediate feedback on the strength and direction of the trend.
6. **Alerts for Real-Time Trading 🚨**
- **Custom Alerts:** The script is equipped with custom alerts that notify traders when a buy or sell signal is generated. These alerts can be configured to send notifications through various channels, including email, SMS, or directly to the trading platform.
- **Immediate Reaction:** The alerts are triggered based on the confluence of SuperTrend, RSI, and Volume signals, ensuring that traders are notified only when the most robust trading opportunities arise.
7. **Comprehensive Input Customization ⚙️**
- **SuperTrend Settings:** Adjust the ATR length and factor to control the sensitivity of the SuperTrend. This allows you to adapt the indicator to different market conditions, whether you're trading a volatile cryptocurrency or a more stable stock.
- **RSI Settings:** Customize the RSI length and thresholds for overbought and oversold conditions, enabling you to tailor the indicator to your specific trading strategy.
- **Volume Settings:** The Volume Multiplier and the option to toggle the volume filter provide an additional layer of customization, allowing you to fine-tune the indicator based on market liquidity and participation.
- **Squeeze Momentum Settings:** The lengths and multipliers for Bollinger Bands and Keltner Channels can be adjusted to detect different levels of market compression, providing flexibility for both short-term and long-term traders.
### How It Works: A Deep Dive Into the Mechanics 🛠️
1. **SuperTrend Calculation:**
- The SuperTrend is calculated using the ATR, which measures market volatility. The indicator creates upper and lower bands around the price, adjusting these bands based on the current level of market volatility. The direction of the trend is determined by the position of the price relative to these bands.
- The script enhances the standard SuperTrend by ensuring that the bands do not flip-flop too quickly, reducing the chances of false signals in a choppy market. The direction is confirmed by checking the position of the close relative to the previous band, making the trend detection more reliable.
2. **RSI Integration:**
- The RSI is calculated over a customizable length and compared to user-defined overbought and oversold levels. When the RSI crosses below the oversold level, and the SuperTrend indicates a bullish trend, a buy signal is generated. Conversely, when the RSI crosses above the overbought level, and the SuperTrend indicates a bearish trend, a sell signal is triggered.
- The combination of RSI with SuperTrend ensures that trades are only taken when there is a strong confluence of signals, reducing the chances of entering trades during weak or indecisive market phases.
3. **Volume Filtering:**
- The script calculates the average volume over a 20-period simple moving average. The volume filter ensures that buy and sell signals are only valid when the current volume exceeds a multiple of this average, which can be adjusted by the user. This feature helps filter out weak signals that might occur during low-volume periods, such as just before a major news event or during after-hours trading.
- The volume filter is particularly useful in markets where volume spikes are common, as it ensures that signals are only generated when there is significant market interest in the direction of the trend.
4. **Squeeze Momentum:**
- The Squeeze Momentum Indicator (SMI) adds a layer of market pressure analysis. The script calculates Bollinger Bands and Keltner Channels, detecting when the market is in a "squeeze" — a period of low volatility that typically precedes a significant price move.
- When the Bollinger Bands are inside the Keltner Channels, the market is in a squeeze (compression phase). This is often a precursor to a breakout or breakdown. The script colors the histogram bars black during this phase, indicating a potential for a strong move. Once the squeeze is released, the bars are colored according to the direction of the SuperTrend, signaling a potential entry point.
5. **Integration and Signal Generation:**
- The script brings together the SuperTrend, RSI, Volume, and Squeeze Momentum to generate highly accurate buy and sell signals. A buy signal is triggered when the SuperTrend is bullish, the RSI indicates oversold conditions, and the volume filter confirms strong market participation. Similarly, a sell signal is generated when the SuperTrend is bearish, the RSI indicates overbought conditions, and the volume filter is met.
- The combination of these elements ensures that the signals are robust, reducing the likelihood of entering trades during weak or indecisive market conditions.
### Practical Applications: How to Use the MultiTrend Squeeze System 📅
1. **Day Trading:**
- For day traders, this indicator provides quick and reliable signals that can be used to enter and exit trades multiple times within a day. The volume filter ensures that you are trading during the most liquid times of the day, increasing the chances of successful trades. The Squeeze Momentum aspect helps you catch breakouts or breakdowns, which are common in intraday trading.
2. **Swing Trading:**
- Swing traders can use the MultiTrend Squeeze System to identify longer-term trends. By adjusting the ATR length and factor, you can make the SuperTrend more sensitive to catch longer-term moves. The RSI and Squeeze Momentum aspects help you time your entries and exits, ensuring that you get in early on a trend and exit before it reverses.
3. **Scalping:**
- For scalpers, the quick signals provided by this system, especially in combination with the volume filter, make it easier to take small profits repeatedly. The histogram bars give you a clear visual cue of the market's momentum, making it easier to scalp effectively.
4. **Position Trading:**
- Even position traders can benefit from this indicator by using it to confirm long-term trends. By adjusting the settings to less sensitive parameters, you can ensure that you are only entering trades when a strong trend is confirmed. The Squeeze Momentum indicator will help you stay in the trade during periods of consolidation, waiting for the next big move.
### Conclusion: Why the MultiTrend Squeeze System is a Game-Changer 🚀
The MultiTrend Squeeze System is not just another trading indicator; it’s a comprehensive trading strategy encapsulated within a single script. By combining the power
of SuperTrend, RSI, Volume Filtering, and Squeeze Momentum, this indicator provides a robust and versatile tool that can be adapted to various trading styles and market conditions.
**Why is it Unique?**
- **Multi-Dimensional Analysis:** Unlike many other indicators that rely on a single data point or calculation, this script incorporates multiple layers of analysis, ensuring that signals are based on a confluence of factors, which increases their reliability.
- **Customizability:** The vast range of input settings allows traders to tailor the indicator to their specific needs, whether they are trading forex, stocks, cryptocurrencies, or commodities.
- **Visual Clarity:** The color-coded bars, labels, and signals make it easy to interpret the market conditions at a glance, reducing the time needed to make trading decisions.
Whether you are a novice trader or an experienced market participant, the MultiTrend Squeeze System offers a powerful toolset to enhance your trading strategy, reduce risk, and maximize your potential returns. With its combination of trend analysis, momentum detection, and volume filtering, this indicator is designed to help you trade with confidence and precision in any market condition.
Six PillarsGeneral Overview
The "Six Pillars" indicator is a comprehensive trading tool that combines six different technical analysis methods to provide a holistic view of market conditions.
These six pillars are:
Trend
Momentum
Directional Movement (DM)
Stochastic
Fractal
On-Balance Volume (OBV)
The indicator calculates the state of each pillar and presents them in an easy-to-read table format. It also compares the current timeframe with a user-defined comparison timeframe to offer a multi-timeframe analysis.
A key feature of this indicator is the Confluence Strength meter. This unique metric quantifies the overall agreement between the six pillars across both timeframes, providing a score out of 100. A higher score indicates stronger agreement among the pillars, suggesting a more reliable trading signal.
I also included a visual cue in the form of candle coloring. When all six pillars agree on a bullish or bearish direction, the candle is colored green or red, respectively. This feature allows traders to quickly identify potential high-probability trade setups.
The Six Pillars indicator is designed to work across multiple timeframes, offering a comparison between the current timeframe and a user-defined comparison timeframe. This multi-timeframe analysis provides traders with a more comprehensive understanding of market dynamics.
Origin and Inspiration
The Six Pillars indicator was inspired by the work of Dr. Barry Burns, author of "Trend Trading for Dummies" and his concept of "5 energies." (Trend, Momentum, Cycle, Support/Resistance, Scale) I was intrigued by Dr. Burns' approach to analyzing market dynamics and decided to put my own twist upon his ideas.
Comparing the Six Pillars to Dr. Burns' 5 energies, you'll notice I kept Trend and Momentum, but I swapped out Cycle, Support/Resistance, and Scale for Directional Movement, Stochastic, Fractal, and On-Balance Volume. These changes give you a more dynamic view of market strength, potential reversals, and volume confirmation all in one package.
What Makes This Indicator Unique
The standout feature of the Six Pillars indicator is its Confluence Strength meter. This feature calculates the overall agreement between the six pillars, providing traders with a clear, numerical representation of signal strength.
The strength is calculated by considering the state of each pillar in both the current and comparison timeframes, resulting in a score out of 100.
Here's how it calculates the strength:
It considers the state of each pillar in both the current timeframe and the comparison timeframe.
For each pillar, the absolute value of its state is taken. This means that both strongly bullish (2) and strongly bearish (-2) states contribute equally to the strength.
The absolute values for all six pillars are summed up for both timeframes, resulting in two sums: current_sum and alternate_sum.
These sums are then added together to get a total_sum.
The total_sum is divided by 24 (the maximum possible sum if all pillars were at their strongest states in both timeframes) and multiplied by 100 to get a percentage.
The result is rounded to the nearest integer and capped at a minimum of 1.
This calculation method ensures that the Confluence Strength meter takes into account not only the current timeframe but also the comparison timeframe, providing a more robust measure of overall market sentiment. The resulting score, ranging from 1 to 100, gives traders a clear and intuitive measure of how strongly the pillars agree, with higher scores indicating stronger potential signals.
This approach to measuring signal strength is unique in that it doesn't just rely on a single aspect of price action or volume. Instead, it takes into account multiple factors, providing a more robust and reliable indication of potential market moves. The higher the Confluence Strength score, the more confident traders can be in the signal.
The Confluence Strength meter helps traders in several ways:
It provides a quick and easy way to gauge the overall market sentiment.
It helps prioritize potential trades by identifying the strongest signals.
It can be used as a filter to avoid weaker setups and focus on high-probability trades.
It offers an additional layer of confirmation for other trading strategies or indicators.
By combining the Six Pillars analysis with the Confluence Strength meter, I've created a powerful tool that not only identifies potential trading opportunities but also quantifies their strength, giving traders a significant edge in their decision-making process.
How the Pillars Work (What Determines Bullish or Bearish)
While developing this indicator, I selected and configured six key components that work together to provide a comprehensive view of market conditions. Each pillar is set up to complement the others, creating a synergistic effect that offers traders a more nuanced understanding of price action and volume.
Trend Pillar: Based on two Exponential Moving Averages (EMAs) - a fast EMA (8 period) and a slow EMA (21 period). It determines the trend by comparing these EMAs, with stronger trends indicated when the fast EMA is significantly above or below the slow EMA.
Directional Movement (DM) Pillar: Utilizes the Average Directional Index (ADX) with a default period of 14. It measures trend strength, with values above 25 indicating a strong trend. It also considers the Positive and Negative Directional Indicators (DI+ and DI-) to determine trend direction.
Momentum Pillar: Uses the Moving Average Convergence Divergence (MACD) with customizable fast (12), slow (26), and signal (9) lengths. It compares the MACD line to the signal line to determine momentum strength and direction.
Stochastic Pillar: Employs the Stochastic oscillator with a default period of 13. It identifies overbought conditions (above 80) and oversold conditions (below 20), with intermediate zones between 60-80 and 20-40.
Fractal Pillar: Uses Williams' Fractal indicator with a default period of 3. It identifies potential reversal points by looking for specific high and low patterns over the given period.
On-Balance Volume (OBV) Pillar: Incorporates On-Balance Volume with three EMAs - short (3), medium (13), and long (21) periods. It assesses volume trends by comparing these EMAs.
Each pillar outputs a state ranging from -2 (strongly bearish) to 2 (strongly bullish), with 0 indicating a neutral state. This standardized output allows for easy comparison and aggregation of signals across all pillars.
Users can customize various parameters for each pillar, allowing them to fine-tune the indicator to their specific trading style and market conditions. The multi-timeframe comparison feature also allows users to compare pillar states between the current timeframe and a user-defined comparison timeframe, providing additional context for decision-making.
Design
From a design standpoint, I've put considerable effort into making the Six Pillars indicator visually appealing and user-friendly. The clean and minimalistic design is a key feature that sets this indicator apart.
I've implemented a sleek table layout that displays all the essential information in a compact and organized manner. The use of a dark background (#030712) for the table creates a sleek look that's easy on the eyes, especially during extended trading sessions.
The overall design philosophy focuses on presenting complex information in a simple, intuitive format, allowing traders to make informed decisions quickly and efficiently.
The color scheme is carefully chosen to provide clear visual cues:
White text for headers ensures readability
Green (#22C55E) for bullish signals
Blue (#3B82F6) for neutral states
Red (#EF4444) for bearish signals
This color coding extends to the candle coloring, making it easy to spot when all pillars agree on a bullish or bearish outlook.
I've also incorporated intuitive symbols (↑↑, ↑, →, ↓, ↓↓) to represent the different states of each pillar, allowing for quick interpretation at a glance.
The table layout is thoughtfully organized, with clear sections for the current and comparison timeframes. The Confluence Strength meter is prominently displayed, providing traders with an immediate sense of signal strength.
To enhance usability, I've added tooltips to various elements, offering additional information and explanations when users hover over different parts of the indicator.
How to Use This Indicator
The Six Pillars indicator is a versatile tool that can be used for various trading strategies. Here are some general usage guidelines and specific scenarios:
General Usage Guidelines:
Pay attention to the Confluence Strength meter. Higher values indicate stronger agreement among the pillars and potentially more reliable signals.
Use the multi-timeframe comparison to confirm signals across different time horizons.
Look for alignment between the current timeframe and comparison timeframe pillars for stronger signals.
One of the strengths of this indicator is it can let you know when markets are sideways – so in general you can know to avoid entering when the Confluence Strength is low, indicating disagreement among the pillars.
Customization Options
The Six Pillars indicator offers a wide range of customization options, allowing traders to tailor the tool to their specific needs and trading style. Here are the key customizable elements:
Comparison Timeframe:
Users can select any timeframe for comparison with the current timeframe, providing flexibility in multi-timeframe analysis.
Trend Pillar:
Fast EMA Period: Adjustable for quicker or slower trend identification
Slow EMA Period: Can be modified to capture longer-term trends
Momentum Pillar:
MACD Fast Length
MACD Slow Length
MACD Signal Length These can be adjusted to fine-tune momentum sensitivity
DM Pillar:
ADX Period: Customizable to change the lookback period for trend strength measurement
ADX Threshold: Adjustable to define what constitutes a strong trend
Stochastic Pillar:
Stochastic Period: Can be modified to change the sensitivity of overbought/oversold readings
Fractal Pillar:
Fractal Period: Adjustable to identify potential reversal points over different timeframes
OBV Pillar:
Short OBV EMA
Medium OBV EMA
Long OBV EMA These periods can be customized to analyze volume trends over different timeframes
These customization options allow traders to experiment with different settings to find the optimal configuration for their trading strategy and market conditions. The flexibility of the Six Pillars indicator makes it adaptable to various trading styles and market environments.
High & Low Of Custom Session - Breakout True Open [cognyto]This indicator is based on the High & Low Of Custom Session - OpeningRange Breakout (Expo) created by Zeiierman.
It adds new functionality and enhances existing settings, targeting ES, NQ, and YM:
Manages session defaults to 12:00 to 13:00
New true opening fully customizable (default 13:00)
Manages timeframe visualization (default 15m and below)
Manages session draw length until the end of the current session (default NY)
Manages previous sessions, allowing the to be hidden
Improves timezone selection (default NY)
Following the strategy called Paradox detailed by DayTradingRauf, it works with indices like ES, NQ, and YM.
The rules consider three possible profiles:
First
AM session as consolidation (08:00-12:00)
Lunch hour range as consolidation (less than 100 points)
PM session breaking either side of the session range
Second
AM session trending lower (08:00-12:00)
Lunch hour range as consolidation (less than 100 points)
PM session trending higher
Third
AM session trending higher (08:00-12:00)
Lunch hour range as consolidation (less than 100 points)
PM session trending lower
After the session ends, the opening price at 13:00 is automatically drawn as it is a key point for the entry strategy.
The strategy can be monitored using a 5-minute or 15-minute timeframe as follows:
- Wait for a liquidity hunt (either the high or low of the lunch session range or AM is taken).
- If liquidity is taken, switch to the 1-minute timeframe and wait for a CISD (change in the state of delivery), where the price closes below an OB, or consider a breaker block or iFVG to enter the trade.
- Bullish entries should happen below the opening price at 13:00, and bearish entries should happen above.
- Consider a 1:2 reward ratio. However, runners can target the opposite side of the range that was not yet taken.
This indicator is for informational purposes only and you should not rely on any information it provides as legal, tax, investment, financial or other advice. Nothing provided by this indicator constitutes a solicitation, recommendation, endorsement or offer by cognyto or any third party service provider to buy or sell any securities or other financial instruments in this or any other jurisdiction in which such solicitation or offer would be unlawful under the securities laws of such jurisdiction.
TrailingTakeProfit exampleQuite recently I came upon a concept of Trailing Take Profit and I couldn't find a PineScript which implements it for the fastest possible execution, so here it is :)
Everybody knows Trailing StopLoss - an invisible mechanism follows the price and exits the trade once the price retreats too much from its recent most extended favourable value. Trailing TakeProfit does the similar thing, but at the opposite end - the trade gets closed if a price moves too well, in too favourable extent.
Why close the trade if it is going so good? Well, whatever goes up, must go down and vice versa. It is expected, that after fast rally a market will soon fall and after a dump it will go up. So Trailing TakeProfit's role is to secure profits.
But how does Trailing TakeProfit differ from the standard one? "Trailing" means, the exit level is moving. Its role is to be executed only after a rapid favourable move within 1-2 candles, not more. We never know when a rapid move happens, but when it does, we wanna catch those pips and quickly exit without looking back.
Visually Trailing TakeProfit levels are... bands. In this script example these are ATR multiplied bands (aka Keltner Channel), but they could also be Bollinger Bands or something else.
The code is simple just to focus on this single functionality, so you can quickly copy-paste it into your script. Entries are triggered by default SMA crosses.
P.S. I wouldn't be myself, if I didn't add alert messages compatible with the syntax of recently revamped TradingConnector - both in the code already and in the table showing them.
All Candlestick Patterns on Backtest [By MUQWISHI]▋ INTRODUCTION :
The “All Candlestick Patterns on Backtest” indicator generates a table that offers a clear visualization of the historical return percentages for each candlestick pattern strategy over a specified time period. This table serves as an organized resource, serving as a launching point for in-depth research into candle formations. It may help to rectify any misconceptions surrounding candlestick patterns, refine trading approaches, and it could be foundation to make informed decisions in trading journey.
_______________________
▋ OVERVIEW:
_______________________
▋ CREDIT:
Credit to public technical “*All Candlestick Patterns*” indicator.
_______________________
▋ TABLE:
_______________________
▋ CHART:
_______________________
▋ INDICATOR SETTINGS:
#Section One: Table Setting
#Section Two: Backtest Setting
(1) Backtest Starting Period.
Note: If the datetime of the first candle on the chart is after the entreated datetime, the calculation will start from the first candle on the chart.
(2) Initial Equity ($).
(3) Leverage: Current Equity x Leverage Value.
(4) Entry Mode:
- “At Close”: Execute entry order as soon as the candle confirmed.
- “Breakout High (Low for Short)”: Stop limit buy order, entry order will be executed as soon as the next candle breakout the high of last pattern’s candle (low for short)
(5) Cancel Entry Within Bars: This option is applicable with {Entry Mode = Breakout High (Low for Short)}, to cancel the Entry Order if it's not executed within certain selected number of bars.
(6) Stoploss Range: the range refers to high of pattern - low of pattern.
(7) Risk:Reward: the calculation of risk:reward range start from entry price level. For example: A pattern triggered with range 10 points, and entry price is 100.
- For 1:1~risk:reward would the stoploss at 90 and takeprofit at 110.
- For 1:3~risk:reward would the stoploss at 90 and takeprofit at 130.
#Section Three: Technical & Candle Patterns
_______________________
▋ Comments:
This table was developed for research and educational purposes.
Candlestick patterns are almost similar as seen in “*All Candlestick Patterns*” indicator.
The table results should not be taken as a major concept to build a trading decision.
Personally, I see candlestick patterns as a means to comprehend the psychology of the market, and help to follow the price action.
Please let me know if you have any questions.
Thank you.
Ehlers Two-Pole Predictor [Loxx]Ehlers Two-Pole Predictor is a new indicator by John Ehlers . The translation of this indicator into PineScript™ is a collaborative effort between @cheatcountry and I.
The following is an excerpt from "PREDICTION" , by John Ehlers
Niels Bohr said “Prediction is very difficult, especially if it’s about the future.”. Actually, prediction is pretty easy in the context of technical analysis . All you have to do is to assume the market will behave in the immediate future just as it has behaved in the immediate past. In this article we will explore several different techniques that put the philosophy into practice.
LINEAR EXTRAPOLATION
Linear extrapolation takes the philosophical approach quite literally. Linear extrapolation simply takes the difference of the last two bars and adds that difference to the value of the last bar to form the prediction for the next bar. The prediction is extended further into the future by taking the last predicted value as real data and repeating the process of adding the most recent difference to it. The process can be repeated over and over to extend the prediction even further.
Linear extrapolation is an FIR filter, meaning it depends only on the data input rather than on a previously computed value. Since the output of an FIR filter depends only on delayed input data, the resulting lag is somewhat like the delay of water coming out the end of a hose after it supplied at the input. Linear extrapolation has a negative group delay at the longer cycle periods of the spectrum, which means water comes out the end of the hose before it is applied at the input. Of course the analogy breaks down, but it is fun to think of it that way. As shown in Figure 1, the actual group delay varies across the spectrum. For frequency components less than .167 (i.e. a period of 6 bars) the group delay is negative, meaning the filter is predictive. However, the filter has a positive group delay for cycle components whose periods are shorter than 6 bars.
Figure 1
Here’s the practical ramification of the group delay: Suppose we are projecting the prediction 5 bars into the future. This is fine as long as the market is continued to trend up in the same direction. But, when we get a reversal, the prediction continues upward for 5 bars after the reversal. That is, the prediction fails just when you need it the most. An interesting phenomenon is that, regardless of how far the extrapolation extends into the future, the prediction will always cross the signal at the same spot along the time axis. The result is that the prediction will have an overshoot. The amplitude of the overshoot is a function of how far the extrapolation has been carried into the future.
But the overshoot gives us an opportunity to make a useful prediction at the cyclic turning point of band limited signals (i.e. oscillators having a zero mean). If we reduce the overshoot by reducing the gain of the prediction, we then also move the crossing of the prediction and the original signal into the future. Since the group delay varies across the spectrum, the effect will be less effective for the shorter cycles in the data. Nonetheless, the technique is effective for both discretionary trading and automated trading in the majority of cases.
EXPLORING THE CODE
Before we predict, we need to create a band limited indicator from which to make the prediction. I have selected a “roofing filter” consisting of a High Pass Filter followed by a Low Pass Filter. The tunable parameter of the High Pass Filter is HPPeriod. Think of it as a “stone wall filter” where cycle period components longer than HPPeriod are completely rejected and cycle period components shorter than HPPeriod are passed without attenuation. If HPPeriod is set to be a large number (e.g. 250) the indicator will tend to look more like a trending indicator. If HPPeriod is set to be a smaller number (e.g. 20) the indicator will look more like a cycling indicator. The Low Pass Filter is a Hann Windowed FIR filter whose tunable parameter is LPPeriod. Think of it as a “stone wall filter” where cycle period components shorter than LPPeriod are completely rejected and cycle period components longer than LPPeriod are passed without attenuation. The purpose of the Low Pass filter is to smooth the signal. Thus, the combination of these two filters forms a “roofing filter”, named Filt, that passes spectrum components between LPPeriod and HPPeriod.
Since working into the future is not allowed in EasyLanguage variables, we need to convert the Filt variable to the data array XX. The data array is first filled with real data out to “Length”. I selected Length = 10 simply to have a convenient starting point for the prediction. The next block of code is the prediction into the future. It is easiest to understand if we consider the case where count = 0. Then, in English, the next value of the data array is equal to the current value of the data array plus the difference between the current value and the previous value. That makes the prediction one bar into the future. The process is repeated for each value of count until predictions up to 10 bars in the future are contained in the data array. Next, the selected prediction is converted from the data array to the variable “Prediction”. Filt is plotted in Red and Prediction is plotted in yellow.
The Predict Extrapolation indicator is shown below for the Emini S&P Futures contract using the default input parameters. Filt is plotted in red and Predict is plotted in yellow. The crossings of the Predict and Filt lines provide reliable buy and sell timing signals. There is some overshoot for the shorter cycle periods, for example in February and March 2021, but the only effect is a late timing signal. Further reducing the gain and/or reducing the BarsFwd inputs would provide better timing signals during this period.
Figure 2. Predict Extrapolation Provides Reliable Timing Signals
I have experimented with other FIR filters for predictions, but found none that had a significant advantage over linear extrapolation.
MESA
MESA is an acronym for Maximum Entropy Spectral Analysis. Conceptually, it removes spectral components until the residual is left with maximum entropy. It does this by forming an all-pole filter whose order is determined by the selected number of coefficients. It maximally addresses the data within the selected window and ignores all other data. Its resolution is determined only by the number of filter coefficients selected. Since the resulting filter is an IIR filter, a prediction can be formed simply by convolving the filter coefficients with the data. MESA is one of the few, if not the only way to practically determine the coefficients of a higher order IIR filter. Discussion of MESA is beyond the scope of this article.
TWO POLE IIR FILTER
While the coefficients of a higher order IIR filter are difficult to compute without MESA, it is a relatively simple matter to compute the coefficients of a two pole IIR filter.
(Skip this paragraph if you don’t care about DSP) We can locate the conjugate pole positions parametrically in the Z plane in polar coordinates. Let the radius be QQ and the principal angle be 360 / P2Period. The first order component is 2*QQ*Cosine(360 / P2Period) and the second order component is just QQ2. Therefore, the transfer response becomes:
H(z) = 1 / (1 - 2*QQ*Cosine(360 / P2Period)*Z-1 + QQ2*Z-2)
By mixing notation we can easily convert the transfer response to code.
Output / Input = 1 / (1 - 2*QQ*Cosine(360 / P2Period)* + QQ2* )
Output - 2*QQ*Cosine(360 / P2Period)*Output + QQ2*Output = Input
Output = Input + 2*QQ*Cosine(360 / P2Period)*Output - QQ2*Output
The Two Pole Predictor starts by computing the same “roofing filter” design as described for the Linear Extrapolation Predictor. The HPPeriod and LPPeriod inputs adjust the roofing filter to obtain the desired appearance of an indicator. Since EasyLanguage variables cannot be extended into the future, the prediction process starts by loading the XX data array with indicator data up to the value of Length. I selected Length = 10 simply to have a convenient place from which to start the prediction. The coefficients are computed parametrically from the conjugate pole positions and are normalized to their sum so the IIR filter will have unity gain at zero frequency.
The prediction is formed by convolving the IIR filter coefficients with the historical data. It is easiest to see for the case where count = 0. This is the initial prediction. In this case the new value of the XX array is formed by successively summing the product of each filter coefficient with its respective historical data sample. This process is significantly different from linear extrapolation because second order curvature is introduced into the prediction rather than being strictly linear. Further, the prediction is adaptive to market conditions because the degree of curvature depends on recent historical data. The prediction in the data array is converted to a variable by selecting the BarsFwd value. The prediction is then plotted in yellow, and is compared to the indicator plotted in red.
The Predict 2 Pole indicator is shown above being applied to the Emini S&P Futures contract for most of 2021. The default parameters for the roofing filter and predictor were used. By comparison to the Linear Extrapolation prediction of Figure 2, the Predict 2 Pole indicator has a more consistent prediction. For example, there is little or no overshoot in February or March while still giving good predictions in April and May.
Input parameters can be varied to adjust the appearance of the prediction. You will find that the indicator is relatively insensitive to the BarsFwd input. The P2Period parameter primarily controls the gain of the prediction and the QQ parameter primarily controls the amount of prediction lead during trending sections of the indicator.
TAKEAWAYS
1. A more or less universal band limited “roofing filter” indicator was used to demonstrate the predictors. The HPPeriod input parameter is used to control whether the indicator looks more like a trend indicator or more like a cycle indicator. The LPPeriod input parameter is used to control the smoothness of the indicator.
2. A linear extrapolation predictor is formed by adding the difference of the two most recent data bars to the value of the last data bar. The result is considered to be a real data point and the process is repeated to extend the prediction into the future. This is an FIR filter having a one bar negative group delay at zero frequency, but the group delay is not constant across the spectrum. This variable group delay causes the linear extrapolation prediction to be inconsistent across a range of market conditions.
3. The degree of prediction by linear extrapolation can be controlled by varying the gain of the prediction to reduce the overshoot to be about the same amplitude as the peak swing of the indicator.
4. I was unable to experimentally derive a higher order FIR filter predictor that had advantages over the simple linear extrapolation predictor.
5. A Two Pole IIR predictor can be created by parametrically locating the conjugate pole positions.
6. The Two Pole predictor is a second order filter, which allows curvature into the prediction, thus mitigating overshoot. Further, the curvature is adaptive because the prediction depends on previously computed prediction values.
7. The Two Pole predictor is more consistent over a range of market conditions.
ADDITIONS
Loxx's Expanded source types:
Library for expanded source types:
Explanation for expanded source types:
Three different signal types: 1) Prediction/Filter crosses; 2) Prediction middle crosses; and, 3) Filter middle crosses.
Bar coloring to color trend.
Signals, both Long and Short.
Alerts, both Long and Short.
Rob Booker - ADX Breakout updated to pinescript V5Rob Booker - ADX Breakout. The strategy remains unchanged but the code has been updated to pinescript V5. This enables compatibility with all new Tradingview features. Additonally, indicators have been made more easily visible, default cash settings as well as input descriptions have been added.
Rob Booker - ADX Breakout: (Directly taken from the official Tradingview V1 version of the script)
Definition
Rob Booker’s Average Directional Index (ADX) Breakout is a trend strength indicator that affirms the belief that trading in the direction of a trend and continuing to follow its pull is more profitable for traders, while simultaneously reducing risk.
History
ADX was traditionally used and developed to determine a price’s trend strength. It is commonly known as a tool from the arsenal of Rob Booker, experienced entrepreneur and currency trader.
Calculations
Calculations for the ADX Breakout indicator are based on a moving average of price range expansion over a specific period of time. By default, the setting rests at 14 bars, this however is not mandatory, as other periods are routinely used for analysis as well.
Takeaways
The ADX line is used to measure and determine the strength of a trend, and so the direction of this line and its interpretation are crucial in a trader’s analysis. As the ADX line rises, a trend increases in strength and price moves in the trend’s direction. Similarly, if the ADX line is falling, a trend decreases in strength and price then enters a period of consolidation, or retracement.
Traditionally, the ADX is plotted on the chart as a single line that consists of values that range from 0-100. The line is non-directional, meaning that it always measures trend strength regardless of the position of a price’s trend (up or down). Essentially, ADX quantifies trend strength by presenting in both uptrends and downtrends of the line.
What to look for
The values associated with the ADX line help traders determine the most profitable trades and where risk lies in the current trend. It is important to know how to quantify trend strength and distinguish between the varying values in order to understand the differences in trending vs. non-trending conditions. Let’s take a look at ADX values and what they mean for trend strength.
ADX Value:
0-25: Signifies an absent of weak trend
25-50: Signifies a strong trend
50-75: Signifies a very strong trend
75-100: Signifies an extremely strong trend
To delve into this a bit further, let’s assess the meaning of ADX if it is valued below 25. If the ADX line remains below 25 for more than 30 or so bars, price then enters range conditions, making price patterns more distinguishable and visible to traders. Price will move up and down between resistance and support in order to determine selling and buying interest and may then eventually break out into a trend or pattern.
The way in which ADX peaks, ebs, and flows is also a signifier of its overall pattern and trend momentum. The line can clearly indicate to the trader when trend strength is strong versus when it is weak. When ADX peaks are pictured as higher, it points towards an increase in trend momentum. If ADX peaks are pictured as lower - you guessed it - it points towards a decrease in trend momentum. A trend of lower ADX peaks could be a warning for traders to watch prices and manage and assess risk before a trade gets out of hand. Similarly, whenever there is a sudden move that seems out of place or a change in trend character that goes against what you’ve seen before, this should be a clear sign to watch prices and assess risk.
Summary
The ADX Breakout indicator is a trend strength indicator that analyzes price movements relative to trend strength to signal a user when is best for a trade and when is best to manage risk and assess patterns. As long as a trader recognizes strong trends and assesses the risk of each trade properly, they should have no problem using this indicator and utilizing it to work in their favor. In addition, the ADX helps identify trending conditions, but while doing so, also aids traders in finding strong trends to trade. The indicator can even alert traders to specific changes in trend momentum, allowing them to be primed for risk management.
OBV MA StrategyThe On Balance Volume + Moving Average Strategy
Parameters: 1H candles, ETHUSDT on BINANCEUS, commission percent uses Binance's maker/taker fees of 0.075%
Strategy: I create a 30 day moving average of the On Balance Volume "obvSma = ta.sma(ta.obv, 30)." Then I use the following buy conditions:
OBV crosses above the OBV moving average
The obv drops x% below the OBV moving average (buy a dip)
The OBV moving average is rising, the OBV is greater than the OBV moving average and the OBV is rising
The first buy condition is attempting to buy into an uptrend. When the OBV rises above the OBV moving average, people are buying and it's a good time to enter the trade.
The idea behind the second buy condition is to buy a dip so make sure you are careful to not set it too shallow or you'll end up buying the dip before the dip before the dip. :) I recommend 10% or more.
The third buy condition is there in case our trailing stop takes us out of a trade but the trend is still rising, we don't want to miss out on that profit so if the OBV is above the OBV moving average, the average is rising and the OBV is rising, we are likely in the middle of an uptrend and we should buy in.
Gap RiderThis Indicator allows you to make statistics on the performance of any underlying on the days in which an opening gap occurs.
Specifically, the indicator was designed for "0 dte" options trades. In fact, it is possible to find parameters that give a good statistical advantage by opening a spread in the direction of the gap, creating a trade that has a risk-return ratio of 1: 1.
The indicator shows flags on the graph (green in case of gap up, red in case of gap down) and colored boxes (green in case the stock closed in the direction of the gap, red in case the stock closed in the opposite direction to the gap, yellow in the event that the stock closed at a distance that did not allow the spread in options to close in maximum loss or maximum profit, and therefore in breakeven)
The statistics panel, on the other hand, contains all the information necessary to search for parameters that give the trader a good statistical advantage.
In the settings you can filter the days of the week, only gap up or only gap down, ATR thresholds (volatility), points or minimum percentage for which a gap is taken into account, measure of the breakeven (which for options traders should represent the half the width of the spread to open), large gaps filter that takes into consideration only gaps that open out of range compared to the previous session. The Lookback parameter of course is used to set how many bars to take into account for the statistics.
Parameters and recommended strategy:
TODAY 31/08/2021 - Lookback 500 bars (2 years)
UNDERLYING: SPX
FILTERS: only Monday and Wednesday, only gap up, only gap> 0.01%
STRATEGY: exactly at opening, cover an ATM spread in the direction of the gap (example: gap up, I open a long call spread) that has the opening price as a break even, with a risk-return ratio of 1: 1 and leave it open until closing session, or set take profit at 90-95%. It is advisable to take into consideration the SPX statistics but to operate on the ES future so as to be able to open the spread a couple of minutes before the opening of the cash session and prevent the trade from "running away" due to too sudden movements of the opening. .
RESULTS:
124 Trade
70% profitable trades
30% losing trades
Max drawdown 3 trades
So assuming a spread on ES 10 points wide, each trade would gain or lose $ 250, applying the described strategy we would have in two years, investing only $ 250, a profit of $ 12500, with a max drawdown of $ 750. We would therefore have a profit of 5000%, or rather 2500% per year on the invested capital, with a drawdown of a much lower proportion of the profit ($ 750 compared to $ 6250 of annual profit).
The strategy is infinitely scalable by increasing the options contracts used and the impact of the commissions is almost zero.
MONEY MANAGEMENT: Example on a 50K account, with a spread that earns or loses $ 500, in two years it earns $ 25,000, therefore about 12500 per year, with a max drawdown of $ 1500, therefore 25% per year on the ENTIRE ACCOUNT with a maximum drawdown of 3%.
Note: the test was performed without a break even parameter, so the actual result will be more moderate, but of the same explosive nature.
** BUG STILL LOOKING FOR SOLUTION **
only in case the filters are set to take into account ONLY the gap down, the drawdown count in the statistics panel shows an incorrect result "
Fib Thermometer - S&P500Fib Retracement is such an amazing tool 😎 , and when u incorporate it onto a chart, no matter a forex , stock or future one, you will always secure some important and meaningful levels for your trading. I am not a huge fan of it actually 😵, but I would say it is an eye opener for me, because sometimes things don't fully make sense will make you money. I can't deny its popularity in our community and also in the trading world.
In this script, I am not intending to give a brand new version of auto drawing fib levels, but to catch the optimal timings to buy the upcoming rally after a crash 😊. Buying the dips is the approach to get rich , right? But more wisely, we can instead to buy the higher lows , not the lowest lows in order to avoid the bankruptcy risk. Nothing advanced to teach here, doing so just takes your extra patience and willingness to seek confirmation. 🕵
To cut it short, I have utilized 52-week highs and lows and two important fib levels (0.236 and 0.618) , with ten most heavily weighted stocks in s&p500 index to create some awesome signals. The rationale is first defining two fib levels with the 52-week-high-low range, then if those stocks rebounded just higher than 0.236 levels, we can confirm the trend has changed and start our buying . For the 0.618 level, you can use it as a profit taker , or a sell signal during the bull run. What decides a trend continuation or a trend change is the degree of the retracement , and 0.236 would be an ideal level to confirm the trend has changed.😃
For your own convenience, you can amend or diy the script to make it work for you by simply put your favorite stocks or indexes on the list. Hope you find it really helpful and HAPPY TRADING!!! 😃
If you find my scripts useful, please click the FOLLOW button and I am VERY VERY GRATEFUL.😘
Nifty Power -> Nifty 50 chart + EMA of RSI + avg volume strategyThis strategy works in 1 hour candle in Nifty 50 chart. In this strategy, upward trade takes place when there is a crossover of RSI 15 on EMA50 of RSI 15 and volume is greater than volume based EMA21. On the other hand, lower trade takes place when RSI 15 is less than EMA50 of RSI 15. Please note that there is no stop loss given and also that the trade will reverse as per the trend. Sometimes on somedays, there will be no trades. Also please note that this is an Intraday strategy. The trade if taken closes on 15:15 in Nifty 50. This strategy can be used for swing trading. Some pine script code such as supertrend and ema21 of close is redundant. Try not to get confused as only EMA50 of RSI 15 is used and EMA21 of volume is used. I am using built-in pinescript indicators and there is no special calculation done in the pine script code. I have taken numbars variable to count number of candles. For example, if you have 30 minuite chart then numbars variable will count the intraday candles accordingly and the same for 1 hour candles.
ARSI – (VWAP & ATR) 3QKRAKThe ARSI Long & Short – Dynamic Risk Sizing (VWAP & ATR) indicator combines three core components—an adjusted RSI oscillator (ARSI), Volume‐Weighted Average Price (VWAP), and Average True Range (ATR)—so that entry/exit signals and position sizing are always tailored to current market conditions. ARSI, plotted from 0 to 100 with clearly marked overbought and oversold zones, is the primary signal driver: when ARSI falls below the lower threshold it indicates an excessive sell‐off and flags a long opportunity, whereas a break above the upper threshold signals overextended gains and foreshadows a short. A midpoint line at 50 can serve as an early exit or reduction signal when crossed against your position.
VWAP, showing the volume‐weighted average price over the chosen period, acts as a trend filter—long trades are only taken when price sits above VWAP, and shorts only when it’s below—ensuring each trade aligns with the prevailing market momentum. ATR measures current volatility and is used both to set safe stop‐loss levels and to dynamically size each position. In practice, this means positions automatically shrink in high‐volatility environments and grow in quieter markets, all while risking a fixed percentage of your capital.
Everything appears on a single chart: the ARSI pane below the price window with its reference levels; VWAP overlaid on the price; and the ATR‐based stop‐loss distances graphically displayed. Traders thus get a comprehensive, at-a-glance view of entries, exits, trend confirmation, and exactly how large a position they can safely take. The indicator runs in real time, removing the need for manual parameter calculations and letting you focus on strategic decision-making.
XAU/USD Lot Size CalculatorThis indicator automatically calculates the optimal lot size for XAUUSD (gold) based on the level of risk the trader wants to take. It is designed for traders using MetaTrader 4 or 5 and helps adjust position size according to the specific volatility of gold. The user can set the percentage of capital they are willing to risk on a single trade, for example 1%. The indicator also takes into account the stop loss level, which can be entered in pips or in dollars, as well as the account size (balance or equity).
Based on these parameters, it calculates the exact lot size that matches the risk amount. It then displays on the chart the recommended lot size, the risk amount in dollars, the pip value for XAUUSD, and a confirmation of the stop loss level. This type of indicator is useful for maintaining disciplined risk management and avoiding position sizing errors, especially on a highly volatile asset like gold.
TradersPostDeluxeLibrary "TradersPostDeluxe"
TradersPost integration. It's currently not very deluxe
SendEntryAlert(ticker, action, quantity, orderType, takeProfit, stopLoss, id, price, timestamp, timezone)
Sends an alert to TradersPost to trigger an Entry
Parameters:
ticker (string) : Symbol to trade. Default is syminfo.ticker
action (series Action) : TradersPostAction (.buy, .sell) default = buy
quantity (float) : Amount to trade, default = 1
orderType (series OrderType) : TradersPostOrderType, default =e TradersPostOrderType.market
takeProfit (float) : Take profit limit price
stopLoss (float) : Stop loss price
id (string) : id for the trade
price (float) : Expected price
timestamp (int) : Time of the trade for reporting, defaults to timenow
timezone (string) : associated with the time, defaults to syminfo.timezone
Returns: Nothing
SendExitAlert(ticker, price, timestamp, timezone)
Sends an alert to TradersPost to trigger an Exit
Parameters:
ticker (string) : Symbol to flatten
price (float) : Documented planned price
timestamp (int) : Time of the trade for reporting, defaults to timenow
timezone (string) : associated with the time, defaults to syminfo.timezone
Returns: Nothing
UTSStrategyHelperLibrary "UTSStrategyHelper"
TODO: add library description here
stopLossPrice(sig, atr, factor, isLong)
Calculates the stop loss price using a distance determined by ATR multiplied by a factor. Example for Long trade SL: PRICE - (ATR * factor).
Parameters:
sig (float)
atr (float) : (float): The value of the atr.
factor (float)
isLong (bool) : (bool): The current trade direction.
Returns: (bool): A boolean value.
takeProfitPrice(sig, atr, factor, isLong)
Calculates the take profit price using a distance determined by ATR multiplied by a factor. Example for Long trade TP: PRICE + (ATR * factor). When take profit price is reached usually 50 % of the position is closed and the other 50 % get a trailing stop assigned.
Parameters:
sig (float)
atr (float) : (float): The value of the atr.
factor (float)
isLong (bool) : (bool): The current trade direction.
Returns: (bool): A boolean value.
trailingStopPrice(initialStopPrice, atr, factor, priceSource, isLong)
Calculates a trailing stop price using a distance determined by ATR multiplied by a factor. It takes an initial price and follows the price closely if it changes in a favourable way.
Parameters:
initialStopPrice (float) : (float): The initial stop price which, for consistency also should be ATR * factor behind price: e.g. Long trade: PRICE - (ATR * factor)
atr (float) : (float): The value of the atr. Ideally the ATR value at trade open is taken and used for subsequent calculations.
factor (float)
priceSource (float) : (float): The current price.
isLong (bool) : (bool): The current trade direction.
Returns: (bool): A boolean value.
hasGreaterPositionSize(positionSize)
Determines if the strategy's position size has grown since the last bar.
Parameters:
positionSize (float) : (float): The size of the position.
Returns: (bool): A boolean value.
hasSmallerPositionSize(positionSize)
Determines if the strategy's position size has decreased since the last bar.
Parameters:
positionSize (float) : (float): The size of the position.
Returns: (bool): A boolean value.
hasUnchangedPositionSize(positionSize)
Determines if the strategy's position size has changed since the last bar.
Parameters:
positionSize (float) : (float): The size of the position.
Returns: (bool): A boolean value.
exporthasLongPosition(positionSize)
Determines if the strategy has an open long position.
Parameters:
positionSize (float) : (float): The size of the position.
Returns: (bool): A boolean value.
hasShortPosition(positionSize)
Determines if the strategy has an open short position.
Parameters:
positionSize (float) : (float): The size of the position.
Returns: (bool): A boolean value.
hasAnyPosition(positionSize)
Determines if the strategy has any open position, regardless of short or long.
Parameters:
positionSize (float) : (float): The size of the position.
Returns: (bool): A boolean value.
hasSignal(value)
Determines if the given argument contains a valid value (means not 'na').
Parameters:
value (float) : (float): The actual value.
Returns: (bool): A boolean value.