3EMA con estrategia de RSI estocástico

El autor:¿ Qué pasa?, Fecha: 2023-11-15 10:47:20
Las etiquetas:

img

Resumen general

Esta es una estrategia de seguimiento de tendencia que combina múltiples indicadores. Utiliza tres EMA con diferentes períodos, el RSI estocástico y el ATR para identificar la dirección de la tendencia y establecer posiciones. Se hace largo cuando la EMA más rápida cruza por encima de la EMA más lenta, con un stop loss establecido en 3 veces el valor ATR reciente y tomar ganancias en 2 veces el ATR reciente.

Principio

La estrategia utiliza tres líneas de EMA - 8-, 14 y 50 periodos EMA, que representan las tendencias de precios en diferentes plazos de tiempo.

El indicador de RSI estocástico incorpora cálculos RSI y estocásticos para identificar condiciones de sobrecompra/sobreventa.

La estrategia utiliza 3 veces ATR como distancia de stop loss y 2 veces ATR como distancia de take profit para bloquear las ganancias y controlar el riesgo.

Ventajas

  • Las EMA filtran el ruido en los datos de precios e identifican la dirección de la tendencia
  • El RSI estocástico identifica las oportunidades de inversión
  • El ATR sigue dinámicamente el stop loss/take profit basado en la volatilidad del mercado

Los riesgos

  • Muchos indicadores pueden generar señales contradictorias
  • Las tasas fijas de stop loss/take profit no pueden adaptarse a las condiciones cambiantes del mercado
  • En el caso de las entidades de crédito, el importe de las pérdidas derivadas de las operaciones de inversión se determinará en función de las condiciones de mercado.

La optimización se puede hacer ajustando los períodos de EMA para optimizar la sensibilidad. Hacer que las proporciones de ATR sean ajustables permite la personalización basada en las condiciones del mercado.

Mejoramiento

  • Ajustar los períodos de EMA para optimizar la sensibilidad
  • Hacer ajustables las relaciones ATR
  • Añadir otros indicadores para evitar señales falsas

Conclusión

La estrategia considera la tendencia, los niveles de sobrecompra / sobreventa y el rango de volatilidad para identificar el momento de entrada. Los EMA y el RSI estocástico combinados identifican efectivamente las tendencias, mientras que el ATR dinámico de stop loss / take profit ayuda a controlar el riesgo. Con el ajuste y optimización de parámetros, la estrategia puede convertirse en un sistema de seguimiento de tendencias confiable. Pero se deben tener cuidado con las señales falsas y las advertencias de stop loss / take profit fijas.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)

Más.