Estratégia de negociação de Golden Cross e Dead Cross de média móvel dupla


Data de criação: 2023-10-07 16:39:01 última modificação: 2023-10-07 16:39:01
cópia: 0 Cliques: 678
1
focar em
1617
Seguidores

Visão geral

A estratégia usa um binário de duas médias móveis para determinar a tendência e emitir um sinal de compra e venda. Quando uma média móvel rápida atravessa uma média móvel lenta de baixo, um binário de ouro e um sinal de compra ocorre. Quando uma média móvel rápida atravessa uma média móvel lenta de cima para baixo, um binário de ouro e um sinal de venda ocorre.

Princípio da estratégia

A estratégia é composta por:

  1. O valor do oscilante é calculado na forma de porcentagem do preço. O valor do oscilante é a porcentagem do preço menos um valor médio. O valor médio é calculado pela média, por exemplo, dos preços mais altos e mais baixos nos últimos 20 dias.

  2. Calcule a média móvel do valor do oscilador, como a média móvel de 20 dias do casco.

  3. Calcule o valor de atraso da média móvel, como um atraso de 12 dias.

  4. Determine se a média móvel está acima ou abaixo da média móvel de atraso, com um sinal de bifurcação ou bifurcação.

  5. A partir daí, os preços de compra e de venda são regulados.

Concretamente, a estratégia primeiro calcula o valor do oscilador do preço, depois a média móvel do oscilador, e depois o valor de atraso dessa média móvel.

Quando o oscilador atravessa a média móvel de atraso na média móvel, gera um sinal de golden fork, fazendo mais; quando o oscilador atravessa a média móvel de atraso abaixo da média móvel, gera um sinal de dead fork, fazendo vazio.

Dessa forma, é possível determinar a direção da negociação julgando a interseção de duas médias móveis.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O uso de médias móveis duplas para filtrar sinais falsos aumenta a confiabilidade do sinal.

  2. Usando uma combinação de linha média rápida e lenta, para capturar a tendência intermédia. A linha média rápida é sensível às mudanças de preço, a linha média lenta tem atraso, a combinação pode ser usada para capturar a reversão da tendência intermédia ao mesmo tempo em que elimina o ruído de curto prazo.

  3. O uso de osciladores pode destacar pontos de ruptura e gerar sinais de negociação mais claros.

  4. Algoritmos e parâmetros de média móvel personalizáveis para diferentes cenários de mercado.

  5. A lógica da estratégia é simples e clara, fácil de entender e implementar, adequada para quem está começando.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. O cruzamento de duas médias móveis gera um atraso no sinal, podendo perder o melhor ponto de entrada.

  2. As médias móveis duplas são propensas a gerar sinais errôneos na correção.

  3. A tendência é forte ou fraca, não se sabe, e pode ter saído prematuramente no mercado de ativos.

  4. PARAMETERS tem muitos parâmetros ajustáveis e não é fácil de otimizar para encontrar a melhor combinação de parâmetros.

  5. Não há um mecanismo de parada de perdas, não há controle de perdas individuais.

Direção de otimização

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

  1. Optimizar os tipos e parâmetros das médias móveis para testar a estabilidade de diferentes combinações em diferentes mercados.

  2. Aumentar os indicadores de tendência, como o ADX, para evitar a abertura de negociações desnecessárias devido a sinais errados.

  3. Adicionar estratégias de stop-loss, como stop-loss móvel ou stop-loss percentual, para controlar a perda individual.

  4. Combinado com outros indicadores, como a energia do volume de negociação, o RSI, etc., eleva a qualidade do sinal de negociação.

  5. Otimizar automaticamente os parâmetros usando métodos de aprendizagem de máquina para obter uma configuração de parâmetros mais estável.

  6. Considere a flexibilização apropriada das condições de entrada para reduzir a possibilidade de falta de bilhetes.

Resumir

A estratégia de dupla média móvel, através de uma combinação de correspondência rápida e lenta, capta o ponto de inflexão da tendência média dos preços, enquanto elimina o ruído do mercado de curto prazo, para produzir um sinal de negociação. A estratégia é simples, fácil de implementar, fácil de entender e amigável para novatos. Mas também há desvantagens, como a produção de sinais errados e a incapacidade de determinar a força da tendência.

Código-fonte da estratégia
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
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/
// © EvoCrypto

//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")

// INPUTS {
na_1                =   input(false,    title="────────────{ Oscillator }──────────────")

// Osc_Src             =   input(close,    title="Oscillator Source                                ")

Example_Length      =   input(20,       title="Example Length", minval=1)
Osc_Src             =   (highest(Example_Length) + lowest(Example_Length)) / 2

// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example

Osc_Format          =   input("Percent",title="Oscillator Format",              options=["Percent", "Currency"]) 

na_2                =   input(false,    title="─────────────{ Average }──────────────")
Average_Type        =   input("Hull",   title="Average Type",                   options=["Hull", "Sma", "Ema", "Wma"])
Length              =   input(50,       title="Average Length", minval=1)
Lagg                =   input(12,       title="Average Lagg",   minval=1)
Display_MA          =   input(true,     title="Display Average")
// }

// SETTINGS {
Osc_Sum             =   
 Osc_Format == "Percent"  ? (close - Osc_Src) / close * 100 :
 Osc_Format == "Currency" ? (close - Osc_Src)               : na

Osc_MA              =   Display_MA == false ? na:
 Average_Type == "Hull"? hma(Osc_Sum, Length)   :
 Average_Type == "Sma" ? sma(Osc_Sum, Length)   :
 Average_Type == "Ema" ? ema(Osc_Sum, Length)   :
 Average_Type == "Wma" ? wma(Osc_Sum, Length)   : na
Osc_MA_1            =   Osc_MA[Lagg]

Cross_Up            =   crossover( Osc_MA, Osc_MA_1)
Cross_Down          =   crossunder(Osc_MA, Osc_MA_1)

Osc_Color           =   Osc_Sum > 0         ? color.new(#bbdefb, 70)  : Osc_Sum < 0          ? color.new(#000000, 70)  : na
Average_Color       =   Osc_MA  > Osc_MA_1  ? color.new(#311b92, 100) : Osc_MA  < Osc_MA_1   ? color.new(#b71c1c, 100) : na
// }

// PLOT {
plot(Osc_Sum,                           title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)

Plot_0              =   plot(Osc_MA,    title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1              =   plot(Osc_MA_1,  title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1,                    title="Average",    color=Average_Color)

plotshape(Cross_Up   ? Osc_MA_1 : na,   title="Cross Up",   color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na,   title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }

// STRATEGY {
if (Cross_Up)
    strategy.entry("Long", strategy.long)
if (Cross_Down)
    strategy.entry("Short", strategy.short)
// }