Strategy005 In-Depth Analysis
Strategy ID: #396 (396th of 465 strategies)
Strategy Type: Multi-Indicator Combination Strategy + Hyperopt Parameter Optimization
Timeframe: 5 minutes (5m)
I. Strategy Overview
Strategy005 is a multi-indicator combination strategy with parameter optimization support. It integrates multiple technical analysis tools including MACD, RSI, Fisher Transform, Stochastic, Parabolic SAR, etc., and provides optimizable buy and sell parameters through the Hyperopt framework, allowing strategy parameter adjustment according to different market environments.
Core Characteristics
| Feature | Description |
|---|---|
| Buy Conditions | 1 combined buy signal with 7 optimizable parameters |
| Sell Conditions | 2 sell triggers (selectable) with 4 optimizable parameters |
| Protection Mechanism | Trailing stop + Fixed stop loss -10% |
| Timeframe | 5-minute primary timeframe |
| Dependencies | talib, qtpylib, numpy |
| Optimization Support | Hyperopt parameter optimization framework |
II. Strategy Configuration Analysis
2.1 Basic Risk Parameters
# ROI exit table
minimal_roi = {
"1440": 0.01, # Take profit 1% after 24 hours
"80": 0.02, # Take profit 2% after 80 minutes
"40": 0.03, # Take profit 3% after 40 minutes
"20": 0.04, # Take profit 4% after 20 minutes
"0": 0.05 # Take profit 5% immediately
}
# Stop loss setting
stoploss = -0.10 # Fixed 10% stop loss
# Trailing stop
trailing_stop = True
trailing_stop_positive = 0.01 # Activate trailing after 1% profit
trailing_stop_positive_offset = 0.02 # Trailing drawdown tolerance 2%
Design Philosophy:
- Tiered ROI design, longer holding time means lower take-profit target
- Added 24-hour 1% take-profit compared to Strategy004, more conservative
- Trailing stop protects profits, suitable for trending markets
- 10% fixed stop loss provides larger error tolerance
2.2 Order Type Configuration
order_types = {
'buy': 'limit', # Limit buy
'sell': 'limit', # Limit sell
'stoploss': 'market', # Market stop loss execution
'stoploss_on_exchange': False
}
2.3 Hyperopt Optimizable Parameters
Buy Parameters
| Parameter Name | Type | Range | Default | Optimization Space |
|---|---|---|---|---|
buy_volumeAVG | IntParameter | 50-300 | 150 | buy |
buy_rsi | IntParameter | 1-100 | 26 | buy |
buy_fastd | IntParameter | 1-100 | 1 | buy |
buy_fishRsiNorma | IntParameter | 1-100 | 5 | buy |
Sell Parameters
| Parameter Name | Type | Range | Default | Optimization Space |
|---|---|---|---|---|
sell_rsi | IntParameter | 1-100 | 74 | sell |
sell_minusDI | IntParameter | 1-100 | 4 | sell |
sell_fishRsiNorma | IntParameter | 1-100 | 30 | sell |
sell_trigger | CategoricalParameter | ["rsi-macd-minusdi", "sar-fisherRsi"] | "rsi-macd-minusdi" | sell |
III. Buy Conditions Detailed Analysis
3.1 Buy Signal Core Logic
# Complete buy signal logic
(
# Condition 1: Price filter
(dataframe['close'] > 0.00000200) &
# Condition 2: Volume surge (4x average volume)
(dataframe['volume'] > dataframe['volume'].rolling(buy_volumeAVG).mean() * 4) &
# Condition 3: Price below SMA40
(dataframe['close'] < dataframe['sma']) &
# Condition 4: Stochastic golden cross
(dataframe['fastd'] > dataframe['fastk']) &
# Condition 5: RSI confirmation
(dataframe['rsi'] > buy_rsi) &
# Condition 6: FastD threshold
(dataframe['fastd'] > buy_fastd) &
# Condition 7: Fisher RSI normalized threshold
(dataframe['fisher_rsi_norma'] < buy_fishRsiNorma)
)
3.2 Condition Classification Analysis
| Condition Group | Condition Content | Default Parameter | Logic Explanation |
|---|---|---|---|
| Price Filter | Close price > 0.00000200 | - | Filters extremely low-priced coins |
| Volume Surge | Volume > 4x average volume | 150-period average | Confirms market activity |
| Price Position | Close price < SMA40 | 40-period SMA | Confirms being at low position |
| Stochastic Golden Cross | FastD > FastK | - | Wait for golden cross confirmation |
| RSI Confirmation | RSI > threshold | Default 26 | Confirms rebound momentum exists |
| FastD Threshold | FastD > threshold | Default 1 | Oversold confirmation |
| Fisher RSI | Fisher normalized < threshold | Default 5 | Oversold confirmation |
3.3 Buy Logic Design Philosophy
Differences from Other Strategies:
- Price Below SMA40: Wait for price to pull back below moving average, seeking undervalued points
- 4x Volume Surge: Must have significant volume breakout, confirming market participation
- Multi-indicator Confirmation: RSI + FastD + Fisher triple confirmation, reducing false signals
- Optimizable Parameters: All thresholds can be adjusted through Hyperopt
IV. Sell Logic Detailed Analysis
4.1 Dual-Trigger Sell System
The strategy provides two sell triggers, selected via the sell_trigger parameter:
Trigger 1: RSI-MACD-MinusDI Combination (Default)
# Sell trigger conditions
(
qtpylib.crossed_above(dataframe['rsi'], sell_rsi) & # RSI crosses above threshold
(dataframe['macd'] < 0) & # MACD negative
(dataframe['minus_di'] > sell_minusDI) # Negative DI exceeds threshold
)
Trigger Logic:
- RSI breaks above overbought threshold (default 74)
- MACD in negative territory (insufficient upside momentum)
- Negative directional indicator exceeds threshold (increasing downside momentum)
Trigger 2: SAR-FisherRsi Combination
# Sell trigger conditions
(
(dataframe['sar'] > dataframe['close']) & # SAR above price
(dataframe['fisher_rsi'] > sell_fishRsiNorma) # Fisher RSI exceeds threshold
)
Trigger Logic:
- Parabolic SAR turns bearish (SAR above price)
- Fisher RSI enters overbought territory
4.2 Sell Trigger Comparison
| Trigger | Trigger Conditions | Applicable Scenario | Characteristics |
|---|---|---|---|
| rsi-macd-minusdi | RSI cross above + MACD negative + MinusDI high | Trend weakening confirmation | More conservative, triple confirmation |
| sar-fisherRsi | SAR reversal + Fisher overbought | Quick reversal identification | More aggressive, faster response |
4.3 Tiered ROI Take-Profit
Holding Time Take-Profit Target
─────────────────────────────────────────
24+ hours 1%
80-1440 minutes 2%
40-80 minutes 3%
20-40 minutes 4%
0-20 minutes 5%
V. Technical Indicator System
5.1 Core Indicators
| Indicator Category | Specific Indicators | Purpose |
|---|---|---|
| Trend Indicator | MACD (12,26,9) | Judge trend direction and momentum |
| Momentum Indicator | RSI (14) | Overbought/oversold judgment |
| Transform Indicator | Fisher RSI | RSI Fisher transform, smoothing signals |
| Stochastic Indicator | Stochastic Fast | Overbought/oversold confirmation |
| Trend Following | Parabolic SAR | Trend reversal identification |
| Moving Average | SMA40 | Medium-term trend reference |
| Directional Indicator | Minus DI | Downtrend strength |
5.2 Special Indicator: Fisher RSI Transform
# Fisher transform calculation
rsi = 0.1 * (dataframe['rsi'] - 50)
dataframe['fisher_rsi'] = (numpy.exp(2 * rsi) - 1) / (numpy.exp(2 * rsi) + 1)
# Fisher RSI normalized (0-100 range)
dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1)
Purpose of Fisher Transform:
- Converts RSI to -1 to +1 range
- Makes extreme values more obvious, reducing middle-range noise
- Normalized version easier to set thresholds
5.3 Indicator Calculation Details
# MACD
macd = ta.MACD(dataframe)
dataframe['macd'] = macd['macd']
dataframe['macdsignal'] = macd['macdsignal']
# Minus DI (Directional Indicator)
dataframe['minus_di'] = ta.MINUS_DI(dataframe)
# RSI
dataframe['rsi'] = ta.RSI(dataframe)
# Stochastic
stoch_fast = ta.STOCHF(dataframe)
dataframe['fastd'] = stoch_fast['fastd']
dataframe['fastk'] = stoch_fast['fastk']
# Parabolic SAR
dataframe['sar'] = ta.SAR(dataframe)
# SMA
dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
VI. Risk Management Features
6.1 Parameter Optimization Framework
The strategy supports Hyperopt parameter optimization, allowing adjustment based on historical data:
Buy Parameter Optimization:
buy_volumeAVG: Volume moving average period, adjusts volume judgment sensitivitybuy_rsi: RSI buy threshold, adjusts oversold judgment standardbuy_fastd: FastD buy thresholdbuy_fishRsiNorma: Fisher RSI normalized threshold
Sell Parameter Optimization:
sell_rsi: RSI sell thresholdsell_minusDI: Minus DI sell thresholdsell_fishRsiNorma: Fisher RSI sell thresholdsell_trigger: Sell trigger selection
6.2 Trailing Stop Mechanism
trailing_stop = True
trailing_stop_positive = 0.01
trailing_stop_positive_offset = 0.02
Mechanism Explanation:
- Trailing stop activates when profit reaches 2%
- Trailing distance is 1%
- Dynamically protects profits, suitable for trending markets
6.3 Volume Filter Mechanism
dataframe['volume'] > dataframe['volume'].rolling(buy_volumeAVG).mean() * 4
Characteristics:
- Requires current volume to be 4x average volume
- Uses 150-period average by default
- Ensures entry only during active market periods
VII. Strategy Advantages and Limitations
✅ Advantages
- Optimizable Parameters: Supports Hyperopt framework, can adjust parameters according to different market environments
- Dual-Trigger Design: Two sell logic options, adapting to different trading styles
- Multi-indicator Confirmation: RSI + FastD + Fisher triple confirmation, reducing false signals
- Volume Surge Requirement: 4x average volume filter, ensures market participation
- Fisher Transform Enhancement: RSI processed through Fisher transform, signals are smoother
⚠️ Limitations
- Parameter Overfitting Risk: Hyperopt optimization may cause parameters to overfit historical data
- Strict Conditions: Multiple buy conditions may miss some opportunities
- MACD Lag: MACD as confirmation indicator has lag
- SAR Poor Performance in Ranging Markets: Parabolic SAR frequently reverses during sideways
- Variable Volume Average Period: Needs adjustment for different coins
VIII. Applicable Scenario Recommendations
| Market Environment | Recommended Configuration | Notes |
|---|---|---|
| Trend Pullback | Default parameters | Look for opportunities when price below SMA40 |
| High Volatility | Use sar-fisherRsi trigger | SAR responds faster |
| Conservative Operation | Use rsi-macd-minusdi trigger | Triple confirmation more conservative |
| Ranging Market | Not recommended | SAR and volume surge both fail |
IX. Applicable Market Environment Details
Strategy005 is a parameterized multi-indicator combination strategy. Based on its code architecture and optimizable parameter design, it is best suited for parameter-optimized trend pullback scenarios, while performance in unoptimized general markets may be average.
9.1 Strategy Core Logic
- Low Position Buying: Wait for price below SMA40
- Volume Confirmation: Must have 4x average volume breakout
- Multi-indicator Resonance: RSI + FastD + Fisher triple confirmation
- Flexible Selling: Two triggers selectable
9.2 Performance in Different Market Environments
| Market Type | Performance Rating | Analysis |
|---|---|---|
| 📈 Trend Pullback | ⭐⭐⭐⭐⭐ | Buy when price below SMA40, profit after pullback ends |
| 🔄 Ranging Market | ⭐⭐☆☆☆ | SAR frequently reverses, volume surge hard to trigger |
| 📉 Continuous Decline | ⭐⭐☆☆☆ | Price continuously below SMA, but no rebound |
| ⚡ High Volatility | ⭐⭐⭐⭐☆ | Volume surge easily triggered, but stop loss may be hit |
9.3 Key Configuration Recommendations
| Configuration Item | Recommended Value | Notes |
|---|---|---|
| Hyperopt Optimization | Required | Parameter optimization for trading pairs |
| Sell Trigger | Choose based on backtest | High volatility choose sar-fisherRsi, conservative choose rsi-macd-minusdi |
| Volume Period | 100-200 | Adjust based on coin characteristics |
| Backtest Period | At least 3 months | Ensure parameter stability |
X. Important Reminder: The Cost of Complexity
10.1 Learning Curve
The strategy involves multiple technical indicators:
- MACD indicator calculation and interpretation
- RSI indicator overbought/oversold judgment
- Fisher transform mathematical principles
- Parabolic SAR reversal signals
- Directional Indicator (DI) meaning
10.2 Hardware Requirements
| Trading Pairs | Minimum Memory | Recommended Memory |
|---|---|---|
| 1-10 pairs | 2GB | 4GB |
| 10-30 pairs | 4GB | 8GB |
| 30+ pairs | 8GB | 16GB |
Note: Hyperopt optimization requires additional computational resources.
10.3 Backtest vs Live Trading Differences
- Hyperopt optimized parameters may overfit historical data
- Volume surge condition performance varies significantly across different periods
- Fisher RSI transform may produce anomalous values in extreme markets
- Limit orders may have difficulty filling in fast markets
10.4 Manual Trading Recommendations
Manually executing this strategy requires:
- Wait for price below 40-period SMA
- Confirm volume surge to 4x average volume
- Check if RSI, FastD, Fisher RSI meet conditions
- Select sell trigger and set alerts
XI. Summary
Strategy005 is a flexible, optimizable multi-indicator combination strategy. Its core value lies in:
- Parameterized Design: All key thresholds can be optimized through Hyperopt
- Dual-Trigger System: Two sell logic options, adapting to different trading styles
- Multi-indicator Confirmation: RSI + FastD + Fisher triple confirmation, reducing false signals
- Volume Filter: 4x average volume requirement ensures market participation
For quantitative traders, this is a strategy that requires parameter optimization to achieve best results. It is recommended to conduct thorough Hyperopt optimization and backtest verification before deploying to live trading.