Skip to main content

BBRSI4cust Strategy: The Customizable Bollinger Player

Nickname: Parameter Adjustment Master
Occupation: Adaptive Bottom Fisher
Timeframe: 15 minutes


I. What Is This Strategy?​

Simply put, BBRSI4cust is:

  • A Bollinger Band strategy with built-in "adjustment knobs"
  • Checks trend (+DI) + position (Bollinger lower band) when buying
  • Checks mean reversion (Bollinger middle band) when selling
  • Parameters can be optimized and adjusted yourself

Like a professional angler who "adjusts gear based on the weather" 🎣


II. Core Configuration: Conservative Short-Term Play​

Take Profit Rules (ROI Table)​

0 minutes: Run if you make 0.3%

Translation: This ROI setting is too conservative, right? Only 0.3%? It's basically saying "good enough, let the signal tell me when to leave"

Stop Loss Rules​

Fixed stop loss: -10% (now this is called a normal stop loss)
Trailing stop: Enabled (but using default values)

Translation:

  • Fixed stop loss = "Quit when losing 10%"—much more reasonable than BBRSI3366's -33%
  • Trailing stop = "Specific parameters not set, let the system figure it out"

III. Buy Conditions: Trend + Position Double Confirmation​

This strategy's buy requires three conditions to be met simultaneously:

Condition #1: +DI Above Threshold​

(dataframe['plus_di'] > self.buy_di.value)  # Default > 20

Plain English:

"+DI is part of the directional indicator system, showing uptrend strength. Above 20 means there's some upward momentum"

Condition #2: Price Breaks Below Bollinger Lower Band​

(qtpylib.crossed_below(dataframe['low'], dataframe['bb_lowerband']))

Plain English:

"Low price crosses below Bollinger lower band—price has been pushed down, might bounce back"

Condition #3: Has Volume​

(dataframe['volume'] > 0)

Plain English:

"This candle has volume, it's not empty air"

Combined Translation:

"Has upward trend + price pushed to lower band + people are trading = buying opportunity!"


IV. Sell Logic: Return to Middle Band Then Leave​

Signal Sell: High Price Crosses Above Bollinger Middle Band​

(qtpylib.crossed_above(dataframe['high'], dataframe['bb_middleband1']))

Plain English:

"High price breaks above Bollinger middle band—bounce is about done, let's go"

Custom Exit: Real-time Price Crosses Middle Band​

if (qtpylib.crossed_above(current_rate, current_candle['bb_middleband1'])):
return "bb_profit_sell"

Plain English:

"Current price crosses middle band, triggers bb_profit_sell—lock in profit"

Summary: Both sell methods point to the same signal—when price returns to Bollinger middle band, it's time to leave


V. Adjustable Parameters: The Essence of This Strategy​

This strategy's biggest feature is parameters can be optimized:

ParameterAdjustable RangeDefaultPlain English
buy_bb1-41Bollinger Band width (for buying)
buy_di10-2020+DI threshold (buy filter)
sell_bb1-41Bollinger Band width (for selling)

Let me translate:

buy_bb (Buy Bollinger Band Width)​

  • = 1: Standard Bollinger Bands, more signals but potentially more false signals
  • = 2: Wider, fewer signals but potentially more accurate
  • = 3-4: Very wide, very few signals, only buys in extreme situations

buy_di (Buy Trend Filter)​

  • = 10: Loose condition, easier to buy
  • = 20: Strict condition, needs stronger uptrend to buy

sell_bb (Sell Bollinger Band Width)​

  • Affects the middle band position for selling
  • Can be different from buy_bb, more flexible

Comment: This strategy gives you three knobs to adjust for the best parameters for the current market—but the prerequisite is you need to know how to use hyperopt for parameter optimization 😅


VI. This Strategy's "Personality Traits"​

✅ Pros (Praise Section)​

  1. Adjustable Parameters: Not hardcoded like BBRSI3366, can be adjusted for different markets
  2. Trend Filter: +DI condition avoids randomly buying in pure downtrends
  3. Reasonable Stop Loss: -10% stop loss, finally normal
  4. Dual Bollinger Bands: Can use different parameters for buying and selling, more flexible
  5. Custom Exit: Real-time price monitoring, more precise exits

⚠️ Cons (Complaint Section)​

  1. RSI Calculated But Not Used: Calculated RSI but never used—why waste computing power?
  2. ROI Too Low: 0.3% target is almost like not setting one
  3. Parameter Optimization Risk: Hyperopt optimization might "memorize answers"
  4. Learning Curve: Need to understand Hyperopt to get maximum value

VII. Applicable Scenarios: When to Use It?​

Market EnvironmentRecommended ParametersReason
Sideways rangebuy_bb=2, buy_di=15Wider Bollinger Bands, medium trend filter
Slow bull marketbuy_bb=1, buy_di=20Standard Bollinger Bands, strict trend filter
High volatilitybuy_bb=3-4Wider Bollinger Bands, avoid false signals
Downtrend❌ Not recommended+DI condition may not be met for extended periods

VIII. What Market Can This Strategy Make Money In?​

8.1 Core Logic: Trend Confirmation + Oversold Bounce​

