Skip to main content

ADX_15M_USDT Strategy In-Depth Analysis

Strategy Number: #412 (412th of 465 strategies)
Strategy Type: ADX Trend Breakout + Tiered Take Profit System
Timeframe: 15 Minutes (15m)


1. Strategy Overview

ADX_15M_USDT is a strategy specifically designed for 15-minute level USDT trading pairs. This strategy is optimized based on ADXMomentum, introducing a tiered take profit system and more refined entry conditions. The core feature is using DI crossovers to capture trend initiation points and maximizing returns through time-based ROI.

Core Features

FeatureDescription
Entry Conditions4 conditions (trend strength + directional strength + crossover signal)
Exit Conditions4 conditions (trend reversal signals)
Protection MechanismTiered ROI take profit + -12.55% stop loss
Timeframe15 Minutes (15m)
Dependenciestalib (ADX, PLUS_DI, MINUS_DI, SAR, MOM), qtpylib
Startup CandlesApproximately 30 candles (depends on indicator periods)

2. Strategy Configuration Analysis

2.1 Tiered Take Profit System (ROI Table)

# ROI exit table
minimal_roi = {
"0": 0.26552, # Exit immediately when 26.552% profit is reached
"30": 0.10255, # After holding 30 minutes, exit at minimum 10.255% profit
"210": 0.03545, # After holding 210 minutes, exit at minimum 3.545% profit
"540": 0 # After holding 540 minutes, no minimum profit requirement
}

Design Rationale:

  • High Take Profit Target: Default target 26.55%, capturing larger trends
  • Time Decay: As holding time extends, take profit target lowers, increasing execution probability
  • Dynamic Adaptation: After 9 hours of holding, no profit requirement, controlled by signals

2.2 Stop Loss Setting

stoploss = -0.1255  # -12.55% stop loss

Design Philosophy:

  • Moderate stop loss ratio (approximately 12.55%)
  • Stricter than ADXMomentum's -25%
  • Suitable for medium-short term trading at 15-minute level

3. Entry Conditions Detailed Analysis

3.1 Core Indicator Combination

The strategy uses independent indicator sets for entry and exit:

Indicator CategoryEntry IndicatorExit IndicatorParameters
Trend Strengthadxsell-adx14 period
Bullish Strengthplus_disell-plus_di25 period
Bearish Strengthminus_disell-minus_di25 period
Trend Followingsarsell-sarDefault
Momentummomsell-mom14 period

Design Feature: Entry and exit use completely independent indicator sets, allowing for more flexible parameter optimization.

3.2 Entry Conditions Explained

def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
(dataframe['adx'] > 16) & # Condition 1
(dataframe['minus_di'] > 4) & # Condition 2
(dataframe['plus_di'] > 20) & # Condition 3
(qtpylib.crossed_above(dataframe['plus_di'], dataframe['minus_di'])) # Condition 4
),
'buy'] = 1
return dataframe

Condition Analysis

Condition #Condition ContentTechnical Meaning
Condition #1adx > 16ADX above 16, indicates some trend (more lenient than ADXMomentum's 25)
Condition #2minus_di > 4Bearish directional indicator above 4 (non-extreme bearish state)
Condition #3plus_di > 20Bullish directional indicator above 20, bullish power is strong
Condition #4plus_di crosses above minus_diBullish directional indicator crosses above bearish, confirming trend initiation

3.3 Entry Signal Classification

Signal DimensionIndicatorJudgment StandardComparison with ADXMomentum
Trend StrengthADX> 16 (more lenient)ADXMomentum requires > 25
Directional StrengthPLUS_DI> 20 (slightly lenient)ADXMomentum requires > 25
Crossover ConfirmationDI CrossoverCross above confirmsADXMomentum only compares magnitude
Bearish FilterMINUS_DI> 4 (ensure non-extreme)ADXMomentum doesn't have this condition

Key Difference: ADX_15M_USDT uses DI crossover signal rather than simple comparison, able to more precisely capture trend initiation points.


4. Exit Logic Detailed Analysis

