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.