
Este artículo presenta un sistema de seguimiento de tendencias que combina el cuadro de Darvas y el promedio móvil de 25 ciclos (MA25). La estrategia identifica los cuadrados que se forman entre los rangos de precios y, combinados con la confirmación de tendencias uniformes, capturan las tendencias fuertes en las rupturas. El diseño del sistema tiene en cuenta la continuidad de la tendencia y los filtros de falsas rupturas, lo que proporciona a los comerciantes un marco completo de entrada y salida del mercado.
La estrategia tiene tres componentes principales:
La estrategia combina la teoría clásica del cuadro de Davos y el seguimiento de tendencias de medias móviles para construir un sistema de negociación sólido. La principal ventaja del sistema reside en la capacidad de capturar de manera efectiva los comportamientos de tendencia, mientras que el control de riesgos a través de múltiples mecanismos de filtración. Aunque existe cierta retraso, la estrategia puede obtener un rendimiento estable en los mercados de tendencia a través de una racional optimización de parámetros y gestión de riesgos.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DARVAS BOX with MA25 Buy Condition", overlay=true, shorttitle="AEG DARVAS")
// Input for box length
boxp = input.int(5, "BOX LENGTH")
// Calculate 25-period moving average
ma25 = ta.sma(close, 25)
// Lowest low and highest high within the box period
LL = ta.lowest(low, boxp)
k1 = ta.highest(high, boxp)
k2 = ta.highest(high, boxp - 1)
k3 = ta.highest(high, boxp - 2)
// New high detection
NH = ta.valuewhen(high > k1[1], high, 0)
// Logic to detect top and bottom of Darvas Box
box1 = k3 < k2
TopBox = ta.valuewhen(ta.barssince(high > k1[1]) == boxp - 2 and box1, NH, 0)
BottomBox = ta.valuewhen(ta.barssince(high > k1[1]) == boxp - 2 and box1, LL, 0)
// Plot the top and bottom Darvas Box lines
plot(TopBox, linewidth=3, color=color.green, title="Top Box")
plot(BottomBox, linewidth=3, color=color.red, title="Bottom Box")
plot(ma25, color=#2195f31e, linewidth=2, title="ma25")
// --- Buy and Sell conditions ---
// Buy when price breaks above the Darvas Box AND MA15
buyCondition = ta.crossover(close, TopBox) and close > ma25
// Sell when price drops below the Darvas Box
sellCondition = ta.crossunder(close, BottomBox)
// --- Buy and Sell Signals ---
// Plot BUY+ and SELL labels
plotshape(series=buyCondition, title="Buy+ Signal", location=location.abovebar, color=#72d174d3, style=shape.labeldown, text="BUY")
plotshape(series=sellCondition, title="Sell Signal", location=location.belowbar, color=color.rgb(234, 62, 62, 28), style=shape.labelup, text="SELL")
// --- Strategy execution ---
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")