Estratégia de posição longa de backtest de proporção áurea


Data de criação: 2023-11-28 13:40:35 última modificação: 2023-11-28 13:40:35
cópia: 1 Cliques: 678
1
focar em
1617
Seguidores

Estratégia de posição longa de backtest de proporção áurea

Visão geral

A estratégia de divisão de ouro de divisão de ouro é uma estratégia de negociação de swing. Ela gera sinais com base nos pontos de divisão de ouro dos preços mais altos e mais baixos dos últimos 21 dias.

Princípio da estratégia

A estratégia primeiro calcula os preços mais altos (high21) e mais baixos (low21) dos últimos 21 dias, e depois calcula a diferença entre os dois. O sinal de negociação é: Faça mais quando o preço mais baixo atual for mais alto do que o preço mais baixo 21 + diff * 0.382, e o preço de fechamento da linha K anterior for mais alto do que o preço de abertura da linha K anterior. A linha de parada é low21 + diff * 0.236.

O uso da linha de divisão dourada como um indicador técnico importante aqui é porque a linha de divisão dourada corresponde a um ponto de apoio ou resistência generalizado no mercado. 0.382 e 0.236 são frequentemente monitorados como um ponto de retorno ou um ponto de rebote, e podem ser considerados um dos números mais mágicos da natureza.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O uso da teoria da divisão do ouro para orientar as negociações é um método de análise técnica mais avançado.

  2. A única coisa que pode ser feita para reduzir os riscos para o sistema.

  3. O sistema de rastreamento de tendências é usado para determinar a admissão por meio da elasticidade ascendente.

  4. A linha de parada é clara e o risco é controlado.

  5. Os parâmetros de retorno são ajustáveis para testar a eficácia em diferentes ambientes de mercado.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. O mercado de ações é baseado em dados históricos e pode não ser sensível a mudanças na estrutura do mercado.

  2. A linha de parada é mais próxima e pode ser abalada pelo GAP durante a noite.

  3. Se houver uma forte oscilação, um ciclo de retrospecção inadequado pode levar a falsos sinais.

  4. Os custos de deslizamento da própria quantidade de transações também afetam os lucros.

Esses riscos podem ser reduzidos por meio de métodos como ajustar os parâmetros do ciclo de retomada, otimizar a posição de parada e considerar o custo do ponto de deslizamento.

Direção de otimização

A estratégia pode ser otimizada em vários aspectos:

  1. Parâmetros de otimização automática baseados em algoritmos de aprendizagem de máquina, para que os parâmetros do ciclo de retrospecção sejam mais adequados ao ambiente atual do mercado.

  2. Combinado com derivativos financeiros, como ações e futuros, o uso de alavancagem aumenta a operação.

  3. Adição de um modelo para o tratamento de incidentes, como a adição de um mecanismo de identificação para o salto de abertura.

  4. Otimização da estratégia de stop loss, com stop loss de deslizamento dinâmico de acordo com a volatilidade do mercado.

Resumir

No geral, é uma estratégia multi-cabeça de longa linha que utiliza o princípio da linha divisória de ouro, com um mecanismo de entrada claro e um pensamento de stop loss. Pode ser otimizado como uma estratégia de negociação quantitativa confiável por meio de ajustes de parâmetros, otimização de modelos e combinação de aplicativos.

Código-fonte da estratégia
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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/
// © omkarkondhekar

//@version=4
strategy("GRBLong", overlay=true)

highInput = input(title = "High Days", type = input.integer, defval = 21, minval = 11)
lowInput = input(title = "Low Days", type = input.integer, defval = 21, minval = 5)

// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2019, minval=1800, maxval=2100)

// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

high21 = highest(high, highInput)
low21 = lowest(low, lowInput)

diff = high21 - low21

longEntrySignal = low > low21 + (diff * 0.382) and close[1] > open[1] 

strategy.entry("Long", strategy.long, limit = low, when = longEntrySignal and afterStartDate)
strategy.exit("Long Exit", "Long", stop = low21 + (diff * 0.236))

plot(low21 + (diff * 0.382), color= color.green)
plot(low21 + (diff * 0.236), color = color.red)