Estrategia de red DCA de inversión media de doble fondo

El autor:¿ Qué pasa?, Fecha: 2024-02-20 11:09:33
Las etiquetas:

img

Resumen general

La estrategia de red DCA de inversión media de doble fondo aplica principalmente el precio medio de reversión y la estrategia de DCA para implementar la construcción gradual de posiciones. Determina las oportunidades de reversión basadas en el patrón de reversión de doble fondo. Una vez que se activa el patrón de reversión, utiliza múltiples órdenes límite a diferentes precios combinados con DCA para establecer posiciones de red gradual.

Estrategia lógica

La estrategia primero comprueba si hay dos precios de cierre consecutivos iguales al fondo en el gráfico de velas, lo que se llama doble fondo. Si se detecta un doble fondo, considera que puede haber una oportunidad de inversión de precios. En este punto, la estrategia establecerá múltiples órdenes límite alrededor del precio inferior. Los precios de estas órdenes se calcularán en función de ATR y volatilidad, formando una zona de cuadrícula. Esto logra el efecto DCA y permite a los operadores construir posiciones gradualmente a diferentes precios después de la inversión.

Específicamente, el indicador ATR sobre los 14 candeleros recientes se obtiene primero a través de ta.atr. Luego se calcula la volatilidad de precios sobre los 5 candeleros recientes. Son los parámetros principales utilizados para determinar la zona de la red. La red contiene 4 niveles de precios: precio inferior + volatilidad, precio inferior + 0.75 * volatilidad, y así sucesivamente. Una vez que se activa la condición de doble fondo, se colocarán 4 órdenes de límite de igual tamaño de acuerdo con esta fórmula. Las órdenes no cumplidas se cancelarán después de varios candeleros.

Además, la estrategia también establece un precio de stop loss y un precio de take profit. El precio de stop loss se establece en el precio más bajo del doble fondo menos un tamaño de tick, mientras que el precio de take profit se establece en el precio de entrada más 5 veces el ATR. Estos dos precios se actualizarán en tiempo real cuando el tamaño de la posición sea mayor de 0.

Los puntos fuertes

Las principales ventajas de esta estrategia son las siguientes:

  1. El uso de doble fondo para determinar la inversión mejora la precisión y evita las roturas falsas.
  2. La red DCA permite a los operadores construir gradualmente posiciones a diferentes precios, reduciendo la base de costos.
  3. Los parámetros dinámicos de ATR y volatilidad ajustan la red y el rango de beneficios en función de los cambios del mercado.
  4. La pérdida automática de detención controla efectivamente el monto de pérdida por operación.

Análisis de riesgos

Riesgos principales:

  1. El precio puede romper el soporte sin reversión, lo que desencadena el stop loss y las pérdidas.
  2. La configuración incorrecta de la red DCA puede llevar a una baja tasa de llenado.
  3. Considera permitir múltiples ganancias más amplias.

Áreas de mejora

Algunos aspectos que pueden mejorarse:

  1. Agregue el juicio de tendencia, sólo inversiones comerciales a lo largo de la tendencia principal para evitar pérdidas.
  2. Considere un tamaño mayor para la primera entrada y tamaños más pequeños para las entradas de la red para optimizar la eficiencia del uso del capital.
  3. Prueba diferentes combinaciones de parámetros para encontrar parámetros óptimos o diseña lógicas de ajuste dinámico.
  4. Integrar el aprendizaje automático en la plataforma avanzada para lograr la optimización automática de parámetros.

Resumen de las actividades

La estrategia de red DCA de inversión media de doble fondo consolida el patrón de precios, las técnicas de indicadores y la negociación de la red. Tiene un tiempo preciso, una base de costos controlable y una protección contra el descenso. Todavía tiene espacio para la optimización y vale la pena investigar.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cherepanovvsb

//@version=5
strategy("Reversal (only long)", overlay=true, margin_long=1, margin_short=1,initial_capital=1000,commission_type = strategy.commission.percent,commission_value =0.1,currency='USD', process_orders_on_close=true)
plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup")
plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup")

ATRlenght   = input.int(title="ATR length for taking profit", defval=14, group="Strategy Settings")
rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings")
Volatility_length=input.int(title='Volatility length',defval=5,group="Strategy Settings")
Volatility_multiplier=input.float(title='Volatility multiplier',defval=0.5,step=0.1, group="Strategy Settings")
Candles_to_wait=input.int(title='How many candles to wait after placing orders grid?',defval=4,group="Strategy Settings")

// Get ATR
atr1 = ta.atr(ATRlenght)

//Get volatility values (not ATR) 
float result = 0
for i = 0 to Volatility_length
	result+=high[i]-low[i]
volatility=result*Volatility_multiplier/Volatility_length

//Validate entrance points
validlow =  low [2]== low[1] and not na(atr1) 
validlong = validlow and strategy.position_size == 0  and low[1]<low


// Calculate SL/TP
longStopPrice = low[1]-syminfo.mintick
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rewardMultiplier)
strategy.initial_capital = 50000
//Assign all variables
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
var point1=0.0
var point2=0.0
var point3=0.0
var point4=0.0
var contracts = int(strategy.initial_capital/close)/4
if validlong 
    tradeStopPrice := longStopPrice
    tradeTargetPrice := longTargetPrice
    point1:=low[1]+volatility
    point2:=low[1]+volatility*0.75
    point3:=low[1]+volatility*0.5
    point4:=low[1]+volatility*0.25

strategy.entry ("Long1", strategy.long,limit=point1,qty=contracts, when=validlong)
strategy.entry ("Long2", strategy.long,limit=point2,qty=contracts, when=validlong)
strategy.entry ("Long3", strategy.long,limit=point3,qty=contracts, when=validlong)
strategy.entry ("Long4", strategy.long,limit=point4,qty=contracts, when=validlong)

stopcondition = ta.barssince(validlong) == Candles_to_wait

strategy.cancel("Long1",when=stopcondition)
strategy.cancel("Long2",when=stopcondition)
strategy.cancel("Long3",when=stopcondition)
strategy.cancel("Long4",when=stopcondition)
    
strategy.exit(id="Long Exit", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)

plot(strategy.position_size != 0 or validlong ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, linewidth=3)
plot(strategy.position_size != 0 or validlong ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, linewidth=3)

plot(strategy.position_size != 0? point1 : na, title="Long1", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0? point2 : na, title="Long2", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0? point3 : na, title="Long3", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0? point4 : na, title="Long4", color=color.green, style=plot.style_linebr, transp=0)



Más.