4.1 Exit Signal System

def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
(dataframe['adx'] > 43) & # Condition 1
(dataframe['minus_di'] > 22) & # Condition 2
(dataframe['plus_di'] > 20) & # Condition 3
(qtpylib.crossed_above(dataframe['sell-minus_di'], dataframe['sell-plus_di'])) # Condition 4
),
'sell'] = 1
return dataframe

4.2 Exit Condition Analysis

Condition #Condition ContentTechnical Meaning
Condition #1adx > 43Trend is extremely strong (very high ADX)
Condition #2minus_di > 22Bearish directional indicator is strong
Condition #3plus_di > 20Bullish directional indicator still at high level
Condition #4minus_di crosses above plus_diBearish crosses above bullish, trend reversal

4.3 Exit Condition Design Analysis

There are clear differences between entry and exit condition designs:

DimensionEntry ConditionExit ConditionDesign Intent
ADX Threshold> 16 (lenient)> 43 (strict)Easy to enter, hard to exit
DI CrossoverBullish cross aboveBearish cross aboveCapture trend reversal
MINUS_DI> 4> 22Exit requires bears to already be strong

4.4 Exit Mechanism Summary

The strategy has four exit methods:

Exit MethodTrigger ConditionDescription
ROI Take ProfitProfit ≥ 26.55% (immediate)Capture big trend
ROI DecayTime-decay targetIncrease execution probability
Stop LossLoss ≥ 12.55%Risk control
Signal ExitAll four conditions metTrend reversal signal

5. Technical Indicator System

5.1 Core Indicators

Indicator CategorySpecific IndicatorPurpose
Trend StrengthADX (14)Determine market trend strength
Directional IndicatorsPLUS_DI (25), MINUS_DI (25)Determine bullish/bearish direction and strength
Momentum IndicatorMOM (14)Calculated but not used for signals (reserved)
Trend FollowingSARCalculated but not used for signals (reserved)

5.2 Independent Entry/Exit Indicators

A notable feature of the strategy is using independent indicator sets:

# Entry indicators
dataframe['adx'] = ta.ADX(dataframe, timeperiod=14)
dataframe['plus_di'] = ta.PLUS_DI(dataframe, timeperiod=25)
dataframe['minus_di'] = ta.MINUS_DI(dataframe, timeperiod=25)

# Exit indicators (independent calculation)
dataframe['sell-adx'] = ta.ADX(dataframe, timeperiod=14)
dataframe['sell-plus_di'] = ta.PLUS_DI(dataframe, timeperiod=25)
dataframe['sell-minus_di'] = ta.MINUS_DI(dataframe, timeperiod=25)

Design Significance: Although current parameters are the same, it reserves space for future independent optimization of entry/exit conditions.


6. Risk Management Features

6.1 Tiered Take Profit Mechanism

Holding Time      Minimum Profit Requirement
────────────────────────────
0-30 minutes 26.552%
30-210 minutes 10.255%
210-540 minutes 3.545%
540+ minutes No requirement

Design Philosophy:

  • Early pursuit of high returns (26.55%)
  • Lower expectations as time passes
  • Eventually controlled by signals

6.2 Stop Loss Setting

stoploss = -0.1255  # -12.55%

Comparison with ADXMomentum:

StrategyStop LossTimeframeFeature
ADXMomentum-25%1hWide stop loss, long holding
ADX_15M_USDT-12.55%15mTighter stop loss, quick turnover

6.3 qtpylib Crossover Detection

The strategy uses qtpylib.crossed_above() function to detect DI crossovers:

qtpylib.crossed_above(dataframe['plus_di'], dataframe['minus_di'])

Advantages:

  • Precisely captures crossover points
  • More accurate than simple magnitude comparison
  • Can identify the exact moment of trend initiation

7. Strategy Advantages and Limitations

