Estratégia de Passeio Aleatório
Visão Geral
A estratégia de passeio aleatório (Random Walk) é uma estratégia de negociação automatizada baseada na geração de números aleatórios. Essa estratégia utiliza um gerador congruencial linear para gerar números aleatórios a partir de uma semente definida. Quando o número gerado é maior que um limite, é aberta uma posição comprada (long); quando é menor, é aberta uma posição vendida (short), realizando entradas aleatórias em posições de compra e venda.
Princípio da Estratégia
A estratégia realiza negociações aleatórias principalmente através das seguintes etapas:
-
Define os parâmetros de geração de números aleatórios: a, c, módulo m, e a semente inicial seed.
-
Define a função de geração de números aleatórios
GetRandom, utilizando o algoritmo congruencial linear para gerar números aleatórios entre 0 e m. -
Em cada candle, se não houver posição aberta, compara o número aleatório gerado: se for maior que m/2, abre posição comprada; caso contrário, abre posição vendida.
-
Define condições de stop loss e take profit, em formato percentual para as amplitudes de stop loss e take profit.
-
Define o período de backtest através de intervalos de tempo.
Através dessas etapas, a estratégia realiza operações completamente aleatórias de compra e venda. Quando o número aleatório é maior que m/2, abre uma posição longa; caso contrário, abre uma posição short, e então define stop loss e take profit para sair da posição. O período de backtest pode ser personalizado.
Análise de Vantagens
-
Lógica da estratégia simples e clara, fácil de entender e implementar.
-
Negociações aleatórias podem evitar efetivamente a interferência emocional humana, reduzindo erros subjetivos.
-
Permite personalizar os parâmetros do algoritmo gerador de números aleatórios, ajustando a aleatoriedade.
-
Oferece flexibilidade na definição das condições de stop loss e take profit, controlando o resultado de cada operação.
-
Suporta otimização de parâmetros em backtest, facilitando o teste do impacto de diferentes parâmetros no resultado geral.
Análise de Riscos
-
Negociações aleatórias podem não apresentar uma tendência clara a longo prazo, gerando incerteza nos resultados.
-
Não é possível ajustar posições com base nas condições do mercado, podendo perder oportunidades de tendência.
-
O resultado por operação é limitado, com risco de drawdown elevado.
-
É necessário definir proporções adequadas de stop loss e take profit para evitar perdas excessivas.
-
A aleatoriedade pode levar a aberturas e fechamentos frequentes de posições, aumentando os custos de negociação.
-
É preciso realizar backtests suficientes para validar a razoabilidade dos parâmetros, não podendo ser usado cegamente.
O risco pode ser reduzido através da incorporação de funções como julgamento de tendência, redução da frequência de aberturas aleatórias, otimização do mecanismo de stop loss e controle rigoroso do resultado por operação.
Direções de Otimização
-
Adicionar julgamento de tendência para evitar aberturas contra a tendência.
-
Incorporar gerenciamento de posição, ajustando o tamanho da posição conforme as variações de capital.
-
Otimizar o algoritmo de geração de números aleatórios para melhorar a aleatoriedade.
-
Ajustar dinamicamente as amplitudes de stop loss e take profit.
-
Adicionar limite de frequência de abertura de posições.
-
Realizar backtests com combinações de múltiplos parâmetros para encontrar os parâmetros ótimos.
Resumo
A estratégia de passeio aleatório realiza negociações mecânicas controlando a compra e venda através de números aleatórios. Essa estratégia possui forte aleatoriedade, não é influenciada por emoções pessoais e evita o risco de erros subjetivos. No entanto, a abertura aleatória de posições pode perder oportunidades de tendência, com resultados limitados por operação, sendo necessário otimizar o mecanismo de controle de risco. No geral, essa estratégia é adequada para validar conceitos de negociação e entender o impacto dos parâmetros nos resultados, mas sua aplicação prática requer avaliação cuidadosa.
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
- 1
