A estratégia Three EMA trend following julga a direcção da tendência de preços através do cálculo de linhas EMA de diferentes períodos e segue a tendência automaticamente.
Esta estratégia calcula três linhas EMA com períodos diferentes, especificamente EMA de 10 períodos, 20 períodos e 30 períodos.
A lógica central é julgar a consistência da direção das três linhas EMA. Se todas as três linhas EMA subirem juntas, um sinal longo é gerado.
Especificamente, se ema1, ema2 e ema3 todos subir na última barra, enter_long se torna verdadeiro e um sinal longo é gerado.
Com base nos sinais longos e curtos, a estratégia abrirá posições longas e curtas correspondentes. A lógica de saída é oposta aos sinais de entrada. Se ema1, ema2 e ema3 não subirem juntos na barra atual, exit_long se torna verdadeiro e a posição longa será fechada. Se ema1, ema2 e ema3 não cairem juntos na barra atual, exit_short se torna verdadeiro e a posição curta será fechada.
Ao julgar a coerência de direcção das três linhas EMA, a tendência global pode ser determinada e seguida.
Usando três linhas EMA pode julgar a direção da tendência de forma mais confiável em comparação com uma única linha.
A EMA é mais sensível às alterações de preços e pode refletir a inversão de tendência no tempo.
A combinação de EMA de diferentes períodos leva em consideração a tendência de curto e médio prazo. EMA de 10 períodos para curto prazo, EMA de 20 e 30 períodos para tendência de médio e longo prazo.
A lógica da estratégia é simples e fácil de entender, adequada para iniciantes.
A estratégia baseia-se exclusivamente nas linhas EMA, requer menos recursos e é adequada para uma elevada concurrença.
A consistência da direção da linha EMA é necessária, mas insuficiente para o julgamento da tendência.
As linhas EMA estão atrasadas na inversão da tendência, não sendo capazes de refletir pontos de virada no tempo, o que pode causar perdas.
A EMA é sensível às variações de preços, o que pode aumentar os custos de transacção.
A estratégia é ineficaz em mercados variáveis e voláteis onde as linhas EMA flutuam com frequência.
Pode otimizar a diferença de período da EMA para reduzir sinais falsos ou adicionar outros indicadores para filtrar falhas.
Adicionar indicadores de impulso para confirmar a tendência real e identificar pontos de virada, reduzindo as perdas.
Aumentar os períodos EMA para reduzir a frequência de mudança de posição ou usar outros indicadores MA.
Suspender a estratégia quando for identificado um mercado variável, evitando negociações desnecessárias.
Ajuste do período: ajustar os períodos da EMA para se adaptarem aos diferentes instrumentos.
Adicionar filtros: adicionar MA, BOLL etc. para evitar falhas de EMA.
Paragem de perdas: Paragem de atraso para bloquear os lucros.
Gestão de riscos: Otimizar o dimensionamento das posições para limitar o impacto de perdas individuais.
Regime de mercado: utilizar a volatilidade para avaliar a oscilação e controlar o envolvimento da estratégia.
Parâmetros adaptativos: Optimização automática dos períodos de EMA com base nas alterações do mercado para melhorar a robustez.
O Three EMA segue a tendência das negociações estratégicas identificando a direção da tendência através das linhas EMA. É simples e prático com grande espaço de otimização. Os riscos como falhas e oscilações devem ser notados. Com otimizações contínuas, essa estratégia pode se tornar uma solução robusta de tendência.
/*backtest start: 2023-10-10 00:00:00 end: 2023-11-09 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/ // © QuantCT //@version=4 strategy("PMA Strategy Idea", shorttitle="PMA", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_type=strategy.commission.percent, commission_value=0.075) // ____ Inputs ema1_period = input(title="EMA1 Period", defval=10) ema2_period = input(title="EMA2 Period", defval=20) ema3_period = input(title="EMA3 Period", defval=30) long_only = input(title="Long Only", defval=false) slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0) use_sl = input(title="Use Stop-Loss", defval=false) // ____ Logic ema1 = ema(hlc3, ema1_period) ema2 = ema(hlc3, ema2_period) ema3 = ema(hlc3, ema3_period) enter_long = (rising(ema1, 1) and rising(ema2, 1) and rising(ema3, 1)) exit_long = not enter_long enter_short = (falling(ema1, 1) and falling(ema2, 1) and falling(ema3, 1)) exit_short = not enter_short strategy.entry("Long", strategy.long, when=enter_long) strategy.close("Long", when=exit_long) if (not long_only) strategy.entry("Short", strategy.short, when=enter_short) strategy.close("Short", when=exit_short) // ____ SL sl_long = strategy.position_avg_price * (1- (slp/100)) sl_short = strategy.position_avg_price * (1 + (slp/100)) if (use_sl) strategy.exit(id="SL", from_entry="Long", stop=sl_long) strategy.exit(id="SL", from_entry="Short", stop=sl_short) // ____ Plots colors = enter_long ? #27D600 : enter_short ? #E30202 : color.orange ema1_plot = plot(ema1, color=colors) ema2_plot = plot(ema2, color=colors) ema3_plot = plot(ema3, color=colors) fill(ema1_plot, ema3_plot, color=colors, transp=50)