Estratégia de Momentum Simples Baseada em SMA, EMA e Volume


Data de criação: 2023-12-08 11:15:30 última modificação: 2023-12-08 11:15:30
cópia: 8 Cliques: 709
1
focar em
1621
Seguidores

Estratégia de Momentum Simples Baseada em SMA, EMA e Volume

Visão geral

A estratégia é uma estratégia de dinâmica diária simples que não é um binário. Utiliza SMA, EMA e indicadores de volume de transação para tentar entrar no mercado no momento ideal, ou seja, quando o preço e o binário aumentam simultaneamente.

Princípio da estratégia

A lógica de geração de sinais de Einty de negociação para esta estratégia é: simultaneamente satisfazer o indicador SMA acima do indicador EMA e 3 linhas K consecutivas ou 4 linhas K consecutivas para formar uma tendência ascendente, e o preço mínimo da linha K intermediária é superior ao preço de abertura da linha K ascendente para gerar o sinal de entrada.

A lógica de geração do sinal de saída é: quando o indicador SMA atravessa o indicador EMA, o sinal de saída é gerado.

A estratégia é apenas um acréscimo, não um acréscimo. Sua lógica de entrada e saída tem uma certa capacidade de reconhecimento de tendências de alta contínua.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A lógica da estratégia é simples, fácil de entender e de implementar.

  2. A flexibilidade de ajuste de parâmetros usando indicadores técnicos comuns, como SMA, EMA e volume de transação;

  3. A capacidade de reconhecer tendências de alta persistente e aproveitar algumas oportunidades dentro delas.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. A falta de identificação de mercados de baixa ou de liquidação pode levar a um retorno maior;

  2. Não aproveitar as oportunidades de queda, não se proteger contra a tendência de recessão e pode perder melhores oportunidades de lucro;

  3. Os indicadores de volume de transação não são eficazes para dados de alta frequência e precisam de ajustes nos parâmetros;

  4. A paralisação pode ser usada para controlar o risco.

Direção de otimização

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

  1. Aumentar as oportunidades de negociação de balcão aberto e de negociação bidirecional de balcão aberto, aproveitando a arbitragem de tendências de recessão;

  2. A utilização de estratégias de combinação de indicadores mais avançados, como o MACD e o RSI, para melhorar a capacidade de discernimento de tendências;

  3. Otimizar a lógica de stop loss para reduzir o risco de retração;

  4. Ajustar os parâmetros, testar dados de diferentes períodos e procurar a melhor combinação de parâmetros.

Resumir

A estratégia, em geral, é uma estratégia de acompanhamento de tendências muito simples, que determina o momento de entrada por meio de SMA, EMA e volume de transação. Sua vantagem é que é simples e fácil de implementar, adequado para o aprendizado de entrada, mas não pode identificar tendências de equilíbrio e queda, existindo um certo risco.

Código-fonte da estratégia
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-02 00:00:00
period: 2h
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/
// © slip_stream

//@version=4

// Simple strategy for riding the momentum and optimising the timings of truer/longer price moves upwards for an long posistions on a daily basis (can be used, but with less effect
// on other time frames. Volume settings would have to be adjusted by the user accordingly. (short positions are not used).
// This strategy has default settings of a short(er) SMA of 10, a long(er) EMA of 20, and Volume trigger of 10 units and above. All these settings can be changed by the user
// using the GUI settings and not having to change the script.

// The strategy will only open a long position when there is a clear indication that price momentum is upwards through the SMA moving and remaining above the EMA (mandatory) and price period indicators
// of either 1) a standard 3 bar movement upwards, 2) a standard but "aggressive" 3 or 4 bar play where the low of the middle resting bars can be equal to or higher than (i.e. not
// the more standard low of about half) of the opening of the ignition bar. The "aggression" of the 3/4 bar play was done in order to counteract the conservatisme of having a mandatory
// SMA remaining higher than the EMA (this would have to be changed in the script by the user if they want to optimise to their own specifications. However, be warned, all programmatic
// settings for the maximum acceptable low of the middle resting bars runs a risk of ignoring good entry points due to the low being minutely e.g. 0.01%, lower than the user defined setting)


strategy(title = "Simple Momentum Strategy Based on SMA, EMA and Volume", overlay = true, pyramiding = 1, initial_capital = 100000, currency = currency.USD)


// Obtain inputs
sma_length = input(defval = 10, minval=1, type = input.integer, title = "SMA (small length)")
ema_length = input(defval = 20,minval=1, type = input.integer, title = "EMA (large length)")
volume_trigger = input(defval = 10, title = "Volume Trigger", type = input.integer)
sma_line = sma(close, sma_length)
ema_line = ema(close, ema_length)


// plot SMA and EMA lines with a cross for when they intersect
plot(sma_line, color = #8b0000, title = "SMA")
plot(ema_line, color = #e3d024, title = "EMA")
plot(cross(sma_line, ema_line) ? sma_line : na, style = plot.style_cross, linewidth = 4, color = color.white)


// Create variables
// variables to check if trade should be entered
//three consecutive bar bar moves upwards and volume of at least one bar is more than 10
enter_trade_3_bar_up = sma_line > ema_line and close[1] >= close [2] and close[3] >= close[4] and close[2] >= close[3] and (volume[1] >= volume_trigger or volume[2] >= volume_trigger or volume[3] >= volume_trigger)
// aggressive three bar play that ensures the low of the middle bar is equal to or greater than the open of the instigator bar. Volume is not taken into consideration (i.e. aggressive/risky)
enter_3_bar_play = sma_line > ema_line and close[1] > close[3] and low[2] >= open[3]
// aggressive four bar play similar to the 3 bar play above
enter_4_bar_play = sma_line > ema_line and close[1] > close[4] and low[2] >= open[4]
trade_entry_criteria = enter_trade_3_bar_up or enter_3_bar_play or enter_4_bar_play // has one of the trade entry criterias returned true?

// exit criteria for the trade: when the sma line goes under the ema line
trade_exit_criteria = crossunder (sma_line, ema_line)


if (year >= 2019)
    strategy.entry(id = "long", long = true, qty = 1, when = trade_entry_criteria)
    strategy.close(id = "long", when = trade_exit_criteria, qty = 1)
    // for when you want to brute force close all open positions: strategy.close_all (when = trade_exit_criteria)