Estratégia de negociação quantitativa baseada no cruzamento de preços com a SMA

Autora:ChaoZhang, Data: 2024-02-22 17:34:09
Tags:

img

Resumo

A estratégia é chamada de Quantitative Trading Strategy Based on Price Crossover with SMA. Gerar sinais de negociação calculadores de SMAs de diferentes períodos e rastreamento de crossover de preços com SMAs. Quando o preço quebra SMA para cima, ele desencadeia sinal de compra. Quando o preço quebra SMA para baixo, ele desencadeia sinal de venda.

Estratégia lógica

A lógica central desta estratégia é rastrear o cruzamento de preços com a média móvel simples de 21 dias (SMA).

Especificamente, a estratégia solicita o preço de fechamento dentro de um intervalo de datas determinado e calcula diferentes SMAs com base em períodos de entrada.

Junto com o cálculo de SMAs e determinação de crossovers, a estratégia também rastreia a posição atual.

Análise das vantagens

A maior vantagem desta estratégia é ser simples e fácil de entender e implementar. O SMA é um indicador técnico comumente usado e o crossover do SMA é um dos sinais de negociação mais comuns.

Outra vantagem é que essa estratégia pode ser otimizada ajustando os parâmetros da SMA. Por exemplo, podemos testar diferentes combinações de períodos de SMA para encontrar o ideal para ações específicas. Além disso, a estratégia pode ser melhorada adicionando outros indicadores para confirmação e otimização.

Riscos e soluções

O maior risco desta estratégia é que as estratégias baseadas em indicadores tendem a gerar sinais falsos excessivos.

As soluções comuns incluem definir stop loss, ajustar parâmetros ou adicionar condições de filtro. Por exemplo, podemos definir a taxa de perda máxima para limitar o risco, ajustar os períodos de SMA para encontrar parâmetros mais estáveis ou usar outros indicadores para filtrar alguns sinais de negociação.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste e selecione combinações óptimas de parâmetros SMA e teste de volta diferentes comprimentos SMA para encontrar os melhores períodos.

  2. Adicionar outros indicadores para confirmação de sinal de filtro, como RSI, MACD etc. Isso ajuda a filtrar sinais falsos.

  3. Incorporar uma lógica de stop loss, definindo a perda máxima tolerável ou trailing stop para melhor controlar os riscos.

  4. Otimize o tempo de entrada. Considere entrar em torno de grandes breakouts em vez de seguir estritamente o crossover da SMA.

  5. Teste estratégias compostas. Combine-as com outros tipos de estratégias, como seguir tendências.

Conclusão

A estratégia realiza negociação automatizada com sinais crossover SMA simples. Os prós estão sendo fáceis de entender e implementar. Os contras são sinais excessivos e propensos a whipssaws. Podemos melhorá-lo por ajuste de parâmetros, adição de filtros, stop loss, etc. A estratégia nos fornece uma estrutura básica. Podemos enriquecê-la incorporando mais componentes.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true)

// Define start and end year inputs
start_year = input.int(2022, title="Start Year")
end_year = input.int(2022, title="End Year")

// Define start and end month inputs
start_month = input.int(1, title="Start Month", minval=1, maxval=12)
end_month = input.int(12, title="End Month", minval=1, maxval=12)

// Define SMA length inputs
sma_length = input.int(21, title="SMA Length")
sma_length_50 = input.int(50, title="50 SMA Length")
sma_length_200 = input.int(200, title="200 SMA Length")

// Filter data within the specified date range
filter_condition = true
filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on)

// Define SMAs using the input lengths
sma = ta.sma(filtered_close, sma_length)
sma_50 = ta.sma(filtered_close, sma_length_50)
sma_200 = ta.sma(filtered_close, sma_length_200)

// Initialize position
var bool in_position = false

// Condition for a price cross above SMA within the date range
cross_above = filter_condition and ta.crossover(filtered_close, sma)

// Condition for a price cross below SMA within the date range
cross_below = filter_condition and ta.crossunder(filtered_close, sma)

// Buy condition
if cross_above
    in_position := true

// Sell condition
if cross_below
    in_position := false

// Strategy entry and exit
if cross_above
    strategy.entry("Buy", strategy.long)
if cross_below
    strategy.close("Buy")

// Plot the SMAs on the chart
plot(sma, color=color.blue, title="21 SMA")
plot(sma_50, color=color.red, title="50 SMA")
plot(sma_200, color=color.orange, title="200 SMA")

// Plot the Buy and Sell signals with "tiny" size
plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal")
plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")


Mais.