SmoothOperator Strategy Deep Dive
Strategy Number: #386 (386th of 465 strategies)
Strategy Type: Multi-Indicator Smoothing Combination + Peak Pattern Detection
Timeframe: 5 Minutes (5m)
I. Strategy Overview
SmoothOperator is a trend reversal capture strategy based on multi-indicator smoothing. The strategy name translates to "smooth operator," reflecting its core design philosophy—identifying price peak patterns through smoothing multiple technical indicators and trading at trend reversal points. Developed by Gert Wohlgemuth, it is an experimental technical analysis strategy.
Core Characteristics
| Feature | Description |
|---|---|
| Buy Conditions | 3 independent buy signals (V-bottom pattern, extreme oversold, long-term slow accumulation) |
| Sell Conditions | 3 basic sell signals (peak detection, consecutive green candles, extreme overbought) |
| Protection Mechanism | No independent protection mechanism, relies on ROI and stop-loss |
| Timeframe | 5 Minutes |
| Dependencies | talib (technical indicators), qtpylib (Bollinger Bands), numpy |
II. Strategy Configuration Analysis
2.1 Basic Risk Parameters
# ROI exit table
minimal_roi = {
"0": 0.10 # Immediate: 10% profit
}
# Stop-loss setting
stoploss = -0.05 # 5% fixed stop-loss
Design Rationale:
- Single ROI target of 10%, simple and direct
- 5% stop-loss is relatively tight, reflecting a quick in-out style
- Strategy relies on sell signals rather than ROI for exit
2.2 Order Type Configuration
The strategy does not explicitly configure order_types, using Freqtrade defaults.
III. Buy Condition Details
3.1 Core Indicator System
The strategy uses multiple smoothed indicators:
# Basic indicators
dataframe['cci'] = ta.CCI(dataframe, timeperiod=20)
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
dataframe['adx'] = ta.ADX(dataframe)
dataframe['mfi'] = ta.MFI(dataframe)
# Smoothing
dataframe['mfi_smooth'] = ta.EMA(dataframe, timeperiod=11, price='mfi')
dataframe['cci_smooth'] = ta.EMA(dataframe, timeperiod=11, price='cci')
dataframe['rsi_smooth'] = ta.EMA(dataframe, timeperiod=11, price='rsi')
# Combined smoothed indicator
dataframe['mfi_rsi_cci_smooth'] = (dataframe['rsi_smooth'] * 1.125 +
dataframe['mfi_smooth'] * 1.125 +
dataframe['cci_smooth']) / 3
dataframe['mfi_rsi_cci_smooth'] = ta.TEMA(dataframe, timeperiod=21, price='mfi_rsi_cci_smooth')
Smoothing Design Rationale:
- RSI and MFI given 1.125x weight, CCI as baseline weight
- Final smoothing uses TEMA (Triple Exponential Moving Average) for secondary smoothing
3.2 Three Buy Conditions
Condition #1: V-Bottom Pattern
# Simple V-bottom pattern (left-leaning to improve reactivity)
(
(dataframe['average'].shift(5) > dataframe['average'].shift(4))
& (dataframe['average'].shift(4) > dataframe['average'].shift(3))
& (dataframe['average'].shift(3) > dataframe['average'].shift(2))
& (dataframe['average'].shift(2) > dataframe['average'].shift(1))
& (dataframe['average'].shift(1) < dataframe['average'].shift(0))
& (dataframe['low'].shift(1) < dataframe['bb_middleband'])
& (dataframe['cci'].shift(1) < -100)
& (dataframe['rsi'].shift(1) < 30)
)
Logic Interpretation:
- Average price declining for the previous 5 candles
- Current candle's average price starts rising
- Previous candle's low is below Bollinger middle band
- CCI < -100 (oversold)
- RSI < 30 (oversold)
Condition #2: Extreme Oversold Condition
# Extreme oversold condition
(
(dataframe['low'] < dataframe['bb_middleband'])
& (dataframe['cci'] < -200)
& (dataframe['rsi'] < 30)
& (dataframe['mfi'] < 30)
)
Logic Interpretation:
- Low is below Bollinger middle band
- CCI < -200 (extreme oversold)
- RSI < 30 (oversold)
- MFI < 30 (money flow oversold)
Condition #3: Long-term Slow Accumulation
# Long-term slow accumulation (suitable for slow coins like ETC)
(
(dataframe['mfi'] < 10)
& (dataframe['cci'] < -150)
& (dataframe['rsi'] < dataframe['mfi'])
)
Logic Interpretation:
- MFI < 10 (extreme money outflow)
- CCI < -150 (oversold)
- RSI < MFI (RSI is lower, indicating price is more oversold than money flow)
3.3 Buy Condition Classification
| Condition Group | Condition Number | Core Logic | Applicable Scenario |
|---|---|---|---|
| Pattern Recognition | #1 | V-bottom reversal | Bounce after rapid decline |
| Oversold Capture | #2 | Multi-indicator extreme oversold | Bottom-fishing during market panic |
| Slow Accumulation | #3 | MFI at extreme low | Opportunity after long-term decline |
IV. Sell Logic Details
4.1 Peak Detection Sell System
The strategy uses peak pattern detection to identify sell timing:
# Combined smoothed indicator peak detection
(
(dataframe['mfi_rsi_cci_smooth'] > 100)
& (dataframe['mfi_rsi_cci_smooth'].shift(1) > dataframe['mfi_rsi_cci_smooth'])
& (dataframe['mfi_rsi_cci_smooth'].shift(2) < dataframe['mfi_rsi_cci_smooth'].shift(1))
& (dataframe['mfi_rsi_cci_smooth'].shift(3) < dataframe['mfi_rsi_cci_smooth'].shift(2))
)
Peak Recognition Logic:
- Current value > 100 (overheated zone)
- shift(1) > current value (starting to decline)
- shift(2) < shift(1) (previous one was high point)
- shift(3) < shift(2) (confirming uptrend has ended)
4.2 Three Sell Conditions
| Scenario | Trigger Condition | Signal Name |
|---|---|---|
| Peak Reversal | Combined smoothed indicator > 100 then starts declining | Peak Detection |
| Consecutive Rise | 8 consecutive green (rising) candles | Overheat Warning |
| Extreme Overbought | CCI > 200 and RSI > 70 | Quick Exit |
4.3 Consecutive Candle Pattern Detection
The strategy includes a StrategyHelper class with multiple candle pattern detection methods:
@staticmethod
def eight_green_candles(dataframe):
"""Detect 8 consecutive green (rising) candles"""
return (
(dataframe['open'] < dataframe['close']) &
(dataframe['open'].shift(1) < dataframe['close'].shift(1)) &
# ... 8 consecutive
)
Design Intent:
- 8 consecutive green candles indicate short-term overheating
- Sell after overheating to avoid pullback losses
V. Technical Indicator System
5.1 Core Indicators
| Indicator Category | Specific Indicator | Parameters | Purpose |
|---|---|---|---|
| Trend Indicator | ADX | Default | Trend strength (not used in logic) |
| Oscillator | RSI | 14 | Overbought/oversold judgment |
| Oscillator | CCI | 20 | Overbought/oversold judgment |
| Volume Indicator | MFI | Default | Money flow judgment |
| Volatility Indicator | Bollinger Bands | 20, 2 | Price position judgment |
| Volatility Indicator | Bollinger Bands (buy) | 20, 1.6 | Entry position judgment |
| Smoothing Indicator | EMA | 11 | Indicator smoothing |
| Smoothing Indicator | TEMA | 21 | Combined indicator smoothing |
5.2 Auxiliary Indicators
# Bollinger Band width indicators
dataframe['bpercent'] = (dataframe['close'] - dataframe['bb_lowerband']) /
(dataframe['bb_upperband'] - dataframe['bb_lowerband']) * 100
dataframe['bsharp'] = (dataframe['bb_upperband'] - dataframe['bb_lowerband']) /
dataframe['bb_middleband']
# Smoothed Bollinger Band width
dataframe['bsharp_slow'] = ta.SMA(dataframe, price='bsharp', timeperiod=11)
dataframe['bsharp_medium'] = ta.SMA(dataframe, price='bsharp', timeperiod=8)
dataframe['bsharp_fast'] = ta.SMA(dataframe, price='bsharp', timeperiod=5)
# Moving averages
dataframe['sma_slow'] = ta.SMA(dataframe, timeperiod=200, price='close')
dataframe['sma_medium'] = ta.SMA(dataframe, timeperiod=100, price='close')
dataframe['sma_fast'] = ta.SMA(dataframe, timeperiod=50, price='close')
VI. Risk Management Features
6.1 Smoothing Reduces Noise
The core feature of the strategy is multi-layer smoothing of indicators:
- First smoothing layer: Use 11-period EMA to smooth RSI, CCI, MFI
- Second smoothing layer: Combine three smoothed indicators, then smooth with 21-period TEMA
Risk Management Significance:
- Reduces indicator noise, filters false signals
- Smoothing introduces lag but improves signal reliability
6.2 Multi-Indicator Cross-Validation
Buy signals require simultaneous satisfaction of multiple conditions:
- Price position (below Bollinger middle band)
- Momentum indicators (RSI, CCI)
- Money flow (MFI)
6.3 Pattern Confirmation
Peak detection uses multiple candle confirmation:
- Avoids false signals from single candles
- Confirms trend reversal before acting
VII. Strategy Advantages and Limitations
✅ Advantages
- Noise reduction through smoothing: Multi-layer smoothing reduces false signals
- Multi-dimensional validation: Triple validation from price, momentum, money flow
- Peak detection: Attempts to capture trend reversal points
- Pattern recognition: Candle pattern auxiliary judgment
⚠️ Limitations
- Lag: Smoothing delays signals
- Many parameters: Multiple indicator parameters may overfit
- Experimental nature: Author annotated "DO NOT USE, just playing"
- ADX unused: Calculated but not used in logic
VIII. Applicable Scenario Recommendations
| Market Environment | Recommended Configuration | Notes |
|---|---|---|
| Oscillating market | Default configuration | Oversold bounce logic fits oscillation |
| Trending market | Reduce position | Reversal signals may go against trend |
| High volatility | Widen Bollinger Bands | Increase parameter adaptability |
| Low volatility | Default configuration | Smoothing works well |
IX. Applicable Market Environment Details
SmoothOperator is an oscillating market reversal capture strategy. Based on its code architecture and author comments, it is best suited for sideways oscillating markets with some volatility, and performs poorly in strong trending markets.
9.1 Core Strategy Logic
- Reversal trading: Find bounce opportunities in oversold zones
- Peak escape: Identify reversal signals in overheated zones
- Smoothing filter: Reduce noise signals, improve reliability
9.2 Performance in Different Market Environments
| Market Type | Performance Rating | Reason Analysis |
|---|---|---|
| 📈 Strong uptrend | ⭐⭐☆☆☆ | Reversal signals go against trend |
| 🔄 Oscillating market | ⭐⭐⭐⭐⭐ | Buy low sell high logic perfectly matches |
| 📉 Strong downtrend | ⭐⭐☆☆☆ | Bottom-fishing may catch falling knife |
| ⚡ High volatility oscillation | ⭐⭐⭐⭐☆ | Smoothing can filter noise |
9.3 Key Configuration Recommendations
| Configuration Item | Recommended Value | Notes |
|---|---|---|
| Timeframe | 5m (default) | Short period suits quick reversal |
| Stop-loss | -5% (default) | Tighter stop-loss protection |
| Trading pairs | Moderate volatility coins | Avoid extreme volatility |
X. Important Reminder: Experimental Strategy
10.1 Learning Cost
Strategy has many indicators, moderate learning cost:
- Need to understand RSI, CCI, MFI indicators
- Need to understand significance of smoothing
- Need to understand Bollinger Band application
10.2 Hardware Requirements
| Number of Trading Pairs | Minimum Memory | Recommended Memory |
|---|---|---|
| 1-10 pairs | 1GB | 2GB |
| 10-50 pairs | 2GB | 4GB |
| 50+ pairs | 4GB | 8GB |
10.3 Differences Between Backtesting and Live Trading
Strategy includes extensive indicator calculations:
- Large computational load during backtesting
- Live trading requires sufficient VPS performance
- 5-minute frame requires fast network connection
10.4 Suggestions for Manual Traders
Strategy logic is suitable for manual trading reference:
- Observe Bollinger middle band position
- Combine RSI and CCI to judge oversold conditions
- Note candle pattern confirmation
XI. Summary
SmoothOperator is an experimental multi-indicator smoothing reversal strategy. Its core values are:
- Smoothing philosophy: Demonstrates how to reduce indicator noise through smoothing
- Multi-indicator combination: Demonstrates combined use of RSI, CCI, MFI
- Pattern recognition: Contains reference implementation of candle pattern detection
- Peak detection: Attempts to identify trend reversal points
For quantitative traders, SmoothOperator is more suitable as a learning reference rather than direct live trading. The author explicitly annotated "DO NOT USE, just playing" in the code, reminding users this is an experimental strategy.