Uma estratégia de rastreamento automático baseada em SMA triplo


Data de criação: 2024-01-26 15:05:58 última modificação: 2024-01-26 15:05:58
cópia: 1 Cliques: 640
1
focar em
1617
Seguidores

Uma estratégia de rastreamento automático baseada em SMA triplo

Visão geral

A estratégia de triplo SMA é uma estratégia de determinação de tendências e entradas com base em médias móveis simples de três períodos diferentes. Ela pode acompanhar automaticamente a tendência e usar a reversão na tendência para aumentar a posição.

Princípio da estratégia

A estratégia usa três diferentes períodos de SMA como principais indicadores de determinação de tendências, incluindo 200 ciclos, 400 ciclos e 600 ciclos de SMA. O preço é considerado uma tendência ascendente quando está acima dos três SMAs, e vice-versa, uma tendência de queda.

Como indicador de entradas, a estratégia combina o uso de preços de fechamento com osciladores de StochClose. O indicador de StochClose é usado para determinar se há excesso ou sobrevenda. O indicador de StochClose é usado para determinar se há excesso ou sobrevenda quando o StochClose está acima de 95 e abaixo de 5.

O padrão de stop loss é quando o preço toca o SMA mais lento.

A estratégia pode ser adicionada, com um máximo de adição de 10 vezes. E tem três paradas de diferentes proporções, respectivamente de 1%, 2% e 6%.

Análise de vantagens

A maior vantagem da estratégia de SMA triplo é que, através da combinação de três diferentes períodos de SMA, é possível determinar melhor a direção e a força da tendência. Tem uma maior capacidade de filtrar falsos sinais do que um único SMA.

Além disso, em combinação com o indicador StochClose para determinar se há sobrecompra ou sobrevenda, é possível evitar entradas perto do ponto de reversão da tendência, reduzindo assim as entradas erradas.

O padrão de parada é simples e direto, usando o SMA de menor ciclo como linha de parada, para evitar o máximo de parada prematura.

A permissão de uma maior posição também permite que a estratégia siga a tendência para obter lucro.

Análise de Riscos

O principal risco desta estratégia é que os três SMAs podem não ser capazes de filtrar completamente todos os falsos sinais, podendo causar prejuízos se a tendência não for formada novamente após a ruptura. Isso geralmente ocorre perto da resistência de suporte importante.

Além disso, o próprio indicador de StochClose também pode produzir sinais errados, resultando em entradas inadequadas. Isso geralmente ocorre entre oscilações de preços.

Para reduzir esses riscos, pode-se ajustar adequadamente a periodicidade do SMA; ou adicionar outros indicadores para o julgamento do conjunto, como KDJ, MACD, etc., para garantir a qualidade do sinal de entrada.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Aumentar ou ajustar o número de ciclos do SMA para encontrar um parâmetro de ciclo mais adequado para uma variedade específica

  2. Adicionar outros indicadores para julgamento de conjuntos, como KDJ, MACD, etc., para melhorar a qualidade das entradas

  3. Otimização do Stop Loss Standard para melhor adaptá-lo à amplitude de flutuação do mercado

  4. Optimizar a frequência e a proporção de adições para encontrar estratégias de adição mais adequadas

  5. Testar diferentes variedades de parâmetros para que os parâmetros da estratégia sejam totalmente adaptados a mais variedades

Resumir

A estratégia de SMA triplo é, em geral, uma estratégia de acompanhamento de tendências muito prática. Aplicando uma combinação de três períodos diferentes de SMA e indicadores StochClose, ela permite um melhor julgamento de tendências, evitando sinais errados. Ao mesmo tempo, permite uma posição apropriada, permitindo que a tendência seja sempre acompanhada. Com ajustes e otimização de parâmetros, a estratégia pode se tornar uma robusta máquina de acompanhamento de tendências.

