Flawless Victory DCA Momentum and Volatility Strategy

Author: ChaoZhang, Date: 2024-03-22 10:54:40


Strategy Overview

The Flawless Victory DCA Momentum and Volatility Strategy is a quantitative trading strategy that combines the momentum indicator RSI and the volatility indicator Bollinger Bands, along with DCA (Dollar Cost Averaging). The strategy aims to capture market momentum and volatility while managing risk through stop loss and take profit levels.

Strategy Principles

The strategy utilizes two technical indicators: RSI and Bollinger Bands. RSI is a momentum oscillator used to measure the speed and change of price movements, with a length of 14 used in the strategy. Bollinger Bands is a volatility indicator consisting of a simple moving average (SMA) and two standard deviation curves.

The main logic of the strategy is as follows:

  1. When the price is below the lower Bollinger Band and RSI is above the oversold threshold (42), a buy signal is triggered.
  2. If DCA is enabled and the time condition is met (every specified number of hours), a long position is entered based on the buy condition.
  3. When the price is above the upper Bollinger Band and RSI is above the overbought threshold (70), a sell signal is triggered.
  4. Once the sell condition is met, the strategy exits the long position and sets stop loss and take profit levels.

Overall, the strategy combines technical indicators such as RSI and Bollinger Bands with conditional logic for entry, exit, and potential dollar cost averaging. The goal is to capitalize on market momentum and volatility while managing risk through stop loss and take profit levels.

Strategy Advantages

  1. Combination of Momentum and Volatility: The strategy takes into account both market momentum (through RSI) and volatility (through Bollinger Bands), providing a more comprehensive view of market conditions.
  2. Dollar Cost Averaging: The strategy offers the option of DCA, allowing for gradual position building during price declines, reducing the average holding cost.
  3. Risk Management: The strategy sets explicit stop loss and take profit levels, helping to control potential losses and lock in realized profits.
  4. Flexible Parameter Settings: The strategy provides several adjustable input parameters, such as stop loss percentage, take profit percentage, DCA interval, etc., allowing for customization based on different market conditions and risk preferences.

Risk Analysis

  1. Parameter Sensitivity: The strategy’s performance may be sensitive to input parameters (such as RSI thresholds, Bollinger Bands multiplier, etc.), and inappropriate parameter settings may lead to suboptimal performance.
  2. Changing Market Conditions: The strategy relies on specific technical indicators and may not adapt well to certain market conditions (such as ranging markets or trend reversals).
  3. Overtrading: If the DCA interval is set too short, it may result in excessively frequent trading, increasing transaction costs and affecting strategy returns.
  4. Stop Loss and Take Profit Placement: The placement of stop loss and take profit levels can impact the overall performance of the strategy. Setting them too tight may lead to premature stops, while setting them too loose may result in potential profit erosion.

Optimization Directions

  1. Parameter Optimization: Perform optimization and sensitivity analysis on the strategy’s key parameters (such as RSI thresholds, Bollinger Bands multiplier, DCA interval, etc.) to find the optimal parameter combination.
  2. Inclusion of Additional Indicators: Consider incorporating other technical indicators (such as MACD, ATR, etc.) to enhance signal reliability and robustness.
  3. Dynamic Stop Loss and Take Profit: Adjust stop loss and take profit levels dynamically based on market conditions, such as using trailing stops to protect profits.
  4. Market Environment Filtering: Apply filters to the strategy based on market environments (such as trending, ranging, etc.) to adapt to different market states.
  5. Money Management Optimization: Optimize the strategy’s money management rules, such as determining position sizing based on risk-adjusted returns.


The Flawless Victory DCA Momentum and Volatility Strategy is a quantitative trading strategy that combines the momentum indicator RSI, the volatility indicator Bollinger Bands, and DCA. The main advantages of the strategy lie in its consideration of both market momentum and volatility, the option of DCA, and explicit risk management measures (stop loss and take profit). However, the strategy also has some potential risks, such as sensitivity to parameter settings and adaptability to changing market conditions. Future optimization directions can include parameter optimization, inclusion of additional indicators, dynamic stop loss and take profit, market environment filtering, and money management optimization. Overall, the Flawless Victory DCA Momentum and Volatility Strategy provides a momentum and volatility-based approach to quantitative trading, but it requires appropriate adjustments and optimizations based on specific market conditions and risk preferences when applied in practice.

start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

//FOR BUY STRATGY : @Suameer
//Create by zipix

strategy(overlay=true, shorttitle=" DCA Strategy", default_qty_type = strategy.percent_of_equity, initial_capital = 100000, default_qty_value = 100, pyramiding = 0, title="Flawless Victory DCA Strategy", currency = 'USD')

////////// ** Inputs ** //////////

// Stoploss and Profits Inputs
stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100
takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100
stoploss_level = strategy.position_avg_price * (1 - stoploss_input)
takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input)

// DCA Settings
dca_enabled = input(false, title="Enable DCA")
dca_interval = input(1, title="DCA Interval (hours)", type=input.integer)

////////// ** Indicators ** //////////

// RSI
len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

// Bollinger Bands
length = 20
mult = 1.0
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev

////////// ** Triggers and Guards ** //////////

// Strategy Parameters
RSILowerLevel = 42
RSIUpperLevel = 70
BBBuyTrigger = src < lower
BBSellTrigger = src > upper
rsiBuyGuard = rsi > RSILowerLevel
rsiSellGuard = rsi > RSIUpperLevel

//////////** Strategy Signals ** //////////

// Entry Condition
buy_condition = BBBuyTrigger and rsiBuyGuard

// DCA Logic
if dca_enabled and (hour % dca_interval == 0)
    strategy.entry("DCA Long", strategy.long, when = buy_condition, alert_message = "DCA - Buy Signal!")
    strategy.entry("Long", strategy.long, when = buy_condition, alert_message = "Buy Signal!")

// Exit Condition
sell_condition = BBSellTrigger and rsiSellGuard
strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level, when = sell_condition, alert_message = "Sell Signal!")