Estratégia de rompimento do canal de preços ZZ-4


Data de criação: 2023-09-21 10:59:55 última modificação: 2023-09-21 10:59:55
cópia: 0 Cliques: 647
1
focar em
1617
Seguidores

Visão geral

Esta estratégia baseia-se no canal de preços do indicador ZZ para negociar, usando sinais de que o preço ultrapassou o limite superior do canal para cima ou quebrou o limite inferior do canal para baixo para estabelecer posições de overhead ou de overhead. A estratégia tenta capturar explosões de tendências fora do alcance do canal de preços.

Princípio da estratégia

  1. Calcular o limite superior e inferior do canal de preços
  2. Fazer mais quando os preços sobem acima do limite
  3. Fazer a quebra quando o preço cai para baixo do limite inferior
  4. Configure o tempo de início e fim da negociação
  5. Todos os dias antes do fechamento

Especificamente, a estratégia calcula o limite superior e inferior do canal de preço através do indicador ZZ. Quando o preço quebra o limite superior a partir da parte inferior, faz-se uma entrada adicional; Quando o preço quebra o limite inferior a partir da parte superior, faz-se uma entrada de baixa. Após a abertura adicional, é usado um stop loss, com o limite superior e inferior do canal de preço como ponto de parada. Ao mesmo tempo, define um período de tempo de data, dentro do qual a transação é liquidada diariamente antes do fechamento do mercado para evitar o risco da noite.

Análise de vantagens

  1. Ter uma certa capacidade de identificar tendências usando o canal de preços para determinar pontos de ruptura de tendências potenciais
  2. Os sinais de negociação são simples, intuitivos e fáceis de avaliar.
  3. Parâmetros de ciclo de canal personalizáveis para diferentes variedades e ciclos
  4. A definição de um intervalo de datas e dias de liquidação ajuda a controlar o risco
  5. O uso de um Stop Loss Order para limitar perdas individuais

Análise de Riscos

  1. Os movimentos dentro do canal de preço podem causar vários stop-loss
  2. Parâmetros precisam ser ajustados em tempo hábil, caso contrário, o alcance do canal pode ser impreciso
  3. A brecha pode ser falsa, com risco de ser manipulada
  4. Os lucros potenciais são limitados ao alcance do canal de preços
  5. Espaço de lucro não aproveitado para as tendências

Os riscos acima mencionados podem ser reduzidos por meio da liberação de intervalos de canal, otimização de estratégias de parada de perdas e avaliação da força da tendência.

Direção de otimização

  1. Teste diferentes parâmetros para encontrar a melhor combinação
  2. A liberação de canais de preços para capturar uma tendência mais ampla
  3. Introdução de indicadores de tendência para evitar falsas rupturas
  4. Optimizar a estratégia de parada de perdas para evitar a armadilha
  5. Aumentar a taxa de detenção para maximizar o lucro da ruptura
  6. Avaliação da taxa de retorno em intervalos de datas diferentes

Resumir

Esta estratégia baseia-se no ponto de ruptura da tendência de determinação do canal de preço. A vantagem é que o sinal de negociação é simples, o stop loss é claro e fácil de operar; A desvantagem é a existência de frequentes saltos e não aproveitar o máximo de tendências.

Código-fonte da estratégia
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")