Strategy005: The All-Purpose Parameter Tweaker
Nickname: The Parameter Tuning Master
Job: Customizable trend pullback catcher
Timeframe: 5 minutes
I. What's This Strategy About?
Simply put, Strategy005 is:
- Uses every indicator: MACD, RSI, Fisher, SAR, Stochastic...
- Every parameter is tweakable: how to buy, how to sell, all optimizable
- Two sell modes to choose from: conservative or aggressive
- Has an oddly named indicator: Fisher RSI Transform
Like a Swiss Army knife, fully equipped, and customizable to your preferences 🛠️
II. Core Configuration: In Plain English - "I Want Everything"
Take-Profit Rules (ROI Table)
Holding 24+ hours → Take 1% profit and run
Holding 80 min - 24 hours → Take 2% profit and run
Holding 40-80 minutes → Take 3% profit and run
Holding 20-40 minutes → Take 4% profit and run
Opens and jumps immediately → Take 5% profit and run
Translation: Added a 24-hour take-profit compared to Strategy004 - meaning "if you can hold for a day, 1% is fine too."
Stop Loss Rules
Fixed stop loss: -10%
Trailing stop: Activates after 2% profit, triggers on 1% pullback
Translation: Same as Strategy004, gives plenty of error room, protects profits once made.
III. Buy Conditions: Seven Gates, Difficulty Adjustable
This strategy has seven gates for buying, and the difficulty of each gate can be adjusted:
🎯 Gate 1: Price Filter
dataframe['close'] > 0.00000200
Plain English:
"Close price must exceed 0.00000200, not touching super cheap coins."
💧 Gate 2: Volume Surge (Adjustable Parameter)
dataframe['volume'] > dataframe['volume'].rolling(buy_volumeAVG).mean() * 4
# buy_volumeAVG defaults to 150, adjustable range 50-300
Plain English:
"Volume must be 4x or more of average! Default looks at 150 candles average, but you can adjust between 50 and 300. What we want - 'This coin suddenly got active!'"
📉 Gate 3: Price Below Moving Average
dataframe['close'] < dataframe['sma'] # SMA40
Plain English:
"Price must be below 40-period moving average, meaning at relative low position. Wait for pullback to enter, don't chase highs!"
🔀 Gate 4: Stochastic Golden Cross
dataframe['fastd'] > dataframe['fastk']
Plain English:
"D line jumped above K line? Golden cross confirmed!"
📊 Gate 5: RSI Confirmation (Adjustable Parameter)
dataframe['rsi'] > buy_rsi # Default 26, adjustable range 1-100
Plain English:
"RSI must be above some value (default 26). This isn't looking for oversold, it's confirming rebound momentum exists - 'RSI shouldn't be too low, needs some energy.'"
🎲 Gate 6: FastD Threshold (Adjustable Parameter)
dataframe['fastd'] > buy_fastd # Default 1, adjustable range 1-100
Plain English:
"FastD must be above some value (default 1, basically no restriction). This parameter is too loose, might get raised during backtest optimization."
🐟 Gate 7: Fisher RSI Normalized (Adjustable Parameter)
dataframe['fisher_rsi_norma'] < buy_fishRsiNorma # Default 5, adjustable range 1-100
Plain English:
"What is this? Fisher RSI normalized, it's just a mathematical transformation of RSI. Must be below some value (default 5), indicating oversold. Sounds fancy, it's just another way to look at oversold."
IV. Sell Logic: Two Modes to Choose From
4.1 Mode 1: Conservative (rsi-macd-minusdi, Default)
# All three conditions must be met to sell
(RSI crosses above 74) & (MACD < 0) & (Minus DI > 4)
Plain English:
"Sell conditions:
- RSI breaks above 74 - overbought
- MACD is still negative - insufficient upside momentum
- Negative directional indicator above 4 - downside momentum starting to increase
All three conditions must be met to exit? That's pretty conservative!"
4.2 Mode 2: Aggressive (sar-fisherRsi)
# Only two conditions needed to sell
(SAR above price) & (Fisher RSI > 30)
Plain English:
"Sell conditions:
- Parabolic SAR jumped above price - trend reversal signal
- Fisher RSI above 30 - overbought confirmed
Just two conditions and you're out, faster reaction than Mode 1!"
4.3 Mode Comparison
| Mode | Condition Count | Response Speed | Applicable Scenario |
|---|---|---|---|
| Conservative | 3 | Slow | Bull market, don't want to sell too early |
| Aggressive | 2 | Fast | Ranging market, take profits while you can |
V. This Strategy's "Personality"
✅ Pros (Praise Time)
- All Parameters Tweakable: How to buy, how to sell, all parameters can be optimized
- Two Sell Modes: Conservative or aggressive, you choose
- Multi-indicator Confirmation: MACD, RSI, Fisher, SAR... multiple verifications
- Volume Surge Filter: 4x average volume, ensures market is active
- Fisher Transform: Advanced version of RSI, smoother signals
⚠️ Cons (Roast Time)
- Too Many Indicators: MACD, RSI, Fisher, SAR, Stochastic, SMA... makes you dizzy
- Parameter Overfitting Risk: Optimizing too hard might just be memorizing historical answers
- Too Strict Conditions: All seven conditions must be met to enter
- Volume Surge Hard to Trigger: 4x average volume, not every pullback has it
- SAR Jumps Around in Ranging Markets: Parabolic indicator keeps reversing during sideways
VI. Applicable Scenarios: When to Use It?
| Market Environment | Recommendation | Reason |
|---|---|---|
| 📈 Bull Market Pullback | ⭐⭐⭐⭐⭐ Strongly recommended | Buy when price below SMA40, perfect! |
| 🔄 Ranging Market | ⭐⭐☆☆☆ Not recommended | SAR and volume surge both don't work well |
| 📉 Bear Market | ⭐⭐☆☆☆ Don't use | Price keeps below SMA, but no rebound |
| ⚡ High Volatility | ⭐⭐⭐⭐☆ Can try | Volume surge easily triggered |
VII. Summary: How's This Strategy Really?
One-Line Review
"A multi-indicator strategy that needs parameter tuning to be effective, don't use it without optimization."
Who Should Use It?
- ✅ People who know Hyperopt
- ✅ Those with time for backtest optimization
- ✅ Those who like multi-indicator confirmation
- ✅ Those who can handle complex logic
Who Shouldn't Use It?
- ❌ Those too lazy to tune parameters
- ❌ Those who just want to "set and forget"
- ❌ Those seeking simple strategies
- ❌ Those with insufficient computing power (optimization takes time)
My Recommendations
- Use Hyperopt first: Without optimization you're just blindly running it
- Choose sell mode wisely: Based on backtest results, pick conservative or aggressive
- Tune parameters per coin: Different coins have different optimal parameters
- Don't use defaults: Those are just examples, not optimal
VIII. What Markets Can This Strategy Make Money In?
8.1 Core Logic: Low Position + Volume Surge + Multi-Indicator Confirmation
Strategy005 is a parameterized customizable pullback strategy. Its profit philosophy:
"Wait for price to pull back below the moving average, volume suddenly surges, multiple indicators all say 'buy', then buy. When selling, either conservatively wait for triple confirmation, or aggressively watch SAR reversal."
- SMA40 Filter: Only buy at relative low positions
- 4x Volume: Ensures popularity, not a dead coin
- Multi-indicator Resonance: RSI + FastD + Fisher triple confirmation
- Dual Sell Modes: Conservative or aggressive, you choose
8.2 Performance in Different Markets (Plain English Version)
| Market Type | Performance Rating | Plain English Explanation |
|---|---|---|
| 📈 Bull Market Pullback | ⭐⭐⭐⭐⭐ | Price below SMA40 + volume surge = perfect entry! |
| 🔄 Ranging Market | ⭐⭐☆☆☆ | SAR jumps around, volume surge doesn't mean it'll go up |
| 📉 Bear Market | ⭐⭐☆☆☆ | Price keeps below SMA, volume surge might be dumping |
| ⚡ High Volatility | ⭐⭐⭐⭐☆ | Volume surge easily triggered, but stop loss might get hit |
One-line Summary: Optimize parameters well, use in bull market pullbacks, best results.
IX. Want to Run This Strategy? Check These Configurations First
9.1 Trading Pair Configuration
| Configuration Item | Recommended Value | Comment |
|---|---|---|
| Number of pairs | 5-15 | Each pair needs optimization, too many can't handle |
| Coin selection | Major coins | Volume surge triggers needed, don't run dead coins |
| Timeframe | 5-minute default | Can try 15 minutes to reduce noise |
9.2 Key Config File Settings
# config.json key configurations
"max_open_trades": 3, # Max 3 simultaneous trades
"stake_currency": "USDT", # Use USDT as base
"stake_amount": "unlimited", # Each trade uses 1/N of total funds
"dry_run": true, # Run simulation first!
9.3 Hyperopt Optimization Commands
# Optimize buy parameters (recommend 300+ epochs)
freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss --strategy Strategy005 --spaces buy --epochs 500
# Optimize sell parameters
freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss --strategy Strategy005 --spaces sell --epochs 500
# Optimize both buy and sell
freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss --strategy Strategy005 --spaces buy sell --epochs 1000
9.4 Hardware Requirements (Important!)
| Trading Pairs | Minimum Memory | Recommended Memory | Optimization Time Estimate |
|---|---|---|---|
| 1-5 pairs | 4GB | 8GB | A few hours |
| 5-15 pairs | 8GB | 16GB | Half a day to a day |
| 15+ pairs | 16GB | 32GB | More than a day |
Warning: This strategy has many indicators, Hyperopt optimization really eats resources 😅
9.5 Backtest vs Live Trading
Backtests Look Great: Optimized parameters look perfect on historical data
Live Trading Has Pitfalls:
- Optimized parameters may overfit, just memorizing historical answers
- Volume surge in live trading might not be as stable as backtests
- Fisher RSI transform might give distorted values in extreme markets
- Limit orders might not fill in fast markets
Recommended Process:
- Backtest + Hyperopt optimization (at least 500 epochs)
- Validate optimization results with out-of-sample data
- Run paper trading for at least two weeks
- Small capital live test
- Continuously observe and adjust
Don't go all-in right away, no matter how good the optimization, you still need to watch what the market thinks!
X. Bonus: The Strategy Author's "Little Secrets"
Look carefully at the code, you'll find some interesting things:
-
The Mathematical Beauty of Fisher Transform:
rsi = 0.1 * (dataframe['rsi'] - 50)
fisher_rsi = (exp(2*rsi) - 1) / (exp(2*rsi) + 1)"This formula looks complex, but it's just a nonlinear transformation of RSI, making extreme values more obvious. Mathematician's romance 💕"
-
Dual Trigger Selection:
sell_trigger = CategoricalParameter(["rsi-macd-minusdi", "sar-fisherRsi"])"Don't know which sell is better? Just write both, let backtesting tell you!"
-
4x Volume Requirement:
volume > volume.rolling(150).mean() * 4"4x, not 3x or 5x. Why 4? Probably the best value found through testing."
-
Interesting Default Parameters:
- buy_fastd = 1 (basically no restriction)
- sell_rsi = 74 (close to overbought but not quite overbought)
"These defaults might be intentionally loose, letting you optimize them."
XI. Final Words
One-Line Review
"A multi-indicator strategy that needs tuning, powerful when optimized well, useless without optimization."
Who Should Use It?
- ✅ Those with Hyperopt experience
- ✅ Those willing to spend time optimizing
- ✅ Those who like multi-indicator confirmation
- ✅ Those seeking customization
Who Shouldn't Use It?
- ❌ Those too lazy to tune parameters
- ❌ Those who just want simple settings
- ❌ Those without time for backtesting
- ❌ Those with insufficient computing power
Manual Trader Recommendations
If you want to manually execute this strategy's logic:
- Wait for price below 40-period SMA
- Confirm volume surge to 4x average volume
- Check if RSI is above your set threshold (like 26)
- Check if Stochastic has golden cross
- Check if Fisher RSI normalized is below your set threshold
- All met? Enter!
- When selling, choose conservative triple confirmation or aggressive SAR reversal
XII. ⚠️ Risk Emphasis Again (Must Read)
Backtests Look Great, Live Trading Needs Caution
Strategy005 supports Hyperopt optimization, which has a huge pitfall:
Optimizing parameters is just "memorizing answers."
The better you optimize, the more the parameters fit historical data. But history doesn't simply repeat, overfitted parameters might fail badly on new data.
Simply put: Backtest performance like a stock god, live trading loses like a dog.
Hidden Risks of Complex Strategies
In live trading, complex logic can lead to:
- Parameter Overfitting: Optimize 1000 epochs, parameters all "memorizing answers"
- Few Signals: All seven conditions hard to satisfy together, might go a day without signals
- Abnormal Volume: 4x average volume might suddenly appear and disappear in certain periods
- Fisher Transform Distortion: Might give strange signals in extreme markets
My Recommendations (From the Heart)
1. Use out-of-sample validation when optimizing, don't just look at training set
2. Don't optimize too many epochs, 500-1000 is enough
3. Optimize each coin separately, don't use universal parameters
4. Paper trade test for at least a month
5. Live trade with small capital first, observe if parameters still work
6. Re-optimize periodically, market changes so parameters need to change too
Remember: Strategies that can be optimized might also optimize into nothing. Light position testing, survival is most important! 🙏