Estrategia de adición de posiciones dinámicas


Fecha de creación: 2023-12-22 14:36:30 Última modificación: 2023-12-22 14:36:30
Copiar: 0 Número de Visitas: 565
1
Seguir
1623
Seguidores

Estrategia de adición de posiciones dinámicas

Descripción general

La estrategia de alza dinámica alcanza el objetivo de la compensación de pérdidas al bajar el precio promedio de costos al alzarse en el momento de la pérdida. Cuando el precio desencadena las condiciones de alza, la estrategia aumenta el alza en una cantidad y intervalo consecutivos, al mismo tiempo que establece el número máximo de alzas, para evitar el riesgo de alza ilimitada.

Principio de estrategia

La lógica central de esta estrategia es la siguiente:

  1. Comprar una posición: si la posición es 0, abrir una posición al precio especificado.

  2. Condiciones de alza: se activa la alza si el número de alzas actuales es menor que el número máximo de alzas y el precio es inferior a una caída predeterminada en el precio de la posición anterior.

  3. Método de acumulación: el número de acumulaciones aumenta por un factor de reducción del número anterior, y el intervalo de acumulación disminuye por un factor de reducción del intervalo anterior.

  4. Condición de parada: Si se activa un margen de ganancias predeterminado en el precio promedio de la posición, se detiene toda la posición.

De esta manera, cuando el mercado es desfavorable, la estrategia puede reducir el costo de la posición al aumentar la posición y obtener ganancias adicionales al tiempo que se corrige el stop loss. Cuando el mercado se vuelve hacia arriba, se activan las condiciones de parada y todas las posiciones se cierran con ganancias.

Análisis de las ventajas

La mayor ventaja de esta estrategia es que, a través de la acumulación de reservas, se logra una reducción del precio medio de los costos y se obtienen mayores ganancias a condición de tolerar ciertas pérdidas, lo que es especialmente evidente en el mercado alcista. En concreto, las principales ventajas son las siguientes:

  1. Se puede reducir considerablemente los costos de mantenimiento de la posición y aumentar la capacidad de detener los pérdidas. Cuando se produce una corrección en el precio, la estrategia aumenta la posición, lo que diluye el aluminio de aluminio único que se compró anteriormente a un precio más alto, lo que reduce el costo total.

  2. Aumentar el margen de ganancias. Después de reducir los costos, el margen de ganancias se ampliará siempre que los precios se recuperen, lo que deja espacio para la ganancia.

  3. Flexible configuración de la lógica de la hipoteca, se puede personalizar. La política permite configurar parámetros como la amplitud de la hipoteca, la cantidad y el intervalo, que el usuario puede ajustar según sus propias preferencias.

  4. El riesgo es controlado, se establece un límite máximo de alza de posición. El límite máximo de alza de posición permite que la estrategia no se alce indefinidamente y se puede controlar el riesgo.

Análisis de riesgos

A pesar de que esta estrategia permite obtener mayores ganancias mediante la subida de posiciones, también hay ciertos riesgos que deben tenerse en cuenta:

  1. Riesgo de pérdidas. La estrategia se ha aplicado con la premisa de asumir ciertas pérdidas. Si la situación continúa siendo negativa, las pérdidas pueden aumentar.

  2. Riesgo de desplome. En situaciones extremas, los precios pueden desplomarse más allá de la capacidad de soporte de la estrategia. Esto requiere la configuración razonable de los parámetros de alza de riesgo y los puntos de parada.

  3. El repunte no es oportuno. El repunte del precio no necesariamente desencadena el estancamiento, y el no poder detener el estancamiento a tiempo es un tablero corto de la estrategia.

  4. Los parámetros de ajuste de riesgo. El ajuste incorrecto de los parámetros, como el coeficiente de alza, el parámetro de frenado de la alza, puede causar el fracaso de la estrategia.

Estos riesgos pueden mitigarse de la siguiente manera:

  1. Reducir adecuadamente la acumulación de reservas y controlar las pérdidas individuales.

  2. La reducción del intervalo entre las adquisiciones y la reducción rápida de los costos.

  3. Establezca un punto de parada razonable. Si el punto de parada se establece demasiado ancho, la pérdida puede ampliarse.

Dirección de optimización

Teniendo en cuenta la naturaleza de la estrategia de obtener mayores ganancias mediante el aumento de riesgo, su orientación de optimización se centra principalmente en controlar mejor los riesgos y obtener ganancias. En concreto, hay varias orientaciones de optimización principales:

  1. Mejorar los algoritmos de la lógica de la subida de posiciones para que sean más inteligentes y se ajusten a la situación. Se puede considerar la subida de posiciones en función de indicadores como la volatilidad y el alza de los precios.

  2. Optimización del modo de frenado, para lograr un frenado más eficiente. Se puede combinar el frenado móvil, el frenado por lotes, etc., para reducir la posibilidad de que el rebote no se detenga.

  3. Introducir algoritmos de aprendizaje automático para optimizar la adaptabilidad de los parámetros. Dejar de ser estáticos los parámetros clave y adaptarlos de forma dinámica a la situación real y a la retroalimentación.

  4. Aumentar el mecanismo de detención de pérdidas y controlar la pérdida máxima. El método de detención de pérdidas puede considerar el detenimiento móvil, el detención de la suspensión, etc., para evitar la expansión de las pérdidas causadas por situaciones extremas.

Resumir

La estrategia de alza dinámica de la posición para lograr la disminución del precio medio de los costos, con el fin de obtener mayores beneficios con el supuesto de un control adecuado del riesgo. Esta estrategia, que se basa en asumir ciertas pérdidas, es especialmente popular entre los inversores con una mayor capacidad de tolerancia a las pérdidas. La dirección de optimización futura se llevará a cabo en torno a una forma más inteligente de alza de la posición, un mecanismo de detención más eficiente, etc.

Código Fuente de la Estrategia
/*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)