Skip to main content

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

FeatureDescription
Buy Conditions3 independent buy signals (V-bottom pattern, extreme oversold, long-term slow accumulation)
Sell Conditions3 basic sell signals (peak detection, consecutive green candles, extreme overbought)
Protection MechanismNo independent protection mechanism, relies on ROI and stop-loss
Timeframe5 Minutes
Dependenciestalib (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 GroupCondition NumberCore LogicApplicable Scenario
Pattern Recognition#1V-bottom reversalBounce after rapid decline
Oversold Capture#2Multi-indicator extreme oversoldBottom-fishing during market panic
Slow Accumulation#3MFI at extreme lowOpportunity 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

ScenarioTrigger ConditionSignal Name
Peak ReversalCombined smoothed indicator > 100 then starts decliningPeak Detection
Consecutive Rise8 consecutive green (rising) candlesOverheat Warning
Extreme OverboughtCCI > 200 and RSI > 70Quick 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 CategorySpecific IndicatorParametersPurpose
Trend IndicatorADXDefaultTrend strength (not used in logic)
OscillatorRSI14Overbought/oversold judgment
OscillatorCCI20Overbought/oversold judgment
Volume IndicatorMFIDefaultMoney flow judgment
Volatility IndicatorBollinger Bands20, 2Price position judgment
Volatility IndicatorBollinger Bands (buy)20, 1.6Entry position judgment
Smoothing IndicatorEMA11Indicator smoothing
Smoothing IndicatorTEMA21Combined 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:

  1. First smoothing layer: Use 11-period EMA to smooth RSI, CCI, MFI
  2. 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

  1. Noise reduction through smoothing: Multi-layer smoothing reduces false signals
  2. Multi-dimensional validation: Triple validation from price, momentum, money flow
  3. Peak detection: Attempts to capture trend reversal points
  4. Pattern recognition: Candle pattern auxiliary judgment

⚠️ Limitations

  1. Lag: Smoothing delays signals
  2. Many parameters: Multiple indicator parameters may overfit
  3. Experimental nature: Author annotated "DO NOT USE, just playing"
  4. ADX unused: Calculated but not used in logic

VIII. Applicable Scenario Recommendations

Market EnvironmentRecommended ConfigurationNotes
Oscillating marketDefault configurationOversold bounce logic fits oscillation
Trending marketReduce positionReversal signals may go against trend
High volatilityWiden Bollinger BandsIncrease parameter adaptability
Low volatilityDefault configurationSmoothing 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 TypePerformance RatingReason 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 ItemRecommended ValueNotes
Timeframe5m (default)Short period suits quick reversal
Stop-loss-5% (default)Tighter stop-loss protection
Trading pairsModerate volatility coinsAvoid 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 PairsMinimum MemoryRecommended Memory
1-10 pairs1GB2GB
10-50 pairs2GB4GB
50+ pairs4GB8GB

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:

  1. Smoothing philosophy: Demonstrates how to reduce indicator noise through smoothing
  2. Multi-indicator combination: Demonstrates combined use of RSI, CCI, MFI
  3. Pattern recognition: Contains reference implementation of candle pattern detection
  4. 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.