
Esta estratégia é uma estratégia de negociação automática baseada em indicadores técnicos MACD com duplas médias móveis cruzadas. Utiliza os sinais de cruzamento de linhas rápidas e lentas do indicador MACD para determinar a direção da tendência e permitir o acompanhamento da tendência.
A estratégia começa por calcular as três curvas do indicador MACD: linha rápida, linha lenta e linha de diferença. A linha rápida é a média móvel mais rápida de um determinado período, e a linha lenta é a média móvel de um período mais longo. A diferença entre a linha rápida e a linha lenta é a diferença entre a linha rápida e a linha lenta.
A estratégia utiliza este princípio, fazendo mais no momento em que o Gold Fork, em posição livre no momento em que o Dead Fork; ou fechar no momento em que o Dead Fork, em posição livre no momento em que o Gold Fork, para realizar a tendência de seguimento automático. Ao mesmo tempo, a estratégia também julgar o valor absoluto da linha MACD positivo-negativo, evitar falsos sinais, para garantir que realmente capturar a tendência de viragem.
A solução para o risco:
A estratégia pode ser melhorada em vários aspectos:
Em combinação com outros sinais de confirmação de indicadores, como o indicador KDJ, o indicador Brin, etc., filtra os falsos sinais
Mudanças nos mecanismos de entrada, como a inclusão de filtros de ruptura para evitar a entrada antecipada ou tardia
Optimizar a configuração dos parâmetros, ajustar o ciclo de linha rápida e lenta de acordo com os diferentes ciclos e o ambiente do mercado, adaptando-se ao mercado
Adotar estratégias de stop loss para controlar perdas individuais
Extensível a outras variedades, como divisas, moedas digitais, etc.
Esta estratégia de acompanhamento de tendências MACD de dupla média móvel cruzada usa indicadores MACD para determinar a direção da tendência, com sinais de filtragem de linhas cruzadas rápidas e lentas, para capturar efetivamente a reversão da tendência e acompanhar automaticamente a tendência. A vantagem da estratégia é a precisão do julgamento da tendência, o ajuste dos parâmetros é flexível e pode ser otimizado de acordo com o ambiente do mercado.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © DeMindSET
//@version=4
strategy("MACD Trend Follow Strategy", overlay=false)
// Getting inputs
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
//
Bull= macd > signal
Bear= macd < signal
ConBull=macd>0
ConBear=macd<0
//
Green= Bull and ConBull
Red= Bear and ConBear
Yellow= Bull and ConBear
Blue= Bear and ConBull
//
bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2019, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
if LSB == "Long only" and Green
strategy.entry("L",true)
if LSB == "Long only" and Red
strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Green
strategy.entry("L",true)
if LSB == "Both" and Red
strategy.entry("S",false)
if LSB == "Short only" and Red
strategy.entry("S",false)
if LSB == "Short only" and Green
strategy.close("S",qty_percent=100,comment="TP Short")