Estratégia de negociação de média móvel de sinal para ruído baseada na negociação quantitativa

Autora:ChaoZhang, Data: 2024-01-02 12:24:35
Tags:

img

I. Nome da estratégia

Estratégia de negociação de média móvel de sinal para ruído

II. Visão geral da estratégia

Esta estratégia realiza a negociação quantitativa, calculando a relação sinal-ruído durante um determinado período e combinando-a com sinais de negociação de média móvel.

  1. Calcular a relação sinal/ruído durante um determinado período (ajustável)
  2. Aplicar média móvel para suavizar a relação sinal/ruído
  3. Comparar a relação sinal/ruído atual com o valor médio móvel para gerar sinais de negociação
  4. Long ou short com base em sinais de negociação

III. Princípio da estratégia

  1. A fórmula para calcular a relação sinal-ruído (StN) é: StN = -10*log ((Σ(1/close) /n), onde n é a duração do período
  2. Aplicar a média móvel simples (SMA) à relação sinal/ruído para obter um StN suavizado
  3. Comparar o StN atual com o SMAStN suavizado: (1) Se SMAStN > StN, curto (2) Se o SMAStN < StN, vá longo (3) Caso contrário, posição próxima

IV. Análise das vantagens

As principais vantagens desta estratégia são:

  1. A StN pode avaliar as flutuações e os riscos do mercado, a SMA tem capacidade de redução de ruído
  2. A combinação de StN para avaliar o risco de mercado e SMA para gerar sinais de negociação utiliza as vantagens de diferentes indicadores
  3. Parâmetros ajustáveis para se adaptarem a diferentes condições de mercado
  4. Os sinais de desaceleração indicam directamente um longo ou curto prazo, um julgamento intuitivo das características do mercado

V. Análise de riscos

Há também alguns riscos com esta estratégia:

  1. Existem riscos de desvio no que respeita ao cruzamento entre o STN e o MA
  2. Configurações de período incorretas podem causar sinais falsos
  3. Relativamente menos oportunidades de curto prazo, otimizáveis através de ajustes de parâmetros
  4. As flutuações extremas causadas por eventos de cisne negro podem desencadear o stop loss

Soluções:

  1. Ajustar os parâmetros de MA para evitar a suavização excessiva
  2. Otimizar os parâmetros de período e testar a adaptabilidade em diferentes mercados
  3. Ajustar condições curtas para proporcionar mais oportunidades curtas
  4. Configurar o stop loss para controlar as perdas máximas

VI. Direcção de otimização

A estratégia pode ser otimizada das seguintes formas:

  1. Combinação de ensaios com mais tipos de médias móveis
  2. Adicionar um mecanismo de stop loss ao controlo dos riscos
  3. Adicionar gestão de posições, ajustar posições com base em flutuações
  4. Incorporar mais factores para melhorar a estabilidade
  5. Usar métodos de aprendizagem de máquina para otimizar automaticamente parâmetros

VII. Resumo

Esta estratégia realiza negociação quantitativa julgando o risco de mercado através da relação sinal-ruído e gerando sinais de negociação a partir da média móvel. Em comparação com indicadores técnicos únicos, esta estratégia integra as vantagens de StN e SMA para melhorar a estabilidade enquanto controla os riscos. Com otimização de parâmetros e aprendizado de máquina, esta estratégia tem grande potencial de melhoria e é uma estratégia de negociação quantitativa confiável e eficaz.


/*backtest
start: 2023-12-25 00:00:00
end: 2023-12-29 10:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter 05/01/2021
// The signal-to-noise (S/N) ratio. 
// And Simple Moving Average.
// Thank you for idea BlockchainYahoo
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors. 
////////////////////////////////////////////////////////////
SignalToNoise(length) =>
    StN = 0.0
    for i = 1 to length-1
        StN := StN + (1/close[i])/length
    StN := -10*log(StN)

strategy(title="Backtest Signal To Noise ", shorttitle="StoN", overlay=false)
length = input(title="Days", type=input.integer, defval=21, minval=2)
Smooth =  input(title="Smooth", type=input.integer, defval=7, minval=2)
reverse = input(false, title="Trade reverse")
StN = SignalToNoise(length)
SMAStN = sma(StN, Smooth)
pos = iff(SMAStN[1] > StN[1] , -1,
	   iff(SMAStN[1] < StN[1], 1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )
plot(StN, title='StN' )
plot(SMAStN, title='Smooth', color=#00ff00)

Mais.