0bps

Strategy vault / Trend following

Multi Indicator Crossover Dynamic Strategy System A Quantitative Trading Model Based on EMA RVI and Trading Signals

This strategy is a quantitative trading system based on multiple technical indicators, combining Exponential Moving Averages (EMA), Relative Volatility Index (RVI), and custom trading signals for decision-making. The…

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

IMG

Overview

This strategy is a quantitative trading system based on multiple technical indicators, combining Exponential Moving Averages (EMA), Relative Volatility Index (RVI), and custom trading signals for decision-making. The system employs dynamic stop-loss and take-profit targets using the ATR indicator for risk management, creating a comprehensive trading strategy framework.

Strategy Principles

The strategy relies on three core components for trading decisions:

  1. Dual EMA System: Uses 20-period and 200-period EMAs to determine market trends through crossovers
  2. RVI Indicator: Confirms market volatility direction and provides additional trading confirmation
  3. Custom Signals: Integrates external trading signals for tertiary confirmation The system enters long positions when:
  • EMA20 crosses above EMA200
  • RVI is positive
  • Receives a buy signal Short conditions are reversed. Additionally, the system uses ATR-based dynamic stop-loss and take-profit targets for risk management.

Strategy Advantages

  1. Multiple Confirmation Mechanism: Reduces false signals through multiple independent indicator analysis
  2. Dynamic Risk Management: ATR-based stop-loss adapts to market volatility
  3. Flexible Capital Management: Uses cash-based position sizing
  4. Visual Support: Complete graphical interface for analysis and optimization
  5. Modular Design: Independent components for easy maintenance and optimization

Strategy Risks

  1. EMA Lag: EMAs are inherently lagging indicators, potentially causing delayed entries
  2. Signal Dependency: Over-reliance on multiple signals may cause missed opportunities
  3. Market Adaptability: May generate frequent false signals in ranging markets
  4. Parameter Sensitivity: Multiple indicator parameters require precise tuning Recommend backtesting across different market conditions and considering market environment filters.

Optimization Directions

  1. Market Environment Recognition: Add market state detection module for parameter adjustment
  2. Dynamic Parameter Adjustment: Automatically adjust EMA and RVI periods based on volatility
  3. Signal Weighting System: Implement dynamic weights for different indicators
  4. Stop-Loss Optimization: Consider adding trailing stops for better profit protection
  5. Position Management: Implement more sophisticated position management strategies

Summary

The strategy builds a relatively complete trading system through the comprehensive use of multiple technical indicators and risk management tools. While there are some inherent limitations, the system shows promise for improved performance through the suggested optimizations. The key is continuous monitoring and adjustment in live trading to ensure strategy stability across different market conditions.

Source Pine Script

/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Gold Bot with Viamanchu, EMA20/200, and RVI - 3min", overlay=true)

// Parámetros de las EMAs
ema20 = ta.ema(close, 20)
ema200 = ta.ema(close, 200)

// Relative Volatility Index (RVI)
rvi_length = input(14, title="RVI Length")
rvi = ta.rma(close - close[1], rvi_length) / ta.rma(math.abs(close - close[1]), rvi_length)

// Simulación de Viamanchu (aleatoria para demo, se debe reemplazar por señal de Viamanchu real)
var int seed = time
simulated_vi_manchu_signal = math.random() > 0.5 ? 1 : -1  // 1 para compra, -1 para venta (puedes sustituir por la lógica de Viamanchu)

// Gestión de riesgos: Stop Loss y Take Profit usando ATR
atr_length = input(14, title="ATR Length")
atr = ta.atr(atr_length)
atr_multiplier = input.float(1.5, title="ATR Multiplier for Stop Loss/Take Profit")
stop_loss_level = strategy.position_avg_price - (atr * atr_multiplier)
take_profit_level = strategy.position_avg_price + (atr * atr_multiplier)

// Condiciones de entrada
longCondition = ta.crossover(ema20, ema200) and rvi > 0 and simulated_vi_manchu_signal == 1
shortCondition = ta.crossunder(ema20, ema200) and rvi < 0 and simulated_vi_manchu_signal == -1

// Ejecutar compra (long)
if (longCondition)
    strategy.entry("Compra", strategy.long, stop=stop_loss_level, limit=take_profit_level)

// Ejecutar venta (short)
if (shortCondition)
    strategy.entry("Venta", strategy.short, stop=stop_loss_level, limit=take_profit_level)

// Visualización de las condiciones de entrada en el gráfico
plotshape(series=longCondition, title="Compra señal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Venta señal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Visualización de las EMAs en el gráfico
plot(ema20, color=color.blue, title="EMA 20")
plot(ema200, color=color.red, title="EMA 200")

// Visualización del RVI en el gráfico
plot(rvi, color=color.green, title="RVI")
hline(0, "Nivel 0", color=color.gray)

Published by ChaoZhang on the FMZ strategy square · last modified 2024-11-12. 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/Multi-Indicator-Crossover-Dynamic-Strategy-System-A-Quantitative-Trading-Model-Based-on-EMA-RVI-and-Trading-Signals.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