Estratégia de fuga de Noro v1.0

Autora:ChaoZhang, Data: 21 de setembro de 2023
Tags:

Resumo

Esta estratégia opera com base em rupturas de preços além dos extremos recentes.

Como funciona

  1. Calcular o máximo máximo máximo e o mínimo mínimo dnex durante N períodos.

  2. Faça long quando o preço ultrapassar o máximo.

  3. Faça curto quando o preço cair abaixo de Dnex.

  4. Configurável apenas para longo, curto ou em ambas as direcções.

  5. Taxa de utilização do capital configurável.

  6. Intervalo de tempo de negociação configurável.

Vantagens

  • Captura sinais de ruptura, bom para negociação de tendências
  • Regras simples e intuitivas, fáceis de aplicar
  • Configuração direcional adapta-se a diferentes mercados
  • Pode limitar o intervalo de tempo de negociação
  • Controle da utilização do capital

Riscos

  • Incapaz de filtrar falhas efetivamente
  • O comércio bidirecional aumenta os custos
  • A utilização elevada do capital aumenta o risco

Orientações de otimização

  • Adicionar validação para evitar falhas
  • Optimizar o valor de N para um desempenho óptimo
  • Filtros adicionais para os sinais do ecrã
  • Teste diferentes taxas de utilização do capital
  • Número máximo de operações por dia

Conclusão

A estratégia segue as tendências usando sinais de ruptura de preço. Aumentar a validade da ruptura e ajustar os parâmetros pode melhorar o desempenho. Mas falhas de ruptura e controles de risco precisam ser abordados.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-20 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Brakeout Strategy v1.0", shorttitle = "Brakeout str 1.0", 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(4, defval = 4, minval = 1, maxval = 1000, title = "Length")
showlines = input(true, defval = true, title = "Show Lines?")
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")

//Extremums
upex = highest(high, len)
dnex = lowest(low, len)
col = showlines ? blue : na
plot(upex, color = col, linewidth = 2)
plot(dnex, color = col, linewidth = 2)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[len]))
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)), stop = upex + syminfo.mintick)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)), stop = dnex - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mais.