A estratégia combina MACD e DEMA indicadores de dupla linha, através de multi-linear de ouro forcados e forcados para formar um sinal de negociação. A estratégia de capturar o MACD indicador de mudança de tempo, usando DEMA filtro de ondas para obter um melhor entrada.
Calcule a linha rápida DEMAfast, pegue o valor DEMA do preço, com o comprimento do ciclo sendo fastmacd。
Calcule a linha lenta DEMAslow, obtendo o valor de DEMA de prices, com a duração do período slowmacd。
A linha MACD é a diferença entre a linha rápida e a linha lenta: DEMAfast - DEMAslow。
A linha de sinal é o valor DEMA da linha MACD, e o comprimento do período é signalmacd。
O cruzamento de linhas de múltiplos espaços serve como sinal de negociação: o garfo de ouro faz mais, o garfo morto faz menos.
Adicione o filtro de ano, mês e dia para emitir sinais apenas no intervalo de datas especificadas.
A estratégia tem as seguintes vantagens:
Em combinação com MACD e DEMA, os indicadores são complementares.
O design duplo do DEMA reduz o atraso e o ruído dos indicadores MACD.
O cruzamento de linhas de múltiplos espaços é fácil de julgar, a geração de sinais é simples e clara.
Pode ser ajustado de forma flexível para diferentes estratégias.
Os parâmetros do MACD podem ser combinados de forma otimizada e flexível para várias situações.
Os principais riscos desta estratégia são os seguintes:
O MACD é um indicador de tendência que não é adequado para mercados horizontais.
O cruzamento de múltiplos espaços pode gerar falsos sinais, que devem ser filtrados de forma eficaz.
A estratégia de parada de prejuízos é imperfeita, e é fácil parar com prejuízos excessivos.
A otimização dos parâmetros não é abrangente e os resultados variam muito de uma variedade para outra.
O filtro de data de transação é muito rígido e precisa ser ajustado dinamicamente.
Resolução:
Combinação de indicadores de potência, evitando a travessia.
Aumentar as condições de preços, filtrar os falsos sinais de cruzamento.
Estabelecer um stop loss inicial razoável e um stop loss de seguimento.
Testar o efeito de vários parâmetros de variedades, otimização dinâmica.
A partir de agora, os filtros serão ajustados de acordo com a situação em tempo real.
A estratégia pode ser melhorada em alguns pontos:
Aumentar o índice de tráfego para filtrar o sinal.
Otimizar combinações de parâmetros MACD para testar dados de diferentes variedades.
Estabelecer estratégias de stop loss, como stop loss fixo, stop loss de rastreamento, etc.
Ajustar a posição de stop loss de acordo com a volatilidade do mercado.
A tendência é forte ou fraca, ajuste o tamanho da posição.
A estratégia MACD DEMA combina vantagens de dois indicadores, aproveitando a tendência de captura de sinais de cruzamento. Mas a MACD tem uma natureza retardada, e é necessário ter cuidado com o filtro de falsos sinais. Além disso, a estratégia de parada de perda precisa ser otimizada para reduzir a parada irracional.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(" MACD DEMA STRATEGY ", overlay=true)
source=close
price=source
fastmacd = input(12,title='MACD Fast Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')
macdslowline1 = ema(close,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )
macdfastline1 = ema(close,fastmacd)
macdfastline2 = ema(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)
MACDLine = (DEMAfast - DEMAslow)
SignalLine1 = ema(MACDLine, signalmacd)
SignalLine2 = ema(SignalLine1, signalmacd)
SignalLine = ((2 * SignalLine1) - SignalLine2 )
MACDSignal = SignalLine-MACDLine
colorbar= MACDSignal>0?green:red
yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)
if ( crossover(MACDLine,SignalLine) )
strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND", comment="AL")
else
strategy.cancel(id="MMAL")
if ( crossunder(MACDLine,SignalLine) )
strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND", comment="SAT")
else
strategy.cancel(id="MMSAT")