Tendência gradual da média móvel de acordo com a estratégia

Autora:ChaoZhang, Data: 2023-10-26 17:08:43
Tags:

img

Resumo

A Estratégia Gradual Moving Average Following Trend utiliza múltiplas médias móveis de diferentes períodos para capturar mudanças na tendência de preços, combinadas com indicadores de oscilador para determinar áreas de sobrecompra e sobrevenda, formando uma tendência de baixa compra e alta venda após a estratégia de negociação. Esta estratégia é adequada para posições de detenção de médio a longo prazo para rastrear tendências significativas de mercados.

Estratégia lógica

A estratégia emprega vários conjuntos de médias móveis, como MAs de 18-, 26-, 36 períodos, para capturar tendências de preços. Quando MAs mais curtos cruzam acima de MAs mais longos, ele sinaliza uma tendência ascendente, assim indo longo. Quando MAs mais curtos cruzam abaixo de MAs mais longos, ele indica uma tendência descendente, assim indo curto.

Enquanto isso, indicadores de oscilador como MACD, RSI, EFI são usados para identificar condições de sobrecompra e sobrevenda. Por exemplo, a mudança do MACD de negativo para positivo sugere ir longo, enquanto a mudança de positivo para negativo sugere ir curto.

Regras de entrada:

Longo: cruzamento de MA curto para cima MA longo e MACD>0 e RSI rebote de mínimos e EFI<0

Curto: cruzamento de MA curto para baixo MA longo E MACD<0 E RSI retrocede das altas E EFI>0

Regras de stop loss:

Long SL: EFI acima do limiar E margens de preço abaixo do MA especificado

SL curto: EFI abaixo do limiar E margens de preços acima da MA especificada

Vantagens

  1. Vários MAs captam grandes pontos de mudança de tendência.

  2. As combinações de osciladores evitam perseguir altos e vender baixos.

  3. As regras SL consideram as tendências e o fluxo de caixa, controlando efetivamente os riscos.

  4. Parâmetros otimizados através de um extenso backtesting, adaptável à maioria dos ambientes de mercado.

  5. Frequência de negociação média, sinais estáveis, adequados para acompanhamento de tendências a longo prazo.

Riscos

  1. Os acidentes súbitos podem invalidar o SL, o alcance do SL deve ser alargado.

  2. Muitos sinais durante os mercados variáveis, os parâmetros devem ser ajustados.

  3. Aguardar muito tempo pode amplificar as perdas, MAs mais curtas podem levar SL mais rápido.

  4. Superajuste de testes, resultados reais pendentes de validação.

Melhorias

  1. Otimizar os parâmetros para obter retornos mais elevados e uma frequência adequada.

  2. Adicionar algoritmos de aprendizagem de máquina para otimizar dinamicamente parâmetros.

  3. Construir um mecanismo SL adaptável baseado nas diferentes condições do mercado.

  4. Adicione mais filtros para determinar melhores sinais de entrada.

  5. Incorporar estratégias de dimensionamento de posições para controlar o tamanho da aposta única.

Conclusão

A Estratégia Gradual Moving Average Trend Following efetivamente rastreia as principais tendências identificando a direção da tendência com múltiplos MA e entrando em sinais filtrados, alcançando lucros estáveis através de detenção de longo prazo.


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 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/
// © murdocksilva

//@version=5

strategy("Daily_Mid Term_Consulting BOLT")

//calculo longuitud
longuitud = input(58, title= "longitud_sma")


px = ta.sma(close, 1)
px2 = ta.sma(low, 1)

Length1 = input.int(18)
Length2 = input.int(18)
Length3 = input.int(26)
Length4 = input.int(36)
Length5 = input.int(78)
Length6 = input.int(1)
Length7 = input.int(1500)
Length8 = input.int(58)
Length9 = input.int(3000)
Length10 = input.int(2)
Length11 = input.int(14)
ma1 = ta.sma(low, Length1)
ma2 = ta.sma(high, Length2)
ma3 = ta.sma(close, Length3)
ma4 = ta.sma(close, Length4)
ma5 = ta.sma(close, Length5)
ma6 = ta.sma(close, Length6)
ma7 = ta.sma(close, Length7)
ma8 = ta.sma(close, Length8)
ma9 = ta.sma(close, Length9)
ma10 = ta.sma(close, Length10)
ma11 = ta.sma(close, Length11)

// calculo EFI
efi = (close[1]-close) * volume / 1000
efi_indicador = (efi[1] + efi) / 2

//Variable  RSI - calculo desv estandar
b = (px-ma10)*(px-ma10)
b2 = (px[1]-ma10[1])*(px[1]-ma10[1])
c = b + b2
c2 = c / 2
desv = math.sqrt(c2)/10

//calculo MACD
macd = ma4 - ma5

//calculo RSI
rsi = ta.rsi(close, 9)

// calculo Divergencia
ma = ta.sma(close, longuitud)
dist = close - ma
porcentaje = dist * 100 / close
ma_dista = ta.sma(porcentaje, 333)

//condición de entrada y salida long
long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd
clong = efi_indicador > 22000 and px < ma8
strategy.entry("BUY", strategy.long, when = long)
strategy.close("BUY", when = clong)

//condición de entrada y salida short
short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd 
cshort =  efi_indicador < 14000 and px > ma8 and ma11 > desv
strategy.entry("SELL", strategy.short, when = short)
strategy.close("SELL", when = cshort)

//SL Y TP
//strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)
//strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)

// GRAFICA smas
plot(ma1, color=color.new(color.orange, 0))
plot(ma2, color=color.new(color.orange, 0))
plot(ma3, color=color.new(color.orange, 0))
plot(ma4, color=color.new(color.orange, 0))
plot(ma5, color=color.new(color.orange, 0))
plot(ma6, color=color.new(color.green, 0))
plot(ma7, color=color.new(color.orange, 0))
plot(ma8, color=color.new(color.orange, 0))
plot(ma9, color=color.new(color.orange, 0))
//GRAFICA MACD
plot(macd, color=color.new(color.red, 0), style = plot.style_columns)
//GRAFICA DIVERGENCIA
plot(porcentaje, style = plot.style_columns)
//GRAFICA MA DIVERGENCIA
plot(ma_dista, color=color.new(color.white, 0))
//GRAFICA MA DIVERGENCIA
plot(desv, color=color.new(color.blue, 0))
//GRAFICA EFI
plot(efi_indicador, color=color.new(color.yellow, 0))
// GRAFICA RSI
l1 = hline(70, color=color.new(color.green, 0))
l2 = hline(30, color=color.new(color.green, 0))
plot(rsi, color=color.new(color.white, 0))




//prueba 1 stop loss and take profit
//sl = 0.05
//tp = 0.1    
//calculo de precio para sl y tp
//longstop=strategy.position_avg_price*(1-sl)
//longprofit=strategy.position_avg_price*(1+tp)

//shortstop=strategy.position_avg_price*(1+sl)
//shortprofit=strategy.position_avg_price*(1-tp)

//if (long)
  //  strategy.exit("BUY", strategy.long)

//sl and tp  long|short
//if strategy.entry("BUY", strategy.long)

//if strategy.position_avg_price > 0
//strategy.exit("BUY", limit = longprofit, stop = longstop)

//if strategy.position_avg_price < 0
//strategy.exit("SELL", limit = shortprofit, stop=shortstop)

Mais.