Script_Algo - Double Smoothed CCI Strategy📉 The uniqueness of this non-trending oscillator strategy lies in the combination of two smoothed CCI lines: one signals entry into a position from overbought/oversold zones, and the other serves as a trend filter for entries. The smoothing of the fast and slow CCI lines significantly reduces market noise, allowing the filtering of false signals often generated by the standard CCI.
📚 For those unfamiliar with CCI:
The Commodity Channel Index (CCI) is a momentum-based oscillator used to identify overbought and oversold conditions.
It helps traders spot potential trend reversals or confirm trend strength by comparing the current price to its average over a period of time.
1️⃣ General Principle of Operation
⚡ Fast CCI: Generates main signals when exiting oversold and overbought zones.
📈 Slow CCI: Acts as a trend filter. For long positions, the slow CCI must be above zero (confirmation of an uptrend), and for short positions, it must be below zero (confirmation of a downtrend). This prevents the strategy from opening trades against the dominant trend.
🛡️ Dynamic ATR Stop-Loss: Unlike fixed-percentage stop-losses, a stop tied to the Average True Range (ATR) considers market volatility. During calm periods, the stop will be narrower, allowing for more profit capture. In highly volatile periods, the stop becomes wider, protecting against premature closures caused by noise.
📊 Comprehensive Risk Management: The strategy uses not only a take-profit based on signals (exit into the opposite zone) but also a protective ATR stop-loss and a mechanism to close trades upon receiving an opposite signal (e.g., closing a long when a short signal appears).
💡 Usefulness of the Strategy:
👨💻 For traders: Provides clear, mathematically justified entry and exit signals with built-in loss protection.
📉 For analysts: Visualizes the behavior of the double CCI on a separate panel, allowing study of the interaction of the fast and slow lines and their reaction to levels without mandatory trades.
📚 For learning: An excellent example of combining multiple indicators and capital management tools into a single trading system.
2️⃣ Detailed Algorithm Logic
📥 Long Entry Signals:
The fast smoothed CCI was below the oversold level (oversold_level, e.g., -100) and crossed this level upward (fast_exits_oversold).
The slow CCI at this moment is above zero (confirming an uptrend).
If both conditions are met, a long position is opened.
📤 Long Exit: Happens under one of these conditions:
The fast CCI crosses the overbought level (overbought_level) downward (exit_long).
The price reaches a stop-loss level calculated as entry price - (ATR * multiplier).
An opposite short signal appears (enter_short).
📥 Short Entry Signals:
The fast CCI was above the overbought level (overbought_level, e.g., 100) and crossed this level downward (fast_exits_overbought).
The slow CCI at this moment is below zero (confirming a downtrend).
If both conditions are met, a short position is opened.
📤 Short Exit: Happens under one of these conditions:
The fast CCI crosses the oversold level (oversold_level) upward (exit_short).
The price reaches a stop-loss level calculated as entry price + (ATR * multiplier).
An opposite long signal appears (enter_long).
3️⃣ Default Settings Description
⚙️ General Strategy Settings (strategy):
overlay=false: The indicator is displayed in a separate panel below the chart, not overlaid on it.
default_qty_type=strategy.cash, default_qty_value=1000, initial_capital=100000: The strategy manages a virtual capital of 100,000 USD, using 1,000 USD per trade.
commission_value=0.1, slippage=1: Commission (0.1%) and slippage (1 tick) are considered for more realistic testing.
⚡ Fast CCI (Signal Generator):
Length: 8 (short enough for quick price reactions).
Source: hlc3 (average of High, Low, Close).
Smoothing: WMA (Weighted Moving Average) for smoother results than SMA.
Smoothing Length: 5 (removes part of the noise).
📈 Slow CCI (Trend Filter):
Length: 20 (standard mid-term trend period).
Source: close.
Smoothing: WMA.
Smoothing Length: 21 (even stronger smoothing for a clean trend line).
📊 Levels:
Overbought Level: 100 (classic CCI level).
Oversold Level: -100 (classic CCI level).
🛡️ Stop-Loss (ATR):
ATR Length: 6 (short period for quick adaptation).
ATR Multiplier: 10.0 (very wide stop, designed for long-term trade holding and noise filtering).
💰 As seen in backtests, this strategy shows a steadily growing equity curve with minor drawdowns. On the highly liquid crypto pair XRPUSDT, the algorithm demonstrated a fairly high win rate and relatively high profit factor on a 4-hour timeframe over 4 years, though the overall profit is moderate.
⚠️ Important Notes
Always remember: Strategy results may not repeat in the future.
The market constantly changes, so:
✅ Monitor the situation
✅ Backtest regularly
✅ Adjust settings for each asset
Also remember about possible bugs in any algorithmic trading strategy.
Even if a script is well-tested, no one knows what unpredictable events the market may bring tomorrow.
⚠️ Risk Management:
Do not risk more than 1% of your deposit per trade, otherwise you may lose your account balance, since this strategy works without stop losses.
⚠️ Disclaimer
The author of the strategy does not encourage anyone to use this algorithm and bears no responsibility for any possible financial losses resulting from its application!
Any decision to use this strategy is made personally by the owners of TradingView accounts and cryptocurrency exchange accounts.
📝 Final Notes
This is not the final version. I already have ideas on how to improve it further, so follow me to not miss updates.
🐞 Bug Reports
If you notice any bugs or inconsistencies in my algorithm,
please let me know — I will try to fix them as quickly as possible.
💬 Feedback & Suggestions
If you have any ideas on how this or any of my other strategies can be improved, feel free to write to me. I will try to implement your suggestions in the script.
Wishing everyone good luck and stable profits! 🚀💰
Commoditychannel
CCI with Signals & Divergence [AIBitcoinTrend]👽 CCI with Signals & Divergence (AIBitcoinTrend)
The Hilbert Adaptive CCI with Signals & Divergence takes the traditional Commodity Channel Index (CCI) to the next level by dynamically adjusting its calculation period based on real-time market cycles using Hilbert Transform Cycle Detection. This makes it far superior to standard CCI, as it adapts to fast-moving trends and slow consolidations, filtering noise and improving signal accuracy.
Additionally, the indicator includes real-time divergence detection and an ATR-based trailing stop system, helping traders identify potential reversals and manage risk effectively.
👽 What Makes the Hilbert Adaptive CCI Unique?
Unlike the traditional CCI, which uses a fixed-length lookback period, this version automatically adjusts its lookback period using Hilbert Transform to detect the dominant cycle in the market.
✅ Hilbert Transform Adaptive Lookback – Dynamically detects cycle length to adjust CCI sensitivity.
✅ Real-Time Divergence Detection – Instantly identifies bullish and bearish divergences for early reversal signals.
✅ Implement Crossover/Crossunder signals tied to ATR-based trailing stops for risk management
👽 The Math Behind the Indicator
👾 Hilbert Transform Cycle Detection
The Hilbert Transform estimates the dominant market cycle length based on the frequency of price oscillations. It is computed using the in-phase and quadrature components of the price series:
tp = (high + low + close) / 3
smooth = (tp + 2 * tp + 2 * tp + tp ) / 6
detrender = smooth - smooth
quadrature = detrender - detrender
inPhase = detrender + quadrature
outPhase = quadrature - inPhase
instPeriod = 0.0
deltaPhase = math.abs(inPhase - inPhase ) + math.abs(outPhase - outPhase )
instPeriod := nz(3.25 / deltaPhase, instPeriod )
dominantCycle = int(math.min(math.max(instPeriod, cciMinPeriod), 500))
Where:
In-Phase & Out-Phase Components are derived from a detrended version of the price series.
Instantaneous Frequency measures the rate of cycle change, allowing the CCI period to adjust dynamically.
The result is bounded within a user-defined min/max range, ensuring stability.
👽 How Traders Can Use This Indicator
👾 Divergence Trading Strategy
Bullish Divergence Setup:
Price makes a lower low, while CCI forms a higher low.
Buy signal is confirmed when CCI shows upward momentum.
Bearish Divergence Setup:
Price makes a higher high, while CCI forms a lower high.
Sell signal is confirmed when CCI shows downward momentum.
👾 Trailing Stop & Signal-Based Trading
Bullish Setup:
✅ CCI crosses above -100 → Buy signal.
✅ A bullish trailing stop is placed at Low - (ATR × Multiplier).
✅ Exit if the price crosses below the stop.
Bearish Setup:
✅ CCI crosses below 100 → Sell signal.
✅ A bearish trailing stop is placed at High + (ATR × Multiplier).
✅ Exit if the price crosses above the stop.
👽 Why It’s Useful for Traders
Hilbert Adaptive Period Calculation – No more fixed-length periods; the indicator dynamically adapts to market conditions.
Real-Time Divergence Alerts – Helps traders anticipate market reversals before they occur.
ATR-Based Risk Management – Stops automatically adjust based on volatility.
Works Across Multiple Markets & Timeframes – Ideal for stocks, forex, crypto, and futures.
👽 Indicator Settings
Min & Max CCI Period – Defines the adaptive range for Hilbert-based lookback.
Smoothing Factor – Controls the degree of smoothing applied to CCI.
Enable Divergence Analysis – Toggles real-time divergence detection.
Lookback Period – Defines the number of bars for detecting pivot points.
Enable Crosses Signals – Turns on CCI crossover-based trade signals.
ATR Multiplier – Adjusts trailing stop sensitivity.
Disclaimer: This indicator is designed for educational purposes and does not constitute financial advice. Please consult a qualified financial advisor before making investment decisions.
Double CCI Confirmed Hull Moving Average Reversal StrategyOverview
The Double CCI Confirmed Hull Moving Average Strategy utilizes hull moving average (HMA) in conjunction with two commodity channel index (CCI) indicators: the slow and fast to increase the probability of entering when the short and mid-term uptrend confirmed. The main idea is to wait until the price breaks the HMA while both CCI are showing that the uptrend has likely been already started. Moreover, strategy uses exponential moving average (EMA) to trail the price when it reaches the specific level. The strategy opens only long trades.
Unique Features
Dynamic stop-loss system: Instead of fixed stop-loss level strategy utilizes average true range (ATR) multiplied by user given number subtracted from the position entry price as a dynamic stop loss level.
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Double trade setup confirmation: Strategy utilizes two different period CCI indicators to confirm the breakouts of HMA.
Trailing take profit level: After reaching the trailing profit activation level scrip activate the trailing of long trade using EMA. More information in methodology.
Methodology
The strategy opens long trade when the following price met the conditions:
Short-term period CCI indicator shall be above 0.
Long-term period CCI indicator shall be above 0.
Price shall cross the HMA and candle close above it with the same candle
When long trade is executed, strategy set the stop-loss level at the price ATR multiplied by user-given value below the entry price. This level is recalculated on every next candle close, adjusting to the current market volatility.
At the same time strategy set up the trailing stop validation level. When the price crosses the level equals entry price plus ATR multiplied by user-given value script starts to trail the price with EMA. If price closes below EMA long trade is closed. When the trailing starts, script prints the label “Trailing Activated”.
Strategy settings
In the inputs window user can setup the following strategy settings:
ATR Stop Loss (by default = 1.75)
ATR Trailing Profit Activation Level (by default = 2.25)
CCI Fast Length (by default = 25, used for calculation short term period CCI
CCI Slow Length (by default = 50, used for calculation long term period CCI)
Hull MA Length (by default = 34, period of HMA, which shall be broken to open trade)
Trailing EMA Length (by default = 20)
User can choose the optimal parameters during backtesting on certain price chart.
Justification of Methodology
Before understanding why this particular combination of indicator has been chosen let's briefly explain what is CCI and HMA.
The Commodity Channel Index (CCI) is a momentum-based technical indicator used in trading to measure a security's price relative to its average price over a given period. Developed by Donald Lambert in 1980, the CCI is primarily used to identify cyclical trends in a security, helping traders to spot potential buying or selling opportunities.
The CCI formula is:
CCI = (Typical Price − SMA) / (0.015 × Mean Deviation)
Typical Price (TP): This is calculated as the average of the high, low, and closing prices for the period.
Simple Moving Average (SMA): This is the average of the Typical Prices over a specific number of periods.
Mean Deviation: This is the average of the absolute differences between the Typical Price and the SMA.
The result is a value that typically fluctuates between +100 and -100, though it is not bounded and can go higher or lower depending on the price movement.
The Hull Moving Average (HMA) is a type of moving average that was developed by Alan Hull to improve upon the traditional moving averages by reducing lag while maintaining smoothness. The goal of the HMA is to create an indicator that is both quick to respond to price changes and less prone to whipsaws (false signals).
How the Hull Moving Average is Calculated?
The Hull Moving Average is calculated using the following steps:
Weighted Moving Average (WMA): The HMA starts by calculating the Weighted Moving Average (WMA) of the price data over a period square root of n (sqrt(n))
Speed Adjustment: A WMA is then calculated for half of the period n/2, and this is multiplied by 2 to give more weight to recent prices.
Lag Reduction: The WMA of the full period n is subtracted from the doubled n/2 WMA.
Final Smoothing: To smooth the result and reduce noise, a WMA is calculated for the square root of the period n.
The formula can be represented as:
HMA(n) = WMA(WMA(n/2) × 2 − WMA(n), sqrt(n))
The Weighted Moving Average (WMA) is a type of moving average that gives more weight to recent data points, making it more responsive to recent price changes than a Simple Moving Average (SMA). In a WMA, each data point within the selected period is multiplied by a weight, with the most recent data receiving the highest weight. The sum of these weighted values is then divided by the sum of the weights to produce the WMA.
This strategy leverages HMA of user given period as a critical level which shall be broken to say that probability of trend change to the upside increased. HMA reacts faster than EMA or SMA to the price change, that’s why it increases chances to enter new trade earlier. Long-term period CCI helps to have an approximation of mid-term trend. If it’s above 0 the probability of uptrend increases. Short-period CCI allows to have an approximation of short-term trend reversal from down to uptrend. This approach increases chances to have a long trade setup in the direction of mid-term trend when the short-term trend starts to reverse.
ATR is used to adjust the strategy risk management to the current market volatility. If volatility is low, we don’t need the large stop loss to understand the there is a high probability that we made a mistake opening the trade. User can setup the settings ATR Stop Loss and ATR Trailing Profit Activation Level to realize his own risk to reward preferences, but the unique feature of a strategy is that after reaching trailing profit activation level strategy is trying to follow the trend until it is likely to be finished instead of using fixed risk management settings. It allows sometimes to be involved in the large movements. It’s also important to make a note, that script uses HMA to enter the trade, but for trailing it leverages EMA. It’s used because EMA has no such fast reaction to price move which increases probability not to be stopped out from any significant uptrend move.
Backtest Results
Operating window: Date range of backtests is 2022.07.01 - 2024.08.01. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 100%
Maximum Single Position Loss: -4.67%
Maximum Single Profit: +19.66%
Net Profit: +14897.94 USDT (+148.98%)
Total Trades: 104 (36.54% win rate)
Profit Factor: 2.312
Maximum Accumulated Loss: 1302.66 USDT (-9.58%)
Average Profit per Trade: 143.25 USDT (+0.96%)
Average Trade Duration: 34 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 2h BTC/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation