Tendência na sequência da estratégia da rede

Autora:ChaoZhang, Data: 12/08/2023 12:05:17
Tags:

img

Resumo

Esta estratégia é uma tendência que segue uma estratégia de grade que só vai longo e não vai curto, escolhendo períodos de tempo em que a tendência principal está em alta. O tamanho padrão da grade é 1xATR, construindo 1, 2, 3 níveis de grade para baixo para perseguir ordens, e a 5a grade para a perda. Quando a posição vazia atinge a grade anterior, toda a grade sobe para acompanhar o preço.

Estratégia lógica

  1. Use linhas EMA para julgar a direção da tendência principal, EMA12 maior do que EMA144 significa que a tendência principal é para cima
  2. Apenas abrir posições longas quando a tendência principal estiver em alta
  3. O tamanho padrão da grade é 1xATR, o multiplicador pode ser ajustado
  4. Construir 1, 2, 3 níveis de grade para baixo para rastrear o preço e abrir posições longas separadamente
  5. Configure o ponto de stop loss na 5a grade
  6. Após a abertura de posições, definir pontos de stop loss e tomar pontos de lucro
  7. Fechar posições quando o preço ultrapassar o ponto de take profit em alta
  8. Fechar posições quando o preço atingir o ponto de stop loss na queda
  9. Depois de todas as posições serem fechadas, se o preço romper a última grade novamente, recalcule a localização da grade e quantidade para rastrear para cima

Esta estratégia combina a EMA para determinar a direção da tendência principal e a negociação da grade para rastrear o preço. Pode obter maiores retornos em uma tendência de alta. A grade define vários pontos de preço para abrir posições separadamente, o que reduz o risco por posição. As configurações de stop loss e take profit bloqueiam os lucros e também limitam as perdas máximas. Depois que todas as posições são fechadas, a estratégia pode recalcular novos níveis altos de grades para abrir posições novamente, maximizando os lucros.

Análise das vantagens

  1. Usar a EMA para determinar a direcção da tendência principal, evitar a abertura de posições contra a tendência
  2. A negociação em rede pode abrir posições separadamente para reduzir o risco de uma única posição
  3. Stop loss e take profit bloquear os lucros, controlar as perdas máximas
  4. Depois de fechar todas as posições, recalcular grades para continuar a perseguir pode expandir o espaço de lucro

A principal vantagem é a combinação de negociação de tendência e negociação de grade, o que garante a correção da direção da tendência e também atinge a dispersão de risco da negociação de grade.

Análise de riscos

  1. O julgamento da grande tendência pode estar errado, entrando na direção errada
  2. Volatilidade lateral significativa que causa grandes perdas nas redes
  3. Stop loss desencadeado muito rápido, fechando todas as posições
  4. Incapaz de reentrar no ponto de entrada ideal após o recuo

O principal risco é o julgamento incorreto da direção da grande tendência, o que levará à abertura de posições contra a tendência e grandes perdas. Além disso, se houver alta volatilidade lateral com várias redes presas, as perdas seriam exacerbadas. Além disso, quedas rápidas de preços podem desencadear stop loss e fechar todas as posições, perdendo oportunidades de lucro subsequentes. Seria difícil reentrar nos níveis iniciais ótimos da rede após pullbacks.

A precisão do julgamento da tendência principal pode ser melhorada pela otimização dos parâmetros da EMA. Ajustando o intervalo de grade e o tamanho da primeira entrada também pode controlar as perdas globais. A posição de stop loss precisa considerar a frequência de volatilidade do mercado. Além disso, a tomada de lucro pode ser considerada para posições parciais em vez de fechar todas as posições.

Orientações de otimização

Esta estratégia pode também ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros da EMA para melhorar a precisão do julgamento das principais tendências
  2. Ajustar os intervalos e quantidades da grade para otimizar a relação risco/recompensa
  3. Melhorar a lógica de stop loss e take profit, por exemplo, take profit parcial, trailing stop loss, etc.
  4. Adicionar mais restrições às condições de reentrada para evitar a reentrada prematura durante os recuos
  5. Incorporar mais indicadores para determinar o momento de entrada ideal, por exemplo, padrões de velas, sensibilidade do indicador, etc.
  6. Adicionar detecção de anomalias para evitar grandes perdas em condições anormais de mercado

Com estas medidas de otimização, a estratégia pode obter maiores lucros durante tendências significativas, ao mesmo tempo em que controla os riscos e reduz as perdas na volatilidade lateral normal.

Resumo

Esta estratégia combina a negociação de tendências e a negociação de rede organicamente. Ele usa a EMA para determinar a direção principal e usa a negociação de rede para abrir posições separadamente para perseguir tendências. Com uma gestão de risco adequada, incluindo mecanismos de stop loss, take profit e recalculo de rede, esta estratégia pode produzir lucros decentes durante as principais tendências, enquanto também controla os riscos.


/*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
        




Mais.