BBRSI4cust's trading philosophy:

  • Check trend first: +DI high enough means there's upward momentum
  • Check position next: Price pushed down to Bollinger lower band
  • Wait for reversion: Return to middle band then leave

Its Money-Making Philosophy: "Oversold bounce with trend confirmation"

8.2 Performance in Different Markets (Plain English Version)​

Market TypePerformance RatingPlain English Explanation
📈 Slow bull range⭐⭐⭐⭐☆+DI filter effective, bounce signals accurate
🔄 Sideways range⭐⭐⭐⭐⭐Bollinger Bands up and down, eat both sides
📉 Downtrend⭐⭐☆☆☆+DI too low, can't buy in
⚡️ High volatility⭐⭐⭐☆☆Widen Bollinger Band parameters and it still works

One-Sentence Summary: Ranging market + upward trend = this strategy's comfort zone


IX. Want to Run This Strategy? Check These Configurations First​

9.1 Trading Pair Configuration​

Configuration ItemRecommended ValueComment
Timeframe15m (default)Medium-term trading, more stable than 5m
Number of pairs5-20Too many to handle
ROI targetSuggest raising to 1%-2%0.3% is too low

9.2 Hyperopt Parameter Optimization Recommendations​

# Optimize buy parameters
freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss \
--spaces buy sell --timeframe 15m \
--strategy BBRSI4cust -e 500

Comment: This strategy is designed for parameter tuning, it's a waste not to run hyperopt

9.3 Hardware Requirements​

Number of Trading PairsMinimum MemoryRecommended MemoryExperience
1-10 pairs2GB4GBSmooth
10-50 pairs4GB8GBNo pressure
50+ pairs8GB16GBStill easy

Comment: Same as BBRSI3366, this strategy has low hardware requirements

9.4 Backtest vs Live Trading​

Important Notes:

  • After parameter optimization, verify if it's overfitted
  • Use out-of-sample data for testing
  • Rolling window validation for parameter stability

Suggested Process:

  1. Run hyperopt to optimize parameters first
  2. Validate with out-of-sample data
  3. Paper trading test
  4. Small position live trading

X. Bonus: The Strategy Author's "Little Secrets"​

Look carefully at the code, you'll find some interesting things:

  1. RSI Calculated But Not Used

    dataframe['rsi'] = ta.RSI(dataframe)  # Calculated
    # And then nothing... completely unused in signals

    "Since we calculated it, might as well keep it for charting"

  2. INTERFACE_VERSION = 3

    INTERFACE_VERSION = 3

    "This is the new Freqtrade strategy interface, quite modern"

  3. Dual Bollinger Band Design

    bollinger = qtpylib.bollinger_bands(..., stds=self.buy_bb.value)  # For buying
    bollinger1 = qtpylib.bollinger_bands(..., stds=self.sell_bb.value) # For selling

    "One set of Bollinger Bands for buying, another for selling—this is asymmetric long/short strategy design"

  4. Complete plot_config Configuration

    plot_config = {
    'main_plot': {...},
    'subplots': {
    "DI": {...},
    "RSI": {...}
    }
    }

    "Charting configuration ready, convenient for debugging"


XI. Summary: How's This Strategy Really?​

One-Sentence Review​

"Adjustable-parameter Bollinger strategy, for players who like to tinker and optimize"

Who Should Use It?​

  • ✅ Quantitative players who like adjusting parameters
  • ✅ People who know how to use Hyperopt
  • ✅ Ranging market traders
  • ✅ Bottom fishers who want trend filtering

Who Shouldn't Use It?​

  • ❌ Lazy people (need to adjust parameters)
  • ❌ Beginners who don't understand Hyperopt
  • ❌ Downtrend markets
  • ❌ People who like simple strategies

My Advice​

1. First run backtest with default parameters, see the results
2. Learn how to use freqtrade hyperopt to optimize parameters
3. Validate with out-of-sample data, prevent overfitting
4. Periodically re-optimize parameters based on market changes

XII. ⚠️ Risk Re-emphasis (Must Read This Section)​

The Trap of Parameter Optimization​

BBRSI4cust's optimizable parameters are a double-edged sword:

Over-optimization may lead to "memorizing answers"—perfect performance on historical data, but a mess in live trading.

Simply put: "Historical backtest return 1000%, live trading loss 50%"

Hyperopt Risks​

When using Hyperopt optimization, be aware of:

  • Overfitting: Parameters too fitted to historical data
  • Instability: Parameters perform very differently in different time periods
  • Market Changes: Optimized parameters may become invalid quickly

My Advice (Honest Words)​

1. Don't blindly pursue maximum backtest returns
2. Use rolling window validation for parameter stability
3. Reserve some data for out-of-sample testing
4. Observe live performance after optimization, adjust timely
5. Combine multiple strategies, don't bet on just one

Remember: Optimizable parameters ≠ better strategy. Sometimes simple strategies are more robust. Tuning parameters is an art, not simply maximizing backtest returns! 🙏


Final Reminder: This strategy's greatest value is learning the design pattern of optimizable parameter strategies. If you like adjusting parameters and optimizing, this is a great practice target. But if you want "plug and play," you might need to run a round of hyperopt first to find suitable parameters.