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


Data de criação: 2023-11-06 16:38:22 última modificação: 2023-11-06 16:38:22
cópia: 0 Cliques: 704
1
focar em
1617
Seguidores

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

Visão geral

A estratégia baseia-se no princípio da forca de ouro das médias móveis. A estratégia usa duas médias móveis, gerando um sinal de compra quando a média móvel de curto prazo quebra a média móvel de longo prazo a partir da direção inferior.

Princípio da estratégia

A estratégia utiliza os períodos de média móvel de curto prazo, média móvel de longo prazo, média móvel de saída e os métodos de cálculo das médias móveis personalizados pelo usuário.

Quando uma média móvel de curto prazo se aproxima da média móvel de longo prazo, um sinal de compra é gerado. Isso significa que a tendência de curto prazo é convertida em tendência ascendente e pode ser comprada.

Quando o preço de fechamento cai para fora da média móvel, um sinal de venda é gerado. Isso significa que a tendência se inverte e deve sair da posição.

Assim, os sinais de negociação para a estratégia são derivados da interseção de médias móveis de curto prazo e médias móveis de longo prazo e da relação entre o preço de fechamento e a saída da média móvel.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. É simples, fácil de entender e fácil de implementar.

  2. Parâmetros personalizáveis para diferentes situações de mercado.

  3. Filtre o ruído com a média móvel para capturar as principais tendências.

  4. Indicadores técnicos podem ser melhorados com a combinação de tendências e resistência de suporte.

  5. A taxa de ganhos e perdas é controlada e tem um mecanismo de prevenção.

Análise de Riscos

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

  1. A tendência é de que os mercados de liquidação não sejam fortes, o que pode gerar falsos sinais.

  2. A configuração inadequada dos parâmetros pode perder a tendência ou produzir muitas negociações inválidas.

  3. A posição de parada não é razoável e pode aumentar a perda.

  4. A falha pode causar prejuízos.

  5. Ajustar os parâmetros de acordo com as mudanças no mercado.

As soluções para o risco incluem: configuração de parâmetros de otimização, filtragem de sinais em combinação com outros indicadores, ajuste da posição de parada, determinação de tendências e participação posterior.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Desenvolver mecanismos de avaliação de tendências e gerar sinais de negociação após a identificação de tendências.

  2. O filtro de sinais pode ser combinado com o volume de transações ou com os indicadores de flutuação.

  3. Parâmetro de ciclo da média móvel de otimização dinâmica

  4. Otimizar o mecanismo de stop loss para o stop loss móvel.

  5. A combinação de suporte e resistência e outros indicadores confirmam ainda mais os sinais de negociação.

  6. Parâmetros de ajuste de acordo com diferentes variedades e períodos.

Resumir

A estratégia de negociação de Forex é uma estratégia de acompanhamento de tendências simples e práticas. Ela pode ajustar os parâmetros de acordo com a situação do mercado e capturar a direção da tendência principal no cenário da tendência.

Código-fonte da estratégia
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 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/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date 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 = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
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 = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()