Código-fonte da estratégia
/*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=4
strategy(title="Tripla Sma with entries based on sma price closes ", shorttitle="TRIPLE SMA STRATEGY", overlay=true) ////resolution=""
len = input(200, minval=1, title="sma 1 length")
len1 = input(400, minval=1, title="sma 2 length")
len2 = input(600, minval=1, title="sma 3 length")
src = input(close, title="Source")
////////////////////////////////////////////
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

up = smma > smma [1]
down =smma < smma[1]
mycolor = up ? #64b5f6 : down ? #d32f2f : na
fastma = sma(hl2, 1)

fastplot = plot(fastma, color=#000000, transp=100, title='sma on candle')
slowplot = plot(smma, color=mycolor, transp=55, title='sma1')

////////////////////////////////////////////
smma1 = 0.0
smma1 := na(smma1[1]) ? sma(src, len1) : (smma1[1] * (len1 - 1) + src) / len1

up2 = smma1 > smma1 [1]
down2 =smma1 < smma1[1]

mycolor2 = up2 ? #64b5f6 : down2 ? #d32f2f : na
slowplot2 = plot(smma1, color=mycolor2, transp=45, title='sma2')

////////////////////////////////////////////
smma2 = 0.0
smma2 := na(smma2[1]) ? sma(src, len2) : (smma2[1] * (len2 - 1) + src) / len2

up3 = smma2 > smma2 [1]
down3 =smma2 < smma2[1]

mycolor3 = up3 ? #64b5f6 : down3 ? #d32f2f : na
slowplot3 = plot(smma2, color=mycolor3, transp=35, title='sma3')

////////////////////////////////////////////////////////////////////////////////////////
//Fill gaps
fillData = smma > fastma
fillData2 = smma < fastma

fillDtat = smma1 > smma
fillDtat2 = smma1 < smma

fillDat = smma2 > smma1
fillDat2 = smma2 < smma1


fillCol1 = fillData ? #ef5350 : fillData2 ? #64b5f6 : na
fillCol2 = fillDtat ? #ef5350 : fillDtat2 ? #64b5f6 : na
fillCol3 = fillDat ? #ef5350 : fillDat2 ? #64b5f6 : na


fill(slowplot, fastplot, color=fillCol1, transp=90, title="sma1 fill")
fill(slowplot, slowplot2, color=fillCol2, transp=80, title="sma2 fill")
fill(slowplot2, slowplot3, color=fillCol3, transp=60, title="sma3 fill")

uc = (close > smma) and (close > smma1)
dc = (close < smma) and (close < smma1)

barColor = uc ? #64b5f6 : dc ? #e91e63 : #b2b5be
barcolor(color=barColor)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//StochClose from @trendinvestpro 
periods = input(50, minval=1, title="length for the oscillator")
smooth = input(5, minval=1, title="oscillator smoothing")
hhc=highest(close,periods)
llc=lowest(close,periods)
StochClose = sma((close-llc)/(hhc-llc)*100, smooth)

shortline = input(95, minval=0, title="signal when oscillator crosses above")
longline = input(5, minval=0, title="signal when oscillator crosses below")

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
longs = close > smma2
shorts = close < smma2



long = longs == true and crossunder(StochClose, longline)
short = shorts == true and crossover(StochClose, shortline)

stoplong = close < smma and close < smma1 and close < smma2
stopshort = close > smma and close > smma1 and close > smma2

p1 = strategy.position_avg_price / 100 / syminfo.mintick

maxx = input(2500, title="max orders filled on a day", minval=0)
takeprofit1 = input(1, title="take profit level 1", minval=0)
takeprofit2 = input(2, title="take profit level 2", minval=0)
takeprofit3 = input(6, title="take profit level 3", minval=0)

takeprofitqt1 = input(30, title="take profit quantity first", minval=0)
takeprofitqt2 = input(30, title="take profit quantity second", minval=0)
takeprofitqt3 = input(30, title="take profit quantity third", minval=0)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////Strategy entries/////////////////////////////////////////////////////////////////////////////////////////
// strategy.risk.max_intraday_filled_orders(maxx)
strategy.entry("long", strategy.long, when=long)
strategy.exit("tpl1", "long", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "long", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "long", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("long", when=stoplong == true)


strategy.entry("short", strategy.short, when=short)
strategy.exit("tpl1", "short", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "short", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "short", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("short", when=stopshort == true)