Estrategia dinámica de pirámide

El autor:¿ Qué pasa?, Fecha: 2023-12-22 14:36:30
Las etiquetas:

img

Resumen general

La estrategia de pirámide dinámica tiene como objetivo reducir el costo promedio de tenencia mediante la pirámide de posiciones adicionales cuando el precio cae. Puede ayudar a mitigar las pérdidas y obtener ganancias adicionales cuando el precio rebota. La estrategia abrirá posiciones adicionales con cierta cantidad e intervalo cuando se activen las condiciones de pirámide. Mientras tanto, el número máximo de pirámides se establece para limitar el riesgo.

Estrategia lógica

La lógica central de esta estrategia incluye:

  1. Posición abierta: Posición larga abierta con precio especificado si la posición actual es 0.

  2. Condición de pirámide: Pirámide de activación si los tiempos de pirámide actuales son inferiores al valor máximo y el precio cae por debajo del último precio de entrada a un porcentaje preestablecido.

  3. Modo piramidal: Aumentar la cantidad piramidal en un factor de escala del anterior y reducir el intervalo en un factor de escala.

  4. Condición de obtención de ganancias: cierre de todas las posiciones si se activa el objetivo de ganancia basado en el precio medio de tenencia.

Cuando se activa la condición de tomar ganancias, todas las posiciones salen con ganancias.

Análisis de ventajas

La mayor ventaja de esta estrategia es obtener un mayor potencial de ganancias con pérdidas aceptables al reducir el costo promedio de mantenimiento mediante la pirámide.

  1. Reducir significativamente el costo de tenencia, lo que mejora la capacidad de detener la pérdida.

  2. Si el precio se recupera, el potencial de ganancia se expande y allana el camino para obtener ganancias.

  3. Personalización flexible para la lógica piramidal mediante el establecimiento de parámetros relacionados con el incremento, la cantidad y el intervalo, etc.

  4. El riesgo controlado limitando el tiempo máximo de pirámide, impide la pirámide ilimitada.

Análisis de riesgos

Si bien la estrategia permite un mayor potencial de ganancia con la pirámide, algunos riesgos necesitan atención:

  1. El riesgo de pérdida - La premisa es la de asumir ciertas pérdidas por piramidalización.

  2. Riesgo de inmersión en acantilados - En casos extremos como la inmersión en acantilados, las pérdidas pueden exceder el rango aceptable.

  3. Retraso o falta de beneficios - El repunte del precio no siempre puede desencadenar la condición de obtener beneficios, que es el defecto de la estrategia.

  4. Riesgo de ajuste de parámetros: la configuración inadecuada de parámetros como el coeficiente de pirámide y el porcentaje de ganancias puede conducir al fracaso.

Las siguientes medidas pueden ayudar a mitigar los riesgos:

  1. Escala de incremento más baja para controlar la cantidad de pérdida de entrada única.

  2. Reducir el intervalo de pirámide para lograr una reducción de costes más rápida.

  3. Establezca el punto de pérdida de parada apropiadamente en lugar de demasiado suelto.

Direcciones de optimización

Teniendo en cuenta la naturaleza de obtener un mayor potencial de ganancia con la pirámide, las direcciones de optimización se centran principalmente en un mejor control del riesgo y la mejora de la rentabilidad:

  1. Mejorar la lógica piramidal para hacer que las entradas sean más inteligentes y adaptables a las condiciones del mercado.

  2. Optimizar los mecanismos de toma de ganancias para una mayor eficiencia, como la toma de ganancias tardía, el cierre parcial, etc., para reducir la posibilidad de que el precio se recupere.

  3. Introducir algoritmos de aprendizaje automático para permitir el ajuste automático de parámetros.

  4. Agregar un mecanismo de stop loss para limitar las pérdidas máximas, como las órdenes de stop loss y take profit stop.

Conclusión

La estrategia de pirámide dinámica reduce el costo promedio de tenencia por entradas adicionales, lo que permite un mayor potencial de ganancia dada una tolerancia a pérdidas aceptable.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("DCA Bot Emulator", overlay=true, pyramiding=99, default_qty_type=strategy.cash, commission_value = 0.02)

// 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 = 2021, 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 = time >= start and time <= finish ? true : false // create function "within window of time"

// Strategy Inputs
price_deviation = input(2, title='Price deviation to open safety orders', maxval=0)/100
take_profit = input(1.5, title='Target Take Profit', minval=0)/100

// base order
base_order  = input(100000, title='base order') 
safe_order  = input(200, title='safe order') 
safe_order_volume_scale  = input(2, title='Safety order volume scale') 
safe_order_step_scale  = input(1, title='Safety order step scale') 

max_safe_order = input(10, title='max safe order') 
var current_so = 1
var initial_order = 0.0

// 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
if(strategy.position_size == 0 and window)
    strategy.entry("Long", strategy.long, qty = base_order/close)
    initial_order := close
    current_so := 1

// Average Down!
if current_so > 0 and close  < initial_order * (1 - price_deviation * current_so * safe_order_step_scale) and current_so <= max_safe_order
    so_name = "SO " + tostring(current_so) 
    strategy.entry(so_name, long=strategy.long , qty = safe_order * safe_order_volume_scale /close)
    current_so := current_so + 1
    
// Take Profit!
strategy.close_all(when=take_profit_level <= close  and strategy.position_size > 0)


Más.