Tendência da média móvel seguindo a estratégia de otimização


Data de criação: 2024-01-04 15:44:23 última modificação: 2024-01-04 15:44:23
cópia: 0 Cliques: 526
1
focar em
1621
Seguidores

Tendência da média móvel seguindo a estratégia de otimização

Visão geral

A luminosidade de quantificação é uma estratégia de combinação de indicadores estocásticos e indicadores OTT. A estratégia utiliza o indicador estocástico para gerar sinais de compra e venda, e em combinação com o indicador OTT para filtrar os sinais, tentando capturar grandes tendências e reduzir o impacto de falsos sinais causados por turbulências de mercado.

Princípio da estratégia

A ideia central da estratégia é sobrepor o indicador estocástico ao indicador OTT para filtrar o sinal. O indicador estocástico compara os preços com os preços mais altos e mais baixos de um período de tempo especificado para determinar se os preços estão em regiões extremas. O indicador OTT usa médias móveis e paradas dinâmicas para acompanhar a tendência.

O código define Stochastic como um alto de 1080, um baixo de 1020 e um intervalo de equilíbrio entre os valores médios de Stochastic. Quando o Stochastic gera um sinal de compra/venda, o código julga a eficácia do sinal com base no indicador OTT. Se o preço atravessar a média OTT para cima, um sinal de compra é emitido, e se o preço atravessar a média OTT para baixo, um sinal de venda é emitido.

Esta combinação usa Stochastic para julgar sobrecompra e sobrevenda e emitir um sinal de entrada. OTT é responsável por rastrear a tendência e usar o filtro de perda de prejuízo para eliminar os sinais falsos causados por uma onda de choque muito forte, otimizando a precisão e a volatilidade do sinal.

Análise de vantagens

A estratégia utiliza a combinação de indicadores Stochastic e OTT para otimizar os seguintes aspectos:

  1. Aumento da precisão dos sinais. O Stochastic julga sobrecompra e sobrevenda, e o OTT é responsável por eliminar os sinais falsos causados pela situação de choque.
  2. A redução da volatilidade da estratégia limitou os prejuízos com o stop loss dinâmico, filtrando muitos dos breaks falsos.
  3. O Stochastic fornece sinais básicos e o OTT acompanha as grandes tendências.
  4. Reduz a interferência excessiva. Melhora a qualidade do sinal e reduz os sinais inúteis.
  5. Determinação de stop loss dinâmico quantitativo. Garantia qualitativa do prejuízo atual, reduzindo ainda mais a volatilidade da estratégia.
  6. O sistema combina tendências e indicadores de sobrecompra e sobrevenda. Utiliza os dois indicadores para otimizar as desvantagens.

Em termos globais, a estratégia de filtragem de sinais estocásticos através do uso de OTT, aumentou a qualidade do sinal e o lucro estratégico, reduzindo o número de transações e a volatilidade da estratégia, alcançando o efeito de proximidade da tendência, baixo risco e alto lucro.

Análise de Riscos

  • O alcance da aplicação desta estratégia é relativamente estreito. Aplica-se principalmente a ações com uma tendência evidente. O impacto é menor para ações com grande flutuação de preços ou ações em liquidação de choque.
  • A estratégia não leva em conta os fundamentos das ações e o aspecto macro do mercado, existindo uma certa cegueira.
  • A configuração dos parâmetros é sensível. Vários parâmetros de stochastic e OTT requerem ajuste profissional, ou afetam a lucratividade da estratégia.
  • O Stop Loss é muito flexível. Cumpre com um certo potencial de perda e precisa ser melhorado.
  • A falha de ruptura e a perturbação da situação podem causar alguns prejuízos e interferência no sinal. É necessário modificar os critérios de julgamento e os critérios de parada.

Os riscos acima mencionados podem ser melhorados com as seguintes medidas:

  1. Diferentes combinações de parâmetros são usados para diferentes categorias de ações.
  2. A combinação de conteúdo básico e jornalístico reforça o sinal.
  3. Teste de otimização de parâmetros para encontrar a melhor configuração.
  4. Introdução de stop loss móvel para reduzir ainda mais o risco.
  5. A alteração dos critérios de julgamento para um mecanismo de confirmação de sinais mais rigoroso.

Direção de otimização

