
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.
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.
A estratégia tem as seguintes vantagens:
É simples, fácil de entender e fácil de implementar.
Parâmetros personalizáveis para diferentes situações de mercado.
Filtre o ruído com a média móvel para capturar as principais tendências.
Indicadores técnicos podem ser melhorados com a combinação de tendências e resistência de suporte.
A taxa de ganhos e perdas é controlada e tem um mecanismo de prevenção.
A estratégia também apresenta os seguintes riscos:
A tendência é de que os mercados de liquidação não sejam fortes, o que pode gerar falsos sinais.
A configuração inadequada dos parâmetros pode perder a tendência ou produzir muitas negociações inválidas.
A posição de parada não é razoável e pode aumentar a perda.
A falha pode causar prejuízos.
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.
A estratégia pode ser otimizada em:
Desenvolver mecanismos de avaliação de tendências e gerar sinais de negociação após a identificação de tendências.
O filtro de sinais pode ser combinado com o volume de transações ou com os indicadores de flutuação.
Parâmetro de ciclo da média móvel de otimização dinâmica
Otimizar o mecanismo de stop loss para o stop loss móvel.
A combinação de suporte e resistência e outros indicadores confirmam ainda mais os sinais de negociação.
Parâmetros de ajuste de acordo com diferentes variedades e períodos.
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.
/*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()