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