
Esta estratégia combina a média móvel binária e a média de três Williams para formar um sistema integrado de rastreamento de tendências e geração de sinais de reversão de tendências. Ela possui excelente eficiência de manutenção de posição e pode filtrar eficazmente os sinais falsos.
A estratégia é composta por duas estratégias principais:
O Double Exponential Moving Average (DEMA) combina a capacidade de acompanhamento de tendências da média móvel de um indicador e a latência da média móvel de dois indicadores. Quando os preços sobem, ele pode fazer mais rapidamente; quando os preços caem, ele também pode ser mais rápido.
O indicador é composto por longas, médias e curtas linhas. Utiliza a interseção de diferentes médias periódicas para avaliar as mudanças de tendência e produzir um sinal de negociação.
O sinal de negociação desta estratégia é o resultado das duas sub-estratégias acima. Isso significa que a estratégia só emitirá ordens quando as duas sub-estratégias emitirem sinais ao mesmo tempo. Isso pode efetivamente reduzir os falsos sinais e aumentar a estabilidade da posição.
A maior vantagem desta estratégia é que pode efetivamente filtrar falsos sinais, o que é determinado pela sua estrutura de estratégia. Embora a média móvel dupla e a média de Williams tenham suas desvantagens, a combinação das duas pode exercer suas vantagens e compensar-se mutuamente. Isso permite que a estratégia realize uma posição de alta eficiência em situações de tendência, enquanto pode parar os prejuízos em situações de liquidação.
Além disso, o espaço de otimização dos parâmetros da estratégia é grande e pode ser adaptado para as características do mercado de diferentes variedades e períodos, ajustando os parâmetros das médias móveis duplas e os parâmetros das médias de três barras de Williams.
O principal risco desta estratégia é que o ponto de parada pode ser ultrapassado, causando grandes perdas quando a situação está em forte volatilidade. Este é um problema comum com a estratégia de média móvel. Além disso, em situações de turbulência, a estratégia pode abrir posições de baixa frequentemente, aumentando a perda de custos de negociação.
Para controlar esses riscos, recomenda-se a utilização de métodos de análise Walk Forward para otimizar os parâmetros e definir um ponto de parada razoável. Ao mesmo tempo, pode-se introduzir indicadores adicionais para avaliar o estado da situação e suspender a negociação em situações de turbulência.
A estratégia tem algumas melhorias:
Ajustar os parâmetros das médias móveis duplas para diferentes variedades e períodos.
Ajustar o ciclo de três linhas da média de Williams para a frequência de flutuação do mercado.
Aumentar as condições de abertura de posições, filtrando os sinais de negociação em determinadas fases da situação. Por exemplo, não negocie em situações de forte volatilidade.
Aumentar os indicadores de stop loss para controlar os prejuízos. Os métodos de rastreamento de stop loss e stop loss médio podem ser experimentados.
Introdução de parâmetros de otimização automática de algoritmos de aprendizagem de máquina.
Esta estratégia, através da combinação dos benefícios da média móvel dupla e da média de Williams, permite a filtragem eficaz dos sinais de negociação, reduzindo os falsos sinais e aumentando a eficiência da posição. Pode obter um melhor desempenho através da otimização de parâmetros de acordo com a situação do mercado.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 21/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 calculates 3 Moving Averages for default values of
// 13, 8 and 5 days, with displacement 8, 5 and 3 days: Median Price (High+Low/2).
// The most popular method of interpreting a moving average is to compare
// the relationship between a moving average of the security's price with
// the security's price itself (or between several moving averages).
//
//
// 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
BWA3Lines(LLength,MLength,SLength,LOffset,MOffset,SOffset) =>
pos = 0.0
xLSma = ta.sma(hl2, LLength)[LOffset]
xMSma = ta.sma(hl2, MLength)[MOffset]
xSSma = ta.sma(hl2, SLength)[SOffset]
pos := close < xSSma and xSSma < xMSma and xMSma < xLSma ? -1 :
close > xSSma and xSSma > xMSma and xMSma > xLSma ? 1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Bill Williams Averages. 3Lines', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ 3Lines ═════●'
LLength = input.int(13, minval=1, group=I2)
MLength = input.int(8,minval=1, group=I2)
SLength = input.int(5,minval=1, group=I2)
LOffset = input.int(8,minval=1, group=I2)
MOffset = input.int(5,minval=1, group=I2)
SOffset = input.int(3,minval=1, 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)
prePosBWA3Lines = BWA3Lines(LLength,MLength,SLength,LOffset,MOffset,SOffset)
iff_1 = posEMA20 == -1 and prePosBWA3Lines == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBWA3Lines == 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)