A estratégia utiliza um modelo de linha de equilíbrio para determinar a direção da tendência do mercado e, periodicamente, estabelece uma posição adicional quando há uma tendência de baixa, para acompanhar a tendência de alta do mercado de golden cross.
A estratégia baseia-se principalmente nos seguintes princípios técnicos:
Use a linha média da EMA para determinar a direção da tendência do mercado. Quando a linha rápida da EMA atravessa a linha lenta da EMA, julgue a tendência pessimista e prepare-se para entrar em várias direções.
Quando o indicador MACD passa de negativo para positivo, indica que o preço de compra começa a enfraquecer, fazendo entrada em várias direções.
Limite a entrada apenas uma vez por mês, para evitar a perseguição. O número de entradas por entrada pode ser fixado.
Pode-se definir uma data de início e uma data de término, limitando o período de retracção. Quando a retracção termina, a estratégia elimina todas as posições.
Concretamente, a estratégia primeiro calcula a linha de EMA rápida e a linha de EMA lenta e detecta a relação entre os dois para determinar a tendência do mercado. Ao mesmo tempo, calcula o indicador MACD para determinar o ponto de entrada específico.
É uma estratégia de seguimento de tendências mais simples e direta, com as seguintes vantagens:
Usar a linha média EMA para determinar a direção da grande tendência é simples e prático. A linha média EMA tem um certo efeito de suavização sobre as mudanças de preço e pode filtrar efetivamente o ruído do mercado de turbulência.
Os indicadores MACD podem determinar com maior precisão o momento em que a estrutura de compra e venda se torna mais fraca, o que reduz o risco de entrada.
Limitar-se a fazer apenas uma operação de rastreamento por mês pode ajudar a evitar a corrida no mercado de touros.
Permite a customização do montante de entrada mensal e a flexibilidade de ajustar as posições de acordo com a sua estratégia.
Pode-se fazer testes de retrospectiva para avaliar a eficácia da estratégia através das datas de início e fim.
Quando a retrospectiva termina, o posicionamento será eliminado, evitando o constrangimento de manter posições quando o simulador sai do mercado.
A estratégia também apresenta alguns riscos potenciais, incluindo:
Os métodos que dependem de uma linha de equilíbrio para determinar a tendência podem perder oportunidades em ajustes de curto prazo ou não ser suficientemente ágeis para reagir quando a tendência se inverte. Pode-se reduzir adequadamente o período de equilíbrio ou adicionar outros indicadores de julgamento para otimização.
Fazendo apenas uma operação de rastreamento por mês, você pode perder um bom ponto de entrada. Você pode considerar a flexibilização da frequência de entrada ou voltar a entrar quando atingir uma nova alta.
Existe um certo risco de retroavaliação. Deve-se aumentar o espaço de ajuste de parâmetros e fazer testes de robustez entre mercados e períodos de tempo.
Existe o risco de perdas e sobrecompras. O montante de entrada mensal deve ser controlado adequadamente, evitando posições excessivas.
A estratégia de captação de investimentos pode ser ampliada e aperfeiçoada em vários aspectos:
Aumentar a lógica de parada de perda EXIT, para ativar a parada de perda quando o mercado está em uma posição de cabeça de urso.
Quando o MACD Smile Code foi criado, uma compra foi adicionada para obter uma exposição mais completa à tendência.
A introdução de uma análise multicanal do crescimento do mês em comparação com o crescimento do mês anterior, para avaliar se a tendência continua forte.
Aumentar a lógica de controle de posição. O montante mensal de entrada pode ser controlado em proporção, em vez de um valor fixo.
Avaliar o impacto de diferentes combinações de equilíbrio e parâmetros MACD sobre a eficácia da estratégia.
Adição de um trailing stop que acompanha o stop loss. Começa a trail em uma certa amplitude quando o preço atinge uma nova alta, para que os lucros continuem a funcionar.
A estratégia como um todo é uma estratégia de seguimento de tendências simples, com uma ideia central clara e fácil de implementar, adequada para testar a eficácia do acompanhamento de tendências lineares e a combinação de investimentos. Pode ser aprendida como uma das estratégias de entrada para negociação quantitativa.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic
//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)
//INPUTS##################################################################################################################
maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2020, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100)
endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################
fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma
//EMA Distance CALC########################################################################################################
ma1 =ema(close,emalength)
distFromMean = close - ma1
inDateRange = true
longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false
if(longCondition and strategy.position_size == 0)
strategy.entry("My Long Entry Id", strategy.long)
longnow:=true
if(longCondition and strategy.position_size > 0)
longnow:=true
if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
strategy.entry("My Long Entry Id", strategy.long)
plotchar(minute, "Minuten", "", location = location.top)
plotchar(hour, "Stunden", "", location = location.top)
plotchar(dayofmonth, "Tage", "", location = location.top)
plotchar(month, "Monat", "", location = location.top)
plotchar(year, "Jahr", "", location = location.top)
plotchar(strategy.position_size, "Positionen", "", location = location.top)
plotchar(longCondition, "Long Condition", "", location = location.top)
if true
strategy.close_all()
//#########################################################################################################################
plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
1
else
0
plotarrow(series=plotArrow)