A estratégia de seguimento de tendências da EMA tripla é uma estratégia muito adequada para seguir as tendências do mercado.
A vantagem desta estratégia é que pode reduzir sinais falsos e garantir força de tendência suficiente antes de entrar em uma posição. Ao mesmo tempo, possui um sistema de stop loss adaptativo que pode trail stop com base na volatilidade do mercado, alcançando assim uma melhor gestão de risco.
A estratégia usa EMAs de 7-, 14 e 21 períodos como indicadores de sinal de entrada. A lógica específica é que quando o preço cruza acima de todas as três EMAs ao mesmo tempo, vá longo; quando o preço cruza abaixo de todas as três EMAs ao mesmo tempo, vá curto.
Esta concepção pode reduzir os falsos sinais e garantir que a tendência seja suficientemente clara antes de entrar.
A estratégia usa um sistema de stop loss adaptativo baseado em ATR e drawdown máximo. Ele calcula a volatilidade do preço em tempo real e define linhas de stop loss em conformidade. Especificamente, ele calcula um certo múltiplo de ATR como a zona tampão de stop loss.
Durante uma tendência de alta, a linha de stop loss se moverá para cima com novas altas, com bom efeito de perseguição. Quando o preço cai de volta ao ponto mais baixo da zona de amortização, a linha de stop loss será acionada para fechar posições. Isso pode controlar o risco de stop loss de acordo com as condições do mercado.
A estratégia usa um método de lucro porcentual fixo. Após a abertura de uma posição, uma linha de lucro será definida em uma certa porcentagem acima do preço de entrada. Quando o preço sobe para a linha de lucro, a posição será fechada para obter lucros.
O benefício deste percentual fixo de lucro é que permite predefinir um nível de lucro alvo que satisfaça a saída uma vez alcançada.
Pode evitar a abertura cega de posições em mercados voláteis, combinando com indicadores de julgamento de tendência; também pode usar métodos de movimentação de lucro ou proporção de lucro para tornar os métodos de lucro mais flexíveis.
A estratégia pode também ser otimizada nos seguintes aspectos:
Use mais indicadores para determinar o momento de entrada, como MACD, KD, etc., para evitar ficar preso em mercados voláteis.
Tente mudar o método de lucro, ou a proporção de lucro, para tornar os métodos de lucro mais flexíveis.
Adicionar um mecanismo descendente ao método de stop loss, permitindo rastrear pontos mais baixos novamente quando o preço cai novamente, controlando assim o risco.
Ajustar os parâmetros do período EMA com base nas características dos diferentes produtos, otimizando o julgamento da tendência.
Adicionar módulo de dimensionamento de posição, pode ajustar por tamanho do comércio com base na relação de utilização de fundos.
A Triple EMA Trend Following Strategy é uma estratégia muito prática de seguir tendências. Tem fortes capacidades de julgamento de tendências, além de ter mecanismos adaptativos de take profit e stop loss que podem gerenciar automaticamente ordens.
/*backtest start: 2023-01-01 00:00:00 end: 2023-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" ema_1 = ema(close, input(7)) ema_2 = ema(close, input(12)) ema_3 = ema(close, input(21)) Take_profit= ((input (4))/100) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3) closeLong = close > longTakeProfit or crossunder(close, vStop) //Entry strategy.entry(id="long", long = true, when = go_long and window()) //Exit strategy.close("long", when = closeLong and window()) plot(vStop,"Vstop", color.black, linewidth=2) plot(ema_1,"EMA Short", color.green, linewidth=1) plot(ema_2,"EMA Mid", color.purple, linewidth=1) plot(ema_3,"EMA Long", color.red, linewidth=1)