✅ Advantages

  1. Tiered Take Profit System: Time decay mechanism increases execution probability, balances returns and execution
  2. Precise Crossover Signals: Uses DI crossover instead of simple comparison, captures trend initiation points
  3. Lenient Entry Conditions: ADX > 16 is more lenient than traditional 25, increases trading opportunities
  4. Independent Indicator Sets: Entry and exit indicators are independent, facilitating future optimization
  5. 15-Minute Level: Suitable for intraday trading, fast capital turnover

⚠️ Limitations

  1. Strict Exit Conditions: ADX > 43 may be difficult to meet, leading to prolonged holding
  2. Complex Parameters: ROI table parameters need adjustment based on market
  3. Redundant Indicators: MOM and SAR calculated but not used
  4. High Take Profit Target: 26.55% target may be difficult to achieve in ranging markets

8. Applicable Scenario Recommendations

Market EnvironmentRecommended ConfigurationDescription
Trend Initiation PeriodDefault configurationDI crossover signal precisely captures trend start
High Volatility MarketAdjust ROI tableMay need to lower take profit target
Ranging MarketNot recommendedADX condition may trigger frequently but limited returns
Low Volatility MarketLower ADX thresholdCan reduce entry ADX threshold to 10-12

9. Applicable Market Environment Detailed Analysis

ADX_15M_USDT belongs to the trend breakout strategy type. Based on its code architecture, it is best suited for early trend initiation periods, while possibly generating false signals in ranging markets.

9.1 Strategy Core Logic

  • Lenient Entry: ADX > 16 relaxes conditions, increases trading opportunities
  • Crossover Confirmation: PLUS_DI crossing above MINUS_DI confirms trend initiation
  • Strict Exit: ADX > 43 indicates extreme trend, possible reversal
  • Tiered Take Profit: Time decay mechanism balances returns and execution

9.2 Performance in Different Market Environments

Market TypePerformance RatingReason Analysis
📈 Trend Initiation Period⭐⭐⭐⭐⭐DI crossover precisely captures entry point
🔄 Ranging Market⭐⭐☆☆☆ADX > 16 is relatively lenient, may generate false signals
📉 Downtrend⭐☆☆☆☆Long-only strategy, cannot profit
⚡️ Extreme Volatility⭐⭐⭐☆☆May trigger high take profit, may also stop loss

9.3 Key Configuration Recommendations

Configuration ItemRecommended ValueDescription
Trading Pair SelectionModerate volatility coinsToo high volatility may cause frequent stop losses
Timeframe15m (default)Ideal choice for intraday trading
Stop Loss AdjustmentAdjust based on volatilityCan appropriately widen for high volatility

10. Important Reminder: The Cost of Complexity

10.1 Learning Cost

This strategy involves many concepts:

  • ADX trend strength indicator
  • DI directional indicators and crossovers
  • Tiered ROI table understanding
  • qtpylib crossover detection function

Recommend understanding ADXMomentum first before learning this strategy.

10.2 Hardware Requirements

Number of Trading PairsMinimum MemoryRecommended Memory
1-102GB4GB
10-504GB8GB
50+8GB16GB

10.3 Differences Between Backtesting and Live Trading

Strategy has many parameters, backtesting and live trading may have differences:

  • ROI Table Effect: Tiered take profit may be discounted in live trading due to slippage
  • Crossover Signal Delay: Live execution may have delays
  • ADX Extreme Values: Exit ADX > 43 may only be met in extreme market conditions

10.4 Suggestions for Manual Traders

Core signals can be extracted for manual trading:

  • ADX > 16 indicates some trend
  • PLUS_DI crossing above MINUS_DI is entry signal
  • ADX > 43 and reverse DI crossover is exit signal

11. Summary

ADX_15M_USDT is a refined trend breakout strategy. Its core value lies in:

  1. Tiered Take Profit: Time decay mechanism balances returns and execution probability
  2. Crossover Signals: Precisely captures trend initiation points
  3. Independent Indicator Sets: Entry and exit indicators separated, facilitating optimization
  4. 15-Minute Level: Suitable for intraday trading, fast capital turnover

For quantitative traders, ADX_15M_USDT demonstrates how to add refined management on top of basic strategies, making it an excellent example for understanding tiered take profit and crossover signals.