
A estratégia de acompanhamento de tendências de três EMAs é uma estratégia muito adequada para acompanhar as tendências do mercado. Ela usa três EMAs de diferentes períodos como sinais de construção de posição, criando posições de overhead ou de balcão quando há uma confirmação de tendência suficiente.
A vantagem da estratégia é que ela reduz os falsos sinais e garante que a tendência esteja forte para entrar novamente. Ao mesmo tempo, ela possui um sistema de parada de perda adaptável, que pode acompanhar a parada de perda de acordo com a volatilidade do mercado, o que permite um melhor efeito de gerenciamento de risco.
A estratégia usa três EMAs de 7, 14 e 21 ciclos como indicadores de sinais de posição. A lógica específica é fazer mais quando o preço atravessa os três EMAs ao mesmo tempo; fazer menos quando o preço atravessa os três EMAs ao mesmo tempo.
Este design pode reduzir os falsos sinais e garantir que a tendência seja clara o suficiente para entrar. Ao mesmo tempo, os três ciclos EMA são configurados adequadamente para capturar a ocorrência de tendências no mercado.
A estratégia usa um sistema de parada de perda adaptável baseado no ATR e na retração máxima. Calcula a taxa de flutuação dos preços em tempo real e, com base nisso, define uma linha de parada.
Durante a ascensão, a linha de parada de perdas se move com a nova alta alta, com um bom efeito de acompanhamento. Quando o preço retorna ao ponto baixo da zona de amortecimento, a linha de parada de perdas será ativada, a parada de liquidação. Isso pode controlar o risco de parada de perdas de acordo com a situação específica do mercado.
A estratégia usa um método de parada de proporção fixa. Depois de abrir uma posição, uma linha de parada é definida em uma proporção maior do que o preço de entrada. Quando o preço atinge a linha de parada, o lucro da posição é ativado.
O benefício deste stop-loss de proporção fixa é que você pode prever o lucro alvo e, quando atingido, satisfazer a saída. Ao mesmo tempo, evita o risco de que o preço volte a cair. O stop-loss pode ser ajustado conforme a necessidade.
Pode-se combinar indicadores de tendências para evitar posições cegas em situações de turbulência; ou pode-se usar métodos como stop-loss móvel ou stop loss ratio para tornar o stop-loss mais flexível. No geral, ainda é necessário um julgamento manual para acompanhar a aplicação da estratégia.
A estratégia também pode ser melhorada nos seguintes aspectos:
A utilização de mais indicadores, como MACD, KD e outros, para evitar ser pego em situações de turbulência.
Tente mover o travão, ou use o travão de forma mais flexível.
A adição de um mecanismo de rastreamento para baixo no modo de stop loss permite que o preço volte a rastrear o ponto mais baixo se o preço cair novamente, controlando assim o risco.
Ajustar os parâmetros do ciclo EMA de acordo com as características de diferentes variedades para otimizar o julgamento de tendências.
Adição de um módulo de gerenciamento de posições que permite ajustar as posições individuais de acordo com a taxa de utilização de fundos.
A estratégia de acompanhamento de tendências do EMA triplo é uma estratégia de acompanhamento de tendências muito prática. Ela possui uma forte capacidade de julgamento de tendências, além de um mecanismo de parada e perda auto-adaptável, que pode gerenciar automaticamente os pedidos. Do ponto de vista da otimização, o sistema de parada e perda pode ser aperfeiçoado ainda mais, permitindo que ele seja ajustado à situação do mercado em tempo real.
/*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)