0bps

Strategy vault / Trend following

Enhanced Trend Multi Signal Dynamic Trading Strategy

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…

Author
ChaoZhang
Complexity
Starter · 58 lines
Parameters
0
Backtest bar
1h · intraday
Tested on
BTC/USDT · futures

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.

Source Pine Script

/*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)

Published by ChaoZhang on the FMZ strategy square · last modified 2025-01-06. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Enhanced-Trend-Multi-Signal-Dynamic-Trading-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open