A estratégia pode ser aprofundada e aperfeiçoada nos seguintes aspectos:

  1. Ajuste os parâmetros de acordo com diferentes mercados e classes de ações. Os valores padrões atuais são universais e podem ser testados individualmente para diferentes ações para encontrar a combinação de parâmetros mais ótima.

  2. Introdução de stop loss e stop loss móvel. Atualmente, o stop loss é um stop loss fixo dinâmico, que não permite o rastreamento dinâmico de perdas e ganhos. A introdução de stop loss móvel e stop loss pode ser testada para controlar ainda mais o risco de ganhos da estratégia.

  3. Optimizar a lógica de julgamento de sinais ❚ A lógica de julgamento atual é mais simples, marcando diretamente os sinais de compra e venda através de uma ruptura de alta e baixa no preço ❚ Pode-se considerar a combinação de mais indicadores e julgamentos de forma de preço para garantir a confiabilidade do sinal ❚

  4. Aumentar as condições de abertura de posição e o mecanismo de filtragem. As estratégias atuais tratam todos os sinais de forma semelhante. Pode-se introduzir condições de abertura de posição, como indicadores de potência, indicadores de volume de transação, e adicionar uma determinada janela de tempo de sinal para eliminar falsos sinais.

  5. Testar a combinação de diferentes indicadores com o OTT. Atualmente, a combinação Stochastic com o OTT é usada. Outros indicadores, como MACD, RSI e outros, podem testar o efeito da combinação com o OTT.

  6. Modulo de gestão de fundos e gestão de posições integrado. Não há atualmente nenhum mecanismo de gestão de fundos e controlo de posições, dependendo apenas do stop loss. Diferentes tipos de gestão de fundos e métodos de gestão de posições podem ser testados para controlar ainda mais o risco individual e global.

Resumir

A Luz da Quantificação é uma estratégia de quantificação que combina organicamente o indicador Stochastic com o indicador OTT. Utiliza os benefícios complementares dos dois indicadores, aumentando a precisão do sinal e reduzindo o risco ao mesmo tempo em que capta as grandes tendências.

A estratégia tem a vantagem de ter uma taxa de erro baixa, sinal claro e baixa volatilidade. Ela aumenta a confiabilidade do sinal, otimiza o nível de stop loss e reduz a frequência de negociação, sendo uma estratégia de quantificação recomendada.

Ao mesmo tempo, a estratégia também tem espaço para melhorias. Otimizando os parâmetros, aperfeiçoando o mecanismo de parada de prejuízos e aumentando os mecanismos de sinalização e filtragem, a estratégia pode ser desenvolvida em direção a uma direção mais estável, automatizada e inteligente, o que é o objetivo de nosso trabalho posterior.

Código-fonte da estratégia
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 3m
basePeriod: 1m
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/
// © KivancOzbilgic
//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic


strategy(title="Stochastic Optimized Trend Tracker", shorttitle="SOTT", format=format.price, precision=2)
periodK = input(250, title="%K Length", minval=1)
smoothK = input(50, title="%K Smoothing", minval=1)
src1 = input(close, title="Source")
length=input(3, "OTT Period", minval=1)
percent=input(0.618, "OTT Percent", type=input.float, step=0.1, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=false)
showsignalsc = input(title="Show Stochastic/OTT Crossing Signals?", type=input.bool, defval=false)
Var_Func1(src1,length)=>
    valpha1=2/(length+1)
    vud11=src1>src1[1] ? src1-src1[1] : 0
    vdd11=src1<src1[1] ? src1[1]-src1 : 0
    vUD1=sum(vud11,9)
    vDD1=sum(vdd11,9)
    vCMO1=nz((vUD1-vDD1)/(vUD1+vDD1))
    VAR1=0.0
    VAR1:=nz(valpha1*abs(vCMO1)*src1)+(1-valpha1*abs(vCMO1))*nz(VAR1[1])
VAR1=Var_Func1(src1,length)
k = Var_Func1(stoch(close, high, low, periodK), smoothK)
src=k+1000
Var_Func(src,length)=>
    valpha=2/(length+1)
    vud1=src>src[1] ? src-src[1] : 0
    vdd1=src<src[1] ? src[1]-src : 0
    vUD=sum(vud1,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
h0 = hline(1080, "Upper Band", color=#606060)
h1 = hline(1020, "Lower Band", color=#606060)
fill(h0, h1, color=#9915FF, transp=80, title="Background")
plot(k+1000, title="%K", color=#0094FF)
MAvg=Var_Func(src, length)
fark=MAvg*percent*0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop =  MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 
plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line")
OTTC = #B800D9 
pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0)
alertcondition(cross(src, OTT[2]), title="Price Cross Alert", message="OTT - Price Crossing!")
alertcondition(crossover(src, OTT[2]), title="Price Crossover Alarm", message="PRICE OVER OTT - BUY SIGNAL!")
alertcondition(crossunder(src, OTT[2]), title="Price Crossunder Alarm", message="PRICE UNDER OTT - SELL SIGNAL!")
buySignalc = crossover(src, OTT[2])
plotshape(buySignalc and showsignalsc ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallc = crossunder(src, OTT[2])
plotshape(sellSignallc and showsignalsc ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

dummy0 = input(true, title = "=Backtest Inputs=")
FromDay    = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear   = input(defval = 2005, title = "From Year", minval = 2005)
ToDay      = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "To Year", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if buySignalc
    strategy.entry("Long", strategy.long,when=Timerange())
if sellSignallc
    strategy.entry("Short", strategy.short,when=Timerange())