Tendência do Sistema SMA Seguindo a Estratégia

Autora:ChaoZhang, Data: 2024-02-23 12:29:51
Tags:

img

Resumo

A estratégia é chamada de SMA System Trend Following Strategy. A ideia principal é construir sinais de negociação baseados nas linhas SMA com diferentes comprimentos de parâmetros e entrar no mercado no ponto de ruptura, com mecanismo de stop loss para controlar o risco.

Princípio da estratégia

A estratégia usa duas linhas SMA, SMA1 e SMA2. O comprimento da SMA1 é 1 e o comprimento da SMA2 é 3. Ao calcular essas duas linhas SMA, quando a SMA1 cruza acima da SMA2, um sinal de compra é gerado. Quando a SMA1 cruza abaixo da SMA2, um sinal de venda é gerado. Isso visa capturar a tendência do preço.

Especificamente, a estratégia julga a relação de cruzamento entre as linhas SMA através das funções ta.crossover e ta.crossunder, gerando as variáveis booleanas longCondition e shortCondition. Quando a longCondition é verdadeira, um sinal de compra é gerado. Quando a shortCondition é verdadeira, um sinal de venda é gerado. A estratégia entrará no mercado no ponto de sinal e atualizará as variáveis profitAccumulated e lastTradeProfit para rastrear os lucros acumulados.

Para o controle de risco, a estratégia também define um mecanismo de stop loss baseado em pontos fixos.

Análise das vantagens

A maior vantagem desta estratégia é que utiliza a capacidade de rastreamento de tendências das linhas SMA para capturar efetivamente as mudanças nas tendências de preços. Em comparação com as estratégias de linha única, as estratégias de linha dupla podem usar a relação de cruzamento entre as linhas para determinar a direção da tendência e, assim, gerar sinais de negociação. Além disso, o mecanismo de stop loss pode controlar efetivamente a perda única.

Análise de riscos

O principal risco desta estratégia é que a estratégia de média móvel tende a gerar sinais falsos. Quando o preço oscila, a linha SMA pode frequentemente cruzar, resultando em sinais de negociação desnecessários. Neste ponto, grandes perdas podem ocorrer sem stop loss efetivo.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Ajustar os parâmetros SMA para encontrar a melhor combinação de comprimentos médios móveis através de backtesting.

  2. Aumentar as condições de filtragem e definir condições de avanço do preço perto do ponto de cruzamento da média móvel para evitar falsos sinais.

  3. Podem ser testados diferentes tipos de métodos de stop loss, tais como stop loss móvel, stop loss pendente, etc.

  4. Adicionar o controlo do tamanho da posição para otimizar a eficiência da utilização do capital.

Conclusão

Em geral, esta é uma estratégia típica de tendência. Ele usa a relação de ruptura entre as linhas SMA para determinar a direção da tendência de preço e entrar no ponto de virada da tendência. Ao mesmo tempo, a estratégia tem uma função de stop loss fixa para controlar riscos. A estratégia é simples, fácil de entender, mas ainda precisa de testes e otimização aprofundados antes de fazer lucros estáveis na negociação real.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cesarpieres72

//@version=5
strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true)

// Definir las variables de las medias móviles
sma1_length = input(1, title="SMA 1 Longitud")
sma2_length = input(3, title="SMA 2 Longitud")

// Calcular las medias móviles
sma1 = ta.sma(close, sma1_length)
sma2 = ta.sma(close, sma2_length)

// Condiciones para las señales de compra y venta
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)

// Acumular las ganancias
var float profitAccumulated = 0.0
var float lastTradeProfit = na

if (longCondition)
    strategy.entry("Buy", strategy.long)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

// Mostrar las señales en el gráfico
plot(sma1, color=color.blue, title="SMA 1")
plot(sma2, color=color.red, title="SMA 2")

// Añadir stop loss
stopLossPips = input(5000, title="Stop Loss (en pips)")
stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick)
strategy.exit("SL", "Buy", stop=stopLossPrice)


Mais.