资源加载中... loading...

Enhanced Trend Multi-Signal Dynamic Trading Strategy

Author: ChaoZhang, Date: 2025-01-06 11:06:26
Tags: ATRSTMA

img

Overview

This strategy is an advanced trend-following trading system based on the Supertrend indicator, incorporating multiple signal confirmation mechanisms and dynamic position management. The core of the strategy calculates the Supertrend line using ATR (Average True Range) and generates trading signals by combining price movements and position time windows to achieve intelligent market trend capture.

Strategy Principle

The strategy employs a three-layer signal filtering mechanism:

  1. Basic Trend Identification: Uses Supertrend indicator (parameters: ATR period 10, factor 3.0) to identify primary trend direction
  2. Direction Confirmation System: Tracks trend changes through direction variable, generating trading signals at trend reversals
  3. Signal Enhancement Mechanism: Confirms trend reliability through continuous 3-bar price action within 15-19 periods after basic entry signals

The strategy employs 15% of account equity as position size per trade, supporting conservative risk management.

Strategy Advantages

  1. Multiple Signal Confirmation: Significantly reduces false signals by combining Supertrend indicator and price action analysis
  2. Dynamic Position Control: Signal confirmation mechanism based on time windows prevents overtrading
  3. Robust Risk Management: Percentage-based position sizing effectively controls risk exposure per trade
  4. Strong Trend Adaptability: Strategy self-adapts to different market environments, improving profit stability

Strategy Risks

  1. Trend Reversal Risk: May generate false signals in choppy markets leading to consecutive stops
  2. Parameter Sensitivity: Strategy performance heavily depends on ATR period and factor settings
  3. Slippage Impact: May face significant slippage in low liquidity conditions
  4. Signal Lag: Multiple confirmation mechanisms might cause slight delays in entry timing

Strategy Optimization Directions

  1. Implement Volatility Filtering: Suggest adding ATR standard deviation indicator to adjust trading parameters during high volatility periods
  2. Optimize Signal Confirmation: Consider incorporating volume as a supplementary indicator to improve signal reliability
  3. Enhance Stop Loss Mechanism: Recommend adding trailing stop functionality for better profit protection
  4. Market Environment Classification: Add market state recognition module to use different parameter combinations in different market conditions

Summary

This is a well-structured and logically rigorous trend-following strategy with practical application value through its multiple signal confirmation mechanisms and comprehensive risk management system. The strategy’s strong expandability allows for further stability and profitability improvements through the suggested optimization directions.


/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend Strategy", overlay=true)
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step=0.01)

// Compute supertrend values
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
var float direction = na
if not na(supertrendDirection[1]) and supertrendDirection[1] != supertrendDirection
    direction := supertrendDirection > 0 ? 1 : -1

// Variables to track conditions
var int lastShortTime = na
var int lastLongTime = na

// Detecting short and long entries
if direction == -1
    strategy.entry("My Short Entry Id", strategy.short)
    lastShortTime := bar_index

if direction == 1
    strategy.entry("My Long Entry Id", strategy.long)
    lastLongTime := bar_index

// Custom signal logic
bool bullishSignal = false
bool bearishSignal = false

// Define bullish signal conditions
if not na(lastShortTime) and (bar_index - lastShortTime >= 15 and bar_index - lastShortTime <= 19)
    if close > open and close[1] > open[1] and close[2] > open[2]
        bullishSignal := true

// Define bearish signal conditions
if not na(lastLongTime) and (bar_index - lastLongTime >= 15 and bar_index - lastLongTime <= 19)
    if close < open and close[1] < open[1] and close[2] < open[2]
        bearishSignal := true

// Plot signals
if bullishSignal
    strategy.entry("Bullish Upward Signal", strategy.long)
    label.new(bar_index, close, text="Bullish", style=label.style_circle, color=color.green, textcolor=color.white)

if bearishSignal
    strategy.entry("Bearish Downward Signal", strategy.short)
    label.new(bar_index, close, text="Bearish", style=label.style_circle, color=color.red, textcolor=color.white)

// Optionally plot the strategy equity
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)


Related

More