
Esta estratégia é baseada no cruzamento de uma média móvel de 9 dias e uma média móvel de 15 dias, bem como em algumas formas típicas de K-linhas diárias para gerar sinais de negociação. Quando a linha rápida atravessa a linha lenta e atende a determinadas condições angulares e a uma determinada forma de K-linha, faça mais; quando a linha rápida atravessa a linha lenta abaixo, faça um vazio. Ao mesmo tempo, configure o ponto de parada e o ponto de parada para controlar o risco.
Quando a média móvel de curto prazo ((linha de 9 dias) é mais forte do que a média móvel de longo prazo ((linha de 15 dias), indica que o aumento de preços de curto prazo é mais forte, faça mais; Quando a média móvel de curto prazo é mais baixa do que a média móvel de longo prazo, indica que o preço de curto prazo é mais forte, faça um vazio. Ao mesmo tempo, exija que o ângulo da média móvel seja maior do que 30 graus, para garantir que haja uma força de alta ou baixa suficiente.
Esta estratégia utiliza principalmente a função de acompanhamento de tendências das médias móveis e as características de algumas formas de linha K, que podem ser adaptadas às variedades de diferentes mercados por meio de ajustes de parâmetros.
A estratégia combina o indicador de média móvel com o julgamento de forma de linha K diária para filtrar efetivamente parte do ruído e tornar os sinais de negociação mais confiáveis. Em particular, o julgamento de redução de ângulo foi adicionado para garantir que os sinais sejam emitidos apenas quando a mudança de preço é grande o suficiente para evitar falsos sinais sem sentido. Além disso, a estratégia define níveis de stop loss e stop loss para reduzir automaticamente o máximo de perdas da unidade e obter um retorno lucrativo.
A média móvel, como um indicador de seguimento de tendências, pode capturar a tendência de preços de médio e longo prazo. A forma da linha K no dia reflete a comparação de forças dos participantes do mercado no curto prazo, combinada com o uso pode obter dicas de negociação em diferentes escalas de tempo.
Os principais riscos que esta estratégia pode trazer são os seguintes:
Risco de Falso Breakout. Quando o mercado está em um estado de agitação, a média móvel pode ocorrer várias vezes cruzando, em que a maioria dos sinais emitidos de acordo com o cruzamento são falsos.
Risco de reversão de tendência. A média móvel, como um indicador de acompanhamento de tendência, não pode dar sinais antecipados de reversão de tendência.
Risco de otimização de parâmetros. Diferentes variedades de mercado têm diferentes adaptações para configurações de parâmetros. Se não for feito o ajuste, o uso direto de uma combinação de parâmetros também pode trazer prejuízos. Isso requer o retorno e a simulação do disco para encontrar o melhor parâmetro.
Em geral, esta estratégia pode gerar alguns riscos de falsos sinais e de caça de alta e baixa na falta de julgamento do cenário de mercado. Estes riscos podem ser ainda mais otimizados e reduzidos com a adição de julgamentos de tendências de grande escala e características de preço.
A estratégia também pode ser melhorada em alguns aspectos:
Aumentar o julgamento de tendências em grande escala. Por exemplo, verifique se a linha longa está em um canal ascendente ou descendente, evitando negociações adversas.
Adicionar a análise de indicadores de capacidade de quantidade. Por exemplo, o indicador de taxa da Comunicação pode determinar o caminho da força de compra e venda, evitando o preço de ações com taxas altas ou com taxas muito baixas.
Combinando com a situação básica das ações. Selecionar ações individuais com previsão de resultados positivos e crescimento estável de desempenho pode aumentar a taxa de vitória.
Otimizar o conjunto de parâmetros de um sistema de médias móveis. Pode-se experimentar com médias de diferentes períodos de comprimento, ou adicionar três médias, cinco médias, etc., para construir um sistema de negociação com maior espaço para ajustar os parâmetros.
Teste diferentes parâmetros de stop loss e stop loss. De acordo com os resultados da avaliação, configure o coeficiente de alavancagem para obter a melhor relação de risco / ganho.
Com a otimização de algumas dessas direções, pode-se esperar que o nível de lucro e a estabilidade da estratégia aumentem significativamente.
Em geral, esta estratégia integra os benefícios do indicador de média móvel e da forma de linha K em alguns dias. As condições são mais rigorosas ao emitir sinais de negociação, e pode filtrar uma grande quantidade de ruído, o que aumenta significativamente a qualidade do sinal de passagem. Ao mesmo tempo, controla o máximo de perdas e lucros realizados através da configuração de stop-loss e stop-loss.
O próximo passo é o trabalho de otimização de parâmetros para aumentar ainda mais a taxa de vitória e a lucratividade da estratégia. A adição de mais indicadores também pode fortalecer a robustez do sistema de negociação como um todo. Após a simulação rigorosa em campo, a estratégia promete ser uma ferramenta de quantificação eficaz para gerar lucros estáveis.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)
// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")
// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)
// Define candlestick patterns
is_pin_bar() =>
pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
high_tail = max(open, close) - high > abs(open - close) * 1.5
low_tail = low - min(open, close) > abs(open - close) * 1.5
pin_bar and high_tail and low_tail
is_marubozu() =>
marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
no_upper_shadow = high == max(open, close)
no_lower_shadow = low == min(open, close)
marubozu and no_upper_shadow and no_lower_shadow
is_full_body() =>
full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
full_body
// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))
// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)
// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)
// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)
// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)