Tendencia de la estrategia de red

El autor:¿ Qué pasa?, Fecha: 2023-12-08 12:05:17
Las etiquetas:

img

Resumen general

Esta estrategia es una tendencia siguiendo una estrategia de cuadrícula que solo va larga y no corta, eligiendo períodos de tiempo en los que la tendencia principal es alta. El tamaño de la cuadrícula predeterminado es 1xATR, construyendo 1, 2, 3 niveles de cuadrícula hacia abajo para perseguir órdenes, y la quinta cuadrícula detiene la pérdida. Cuando la posición vacía alcanza la cuadrícula anterior, toda la cuadrícula se mueve hacia arriba para rastrear el precio.

Estrategia lógica

  1. Utilice las líneas de EMA para juzgar la dirección de la tendencia principal, EMA12 mayor que EMA144 significa que la tendencia principal es hacia arriba
  2. Sólo abrir posiciones largas cuando la tendencia principal esté en alza
  3. El tamaño predeterminado de la cuadrícula es 1xATR, el multiplicador se puede ajustar
  4. Construir 1, 2, 3 niveles de cuadrícula hacia abajo para rastrear el precio y abrir posiciones largas por separado
  5. Establezca el punto de stop loss en la 5a cuadrícula
  6. Después de abrir posiciones, establecer puntos de stop loss y tomar puntos de ganancia
  7. Cierre de posiciones cuando el precio rompe el punto de toma de ganancias al alza
  8. Cierre de posiciones cuando el precio alcanza el punto de stop loss en la caída
  9. Después de que todas las posiciones se cierran, si el precio se rompe a través de la última cuadrícula de nuevo, recalcular la ubicación de la cuadrícula y la cantidad para seguir hacia arriba

Esta estrategia combina la EMA para determinar la dirección de la tendencia principal y el comercio de la red para rastrear el precio. Puede obtener mayores rendimientos en una tendencia alcista. La red establece múltiples puntos de precio para abrir posiciones por separado, lo que reduce el riesgo por posición. Los ajustes de stop loss y take profit bloquean las ganancias y también limitan las pérdidas máximas. Después de que todas las posiciones se cierran, la estrategia puede recalcular nuevos niveles altos de redes para abrir posiciones nuevamente, maximizando las ganancias.

Análisis de ventajas

  1. Utilice la EMA para determinar la dirección de la tendencia principal, evite abrir posiciones en contra de la tendencia
  2. La negociación en red puede abrir posiciones por separado para reducir el riesgo de una sola posición
  3. Detener pérdidas y tomar ganancias bloquear en las ganancias, controlar las pérdidas máximas
  4. Después de cerrar todas las posiciones, recalcular las cuadrículas para continuar persiguiendo puede ampliar el espacio de ganancia

La principal ventaja es la combinación de trading de tendencias y trading de cuadrícula, lo que garantiza la corrección de la dirección de la tendencia y también logra la dispersión de riesgos del trading de cuadrícula.

Análisis de riesgos

  1. El juicio de la tendencia principal puede estar equivocado, entrando en la dirección equivocada
  2. Volatilidad lateral significativa que causa grandes pérdidas en las redes
  3. Stop loss activado demasiado rápido, cerrando todas las posiciones
  4. Incapaz de volver a entrar en el punto de entrada óptimo después de la retirada

El riesgo principal es el juicio erróneo de la dirección de la tendencia principal, lo que llevará a la apertura de posiciones en contra de la tendencia y enormes pérdidas. Además, si hay una alta volatilidad lateral con múltiples redes atrapadas, las pérdidas se exacerbarían. Además, las caídas rápidas de precios pueden desencadenar una parada de pérdida y cerrar todas las posiciones, perdiendo oportunidades de ganancia posteriores. Sería difícil volver a entrar en los niveles óptimos iniciales de la red después de los retrocesos.

La precisión del juicio de tendencias principales puede mejorarse optimizando los parámetros de la EMA. Ajustar el intervalo de la cuadrícula y el tamaño de la primera entrada también puede controlar las pérdidas generales. La posición de stop loss debe tener en cuenta la frecuencia de volatilidad del mercado. Además, se puede considerar la toma de ganancias para posiciones parciales en lugar de cerrar todas las posiciones.

Direcciones de optimización

Esta estrategia también puede optimizarse en los siguientes aspectos:

  1. Optimizar los parámetros de la EMA para mejorar la precisión del juicio de las principales tendencias
  2. Ajustar los intervalos y las cantidades de la red para optimizar la relación riesgo-recompensa
  3. Mejorar la lógica de stop loss y take profit, por ejemplo, take profit parcial, trailing stop loss, etc.
  4. Añadir más restricciones a las condiciones de reingreso para evitar una reingreso prematuro durante los retiros
  5. Incorporar más indicadores para determinar el momento óptimo de entrada, por ejemplo, patrones de velas, sensibilidad del indicador, etc.
  6. Añadir la detección de anomalías para evitar grandes pérdidas en condiciones anómalas del mercado

Con estas medidas de optimización, la estrategia puede obtener mayores ganancias durante tendencias significativas, al tiempo que controla los riesgos y reduce las pérdidas en la volatilidad lateral normal.

