
A estratégia permite a identificação e o acompanhamento de tendências usando uma combinação de dois indicadores, o EMA duplo e o Awesome Oscillator. O EMA determina rapidamente a direção da tendência recente e o Awesome Oscillator filtra as brechas falsas para fornecer um momento de entrada. O nome da estratégia é o Binary Signal Trend Tracker.
A estratégia utiliza principalmente dois indicadores técnicos, o EMA duplo e o Awesome Oscillator, para filtrar o sinal, com a seguinte lógica:
Calcule o EMA de 2 ciclos e 20 ciclos, quando o EMA de 2 ciclos se move de baixo para cima e quebra o EMA de 20 ciclos, julgue-se uma tendência ascendente; quando o EMA de 2 ciclos se move de cima para baixo e quebra o EMA de 20 ciclos, julgue-se uma tendência descendente.
Calcule o Awesome Oscillator, que é obtido pela média móvel rápida, menos a média móvel lenta, e pela média móvel rápida, menos a coluna MACD para obter a coluna. A coluna AO é considerada um sinal de compra quando o vermelho se torna azul e o azul se torna vermelho como um sinal de venda.
O EMA só gera um sinal de compra final quando mostra uma tendência de alta e o AO mostra um sinal de compra ao mesmo tempo; O EMA só gera um sinal de venda final quando mostra uma tendência de baixa e o AO mostra um sinal de venda ao mesmo tempo.
Através deste mecanismo de filtragem de duplo sinal, pode-se efetivamente reduzir as falsas operações de ruptura e acompanhar a direção intermediária da tendência.
A estratégia tem as seguintes vantagens:
O filtro de dupla linha pode reduzir o erro de negociação causado pelo ruído. O EMA determina a direção da grande tendência e o filtro AO o tempo de entrada no campo. A combinação dos dois pode aumentar a confiabilidade do sinal.
Sensitividade de resposta Extremamente rápida, pode capturar a reversão de tendência em curto prazo. O EMA de 2 ciclos é extremamente sensível a rupturas e pode determinar rapidamente se a tendência mudou em curto prazo.
O Awesome Oscillator pode filtrar novamente o MACD para identificar falsas rupturas na tendência e evitar inversões desnecessárias.
A EMA determina a direção da tendência básica, e a AO filtra para garantir que as transações estejam de acordo com a direção da tendência maior, para capturar continuamente a tendência média.
Os parâmetros de estratégia selecionados são razoáveis, os EMA de 2 e 20 ciclos capturam as variações de preços de diferentes ciclos, os parâmetros AO de 5 e 34 ciclos são otimizados para melhor identificar as características de forma em curto prazo.
A estratégia também apresenta alguns riscos:
Em situações de turbulência, a EMA e a AO podem emitir mais sinais errados, resultando em negociações aéreas desnecessárias. Pode-se reduzir o risco de erro de julgamento ajustando os parâmetros do ciclo EMA.
O AO pode atrasar o EMA em algumas situações, causando um diferencial de tempo de ocorrência do sinal, podendo ser apropriadamente otimizado o parâmetro AO para que ele responda mais rapidamente ao rompimento.
Os parâmetros de EMA e AO definidos para atender às características de curto e médio prazo exigem maior qualidade de dados e poder computacional e precisam ser ajustados de acordo com as características de diferentes variedades.
A frequência de negociação pode gerar mais comissões e custos de deslizamento. A estratégia pode ser adequadamente relaxada. Os padrões de saída prolongam o período de detenção.
A estratégia não leva em consideração as tendências do grande ciclo e os pontos de resistência de suporte-chave, e deve combinar mais fatores para garantir a direção correta da negociação.
A estratégia pode ser otimizada em vários aspectos:
A introdução de indicadores de tendência para auxiliar a EMA a determinar a direção da tendência geral, como os indicadores complementares como as faixas de média móvel e o ATR.
Adicionar mecanismos de identificação de pontos de resistência de suporte-chave, como a linha de retirada de Fibonacci, que emite sinais apenas perto dos pontos-chave.
Otimizar a combinação de EMA e AO para melhorar a combinação de ambos. Por exemplo, usar algoritmos de classe genética para encontrar automaticamente o melhor par de parâmetros.
Aumentar o mecanismo de Exit Stop Loss. Quando o preço ultrapassa o último Swing High/Low, a parada de perda deve ocorrer em tempo hábil para controlar a perda individual.
Verificação de conjuntos de dados antecipados, a utilização de dados históricos para avaliar a eficácia da estratégia. Verificar se o lucro pode ser estável e se os resultados da retrospectiva estão de acordo com as expectativas.
A modulação de parâmetros de simulação de disco rígido, ajuste gradual dos parâmetros para melhorar a eficácia do indicador de disco rígido. Verifique a robustez dos parâmetros e obtenha uma melhor combinação de parâmetros estáveis.
A estratégia global é clara, para determinar a direção da grande tendência da EMA, e a combinação de sinais de filtragem AO usa dois indicadores para verificação dupla. Pode identificar a tendência de forma eficaz e acompanhar o comportamento a médio prazo. Mas também há certos riscos e deficiências, e é necessário continuar a otimizar os testes para aumentar a estabilidade.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 27/04/2022
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// This indicator plots the oscillator as a histogram where blue denotes
// periods suited for buying and red . for selling. If the current value
// of AO (Awesome Oscillator) is above previous, the period is considered
// suited for buying and the period is marked blue. If the AO value is not
// above previous, the period is considered suited for selling and the
// indicator marks it as red.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
pos = 0.0
xPrice = close
xXA = ta.ema(xPrice, Length)
nHH = math.max(high, high[1])
nLL = math.min(low, low[1])
nXS = nLL > xXA or nHH < xXA ? nLL : nHH
iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
pos := nXS > close[1] ? -1 : iff_1
pos
AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) =>
pos = 0.0
xSMA1_hl2 = ta.sma(hl2, nLengthFast)
xSMA2_hl2 = ta.sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast)
nRes = xSMA1_SMA2 - xSMA_hl2
xResWMA = ta.wma(nRes, nLengthWMA)
xResMA = ta.sma(nRes, nLengthMA)
xResEMA = ta.ema(nRes, nLengthEMA)
xSignalSeries = bShowWMA ? xResWMA :
bShowMA ? xResMA :
bShowEMA ? xResEMA : na
pos := xSignalSeries[2] < 0 and xSignalSeries[1] > 0? 1:
xSignalSeries[2] > 0 and xSignalSeries[1] < 0 ? -1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Bill Awesome Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Awesome Oscillator (AC) ═════●'
nLengthSlow = input.int(34, minval=1, title="Length Slow", group=I2)
nLengthFast = input.int(5, minval=1, title="Length Fast", group=I2)
nLengthMA = input.int(15, minval=1, title="MA", group=I2)
nLengthEMA = input.int(15, minval=1, title="EMA", group=I2)
nLengthWMA = input.int(15, minval=1, title="WMA", group=I2)
bShowWMA = input.bool( defval=true, title="trading WMA", group=I2)
bShowMA = input.bool( defval=false, title="trading MA", group=I2)
bShowEMA = input.bool( defval=false, title="trading EMA", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosAC = AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA)
iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosAC == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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)