
A estratégia combina o cruzamento de médias móveis, o índice de força relativamente forte (RSI) e o julgamento de um grande aumento de volume de negociação, fazendo uma posição mais curta quando o preço retorna a uma certa proporção após o alto volume de negociação, e configura três stop orders progressivos para bloquear diferentes proporções de lucro. A estratégia também possui uma função de stop loss de rastreamento opcional para capturar oportunidades de mudanças favoráveis no preço.
O cruzamento entre a média móvel rápida e a média móvel lenta fornece um sinal precoce para o início de uma mudança de tendência. O RSI é usado para avaliar o estado de sobrecompra e sobrevenda, ajudando a evitar sinais de entrada para garantir a estabilidade do sinal. Quando o volume de negociação é significativamente superior à média, a atenção do mercado é atraída por uma mudança de preço potencial.
O princípio de captação e desbloqueio de sinais de vazio é semelhante ao de fazer mais, mas não será discutido aqui. É importante ressaltar que a estratégia possui a capacidade de fazer mais e de fazer mais.
A estratégia tem as seguintes vantagens principais:
O cruzamento de uma linha média rápida e lenta com o indicador RSI forma um bom julgamento de tempo de entrada no mercado, evitando a construção de uma posição em uma área de supercompra e supervenda, aumentando a probabilidade de lucro.
Utilizando a explosão de volume de transação como critério auxiliar, certifique-se de escolher um intervalo de armazenamento com maior amplitude de flutuação de preços, aumentando a força indicativa do sinal.
A estratégia de estabelecer posições com um certo percentual de queda de preços e volumes de negociação aumenta a precisão do tempo de entrada no mercado e aproveita as boas oportunidades de reversão ou aumento.
O setor de três pedidos de suspensão progressivos, aproveitando o espaço de aumento das flutuações de preços para bloquear os lucros, os investidores podem optar por usar vários pedidos de suspensão de acordo com o risco que eles assumem.
A função de stop loss de rastreamento opcional permite que os investidores escolham se acionam ou não, dependendo das flutuações do mercado, e, ao mesmo tempo, podem obter maiores ganhos com o seguro.
Aplica-se também a negociação de ativos e passivos, que podem ser lucrativos quando o mercado sobe e desce, aumentando a praticidade da estratégia.
Apesar de ser uma estratégia bem planejada, há riscos em qualquer produto financeiro que você possa negociar, e é importante ter em mente:
O cruzamento de linhas médias rápidas e lentas nem sempre é preciso para avaliar a tendência do mercado. Se os parâmetros de linhas médias não forem usados corretamente, também haverá sinais errados.
A configuração inadequada dos parâmetros do indicador RSI também pode levar a uma fuga para a área de supercompra e supervenda. Os parâmetros do ciclo RSI devem ser ajustados de acordo com o mercado.
O aumento do volume de transações não é exatamente equivalente a uma mudança significativa nos preços, e os critérios de referência do volume de transações podem ser ajustados de acordo com o caso.
O retorno dos preços e do volume de transações pode ser grande ou pequeno, o que pode afetar o tempo de entrada no mercado, o que também precisa ser ajustado ao mercado.
A margem de parada estabelecida não garante a completa transação do pedido de parada, e uma mudança súbita no mercado pode causar um deslizamento.
O tracking de stop loss também pode ser usado para evitar a perda prematura de mais lucros, se a quantidade de stop loss for muito grande.
Para os riscos acima, é necessário garantir a estabilidade e a confiabilidade da estratégia por meio de otimização de código, ajuste de parâmetros e rigorosas avaliações.
A estratégia ainda tem espaço para ser melhorada:
A adição de outros indicadores para auxiliar a decisão de construção de posição, como a combinação de indicadores como a banda de Brin, KD e outros, pode melhorar ainda mais a precisão do sinal.
A criação de médias móveis dinâmicas, combinadas com métodos de aprendizagem de máquina, como o LSTM, pode ajustar automaticamente os parâmetros da linha média de acordo com as condições recentes do mercado, melhorando a capacidade de julgamento de tendências.
A adição de uma função de ajuste dinâmico de stop/stop loss com base na volatilidade do mercado, permitindo que a estratégia ajuste automaticamente a parada de queda com base na volatilidade do mercado atual.
Utilize a aproximação dinâmica para otimizar o fator de retrocesso em tempo real de acordo com a correlação entre a queda e a queda do estoque geral e as ações individuais, para selecionar o melhor momento de criação de posição.
O uso de modelos multifatoriais, combinados com a análise de sentimentos, análise de regras de correlação e outras opções para aplicar estratégias com a mais forte correlação de preços e mudanças de volume de transação, pode aumentar significativamente a eficácia da estratégia.
Esta estratégia é, em geral, muito adequada para o uso de investidores de linha curta e média. A função da estratégia optimizada será mais perfeita e inteligente, com maior valor de aplicação em campo.
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true)
// Parametreler
fastLength = input(12, minval=1, title="Fast Moving Average")
slowLength = input(26, minval=1, title="Slow Moving Average")
rsiPeriod = input(14, minval=1, title="RSI Period")
volLength = input(20, minval=1, title="Volume MA Length")
volMultiplier = input(2.0, title="Volume Spike Multiplier")
trailOffset = input(1, title="Trailing Offset (%)")
usdtPerTrade = input(50000, title="USDT per Trade")
retraceFactor = input(0.8, title="Retracement Factor for Entry")
takeProfit1 = input(1, title="Take Profit 1 (%)")
takeProfit2 = input(2, title="Take Profit 2 (%)")
takeProfit3 = input(3, title="Take Profit 3 (%)")
trailForTP = input(true, title="Use Trailing Stop for Take Profits")
// Hesaplamalar
fastMA = sma(close, fastLength)
slowMA = sma(close, slowLength)
rsi = rsi(close, rsiPeriod)
volMA = sma(volume, volLength)
volumeSpike = volume > volMA * volMultiplier
// Durum Değişkenleri ve Saklanan Değerler
var float spikeVolume = na
var float spikePrice = na
var int direction = 0
// Alım/Satım Sinyalleri
longCondition = crossover(fastMA, slowMA) and rsi < 70
shortCondition = crossunder(fastMA, slowMA) and rsi > 30
// Hacim Spike ve Fiyat Hareketinin Saklanması
if (longCondition and volumeSpike)
spikeVolume := volume
spikePrice := close
direction := 1
else if (shortCondition and volumeSpike)
spikeVolume := volume
spikePrice := close
direction := -1
// Retracement Kontrolü ve Giriş Emirleri
if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100))
strategy.entry("Long", strategy.long, qty=usdtPerTrade / close)
spikeVolume := na
direction := 0
else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100))
strategy.entry("Short", strategy.short, qty=usdtPerTrade / close)
spikeVolume := na
direction := 0
// Take Profit Emirleri
if strategy.position_size > 0
strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)
if strategy.position_size < 0
strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)
// Pozisyon çıkışları
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)