Skip to main content

BuyOnly Strategy Analysis

Strategy Number: #39
Strategy Type: Minimalist Trend Following + Buy Only No Sell
Timeframe: 15 minutes (15m)


I. Strategy Overview​

BuyOnly is a "buy only, no sell" minimalist strategy. As its name suggests — the strategy only generates entry signals, with no active exit logic. The core philosophy of this design is to let profits run, relying entirely on take-profit and stoploss mechanisms to exit positions.

The strategy adopts a classic technical indicator combination: RSI oversold + Bollinger Band lower band + TEMA trend confirmation, forming a simple yet effective entry system.

Core Features​

FeatureDescription
Entry Conditions1 independent entry signal
Exit Conditions0 (relies entirely on take-profit/stoploss)
ProtectionNo explicit protection mechanisms
Timeframe15 minutes
Dependenciestalib, technical (qtpylib)

II. Strategy Configuration Analysis​

2.1 Base Risk Parameters​

# ROI exit table
minimal_roi = {
"60": 0.01, # Exit at 1% profit after 60 minutes
"30": 0.02, # Exit at 2% profit after 30 minutes
"0": 0.04 # Immediate exit requires 4% profit
}

# Stoploss setting
stoploss = -0.10 # 10% fixed stoploss

Design Logic:

Unlike common strategies, BuyOnly's ROI setting presents a "reverse gradient" — shorter holding time, higher take-profit target. This is because the strategy assumes early entry points have more advantage and should pursue higher profits.

2.2 Trailing Stop Configuration​

trailing_stop = True

The strategy enables the default trailing stop mechanism.


III. Entry Conditions Details​

3.1 Single Entry Condition​

(
qtpylib.crossed_above(dataframe["rsi"], 30)) & # RSI crosses above 30
(dataframe["open"] <= dataframe["bb_lowerband"]) & # Open price at Bollinger Band lower band
(dataframe["tema"] > dataframe["tema"].shift(1)) & # TEMA going up
(dataframe["volume"] > 0) # Has trading volume
)

Logic Breakdown:

  1. RSI crossed_above(30): RSI rebounds from oversold region
  2. open <= bb_lowerband: Open price at or below Bollinger Band lower band
  3. tema > tema.shift(1): TEMA continuing upward
  4. volume > 0: Has actual trading volume

Technical Meaning:

This is a typical "oversold bounce" entry strategy:

  • RSI rebounding from below 30 indicates selling pressure easing
  • Bollinger Band lower band provides reference for extreme price positions
  • TEMA confirms short-term uptrend
  • Volume validates signal effectiveness

IV. Exit Logic Details​

4.1 No Active Exit​

def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
HODL
"""
return dataframe

The strategy's exit logic is completely empty, meaning all exit decisions rely on:

Exit MethodTrigger Condition
Fixed StoplossLoss 10%
Trailing StopDefault settings enabled
ROI Take-ProfitHolding time + profit rate

4.2 ROI Exit Table Analysis​

Holding TimeTake-Profit ThresholdDesign Intent
0 minutes4%Early quick take-profit
30 minutes2%Mid-term lower expectations
60 minutes+1%Long-term retain position

V. Technical Indicator System​

5.1 Core Indicators​

Indicator CategorySpecific IndicatorPurpose
Momentum IndicatorRSI (14)Overbought/oversold judgment
Trend IndicatorTEMA (9)Trend following
Volatility IndicatorBollinger Bands (20,2)Extreme position identification

5.2 Indicator Parameters​

IndicatorPeriodDescription
RSI14Standard RSI period
TEMA9Triple Exponential Moving Average
Bollinger Bands20,2Classic parameter setting

VI. Risk Management Features​

6.1 Fixed Stoploss​

10% fixed stoploss is the default setting, providing basic protection.

6.2 Aggressive Take-Profit​

ROI settings reflect the strategy's pursuit of short-term returns, up to 4%.

6.3 No Protection Mechanisms​

The strategy has no additional entry protection parameters, relying on RSI and Bollinger Bands as built-in filters.


VII. Strategy Pros & Cons​

✅ Pros​

  1. Minimalist Code: Easy to understand and modify
  2. Multi-Indicator Confirmation: RSI + Bollinger Bands + TEMA triple validation
  3. Let Profits Run: No active selling, relies on take-profit/stoploss
  4. Learning Friendly: Suitable for beginners to understand strategy structure

⚠️ Cons​

  1. No Active Exit: Completely passive exit
  2. Single Condition: Only one entry condition
  3. No Trend Filtering: Doesn't distinguish bull/bear markets
  4. Signals May Be Too Frequent: 15-minute timeframe

VIII. Applicable Scenarios​

Market EnvironmentRecommended Configuration
Uptrend✅ Usable
Rebound market✅ Usable
Downtrend❌ Not recommended
Ranging market⚠️ Use with caution

IX. Detailed Applicable Market Environments​

9.1 Strategy Core Logic​

BuyOnly's design philosophy is "capturing oversold bounces". When price falls to Bollinger Band lower band and RSI is in oversold region, it indicates price may have touched short-term bottom. Entry at this point, expecting price rebound.

9.2 Performance in Different Market Environments​

Market TypePerformance RatingReason Analysis
📈 Uptrend⭐⭐⭐⭐Rebound signals often effective
📉 Downtrend⭐⭐High risk counter-trend entry
🔄 Ranging market⭐⭐⭐Bollinger Band lower band often effective
⚡ High volatility⭐⭐⭐Frequent signals

X. Important Reminders​

10.1 Hardware Requirements​

Number of PairsMinimum Memory
1-201GB
20+2GB

10.2 Manual Trading Suggestions​

  • Confirm overall trend direction
  • Wait for RSI to rebound from below 30 before entry
  • Consider manually setting wider take-profit

XI. Summary​

BuyOnly is a representative work of "minimalism". It implements trend following functionality with minimal code, one of the simplest strategies in the Freqtrade strategy library.

Its core values are:

  1. Simplicity: Very little code, easy to understand
  2. Let Profits Run: No active intervention, let market decide exit timing
  3. Learning Value: Suitable as starting point for strategy development
  4. Extensibility: Can add various protection mechanisms based on this

For quantitative traders, BuyOnly is a very good "skeleton strategy" — can add more conditions, protections, and complex exit logic on this foundation.


Document Version: v1.0
Strategy Series: Minimalist Trend Following