Skip to main content

PRICEFOLLOWINGX Strategy Analysis

Strategy Number: #11 (11th of 465 strategies)
Strategy Type: Multi-Protection + Heikin Ashi + Order Book Trend Following
Timeframe: 15 minutes (15m)


I. Strategy Overview

PRICEFOLLOWINGX is a complex trend-following strategy combining Heikin Ashi candles, Fisher RSI, Bollinger Bands, and Freqtrade protection mechanisms. The strategy features the use of order book data and advanced technical indicators, configured with multiple trading protection mechanisms.

Core Features

FeatureDescription
Entry ConditionsMulti-condition combination (Fisher RSI + TEMA + BB + Heikin Ashi)
Exit ConditionsMulti-condition combination (Fisher RSI + TEMA + EMA cross)
Protection3 protections (Max Drawdown, Stoploss Guard, Low Profit Pairs)
Timeframe15 minutes
DependenciesTA-Lib, technical, numpy
Special FeaturesProtection mechanisms, order book data, Heikin Ashi

II. Strategy Configuration Analysis

2.1 Base Risk Parameters

# ROI exit table
minimal_roi = {
"120": 0.015, # After 120 minutes: 1.5% profit
"60": 0.025, # After 60 minutes: 2.5% profit
"30": 0.03, # After 30 minutes: 3% profit
"0": 0.015, # Immediate exit: 1.5% profit
}

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

# Trailing stop
trailing_stop = True
trailing_only_offset_is_reached = True
trailing_stop_positive = 0.02 # 2% trailing activation
trailing_stop_positive_offset = 0.03 # 3% offset trigger

Design Logic:

  • Time-decreasing ROI: Maximum 3% within 30 minutes, then gradually decreases
  • Trailing stop: Activates 2% trailing after 3% profit, suitable for trending markets
  • Protection mechanisms: 3 protection mechanisms prevent consecutive losses

2.2 Protection Mechanisms (Protections)

@property
def protections(self):
return [
{
"method": "MaxDrawdown",
"lookback_period_candles": 48,
"trade_limit": 5,
"stop_duration_candles": 5,
"max_allowed_drawdown": 0.75,
},
{
"method": "StoplossGuard",
"lookback_period_candles": 24,
"trade_limit": 3,
"stop_duration_candles": 5,
"only_per_pair": True,
},
{
"method": "LowProfitPairs",
"lookback_period_candles": 30,
"trade_limit": 2,
"stop_duration_candles": 6,
"required_profit": 0.005,
},
]

Protection Mechanism Description:

  1. Max Drawdown Protection: Max 75% drawdown in 5 trades within 48 candles, pauses for 5 candles after trigger
  2. Stoploss Guard: 3 stoplosses within 24 candles, pauses for 5 candles after trigger (per pair)
  3. Low Profit Pairs: 2 trades with profit below 0.5% within 30 candles, pauses for 6 candles after trigger

2.3 Hyperparameters

# Buy hyperparameters
rsi_enabled = BooleanParameter(default=True, space="buy", optimize=True)
ema_pct = DecimalParameter(0.001, 0.100, decimals=3, default=0.040, space="buy")
buy_frssi = DecimalParameter(-0.71, 0.50, decimals=2, default=-0.40, space="buy")
frsi_pct = DecimalParameter(0.01, 0.20, decimals=2, default=0.10, space="buy")

# Sell hyperparameters
ema_sell_pct = DecimalParameter(0.001, 0.020, decimals=3, default=0.003, space="sell")
sell_rsi_enabled = BooleanParameter(default=True, space="sell", optimize=True)
sell_frsi = DecimalParameter(-0.30, 0.70, decimals=2, default=0.2, space="sell")

III. Entry Conditions Details

3.1 Entry Logic (RSI Enabled)

# Entry conditions when RSI enabled
conditions = [
qtpylib.crossed_below(dataframe["frsi"], self.buy_frsi.value), # Fisher RSI crosses below threshold
dataframe["tema"] < dataframe["bb_lowerband"], # TEMA < BB lower band
qtpylib.crossed_below(dataframe["tema"], dataframe["emalow"]), # TEMA crosses below EMA low
]

Logic Analysis:

  • Fisher RSI oversold: Fisher RSI crosses below threshold, confirms oversold
  • BB breakout: TEMA breaks below BB lower band, price at statistical low
  • EMA cross confirmation: TEMA crosses below EMA low, short-term trend confirmed

3.2 Entry Logic (RSI Disabled)

# Entry conditions when RSI disabled
conditions = [
dataframe["tema"] > dataframe["bb_middleband"], # TEMA > BB middle band
qtpylib.crossed_above(dataframe["tema"], dataframe["ema7"]), # TEMA crosses above EMA7
]

Note: When RSI disabled, uses trend-following logic, TEMA crosses above EMA7 and price above BB middle band.


IV. Exit Logic Explained

4.1 Exit Conditions (RSI Enabled)

# Exit conditions when RSI enabled
conditions = [
qtpylib.crossed_below(dataframe["frsi"], self.sell_frsi.value), # Fisher RSI crosses below threshold
dataframe["tema"] < dataframe["bb_middleband"], # TEMA < BB middle band
qtpylib.crossed_below(dataframe["tema"], dataframe["ema7"]), # TEMA crosses below EMA7
]

Logic Analysis:

  • Fisher RSI overbought: Fisher RSI crosses below threshold, confirms overbought
  • BB breakdown: TEMA breaks below BB middle band, trend weakening
  • EMA cross confirmation: TEMA crosses below EMA7, short-term trend reversal

4.2 Exit Conditions (RSI Disabled)

# Exit conditions when RSI disabled
conditions = [
dataframe["tema"] < dataframe["bb_middleband"], # TEMA < BB middle band
qtpylib.crossed_below(dataframe["tema"], dataframe["ema7"]), # TEMA crosses below EMA7
]

