
Esta estrategia combina el doble cruce de oro EMA, el filtro de ruido ATR estandarizado y el indicador de tendencia ADX, con el objetivo de proporcionar una señal de compra más confiable para los comerciantes. La estrategia integra varios indicadores para filtrar señales falsas e identificar oportunidades de negociación más confiables.
La estrategia utiliza EMA de 8 y 20 ciclos para construir un sistema de cruce de doble EMA de oro. Se genera una señal de compra cuando el EMA de ciclo corto atraviesa el EMA de ciclo largo.
Además, la estrategia tiene varios indicadores auxiliares para filtrar:
14 ATR de ciclo, procesado estandarizado para filtrar las fluctuaciones de precios excesivamente pequeñas en el mercado.
14 Período ADX, la intensidad de la tendencia que se utiliza para identificar. Sólo se consideran las señales de negociación en una tendencia fuerte.
14 ciclos de transacción SMA, filtrando las fechas de menor transacción.
4⁄14 Indicador de Super Tendencia de ciclo, para determinar la dirección del mercado de la hipoteca.
El cruce de oro de EMA finalmente desencadena una señal de compra después de satisfacer la dirección de la tendencia, los valores estandarizados de ATR, los valores de ADX y las condiciones de volumen de transacción.
La estrategia integra varios indicadores, como EMA, ATR, ADX y Super Trend, que se complementan para formar un sistema de filtración de señales más fuerte y con mayor fiabilidad.
Los parámetros ATR, ADX y el período de tenencia se pueden ajustar de manera óptima en función de las circunstancias reales, y la estrategia es más flexible.
Utiliza diferentes parámetros para evaluar el mercado abierto a través del indicador Super Trend y evita perder oportunidades.
La combinación de los parámetros de la estrategia es compleja, la optimización es más difícil y requiere una gran cantidad de retroalimentación para encontrar los parámetros óptimos.
A pesar de la filtración múltiple, existe un riesgo de error de disparo debido a la naturaleza del retraso de los indicadores. Se debe considerar la teoría de los estancamientos.
La frecuencia de operaciones estratégicas es baja, y es posible que no se realicen operaciones durante un período prolongado, debido a la influencia de múltiples indicadores y las fluctuaciones.
Encontrar la combinación óptima de los parámetros indicadores a través de una gran cantidad de datos de retroalimentación.
Basado en una gran cantidad de datos históricos, la aplicación de algoritmos de aprendizaje automático para optimizar los parámetros de la estrategia, para lograr la adaptabilidad de la estrategia.
La combinación de más indicadores para determinar la estructura del mercado y factores como el estado de ánimo enriquece la diversidad de estrategias.
La estrategia tiene en cuenta la tendencia, la volatilidad y los factores de precio, y forma un sistema de negociación mediante filtros de varios indicadores y ajustes de parámetros. En términos generales, la estrategia tiene una alta fiabilidad, que puede mejorar la eficiencia de la estrategia de negociación mediante la optimización adicional de su combinación de parámetros y la modelación.
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Description:
//This strategy is a refactored version of an EMA cross strategy with a normalized ATR filter and ADX control.
//It aims to provide traders with signals for long positions based on market conditions defined by various indicators.
//How it Works:
//1. EMA: Uses short (8 periods) and long (20 periods) EMAs to identify crossovers.
//2. ATR: Uses a 14-period ATR, normalized to its 20-period historical range, to filter out noise.
//3. ADX: Uses a 14-period RMA to identify strong trends.
//4. Volume: Filters trades based on a 14-period SMA of volume.
//5. Super Trend: Uses a Super Trend indicator to identify the market direction.
//How to Use:
//- Buy Signal: Generated when EMA short crosses above EMA long, and other conditions like ATR and market direction are met.
//- Sell Signal: Generated based on EMA crossunder and high ADX value.
//Originality and Usefulness:
//This script combines EMA, ATR, ADX, and Super Trend indicators to filter out false signals and identify more reliable trading opportunities.
//USD Strength is not working, just simulated it as PSEUDO CODE: [close>EMA(50)]
//Strategy Results:
//- Account Size: $1000
//- Commission: Not considered
//- Slippage: Not considered
//- Risk: Less than 5% per trade
//- Dataset: Aim for more than 100 trades for sufficient sample size
//Note: This script should be used for educational purposes and should not be considered as financial advice.
//Chart:
//- The script's output is plotted as Buy and Sell signals on the chart.
//- No other scripts are included for clarity.
//- Have tested with 30mins period
//- You are encouraged to play with parameters, let me know if you
//@version=5
strategy("Advanced EMA Cross with Normalized ATR Filter, Controlling ADX", shorttitle="ALP V5", overlay=true )
// Initialize variables
var bool hasBought = false
var int barCountSinceBuy = 0
// Define EMA periods
emaShort = ta.ema(close, 8)
emaLong = ta.ema(close, 20)
// Define ATR parameters
atrLength = 14
atrValue = ta.atr(atrLength)
maxHistoricalATR = ta.highest(atrValue, 20)
minHistoricalATR = ta.lowest(atrValue, 20)
normalizedATR = (atrValue - minHistoricalATR) / (maxHistoricalATR - minHistoricalATR)
// Define ADX parameters
adxValue = ta.rma(close, 14)
adxHighLevel = 30
isADXHigh = adxValue > adxHighLevel
// Initialize risk management variables
var float stopLossPercent = na
var float takeProfitPercent = na
// Calculate USD strength
// That's not working as usd strenght, since I couldn't manage to get usd strength
//I've just simulated it as if the current close price is above 50 days average (it's likely a bullish trend), usd is strong (usd_strenth variable is positive)
usd_strength = close / ta.ema(close, 50) - 1
// Adjust risk parameters based on USD strength
if (usd_strength > 0)
stopLossPercent := 3
takeProfitPercent := 6
else
stopLossPercent := 4
takeProfitPercent := 8
// Initialize position variable
var float positionPrice = na
// Volume filter
minVolume = ta.sma(volume, 14) * 1.5
isVolumeHigh = volume > minVolume
// Market direction using Super Trend indicator
[supertrendValue, supertrendDirection] = ta.supertrend(4, 14)
bool isBullMarket = supertrendDirection < 0
bool isBearMarket = supertrendDirection > 0
// Buy conditions for Bull and Bear markets
buyConditionBull = isBullMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.2
buyConditionBear = isBearMarket and ta.crossover(emaShort, emaLong) and normalizedATR > 0.5
buyCondition = buyConditionBull or buyConditionBear
// Sell conditions for Bull and Bear markets
sellConditionBull = isBullMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellConditionBear = isBearMarket and (ta.crossunder(emaShort, emaLong) or isADXHigh)
sellCondition = sellConditionBull or sellConditionBear
// Final Buy and Sell conditions
if (buyCondition)
strategy.entry("Buy", strategy.long)
positionPrice := close
hasBought := true
barCountSinceBuy := 0
if (hasBought)
barCountSinceBuy := barCountSinceBuy + 1
// Stop-loss and take-profit levels
longStopLoss = positionPrice * (1 - stopLossPercent / 100)
longTakeProfit = positionPrice * (1 + takeProfitPercent / 100)
// Final Sell condition
finalSellCondition = sellCondition and hasBought and barCountSinceBuy >= 3 and isVolumeHigh
if (finalSellCondition)
strategy.close("Buy")
positionPrice := na
hasBought := false
barCountSinceBuy := 0
// Implement stop-loss and take-profit
strategy.exit("Stop Loss", "Buy", stop=longStopLoss)
strategy.exit("Take Profit", "Buy", limit=longTakeProfit)
// Plot signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=finalSellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")