Correlate 3 - Correlation IndicatorThe code in contains a simple correlation indicator that can be used as an alternative to Tradingview’s built-in “Correlation Coefficient” indicator. The indicator allows users to correlate up to 3 separate instruments on the same subplot. This allows you, for example, to easily see the correlation of your instrument with stocks, bonds and FX. Alternatively, a user can also see the correlation with sector, industry peers or any other data available in Tradingview.
Features
Level Guides to easily see the key correlation coefficient levels
Multi-instrument:
ค้นหาในสคริปต์สำหรับ "backtest"
✅ BACKTEST: UT Bot + RSIRSI levels widened (60/40) — more signals.
Removed ATR volatility filter (to let trades fire).
Added inputs for TP and SL using ATR — fully dynamic.
Cleaned up conditions to ensure alignment with market structure.
Laguerre RSI by KivancOzbilgic STRATEGYBacktesting.
" Laguerre RSI is based on John EHLERS' Laguerre Filter to avoid the noise of RSI .
Change alpha coefficient to increase/decrease lag and smoothness.
Buy when Laguerre RSI crosses upwards above 20.
Sell when Laguerre RSI crosses down below 80.
While indicator runs flat above 80 level, it means that an uptrend is strong.
While indicator runs flat below 20 level, it means that a downtrend is strong. "
Developer: John EHLERS
Author: KivancOzbilgic
VSA - Absorption - Bookmap
- Backtest on Gold, ES, major forex (liquid instruments where VSA works best).
- Filter with trend (EMA 50/200) or session (London/NY open).
- Combine with your Bookmap: use Pine signal → confirm with absorption/iceberg + delta flip.
- Risk: 0.5–1.5% per trade, 1:3+ R:R.
TG Capital Trident Setup Finder (v6, no-functions)backtest label for FVG setups of the trident pattern which TG capital talks about on chart fanatics
Backtest - Ichimoku CloudThis script find the entry position on a chart using Ichimoku clud conditions.
and also exit condition based on base line & price close w.r.t to Ichi cloud.
Momentum Breakout StrategyBacktest a strategy where, when a candlestick on a timeframe rises more than a certain %, it enters a trade.
RSI-VWAPBacktest script based on the previous RSI-VWAP indicator:
It's the popular RSI indicator with VWAP as a source instead of close:
- RSI_VWAP = rsi(vwap(close), RSI_VWAP_length)
What is the Volume Weighted Average Price ( VWAP )?
VWAP is calculated by adding up the dollars traded for every transaction (price multiplied by the number of shares traded) and then dividing by the total shares traded.
Trades are laddered to improve the average entry price and each entry is increased, improving the entry but increasing the risk of being liquidated.
It can be easily converted to study (alerts)
Settings for BINANCE:BTCUSDT at 30m
Simple Price Momentum - How To Create A Simple Trading StrategyThis script was built using a logical approach to trading systems. All the details can be found in a step by step guide below. I hope you enjoy it. I am really glad to be part of this community. Thank you all. I hope you not only succeed on your trading career but also enjoy it.
docs.google.com
Moving Averages Cross - MTF - StrategyBacktesting Script for the following strategy
Strategy Injector Source: github.com
4H CCI Strategy 1.5Included adaptive lot size based on ATR, and also ATR based stop and take profit levels.
Risk/reward increased to 1:2 and should work in all ranging FX pairs as long as they are not trending.
Once the market starts trending it'll eat this bot alive.
Cheers,
Ivan Labrie
Time at Mode FX
Ultimate Volume Dashboard & Signals V2📋 Clear Entry Criteria Summary
BUY Entry SELL Entry
✅ RVOL ≥ 1.5x ✅ RVOL ≥ 1.5x
✅ Green Candle ✅ Red Candle
✅ Strong Body (>50%) ✅ Strong Body (>50%)
✅ Price > VWAP ✅ Price < VWAP
✅ Price > EMA 50 ✅ Price < EMA 50
✅ RSI 50-80 ✅ RSI 20-50
⭐ Extreme Vol = Strong Signal ⭐ Extreme Vol = Strong Signal
🆕 Key Improvements
Cooldown Period - Prevents signal spam
EMA Filter - Additional trend confirmation
Candle Body Check - Filters weak/doji candles
Strong vs Regular Signals - Extreme volume = higher conviction
Entry/SL Levels - ATR-based levels displayed
Alert Conditions - Ready for notifications
Would you like me to add backtesting statistics or multi-timeframe confirmation?
//@version=5
indicator("Ultimate Volume Dashboard & Signals", overlay=true)
// ==========================================
// 1. SETTINGS & INPUTS
// ==========================================
// General Settings
lookback_len = input.int(20, "Volume Moving Average Length", group="Volume Settings")
rvol_thresh = input.float(1.5, "RVOL Threshold (Breakout Level)", step=0.1, group="Volume Settings")
// Trend Settings
use_vwap = input.bool(true, "Filter Signals using VWAP", group="Trend Filters")
rsi_len = input.int(14, "Momentum Length (RSI)", group="Trend Filters")
// Dashboard Settings
show_table = input.bool(true, "Show Dashboard", group="UI Settings")
table_size = input.string("Small", "Table Size", options= , group="UI Settings")
// ==========================================
// 2. CALCULATIONS
// ==========================================
// --- Volume Calculations ---
vol_ma = ta.sma(volume, lookback_len) // Average Volume
rvol = volume / vol_ma // Relative Volume (Current vs Average)
// --- Trend & Momentum Calculations ---
rsi_val = ta.rsi(close, rsi_len) // RSI Momentum
vwap_val = ta.vwap(close) // Volume Weighted Average Price
// Detect Volume Spikes (The "Upcoming" Momentum)
is_vol_spike = rvol >= rvol_thresh
// ==========================================
// 3. SIGNAL LOGIC
// ==========================================
// Bullish Signal Logic
// 1. Volume is significantly higher than average (Spike)
// 2. Candle is Green (Close > Open)
// 3. Price is above VWAP (Institutional Control)
// 4. RSI is rising but not completely maxed out (>50)
bull_trend = use_vwap ? (close > vwap_val) : true
buy_signal = is_vol_spike and close > open and bull_trend and rsi_val > 50 and rsi_val < 90
// Bearish Signal Logic
// 1. Volume Spike
// 2. Candle is Red (Close < Open)
// 3. Price is below VWAP
// 4. RSI is falling (<50)
bear_trend = use_vwap ? (close < vwap_val) : true
sell_signal = is_vol_spike and close < open and bear_trend and rsi_val < 50 and rsi_val > 10
// ==========================================
// 4. VISUALS ON CHART
// ==========================================
// Color Bars based on Volume Intensity
bar_color = is_vol_spike ? (close > open ? color.new(color.lime, 0) : color.new(color.red, 0)) : (close > open ? color.new(color.gray, 60) : color.new(color.gray, 60))
barcolor(bar_color)
// Plot Buy/Sell Labels
plotshape(buy_signal, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="VOL BUY", textcolor=color.white, size=size.small)
plotshape(sell_signal, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="VOL SELL", textcolor=color.white, size=size.small)
// Plot VWAP for reference
plot(use_vwap ? vwap_val : na, "VWAP", color=color.yellow, linewidth=1)
// ==========================================
// 5. DASHBOARD PANEL
// ==========================================
if show_table
// Define Table Size
t_size = table_size == "Tiny" ? size.tiny : table_size == "Small" ? size.small : table_size == "Normal" ? size.normal : size.large
text
// Create Table (Top Right)
var tbl = table.new(position.top_right, 2, 5, bgcolor=color.new(color.black, 50), border_color=color.gray, border_width=1, frame_color=color.gray, frame_width=1)
// --- Header ---
table.cell(tbl, 0, 0, "METRIC", text_color=color.white, bgcolor=color.new(color.blue, 20), text_size=t_size)
table.cell(tbl, 1, 0, "STATUS", text_color=color.white, bgcolor=color.new(color.blue, 20), text_size=t_size)
// --- Row 1: RVOL (Volume Strength) ---
rvol_color = rvol > 2.0 ? color.red : rvol > 1.0 ? color.green : color.gray
rvol_txt = rvol > 2.0 ? "EXTREME (" + str.tostring(rvol, "#.##") + "x)" : rvol > 1.0 ? "High (" + str.tostring(rvol, "#.##") + "x)" : "Low (" + str.tostring(rvol, "#.##") + "x)"
table.cell(tbl, 0, 1, "Rel Volume (RVOL)", text_color=color.white, text_size=t_size)
table.cell(tbl, 1, 1, rvol_txt, text_color=color.white, bgcolor=rvol_color, text_size=t_size)
// --- Row 2: Trend (VWAP) ---
trend_txt = close > vwap_val ? "BULLISH" : "BEARISH"
trend_col = close > vwap_val ? color.green : color.red
table.cell(tbl, 0, 2, "Trend (VWAP)", text_color=color.white, text_size=t_size)
table.cell(tbl, 1, 2, trend_txt, text_color=color.white, bgcolor=trend_col, text_size=t_size)
// --- Row 3: Momentum (RSI) ---
mom_txt = rsi_val > 50 ? "Positive" : "Negative"
mom_col = rsi_val > 50 ? color.green : color.red
table.cell(tbl, 0, 3, "Momentum", text_color=color.white, text_size=t_size)
table.cell(tbl, 1, 3, mom_txt, text_color=color.white, bgcolor=mom_col, text_size=t_size)
// --- Row 4: Signal Status ---
sig_txt = buy_signal ? "BUY NOW" : sell_signal ? "SELL NOW" : "WAIT"
sig_col = buy_signal ? color.lime : sell_signal ? color.red : color.gray
table.cell(tbl, 0, 4, "ACTION", text_color=color.white, bgcolor=color.new(color.white, 80), text_size=t_size)
table.cell(tbl, 1, 4, sig_txt, text_color=color.black, bgcolor=sig_col, text_size=t_size) clear entre based on code
Dips Oleg Adaptive Dip‑Buying Strategy with Lot Precision & Smart Averaging
📘 Description
This strategy is a personalized adaptation of an idea originally developed by the respected author fullmax.
I reworked the concept to suit my own trading approach, adding lot‑precision rounding to avoid exchange quantity errors when using webhooks, and enhancing the visual and analytical components of the script.
🔧 What’s New in This Version
Configurable lot precision to ensure clean, exchange‑safe order sizes
Improved UI elements: base‑order labels, compact mini‑table, grouped settings
Dynamic safety‑order pricing based on price drops and scaling factors
Flexible date‑range filtering for controlled backtesting
Clear visualization of SMA threshold, safety levels, breakeven, and take‑profit
Adaptive threshold logic that adjusts depending on trend conditions
🎯 Core Logic
The strategy monitors how far price deviates from a short‑term SMA.
When the deviation crosses a user‑defined threshold, the script opens a base position.
If price continues to dip, the system deploys safety orders with:
scalable volume
scalable distance
precise rounding for compatibility with webhook automation
Once the position is built, the strategy manages exits using a fixed take‑profit target.
A breakeven reference line and auto‑cleanup logic help maintain clarity and prevent stale orders.
⚙️ Feature Overview
Dip‑based entry logic with bull/bear threshold switching
Safety orders with volume and step scaling
Take‑profit management
Breakeven visualization
Mini‑table showing real‑time position metrics
Clean chart overlays for easier interpretation
📝 Disclaimer
This script is intended for educational and analytical use.
It does not guarantee profits and should be tested thoroughly before being used in live trading.
Price_Deviation Oleg📘 Description
This script is an extended and customized version of the original work by the respected author fullmax.
I adapted the logic for my own trading needs and added several improvements, including lot‑precision rounding to prevent exchange errors when using webhook automation, as well as additional visualization elements for clarity.
🔧 Key Enhancements
Lot precision control (prevents invalid quantity errors on exchanges when using webhooks)
Base order labels for easier visual tracking
Mini‑table with live position metrics
Configurable date‑range window for backtesting
Dynamic safety‑order price calculation
Trailing take‑profit option
Improved visualization of thresholds, MA, and TP levels
🎯 How the Strategy Works
The script calculates a moving average and compares the current price deviation against user‑defined thresholds.
When the deviation condition is met, the strategy opens a base position and then manages it using safety orders that scale in both volume and distance.
After entering a position, the script manages exits using:
a fixed take‑profit target
or an optional trailing take‑profit
plus a breakeven reference line
and an auto‑close mechanism when the averaging cycle resets
All order quantities are rounded according to the selected lot precision to ensure compatibility with exchange requirements when sending webhook‑based orders.
⚙️ Features Overview
Deviation‑based entry logic
Safety orders with volume and step scaling
Configurable date window for testing
Trailing TP with adjustable distance
Breakeven visualization
Mini‑table showing quantity, USD value, open trades, PnL, and equity
Clean and intuitive chart visualization
📝 Disclaimer
This script is provided for educational purposes only.
It does not constitute financial advice and does not guarantee profits.
Always test strategies on historical data before using them in live trading.
ORBitOrbit is a strategy based around the opening range breakout. it will send out one signal a day with the proper risk management recommendations and built in backtest reporter on top of tradingview's strategy tester
Asset Rotation System [InvestorUnknown]Overview
This system creates a comprehensive trend "matrix" by analyzing the performance of six assets against both the US Dollar and each other. The objective is to identify and hold the asset that is currently outperforming all others, thereby focusing on maintaining an investment in the most "optimal" asset at any given time.
- - - Key Features - - -
1. Trend Classification:
The system evaluates the trend for each of the six assets, both individually against USD and in pairs (assetX/assetY), to determine which asset is currently outperforming others.
Utilizes five distinct trend indicators: RSI (50 crossover), CCI, SuperTrend, DMI, and Parabolic SAR.
Users can customize the trend analysis by selecting all indicators or choosing a single one via the "Trend Classification Method" input setting.
2. Backtesting:
Calculates an equity curve for each asset and for the system itself, which assumes holding only the asset deemed optimal at any time.
Customizable start date for backtesting; by default, it begins either 5000 bars ago (the maximum in TradingView) or at the inception of the youngest asset included, whichever is shorter. If the youngest asset's history exceeds 5000 bars, the system uses 5000 bars to prevent errors.
The equity curve is dynamically colored based on the asset held at each point, with this coloring also reflected on the chart via barcolor().
Performance metrics like returns, standard deviation of returns, Sharpe, Sortino, and Omega ratios, along with maximum drawdown, are computed for each asset and the system's equity curve.
3 Alerts:
Supports alerts for when a new, confirmed optimal asset is identified. However, due to TradingView limitations, the specific asset cannot be included in the alert message.
- - - Usage - - -
1. Select Assets/Tickers:
Choose which assets or tickers you want to include in the rotation system. Ensure that all selected tickers are denominated in USD to maintain consistency in analysis.
2. Configure Trend Classification:
Decide on the trend classification method from the available options (RSI, CCI, SuperTrend, DMI, or Parabolic SAR, All) and adjust the settings to your preferences. This customization allows you to tailor the system to different market conditions or your specific trading strategy.
3. Utilize Backtesting for Calibration:
Use the backtesting results, including equity curves and performance metrics, to fine-tune your chosen trend indicators.
Be cautious not to overemphasize performance maximization, as this can lead to overfitting. The goal is to achieve a robust system that performs well across various market conditions, rather than just optimizing for past data.
- - - Parameters - - -
Tickers:
Asset 1: Select the symbol for the first asset.
Asset 2: Select the symbol for the second asset.
Asset 3: Select the symbol for the third asset.
Asset 4: Select the symbol for the fourth asset.
Asset 5: Select the symbol for the fifth asset.
Asset 6: Select the symbol for the sixth asset.
General Settings:
Trend Classification Method: Choose from RSI, CCI, SuperTrend, DMI, PSAR, or "All" to determine how trends are analyzed.
Use Custom Starting Date for Backtest: Toggle to use a custom date for beginning the backtest.
Custom Starting Date: Set the custom start date for backtesting.
Plot Perf. Metrics Table: Option to display performance metrics in a table on the chart.
RSI (Relative Strength Index):
RSI Source: Choose the price data source for RSI calculation.
RSI Length: Set the period for the RSI calculation.
CCI (Commodity Channel Index):
CCI Source: Select the price data source for CCI calculation.
CCI Length: Determine the period for the CCI.
SuperTrend:
SuperTrend Factor: Adjust the sensitivity of the SuperTrend indicator.
SuperTrend Length: Set the period for the SuperTrend calculation.
DMI (Directional Movement Index):
DMI Length: Define the period for DMI calculations.
Parabolic SAR:
PSAR Start: Initial acceleration factor for the Parabolic SAR.
PSAR Increment: Increment value for the acceleration factor.
PSAR Max Value: Maximum value the acceleration factor can reach.
Notes/Recommendations:
While this system is operational, it's important to recognize that it relies on "basic" indicators, which may not be ideal for generating trading signals on their own. I strongly suggest that users delve into the code to grasp the underlying logic of the system. Consider customizing it by integrating more sophisticated and higher-quality trend-following indicators to enhance its performance and reliability.
Disclaimer:
This system's backtest results are historical and do not predict future performance. Use for educational purposes only; not investment advice.
Range Oscillator Strategy + Stoch Confirm🔹 Short summary
This is a free, educational long-only strategy built on top of the public “Range Oscillator” by Zeiierman (used under CC BY-NC-SA 4.0), combined with a Stochastic timing filter, an EMA-based exit filter and an optional risk-management layer (SL/TP and R-multiple exits). It is NOT financial advice and it is NOT a magic money machine. It’s a structured framework to study how range-expansion + momentum + trend slope can be combined into one rule-based system, often with intentionally RARE trades.
────────────────────────
0. Legal / risk disclaimer
────────────────────────
• This script is FREE and public. I do not charge any fee for it.
• It is for EDUCATIONAL PURPOSES ONLY.
• It is NOT financial advice and does NOT guarantee profits.
• Backtest results can be very different from live results.
• Markets change over time; past performance is NOT indicative of future performance.
• You are fully responsible for your own trades and risk.
Please DO NOT use this script with money you cannot afford to lose. Always start in a demo / paper trading environment and make sure you understand what the logic does before you risk any capital.
────────────────────────
1. About default settings and risk (very important)
────────────────────────
The script is configured with the following defaults in the `strategy()` declaration:
• `initial_capital = 10000`
→ This is only an EXAMPLE account size.
• `default_qty_type = strategy.percent_of_equity`
• `default_qty_value = 100`
→ This means 100% of equity per trade in the default properties.
→ This is AGGRESSIVE and should be treated as a STRESS TEST of the logic, not as a realistic way to trade.
TradingView’s House Rules recommend risking only a small part of equity per trade (often 1–2%, max 5–10% in most cases). To align with these recommendations and to get more realistic backtest results, I STRONGLY RECOMMEND you to:
1. Open **Strategy Settings → Properties**.
2. Set:
• Order size: **Percent of equity**
• Order size (percent): e.g. **1–2%** per trade
3. Make sure **commission** and **slippage** match your own broker conditions.
• By default this script uses `commission_value = 0.1` (0.1%) and `slippage = 3`, which are reasonable example values for many crypto markets.
If you choose to run the strategy with 100% of equity per trade, please treat it ONLY as a stress-test of the logic. It is NOT a sustainable risk model for live trading.
────────────────────────
2. What this strategy tries to do (conceptual overview)
────────────────────────
This is a LONG-ONLY strategy designed to explore the combination of:
1. **Range Oscillator (Zeiierman-based)**
- Measures how far price has moved away from an adaptive mean.
- Uses an ATR-based range to normalize deviation.
- High positive oscillator values indicate strong price expansion away from the mean in a bullish direction.
2. **Stochastic as a timing filter**
- A classic Stochastic (%K and %D) is used.
- The logic requires %K to be below a user-defined level and then crossing above %D.
- This is intended to catch moments when momentum turns up again, rather than chasing every extreme.
3. **EMA Exit Filter (trend slope)**
- An EMA with configurable length (default 70) is calculated.
- The slope of the EMA is monitored: when the slope turns negative while in a long position, and the filter is enabled, it triggers an exit condition.
- This acts as a trend-protection exit: if the medium-term trend starts to weaken, the strategy exits even if the oscillator has not yet fully reverted.
4. **Optional risk-management layer**
- Percentage-based Stop Loss and Take Profit (SL/TP).
- Risk/Reward (R-multiple) exit based on the distance from entry to SL.
- Implemented as OCO orders that work *on top* of the logical exits.
The goal is not to create a “holy grail” system but to serve as a transparent, configurable framework for studying how these concepts behave together on different markets and timeframes.
────────────────────────
3. Components and how they work together
────────────────────────
(1) Range Oscillator (based on “Range Oscillator (Zeiierman)”)
• The script computes a weighted mean price and then measures how far price deviates from that mean.
• Deviation is normalized by an ATR-based range and expressed as an oscillator.
• When the oscillator is above the **entry threshold** (default 100), it signals a strong move away from the mean in the bullish direction.
• When it later drops below the **exit threshold** (default 30), it can trigger an exit (if enabled).
(2) Stochastic confirmation
• Classic Stochastic (%K and %D) is calculated.
• An entry requires:
- %K to be below a user-defined “Cross Level”, and
- then %K to cross above %D.
• This is a momentum confirmation: the strategy tries to enter when momentum turns up from a pullback rather than at any random point.
(3) EMA Exit Filter
• The EMA length is configurable via `emaLength` (default 70).
• The script monitors the EMA slope: it computes the relative change between the current EMA and the previous EMA.
• If the slope turns negative while the strategy holds a long position and the filter is enabled, it triggers an exit condition.
• This is meant to help protect profits or cut losses when the medium-term trend starts to roll over, even if the oscillator conditions are not (yet) signalling exit.
(4) Risk management (optional)
• Stop Loss (SL) and Take Profit (TP):
- Defined as percentages relative to average entry price.
- Both are disabled by default, but you can enable them in the Inputs.
• Risk/Reward Exit:
- Uses the distance from entry to SL to project a profit target at a configurable R-multiple.
- Also optional and disabled by default.
These exits are implemented as `strategy.exit()` OCO orders and can close trades independently of oscillator/EMA conditions if hit first.
────────────────────────
4. Entry & Exit logic (high level)
────────────────────────
A) Time filter
• You can choose a **Start Year** in the Inputs.
• Only candles between the selected start date and 31 Dec 2069 are used for backtesting (`timeCondition`).
• This prevents accidental use of tiny cherry-picked windows and makes tests more honest.
B) Entry condition (long-only)
A long entry is allowed when ALL the following are true:
1. `timeCondition` is true (inside the backtest window).
2. If `useOscEntry` is true:
- Range Oscillator value must be above `entryLevel`.
3. If `useStochEntry` is true:
- Stochastic condition (`stochCondition`) must be true:
- %K < `crossLevel`, then %K crosses above %D.
If these filters agree, the strategy calls `strategy.entry("Long", strategy.long)`.
C) Exit condition (logical exits)
A position can be closed when:
1. `timeCondition` is true AND a long position is open, AND
2. At least one of the following is true:
- If `useOscExit` is true: Oscillator is below `exitLevel`.
- If `useMagicExit` (EMA Exit Filter) is true: EMA slope is negative (`isDown = true`).
In that case, `strategy.close("Long")` is called.
D) Risk-management exits
While a position is open:
• If SL or TP is enabled:
- `strategy.exit("Long Risk", ...)` places an OCO stop/limit order based on the SL/TP percentages.
• If Risk/Reward exit is enabled:
- `strategy.exit("RR Exit", ...)` places an OCO order using a projected R-multiple (`rrMult`) of the SL distance.
These risk-based exits can trigger before the logical oscillator/EMA exits if price hits those levels.
────────────────────────
5. Recommended backtest configuration (to avoid misleading results)
────────────────────────
To align with TradingView House Rules and avoid misleading backtests:
1. **Initial capital**
- 10 000 (or any value you personally want to work with).
2. **Order size**
- Type: **Percent of equity**
- Size: **1–2%** per trade is a reasonable starting point.
- Avoid risking more than 5–10% per trade if you want results that could be sustainable in practice.
3. **Commission & slippage**
- Commission: around 0.1% if that matches your broker.
- Slippage: a few ticks (e.g. 3) to account for real fills.
4. **Timeframe & markets**
- Volatile symbols (e.g. crypto like BTCUSDT, or major indices).
- Timeframes: 1H / 4H / **1D (Daily)** are typical starting points.
- I strongly recommend trying the strategy on **different timeframes**, for example 1D, to see how the behaviour changes between intraday and higher timeframes.
5. **No “caution warning”**
- Make sure your chosen symbol + timeframe + settings do not trigger TradingView’s caution messages.
- If you see warnings (e.g. “too few trades”), adjust timeframe/symbol or the backtest period.
────────────────────────
5a. About low trade count and rare signals
────────────────────────
This strategy is intentionally designed to trade RARELY:
• It is **long-only**.
• It uses strict filters (Range Oscillator threshold + Stochastic confirmation + optional EMA Exit Filter).
• On higher timeframes (especially **1D / Daily**) this can result in a **low total number of trades**, sometimes WELL BELOW 100 trades over the whole backtest.
TradingView’s House Rules mention 100+ trades as a guideline for more robust statistics. In this specific case:
• The **low trade count is a conscious design choice**, not an attempt to cherry-pick a tiny, ultra-profitable window.
• The goal is to study a **small number of high-conviction long entries** on higher timeframes, not to generate frequent intraday signals.
• Because of the low trade count, results should NOT be interpreted as statistically strong or “proven” – they are only one sample of how this logic would have behaved on past data.
Please keep this in mind when you look at the equity curve and performance metrics. A beautiful curve with only a handful of trades is still just a small sample.
────────────────────────
6. How to use this strategy (step-by-step)
────────────────────────
1. Add the script to your chart.
2. Open the **Inputs** tab:
- Set the backtest start year.
- Decide whether to use Oscillator-based entry/exit, Stochastic confirmation, and EMA Exit Filter.
- Optionally enable SL, TP, and Risk/Reward exits.
3. Open the **Properties** tab:
- Set a realistic account size if you want.
- Set order size to a realistic % of equity (e.g. 1–2%).
- Confirm that commission and slippage are realistic for your broker.
4. Run the backtest:
- Look at Net Profit, Max Drawdown, number of trades, and equity curve.
- Remember that a low trade count means the statistics are not very strong.
5. Experiment:
- Tweak thresholds (`entryLevel`, `exitLevel`), Stochastic settings, EMA length, and risk params.
- See how the metrics and trade frequency change.
6. Forward-test:
- Before using any idea in live trading, forward-test on a demo account and observe behaviour in real time.
────────────────────────
7. Originality and usefulness (why this is more than a mashup)
────────────────────────
This script is not intended to be a random visual mashup of indicators. It is designed as a coherent, testable strategy with clear roles for each component:
• Range Oscillator:
- Handles mean vs. range-expansion states via an adaptive, ATR-normalized metric.
• Stochastic:
- Acts as a timing filter to avoid entering purely on extremes and instead waits for momentum to turn.
• EMA Exit Filter:
- Trend-slope-based safety net to exit when the medium-term direction changes against the position.
• Risk module:
- Provides practical, rule-based exits: SL, TP, and R-multiple exit, which are useful for structuring risk even if you modify the core logic.
It aims to give traders a ready-made **framework to study and modify**, not a black box or “signals” product.
────────────────────────
8. Limitations and good practices
────────────────────────
• No single strategy works on all markets or in all regimes.
• This script is long-only; it does not short the market.
• Performance can degrade when market structure changes.
• Overfitting (curve fitting) is a real risk if you endlessly tweak parameters to maximise historical profit.
Good practices:
- Test on multiple symbols and timeframes.
- Focus on stability and drawdown, not only on how high the profit line goes.
- View this as a learning tool and a basis for your own research.
────────────────────────
9. Licensing and credits
────────────────────────
• Core oscillator idea & base code:
- “Range Oscillator (Zeiierman)”
- © Zeiierman, licensed under CC BY-NC-SA 4.0.
• Strategy logic, Stochastic confirmation, EMA Exit Filter, and risk-management layer:
- Modifications by jokiniemi.
Please respect both the original license and TradingView House Rules if you fork or republish any part of this script.
────────────────────────
10. No payments / no vendor pitch
────────────────────────
• This script is completely FREE to use on TradingView.
• There is no paid subscription, no external payment link, and no private signals group attached to it.
• If you have questions, please use TradingView’s comment system or private messages instead of expecting financial advice.
Use this script as a tool to learn, experiment, and build your own understanding of markets.
────────────────────────
11. Example backtest settings used in screenshots
────────────────────────
To avoid any confusion about how the results shown in screenshots were produced, here is one concrete example configuration:
• Symbol: BTCUSDT (or similar major BTC pair)
• Timeframe: 1D (Daily)
• Backtest period: from 2018 to the most recent data
• Initial capital: 10 000
• Order size type: Percent of equity
• Order size: 2% per trade
• Commission: 0.1%
• Slippage: 3 ticks
• Risk settings: Stop Loss and Take Profit disabled by default, Risk/Reward exit disabled by default
• Filters: Range Oscillator entry/exit enabled, Stochastic confirmation enabled, EMA Exit Filter enabled
If you change any of these settings (symbol, timeframe, risk per trade, commission, slippage, filters, etc.), your results will look different. Please always adapt the configuration to your own risk tolerance, market, and trading style.
Smart DCA Strategy (Public)INSPIRATION
While Dollar Cost Averaging (DCA) is a popular and stress-free investment approach, I noticed an opportunity for enhancement. Standard DCA involves buying consistently, regardless of market conditions, which can sometimes mean missing out on optimal investment opportunities. This led me to develop the Smart DCA Strategy – a 'set and forget' method like traditional DCA, but with an intelligent twist to boost its effectiveness.
The goal was to build something more profitable than a standard DCA strategy so it was equally important that this indicator could backtest its own results in an A/B test manner against the regular DCA strategy.
WHY IS IT SMART?
The key to this strategy is its dynamic approach: buying aggressively when the market shows signs of being oversold, and sitting on the sidelines when it's not. This approach aims to optimize entry points, enhancing the potential for better returns while maintaining the simplicity and low stress of DCA.
WHAT THIS STRATEGY IS, AND IS NOT
This is an investment style strategy. It is designed to improve upon the common standard DCA investment strategy. It is therefore NOT a day trading strategy. Feel free to experiment with various timeframes, but it was designed to be used on a daily timeframe and that's how I recommend it to be used.
You may also go months without any buy signals during bull markets, but remember that is exactly the point of the strategy - to keep your buying power on the sidelines until the markets have significantly pulled back. You need to be patient and trust in the historical backtesting you have performed.
HOW IT WORKS
The Smart DCA Strategy leverages a creative approach to using Moving Averages to identify the most opportune moments to buy. A trigger occurs when a daily candle, in its entirety including the high wick, closes below the threshold line or box plotted on the chart. The indicator is designed to facilitate both backtesting and live trading.
HOW TO USE
Settings:
The input parameters for tuning have been intentionally simplified in an effort to prevent users falling into the overfitting trap.
The main control is the Buying strictness scale setting. Setting this to a lower value will provide more buying days (less strict) while higher values mean less buying days (more strict). In my testing I've found level 9 to provide good all round results.
Validation days is a setting to prevent triggering entries until the asset has spent a given number of days (candles) in the overbought state. Increasing this makes entries stricter. I've found 0 to give the best results across most assets.
In the backtest settings you can also configure how much to buy for each day an entry triggers. Blind buy size is the amount you would buy every day in a standard DCA strategy. Smart buy size is the amount you would buy each day a Smart DCA entry is triggered.
You can also experiment with backtesting your strategy over different historical datasets by using the Start date and End date settings. The results table will not calculate for any trades outside what you've set in the date range settings.
Backtesting:
When backtesting you should use the results table on the top right to tune and optimise the results of your strategy. As with all backtests, be careful to avoid overfitting the parameters. It's better to have a setup which works well across many currencies and historical periods than a setup which is excellent on one dataset but bad on most others. This gives a much higher probability that it will be effective when you move to live trading.
The results table provides a clear visual representation as to which strategy, standard or smart, is more profitable for the given dataset. You will notice the columns are dynamically coloured red and green. Their colour changes based on which strategy is more profitable in the A/B style backtest - green wins, red loses. The key metrics to focus on are GOA (Gain on Account) and Avg Cost.
Live Trading:
After you've finished backtesting you can proceed with configuring your alerts for live trading.
But first, you need to estimate the amount you should buy on each Smart DCA entry. We can use the Total invested row in the results table to calculate this. Assuming we're looking to trade on
BTCUSD
Decide how much USD you would spend each day to buy BTC if you were using a standard DCA strategy. Lets say that is $5 per day
Enter that USD amount in the Blind buy size settings box
Check the Blind Buy column in the results table. If we set the backtest date range to the last 10 years, we would expect the amount spent on blind buys over 10 years to be $18,250 given $5 each day
Next we need to tweak the value of the Smart buy size parameter in setting to get it as close as we can to the Total Invested amount for Blind Buy
By following this approach it means we will invest roughly the same amount into our Smart DCA strategy as we would have into a standard DCA strategy over any given time period.
After you have calculated the Smart buy size, you can go ahead and set up alerts on Smart DCA buy triggers.
BOT AUTOMATION
In an effort to maintain the 'set and forget' stress-free benefits of a standard DCA strategy, I have set my personal Smart DCA Strategy up to be automated. The bot runs on AWS and I have a fully functional project for the bot on my GitHub account. Just reach out if you would like me to point you towards it. You can also hook this into any other 3rd party trade automation system of your choice using the pre-configured alerts within the indicator.
PLANNED FUTURE DEVELOPMENTS
Currently this is purely an accumulation strategy. It does not have any sell signals right now but I have ideas on how I will build upon it to incorporate an algorithm for selling. The strategy should gradually offload profits in bull markets which generates more USD which gives more buying power to rinse and repeat the same process in the next cycle only with a bigger starting capital. Watch this space!
MARKETS
Crypto:
This strategy has been specifically built to work on the crypto markets. It has been developed, backtested and tuned against crypto markets and I personally only run it on crypto markets to accumulate more of the coins I believe in for the long term. In the section below I will provide some backtest results from some of the top crypto assets.
Stocks:
I've found it is generally more profitable than a standard DCA strategy on the majority of stocks, however the results proved to be a lot more impressive on crypto. This is mainly due to the volatility and cycles found in crypto markets. The strategy makes its profits from capitalising on pullbacks in price. Good stocks on the other hand tend to move up and to the right with less significant pullbacks, therefore giving this strategy less opportunity to flourish.
Forex:
As this is an accumulation style investment strategy, I do not recommend that you use it to trade Forex.
For more info about this strategy including backtest results, please see the full description on the invite only version of this strategy named "Smart DCA Strategy"






















