Estratégia de média móvel de retracement de dois anos

Autora:ChaoZhang, Data: 2024-01-26 14:49:28
Tags:

img

Resumo

Esta estratégia baseia-se no cálculo exclusivo do novo preço máximo de dois anos e da média móvel das ações.

Princípio da estratégia

A lógica central desta estratégia baseia-se nos seguintes cálculos únicos:

  1. Quando o preço das ações atinge um novo pico nos últimos dois anos, forma um pico de curto prazo.

  2. Quando o preço se retira desta nova alta e retira-se para a média móvel exponencial de 13 dias, apresenta uma boa oportunidade de compra.

  3. Além disso, quando o sinal de compra é acionado, o preço da ação deve estar dentro de uma faixa de 10% do máximo de dois anos, não muito longe.

  4. Para as posições abertas, se o preço ultrapassar 5% abaixo da linha MA de 21 dias ou diminuir 20% em relação ao máximo de dois anos, a posição será interrompida para obter lucros.

Vantagens da estratégia

Esta é uma estratégia de fuga de longo prazo com estas vantagens:

  1. O preço elevado único de dois anos pode identificar eficazmente potenciais oportunidades de inversão da tendência.

  2. A linha EMA de 13 dias serve como o filtro de entrada para evitar batidas e determinar um impulso mais forte.

  3. Os cálculos únicos geram sinais baseados na ação do preço, evitando interferências subjetivas.

  4. Um stop loss razoável permite bloquear a maioria dos lucros.

Riscos e soluções

Existem também alguns riscos, principalmente os seguintes:

  1. Os mercados podem experimentar baixas profundas, incapazes de parar a tempo. É necessário avaliar o ambiente geral para decidir se reduzir as perdas com determinação.

  2. Grandes lacunas durante a noite podem impedir a perda de parada perfeita.

  3. A linha de 13 dias pode não filtrar bem as consolidações, gerando sinais falsos excessivos.

  4. Os novos preços elevados podem não funcionar bem para determinar as mudanças de tendência.

Sugestões de otimização da estratégia

Há espaço para uma maior otimização:

  1. Incorporar outras ferramentas para avaliar as condições globais do mercado, evitando posições desnecessárias.

  2. Adicione indicadores de impulso para evitar melhor as faixas de serra.

  3. Otimizar os parâmetros da média móvel para melhor capturar os padrões de preços.

  4. Utilize o aprendizado de máquina para otimizar dinamicamente o parâmetro de dois anos para maior flexibilidade.

Conclusão

Em resumo, trata-se de uma estratégia única de ruptura a longo prazo, cuja chave é o nível de preço elevado de dois anos e a linha EMA de 13 dias que serve como filtro de entrada.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
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/
// © Part Timer

//This script accepts from and to date parameter for backtesting. 
//This script generates white arrow for each buying signal

//@version=4
strategy("AMRS_LongOnly_PartTimer", overlay = true)

//i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time)

StartYear=input(defval = 2000, title ="Start Year", type=input.integer)
StartMonth=input(defval = 01, title ="Start Month", type=input.integer)
StartDate=input(defval = 01, title ="Start Date", type=input.integer)

endYear=input(defval = 2021, title ="End Year", type=input.integer)
endMonth=input(defval = 06, title ="End Month", type=input.integer)
endDate=input(defval = 03, title ="End Date", type=input.integer)

ema11=ema(close,11)
ema13=ema(close,13)
ema21=ema(close,21)

afterStartDate = true
//g=bar_index==1
//ath()=>
    //a=0.0
    //a:=g ? high : high>a[1] ? high:a[1]
    
//a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on)

newHigh = (high > highest(high,504)[1])
//plot down arrows whenever it's a new high
plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny)
b=highest(high,504)[1]
VarChk=((b-ema13)/b)*100
TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10)
plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
ExitPrice=(ema21 - (ema21*0.05))
DrawPrice=(b - (b*0.20))
stopprice=0.0
if (close <= ExitPrice)
    stopprice := ExitPrice
if (close <= DrawPrice)
    stopprice := DrawPrice

if (TrigLow and afterStartDate)
    strategy.entry("Long", strategy.long)

strategy.exit("exit","Long", stop=stopprice)
//beforeEndDate = (time < i_endTime)
beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0))
if (beforeEndDate)
    strategy.close_all()

Mais.