Resumen de las actividades

Esta estrategia combina el comercio de tendencias y el comercio de la red orgánicamente. Utiliza la EMA para determinar la dirección principal y utiliza el comercio de la red para abrir posiciones por separado para perseguir tendencias. Con una gestión adecuada del riesgo, incluidos los mecanismos de stop loss, take profit y recálculo de la red, esta estrategia puede producir ganancias decentes durante las tendencias principales, mientras que también controla los riesgos.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © zxcvbnm3260

//@version=5
strategy("grid strategy long", overlay=true)


// 版本更新记录:
// v1.0 2021/11/09 只做多、不做空,选择大趋势向上的时间段。网格大小默认为1倍ATR,往下1、2、3个网格吃单,第5个网格止损。空仓时到达往上一个网格则网格整体抬升。(Only go long, not short, choose a time period when the general trend is up. The default grid size is 1x ATR, the next one, two, and three grids will take orders, and the fifth grid will stop loss. When the empty position reaches the upper grid, the grid as a whole rises.)


X_ATR = input.float(title='网格大小是多少倍ATR?', defval = 1)


// 1.基础变量
ema169 = ta.ema(close, 169)
ema144 = ta.ema(close, 144)
ema12 = ta.ema(close, 12)

ema576 = ta.ema(close, 576)
ema676 = ta.ema(close, 676)

plot(ema169, color=color.new(color.orange, 0), linewidth=2)
// plot(ema144, color=color.orange)
plot(ema12,  color=color.blue)
// plot(ema676, color=color.orange, linewidth=1)

mtr = math.max(high - low, math.abs(close[1] - high), math.abs(close[1] - low))
atr = ta.ema(mtr, 30)

is_0930 = hour(time, 'GMT-4') == 9  and minute(time, 'GMT-4') == 30
is_1500 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 00
is_1530 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 30

is_yangxian = close>open
is_yinxian = close<open

// 2.基本趋势标记

big_trend  = ema12 >= ema169 ? 1 : 0
big_trend2 = ema12 <= ema169 ? 1 : 0

// 背景的变色处理:
bgcolor(big_trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90) )

// 3.网格点位初始化

grid_size = atr * X_ATR // 网格大小
        
price_entry1 = open - grid_size*1
price_entry2 = open - grid_size*2
price_entry3 = open - grid_size*3
price_stop_loss = open - grid_size*5

price_exit1 = price_entry1 + grid_size*1
price_exit2 = price_entry2 + grid_size*1
price_exit3 = price_entry3 + grid_size*1

qty1 = int(1000/price_entry1)
qty2 = int(1000/price_entry2)
qty3 = int(1000/price_entry3)


// 标出各种点位
slm_lines_time(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    time2 = time + 1000*3600*24*5
    line.new(time, price_stop_loss, time2, price_stop_loss, color=color.red, xloc = xloc.bar_time, width=2)  // 止损位
    line.new(time, price_entry1, time2, price_entry1, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry2, time2, price_entry2, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry3, time2, price_entry3, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_exit1,  time2, price_exit1,  color=color.green, xloc = xloc.bar_time, width=2)  // 

slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    line.new(bar_index, price_stop_loss, bar_index[5], price_stop_loss, color=color.red, xloc = xloc.bar_index, width=2)  // 止损位
    line.new(bar_index, price_entry1, bar_index[5], price_entry1, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry2, bar_index[5], price_entry2, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry3, bar_index[5], price_entry3, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_exit1,  bar_index[5], price_exit1,  color=color.green, xloc = xloc.bar_index, width=2)  // 


// 4.网格点位更新和下单

is_entry0 = big_trend==1 and year>=2020

var is_entry = false

// 未进场时:
if is_entry0 and not is_entry
    is_entry := true
    
    grid_size := atr * X_ATR // 网格大小
    
    price_entry1 := close - grid_size*1
    price_entry2 := close - grid_size*2
    price_entry3 := close - grid_size*3
    price_stop_loss := close - grid_size*5
    
    price_exit1 := price_entry1 + grid_size*1
    price_exit2 := price_entry2 + grid_size*1
    price_exit3 := price_entry3 + grid_size*1
    
    qty1 := int(1000/price_entry1)
    qty2 := int(1000/price_entry2)
    qty3 := int(1000/price_entry3)
    
    // slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)
    
    strategy.entry("open1", strategy.long, qty1, limit = price_entry1)
    strategy.entry("open2", strategy.long, qty2, limit = price_entry2)
    strategy.entry("open3", strategy.long, qty3, limit = price_entry3)
    
    strategy.exit("close1", qty = qty1, limit = price_exit1, stop = price_stop_loss)
    strategy.exit("close2", qty = qty2, limit = price_exit2, stop = price_stop_loss)
    strategy.exit("close3", qty = qty3, limit = price_exit3, stop = price_stop_loss)

// 已进场的各类情况

// 1.止损
if is_entry and close <= price_stop_loss
    strategy.close_all()
    is_entry := false

// 2.网格抬升
if is_entry and close >= price_exit1
    is_entry := false
        




Más.