La idea principal de esta estrategia es que cuando el precio de las acciones cae a un cierto porcentaje, las posiciones se pueden aumentar gradualmente para reducir el costo promedio de la posición de tenencia.
Cuando el precio de la acción cruza por primera vez por encima del promedio móvil simple de 20 días, vaya largo para abrir una posición. Si la acción luego cae por el porcentaje de pérdida objetivo establecido, como el 10%, agregue a la posición a un porcentaje especificado, como el 50% de la posición actual. Esto reduce el costo promedio de la posición de tenencia. Cuando el precio de la acción alcanza el punto de toma de ganancias establecido, como el 10% por encima del costo promedio de tenencia, cierre todas las posiciones para obtener ganancias.
Específicamente, la función de estrategia establece parámetros como permitir hasta 4 compras adicionales, con el tamaño de la posición establecido como un porcentaje del capital, y el tamaño de la posición inicial en el 10% del capital. Obtiene la línea de promedio móvil simple de 20 días. Cuando el precio de cierre cruza por encima de ese promedio y no hay una posición actual, abre una posición larga. Luego calcula el porcentaje de ganancia / pérdida flotante de la posición. Si alcanza el porcentaje de pérdida objetivo, continúa piramidando en el porcentaje de compra adicional objetivo hasta que la acción rebote para alcanzar el objetivo de ganancia.
La mayor ventaja de este tipo de estrategia es que cuando las condiciones del mercado son desfavorables, el costo promedio de la posición de tenencia puede reducirse mediante compras adicionales piramidal. Esto permite obtener mayores ganancias cuando las condiciones del mercado mejoran, logrando el efecto "perder menos, ganar más".
Al mismo tiempo, la estrategia permite múltiples compras adicionales, aprovechando al máximo las diferencias de tiempo en las reversiones del mercado para ajustar gradualmente las posiciones.
Por supuesto, si los precios continúan bajando, esta estrategia también se enfrenta al riesgo de grandes pérdidas. Especialmente en los mercados bajistas, el alcance de las caídas de precios puede superar con creces nuestra imaginación. Por lo tanto, la proporción y el número de compras adicionales deben establecerse razonablemente para controlar el riesgo dentro de un rango aceptable.
Al mismo tiempo, debemos darnos cuenta de que si todos los inversionistas adoptan tal estrategia, cuando muchos inversionistas alcancen su objetivo de porcentaje de pérdida, podría haber un escenario colectivo de adición a las posiciones. Esto impulsaría los precios y formaría un repunte irracional a corto plazo. Si no evaluamos la situación correctamente, podríamos juzgar erróneamente la tendencia del mercado y continuar aumentando nuestra posición. El resultado sería aún mayores pérdidas cuando los precios vuelvan a caer.
Hay varias maneras de optimizar esta estrategia:
Ajuste dinámico del porcentaje de compra adicional, que podría ajustarse en tiempo real en función de las condiciones del mercado.
Incorpore indicadores cuantitativos, por ejemplo, vigile los aumentos de volumen para confirmar las señales de reversión y evitar las falsas señales.
Después de compras adicionales, utilice un sistema de stop loss progresivo para garantizar que las pérdidas se mantengan dentro de un cierto rango.
La estrategia de seguimiento de precios promedio dinámico hace uso del efecto de precios promedio ajustando posiciones a través de compras adicionales. Dentro de la premisa de tener un apoyo de capital suficiente, puede capturar efectivamente rendimientos por encima del promedio cuando los precios se invierten. La clave es juzgar correctamente el momento y las proporciones para mantener los riesgos dentro de rangos aceptables. Si se aplica adecuadamente, este puede ser un método muy efectivo en el comercio cuantitativo.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // ########################################################################## // // // This scipt is intended to demonstrate how pyramiding can be used to average // down a position. // // We will buy when a stock closes above its 20 day MA and Average down if // the trade does not go in our favor. We will hold until a profit is made. // (which could mean we hold forever) // // ########################################################################## // strategy("Average Down", overlay=true ) // Date Ranges from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12) from_day = input(defval = 1, title = "From Day", minval = 1, maxval = 31) from_year = input(defval = 2010, title = "From Year") to_month = input(defval = 1, title = "To Month", minval = 1, maxval = 12) to_day = input(defval = 1, title = "To Day", minval = 1, maxval = 31) to_year = input(defval = 9999, title = "To Year") start = timestamp(from_year, from_month, from_day, 00, 00) // backtest start window finish = timestamp(to_year, to_month, to_day, 23, 59) // backtest finish window window = true // Strategy Inputs target_perc = input(-10, title='Target Loss to Average Down (%)', maxval=0)/100 take_profit = input(10, title='Target Take Profit', minval=0)/100 target_qty = input(50, title='% Of Current Holdings to Buy', minval=0)/100 sma_period = input(20, title='SMA Period') // Get our SMA, this will be used for our first entry ma = sma(close,sma_period) // Calculate our key levels pnl = (close - strategy.position_avg_price) / strategy.position_avg_price take_profit_level = strategy.position_avg_price * (1 + take_profit) // First Position first_long = crossover(close, ma) and strategy.position_size == 0 and window if (first_long) strategy.entry("Long", strategy.long) // Average Down! if (pnl <= target_perc) qty = floor(strategy.position_size * target_qty) strategy.entry("Long", strategy.long, qty=qty) // Take Profit! strategy.exit("Take Profit", "Long", limit=take_profit_level) // Plotting plot(ma, color=blue, linewidth=2, title='SMA') plot(strategy.position_avg_price, style=linebr, color=red, title='Average Price')