
La estrategia de cruce de promedio móvil dinámico (Dynamic Moving Average Crossover Combo Strategy) es una estrategia de composición de operaciones que integra varios indicadores técnicos y detección de fases de mercado. Calcula dinámicamente la volatilidad del mercado, juzga la volatilidad del mercado en función de la distancia y la volatilidad de los precios con respecto a las medias móviles a largo plazo en las tres fases del mercado: oscilación, tendencia y ordenamiento.
El indicador ATR calcula la volatilidad intradiaria del mercado en los últimos 14 días. Luego se filtra la volatilidad promedio con una media móvil simple de 100 días.
Calcula la distancia entre el precio y la media móvil simple de 200 días. Si la distancia es más de 1,5 veces la volatilidad promedio y la dirección es clara, se considera una situación de tendencia. Si la volatilidad actual es más de 1,5 veces la volatilidad promedio, se considera una situación de choque.
El EMA rápido tiene un ciclo de 10 días y el SMA lento tiene un ciclo de 30 días. Cuando el EMA rápido atraviesa el SMA lento, genera una señal de compra.
Calcula el MACD de los parámetros 12, 26 y 9. La señal de compra se genera cuando la columna MACD se vuelve positiva.
Calcula el canal de diferencia estándar de 20 días. Si el ancho del canal es menor que su propia SMA de 20 días, se juzga como período de ordenamiento.
Periodo de oscilación: la línea cruza lentamente o la columna MACD se corrige, y el precio de cierre está dentro de las Bandas de Bollinger.
La fase de tendencia: el cruce rápido y lento de líneas o el cambio de la columna MACD en la entrada regular hace más.
El precio de venta es más alto que el precio de venta de la banda baja.
Si se cumplen las siguientes condiciones, se inicia una posición cerrada: el MACD tiene dos líneas K consecutivas negativas, y el precio de cierre ha bajado dos días consecutivos.
El StockRSI también está en la zona de sobrecompra.
En la temporada de clasificación, los jugadores se presentan cuando el precio está por debajo de la banda superior.
Se trata de una estrategia de negociación inteligente, combinada con el juicio de las circunstancias del mercado, que tiene las siguientes ventajas:
Las operaciones se sistematizan y reducen las intervenciones subjetivas.
La combinación de los parámetros de la estrategia de ajuste al entorno del mercado es más adaptable.
La combinación de múltiples indicadores aumenta la certeza de la señal.
Las Bandas de Bollinger se detienen automáticamente para reducir el riesgo.
En la actualidad, la mayoría de los países de la Unión Europea tienen un sistema de filtración de señales falsas.
El objetivo es que los usuarios de la plataforma de criptomonedas de la plataforma de criptomonedas de la plataforma de criptomonedas de la plataforma de criptomonedas de la plataforma de criptomonedas.
Los principales riesgos son:
La configuración incorrecta de los parámetros puede causar que la estrategia falle. Se recomienda optimizar la combinación de parámetros.
Se recomienda actualizar la lógica de la estrategia a tiempo.
Se recomienda optar por un corredor de bajo costo.
La combinación de varios indicadores aumenta la complejidad de la estrategia. Se recomienda elegir un indicador central.
Se puede seguir optimizando desde las siguientes dimensiones:
Optimizar los criterios de evaluación del entorno de mercado y mejorar la precisión.
Se añade un módulo de aprendizaje automático para la adaptación de parámetros.
En combinación con el procesamiento de textos, se puede evaluar el riesgo de eventos importantes.
El análisis de mercados múltiples para encontrar la mejor combinación de parámetros
La estrategia de trailing stop para aumentar la velocidad de las paradas.
La estrategia de combinación cruzada de promedios móviles es una estrategia de comercio inteligente de múltiples indicadores. Es capaz de combinar parámetros de ajuste al entorno del mercado para lograr una negociación sistematizada de acuerdo con las condiciones. Tiene una mayor adaptabilidad y determinación.
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)
// Volatility
volatility = ta.atr(14)
avg_volatility_sma = ta.sma(volatility, 100)
avg_volatility = na(avg_volatility_sma) ? 0 : avg_volatility_sma
// Market Phase detection
long_term_ma = ta.sma(close, 200)
distance_from_long_term_ma = close - long_term_ma
var bool isTrending = math.abs(distance_from_long_term_ma) > 1.5 * avg_volatility and not na(distance_from_long_term_ma)
var bool isVolatile = volatility > 1.5 * avg_volatility
// EMA/MA Crossover
fast_length = 10
slow_length = 30
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)
// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal or (macdHistogram > 0)
// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
isConsolidating = (upper - lower) < ta.sma(upper - lower, 20)
// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 75
oversold = 25
var float potential_SL = na
var float potential_TP = na
var bool buy_condition = na
var bool sell_condition = na
// Buy and Sell Control Variables
var bool hasBought = false
var bool hasSold = true
// Previous values tracking
prev_macdHistogram = macdHistogram[1]
prev_close = close[1]
// Modify sell_condition with the new criteria
if isVolatile
buy_condition := not hasBought and crossover_signal or macd_signal and (close > lower) and (close < upper)
sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
potential_SL := close - 0.5 * volatility
potential_TP := close + volatility
if isTrending
buy_condition := not hasBought and crossover_signal or macd_signal
sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
potential_SL := close - volatility
potential_TP := close + 2 * volatility
if isConsolidating
buy_condition := not hasBought and crossover_signal and (close > lower)
sell_condition := hasBought and (close < upper) and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
potential_SL := close - 0.5 * volatility
potential_TP := close + volatility
// Update the hasBought and hasSold flags
if buy_condition
hasBought := true
hasSold := false
if sell_condition
hasBought := false
hasSold := true
// Strategy Entry and Exit
if buy_condition
strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
strategy.exit("SELL_TS", from_entry="BUY", trail_price=close, trail_offset=close * 0.05)
if sell_condition
strategy.close("BUY")
// Visualization
plotshape(series=buy_condition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)
plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)
bgcolor(isVolatile ? color.new(color.purple, 90) : isTrending ? color.new(color.blue, 90) : isConsolidating ? color.new(color.orange, 90) : na)