A estratégia quantitativa transversal da EMA

Autora:ChaoZhang, Data: 2024-03-08 14:18:21
Tags:

img

Resumo

Esta estratégia é baseada nos sinais cruzados de duas médias móveis exponenciais (EMA) para negociação. Quando a EMA de curto prazo cruza acima da EMA de longo prazo, abre uma posição longa; quando a EMA de curto prazo cruza abaixo da EMA de longo prazo, fecha a posição. A estratégia também introduz um mecanismo de stop-loss e um filtro de tempo de negociação para controlar riscos e otimizar o desempenho da estratégia.

Princípios de estratégia

Esta estratégia usa duas EMAs com períodos diferentes como base para o julgamento da tendência. Em comparação com as médias móveis simples (SMAs), as EMAs podem responder às mudanças de preço mais rapidamente e ter uma distribuição de peso mais razoável. Quando a EMA de curto prazo cruza acima da EMA de longo prazo, ela indica que o preço pode formar uma tendência ascendente e uma posição longa é aberta; inversamente, quando a EMA de curto prazo cruza abaixo da EMA de longo prazo, ela indica que a tendência ascendente pode terminar e a posição é fechada.

Além dos sinais cruzados da média móvel, a estratégia também introduz um mecanismo de stop-loss. Por um lado, um stop-loss porcentual fixo é definido, ou seja, quando o preço cai mais de uma porcentagem específica em relação ao preço de abertura, a posição é fechada forçosamente para controlar as perdas; por outro lado, também é possível optar por fechar a posição quando o preço de fechamento é menor que o preço de fechamento do candelabro anterior. Estes dois métodos de stop-loss podem controlar efetivamente a retirada da estratégia.

Além disso, a estratégia também introduz um filtro de tempo de negociação. Os usuários podem definir os horários de início e fim da negociação permitida por si mesmos, evitando assim a negociação durante períodos de tempo específicos (como feriados, horas não comerciais, etc.).

Análise das vantagens

  1. Simples e fáceis de usar: a lógica da estratégia é clara e utiliza apenas dois EMAs como sinais de negociação, o que é fácil de entender e implementar.

  2. Segurança de tendências: as EMAs podem responder rapidamente às alterações de preços, permitindo que a estratégia capture a formação e o término de tendências em tempo hábil, obtendo assim lucros de acompanhamento de tendências.

  3. Controlo de riscos: a introdução de um stop-loss de percentagem fixa e de um stop-loss baseado no preço de encerramento do candelabro anterior pode controlar efetivamente as perdas e os drawdowns de uma única transação.

  4. Parâmetros flexíveis: Os usuários podem ajustar parâmetros como período EMA, porcentagem de stop-loss, se usar o preço de fechamento do candelabro anterior para stop-loss, período de tempo de negociação, etc., de acordo com suas próprias necessidades, otimizando assim o desempenho da estratégia.

Análise de riscos

  1. Risco de otimização de parâmetros: O desempenho da estratégia depende da seleção de parâmetros como período EMA e porcentagem de stop-loss, e parâmetros inadequados podem levar a um desempenho de estratégia ruim.

  2. Risco de mercado: A estratégia é principalmente aplicável a mercados em tendência. Em um mercado volátil ou reversão de tendência, a negociação frequente pode levar a grandes retrações. Portanto, é necessário ajustar os parâmetros da estratégia ou parar de usar a estratégia de acordo com as condições do mercado.

  3. Risco de custos: A estratégia pode gerar um grande número de transações, aumentando assim os custos de transação.

Direcção de otimização

  1. Introduzir mais indicadores técnicos: com base nos sinais cruzados da EMA, introduzir outros indicadores técnicos, como o RSI e o MACD, para formar sinais de negociação multifatores e melhorar a precisão do julgamento da tendência.

  2. A posição de stop-loss deve ser ajustada de forma dinâmica de acordo com indicadores como a volatilidade do mercado e o ATR, controlando os riscos e minimizando o máximo possível a perda de lucros causada pelo stop-loss.

  3. Gestão de posição: ajustar dinamicamente o tamanho da posição de acordo com a força da tendência do mercado, o grau de desvio do preço da média móvel, etc., aumentar a posição quando a tendência é forte e diminuir a posição quando a tendência enfraquece ou não é clara.

  4. Optimização de aprendizagem de máquina: usar algoritmos de aprendizagem de máquina para otimizar parâmetros de estratégia e selecionar automaticamente a combinação ideal de parâmetros, melhorar os retornos da estratégia e reduzir os riscos de sobreajuste.

Conclusão

Esta estratégia quantitativa cruzada da EMA usa os sinais cruzados de duas EMAs para julgar a tendência, ao mesmo tempo em que introduz um mecanismo de stop-loss e um filtro de tempo de negociação, alcançando um bom equilíbrio entre a capacidade de rastreamento da tendência e o controle de risco. Embora a lógica da estratégia seja simples, pode obter retornos estáveis nos mercados de tendência através de otimização razoável de parâmetros e controle de risco. No futuro, a estratégia pode ser melhorada a partir de aspectos como a introdução de mais indicadores técnicos, stop-loss dinâmico, gerenciamento de posição e otimização de aprendizado de máquina, para melhorar ainda mais o desempenho e a robustez da estratégia.


/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("EMA strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close < ma2 and strategy.position_size > 0 //and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Mais.