
A estratégia de traçado de três equilíbrios é uma estratégia de indicador técnico típica para acompanhar as tendências do mercado. Combina três médias móveis simples de 16 ciclos, 36 ciclos e 72 ciclos para julgar a tendência do mercado por meio de seus cruzamentos múltiplos e cruzamentos em branco, e combina as médias móveis auto-adaptáveis de Kaufman como filtros para fazer mais ou fazer menos quando a direção da tendência é mais clara.
O indicador central da estratégia são as três médias móveis simples de 16 períodos, 36 períodos e 72 períodos. Quando a média de curto período atravessa a média de longo período, indica que o mercado entrou em uma tendência de cabeça; Quando a média de curto período atravessa a média de longo período abaixo da linha, indica que o mercado entrou em uma tendência de cabeça. Por exemplo, quando a média de 16 atravessa a média de 36 e a média de 72, é um sinal de cabeça.
A média móvel adaptativa de Kaufman (KAMA) é usada como filtro para evitar sinais errados em situações de incerteza de tendência. O sinal de cruzamento de equilíbrio só é ativado e executado quando a KAMA está em modo de não aceleração ou não desaceleração (i.e., um trecho linear).
A estratégia é executada através do rastreamento do cruzamento da linha média e, quando a tendência é mais clara, a operação de fazer mais ou fazer espaço. Fazer mais é a condição de atravessar a linha média de 36 e a linha média de 72 na linha média de 16, e KAMA linear ((não acelerar); a condição de fazer espaço é atravessar a linha média de 36 e a linha média de 72 abaixo da linha média de 16, e KAMA linear ((não desacelerar).
A estratégia tem as seguintes vantagens:
A estratégia também apresenta alguns riscos:
Pode-se reduzir o risco através de um ajuste adequado dos parâmetros da linha média, do estabelecimento de restrições de stop loss ou da utilização da estratégia apenas em mercados com maior volatilidade.
A estratégia pode ser otimizada da seguinte forma:
A estratégia de movimento de cruzamento de três equilíbrios é, em geral, uma estratégia mais clássica e prática de acompanhamento de tendências. Ela julga o movimento da linha média do mercado através do cruzamento da linha média em vários períodos de tempo e filtra efetivamente parte do ruído. Pode ser usada como um dos indicadores de referência para negociação de momento.
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
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/
// © Wielkieef
//@version=5
strategy(title='Three SMA-crossover strategy [30min] ', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)
src = close
Length1 = input.int(16, title=' 1-SMA Lenght', minval=1, group='SMA')
Length2 = input.int(36, title=' 2-SMA Lenght', minval=1, group='SMA')
Length3 = input.int(72, title=' 3-SMA Lenght', minval=1, group='SMA')
SMA1 = ta.sma(close, Length1)
SMA2 = ta.sma(close, Length2)
SMA3 = ta.sma(close, Length3)
Long_ma = SMA1 > SMA2 and SMA2 > SMA3
Short_ma = SMA1 < SMA2 and SMA2 < SMA3
LengthMainSMA = input.int(100, title=' Trend SMA ', minval=1)
SMAas = ta.sma(src, LengthMainSMA)
// Powered Kaufman Adaptive Moving Average by alexgrover (modificated by Wielkieef)
lengthas = input.int(50, title=' KAMA Lenght')
sp = input.bool(true, title=' Self Powered')
er = math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas)
pow = sp ? 1 / er : 2
per = math.pow(math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas), pow)
a = 0.
a := per * src + (1 - per) * nz(a[1], src)
mad4h = 0.
a_f = a / a[1] > .999 and a / a[1] < 1.001
///.
Bar_color = close > SMAas ? color.green : Long_ma ? color.blue : Short_ma ? color.maroon : color.gray
barcolor(color=Bar_color)
long_cond = Long_ma and SMAas < close and not a_f and close > a
short_cond = Short_ma and SMAas > close and not a_f and close < a
long_stop = Short_ma and SMAas < close
short_stop = Long_ma and SMAas > close
SMA1plot = plot(SMA1, color=Bar_color, linewidth=2)
SMA2plot = plot(SMA2, color=Bar_color, linewidth=4)
SMA3plot = plot(SMA3, color=Bar_color, linewidth=2)
fill(SMA1plot,SMA3plot,title="RANGE " ,color = color.new(Bar_color, 50))
if long_cond
strategy.entry('Long', strategy.long)
if short_cond
strategy.entry('Short', strategy.short)
strategy.close_all(when=long_stop or short_stop)
//by wielkieef