Note: When RSI disabled, exits on trend weakness signals only.


V. Technical Indicator System

5.1 Core Indicators

Indicator CategorySpecific IndicatorParametersPurpose
TrendTEMADefaultTriple EMA for faster response
TrendEMA7 periodShort-term trend
VolatilityBollinger BandsDefaultOverbought/oversold bands
MomentumFisher RSIDefaultNormalized momentum
CandlesHeikin AshiDefaultSmoothed candle representation

5.2 Indicator Characteristics

IndicatorCharacteristicsAdvantages
TEMATriple exponential MAFaster response than EMA
Fisher RSINormalized RSIMore sensitive to turning points
Heikin AshiSmoothed candlesFilters noise, clearer trends

VI. Risk Management Features

6.1 Max Drawdown Protection

{
"method": "MaxDrawdown",
"lookback_period_candles": 48,
"trade_limit": 5,
"stop_duration_candles": 5,
"max_allowed_drawdown": 0.75,
}

Purpose: Prevents consecutive large losses by pausing trading after significant drawdown.

6.2 Stoploss Guard

{
"method": "StoplossGuard",
"lookback_period_candles": 24,
"trade_limit": 3,
"stop_duration_candles": 5,
"only_per_pair": True,
}

Purpose: Prevents repeated stoplosses on same pair by imposing cooldown.

6.3 Low Profit Pairs

{
"method": "LowProfitPairs",
"lookback_period_candles": 30,
"trade_limit": 2,
"stop_duration_candles": 6,
"required_profit": 0.005,
}

Purpose: Avoids inefficient trading on pairs that consistently produce low profits.


VII. Strategy Pros & Cons

✅ Advantages

  1. Multiple protections: 3 protection mechanisms prevent various loss scenarios
  2. Flexible RSI: Can enable/disable RSI for different market conditions
  3. Advanced indicators: TEMA + Fisher RSI + Heikin Ashi for better signals
  4. Order book data: Uses real-time order book for execution optimization
  5. Hyperparameter support: Key parameters can be optimized via Hyperopt

⚠️ Limitations

  1. High complexity: Multiple indicators and protections, difficult to debug
  2. No BTC correlation: Doesn't detect Bitcoin market trend
  3. Parameter sensitivity: Hyperparameters may overfit historical data
  4. Computation load: Multiple indicators increase computational burden
  5. 15m timeframe: Less responsive than 5m strategies

VIII. Applicable Scenarios

Market EnvironmentRecommended ConfigurationNote
Ranging marketRSI enabled modeFisher RSI works well in ranging
UptrendRSI disabled modeTrend-following excels in trends
DowntrendPause or light positionProtections will trigger frequently
High volatilityDefault configurationProtections handle volatility well
Low volatilityAdjust ROIMay need lower ROI thresholds

IX. Applicable Market Environments Explained

PRICEFOLLOWINGX is a trend-following strategy based on the core philosophy of "protection first + flexible signals".

9.1 Strategy Core Logic

  • Dual mode entry: RSI-enabled for mean reversion, RSI-disabled for trend following
  • Multiple protections: 3 protection mechanisms prevent various loss scenarios
  • Advanced indicators: TEMA + Fisher RSI + Heikin Ashi for better signal quality

9.2 Performance in Different Market Environments

Market TypePerformance RatingReason Analysis
📈 Slow bull/ranging up★★★★☆Trend-following + protections work well
🔄 Wide ranging★★★★☆RSI mode suitable for ranging
📉 Single-sided crash★★★☆☆Protections limit losses but may trigger often
⚡️ Extreme sideways★★★☆☆15m timeframe may have fewer signals

9.3 Key Configuration Recommendations

ConfigurationRecommended ValueNote
Number of pairs15-30Moderate signal frequency
Max positions3-5Control risk
Position modeFixed positionRecommended fixed position
Timeframe15mMandatory requirement

X. Important Note: Protection Mechanism Complexity

10.1 Moderate to High Learning Curve

Strategy code is about 200+ lines, requires understanding:

  • Multiple technical indicators and their interactions
  • Protection mechanism configuration and behavior
  • Hyperparameter optimization process

10.2 Moderate Hardware Requirements

Multiple indicators and protections increase computation:

Number of PairsMinimum RAMRecommended RAM
15-30 pairs1GB2GB
30-60 pairs2GB4GB

10.3 Protection Mechanism Behavior

Three protections work together:

  • Max Drawdown: Global protection across all pairs
  • Stoploss Guard: Per-pair protection
  • Low Profit Pairs: Efficiency-based protection

10.4 Manual Trader Recommendations

Manual traders can reference this strategy's protection approach:

  • Set personal loss limits (like Max Drawdown)
  • Avoid revenge trading after stoplosses (like Stoploss Guard)
  • Move on from consistently low-profit pairs (like Low Profit Pairs)

XI. Summary

PRICEFOLLOWINGX is a well-designed trend-following strategy with comprehensive protections. Its core value lies in:

  1. Multiple protections: 3 protection mechanisms prevent various loss scenarios
  2. Flexible RSI: Can enable/disable RSI for different market conditions
  3. Advanced indicators: TEMA + Fisher RSI + Heikin Ashi for better signals
  4. Order book data: Uses real-time order book for execution optimization
  5. Hyperparameter support: Key parameters can be optimized via Hyperopt

For quantitative traders, this is an excellent protected trend-following strategy template. Recommendations:

  • Use as an advanced case for learning protection mechanisms
  • Understand dual-mode entry logic (RSI enabled/disabled)
  • Can adjust protection parameters based on risk tolerance
  • Note hyperparameters may overfit, test thoroughly before live trading