
Esta “estratégia de negociação de retorno ao valor médio de retorno ao valor médio de retorno ao valor médio de retorno ao valor médio de retorno ao valor médio” é uma estratégia de quantificação projetada especificamente para a negociação de curto prazo do Bitcoin, que combina habilmente o canal RSI, o indicador WaveTrend e o indicador RSI aleatório para formar um sistema de filtragem em várias camadas. O núcleo da estratégia é aproveitar a característica de retorno de ruptura do preço ao canal RSI, ao mesmo tempo em que usa o WaveTrend e o RSI aleatório como filtro de confirmação, garantindo uma negociação de alta taxa de ganho nas áreas de sobrevenda e sobrevenda.
A estratégia baseia-se na sinergia de três indicadores técnicos centrais:
RSI Bands (em inglês)A estratégia usa uma versão modificada do indicador de canal RSI, com base nos níveis de sobrecompra ((70) e sobrevenda ((30) do RSI, para calcular o trajeto ascendente, descendente e intermediário do preço. Quando o preço quebra o trajeto descendente, um sinal de multiplicação é produzido, e quando o preço quebra o trajeto ascendente, um sinal de curva é produzido. Este mecanismo utiliza a característica de regressão do valor médio do mercado.
Indicador WaveTrendO indicador WT1 do LazyBear, com um comprimento de canal de 11 por defeito, um comprimento médio de 12 e um nível de sobrevenda de +60 e um nível de sobrevenda de -60. O indicador é um oscilador de dinâmica usado para determinar se o mercado está em um estado de sobrevenda ou de sobrevenda.
RSI aleatórioO indicador confirma ainda mais o estado de sobrecompra e sobrevenda do mercado, aumentando a confiabilidade do sinal.
A lógica de geração de sinais da estratégia é a seguinte:
Há duas opções de modo de negociação de gatilho: “Cross (close) ” usa o preço de fechamento atravessando o canal RSI, “Touch (wick) ” permite que a linha de sombra toque o sinal de gatilho do canal RSI. Além disso, a estratégia também inclui um mecanismo de saída reversa, ou seja, quando o sinal de oposição ocorre, pode ser apagado e revertem a posição aberta, adequado para o ambiente de mercado com maior volatilidade.
Uma análise mais aprofundada do código da estratégia pode ser resumida com as seguintes vantagens significativas:
Sistema de filtragem múltiplaA combinação de três indicadores técnicos diferentes (canal RSI, WaveTrend e RSI aleatório) forma um poderoso sistema de filtragem em várias camadas, reduzindo significativamente o risco de falsas rupturas e aumentando a qualidade e a confiabilidade dos sinais de negociação.
Mecanismos de negociação flexíveisA estratégia oferece várias opções de personalização, incluindo a opção de usar o reverso de saída, a opção de ativar o stop/stop loss e a opção de modo de disparo, permitindo que o comerciante ajuste de acordo com as condições do mercado e as preferências de risco pessoais.
Gestão de Riscos EficienteO mecanismo de parada de perda porcentual é incorporado, permitindo o controle preciso do risco-retorno de cada transação, protegendo a segurança dos fundos.
Sistema de alerta automáticoO sistema de notificação de transações do Telegram permite que os traders acompanhem e executem transações em tempo real.
Mecanismo de informação anti-lixoA estratégia implementou mecanismos para evitar a repetição de alarmes, garantindo que apenas um sinal seja enviado na mesma linha K, evitando a redundância de informações.
Adaptabilidade de transações de alta frequênciaA estratégia é baseada em um timeframe de 1 minuto, adequado para um ambiente de negociação de alta frequência, capaz de capturar flutuações de preços de curto prazo e permitir entrada e saída rápidas do mercado.
Apesar da estratégia ser bem concebida, existem alguns riscos potenciais:
Riscos de negociação de alta frequênciaSolução: Considere a adição de filtros de tempo adicionais ou negociar apenas em determinados períodos de mercado.
Risco de Falso BreakoutApesar dos filtros múltiplos, é possível encontrar falsas rupturas em mercados de alta volatilidade, resultando em perdas de negociação. Solução: ajustar os parâmetros do indicador, adicionar condições de confirmação ou combinar o julgamento de tendências com um período de tempo mais longo.
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da configuração de parâmetros, e diferentes cenários de mercado podem exigir parâmetros diferentes. Método de Solução: Faça um histórico completo de retrospecção, encontre a combinação de parâmetros ótima e reoptimize os parâmetros periodicamente.
Adaptabilidade às tendências do mercadoA estratégia de retorno de valor médio tem um bom desempenho em mercados de turbulência, mas pode ter um mau desempenho em mercados de forte tendência. Solução: Adicionar filtros de tendência e limitar a negociação contra tendência durante a forte tendência.
Risco sistémico: Dependendo do sistema de notificação do Telegram, se o sistema de notificação falhar, você pode perder uma oportunidade de transação. Solução: Implementar um canal de notificação de reserva ou um mecanismo de alerta local.
Com base na análise de código, a estratégia pode ser otimizada nas seguintes direções:
Adição de juízos de mercadoIntrodução de um mecanismo de adaptação, que ajusta dinamicamente os parâmetros da estratégia de acordo com a volatilidade do mercado e a intensidade da tendência. Isso permite que a estratégia mantenha um bom desempenho em diferentes ambientes de mercado. A implementação específica pode julgar o estado do mercado calculando o ATR ou o índice de taxa de flutuação.
Análise de Multi-Framas de Tempo: Integração de informações de tendências de mercado em quadros de tempo mais altos, negociação apenas na direção da tendência principal, ou uso de diferentes configurações de parâmetros em diferentes condições de tendência. Por exemplo, você pode adicionar uma linha diária ou um julgamento de tendência de 4 horas, fazendo apenas mais em uma tendência ascendente e apenas nada em uma tendência descendente.
Otimização do tempo de entrada: Melhorar a precisão de entrada aumentando a confirmação de volume ou a identificação de padrões de comportamento de preços. Pode-se considerar um ponto de entrada mais favorável para esperar a geração do sinal, em vez de entrar imediatamente.
Melhorias no mecanismo de parada de parada: Implementação de stop loss dinâmico, como tracking stop loss ou stop loss baseado em taxa de flutuação, para adaptar-se a diferentes ambientes de mercado. Por exemplo, pode-se definir a distância de stop loss baseada no ATR, ou usar o ganho de proteção de stop loss móvel.
Adicionar elementos de aprendizagem de máquina: Identificar automaticamente a melhor combinação de parâmetros usando algoritmos de aprendizagem de máquina ou prever a eficácia do sinal. Atribuir um peso de probabilidade a cada sinal de transação por meio de modelos de treinamento de dados históricos.
Gestão de riscos: Realizar o ajuste do tamanho da posição dinâmica com base no valor líquido da conta, reduzir o tamanho da negociação após perdas consecutivas, aumentar o tamanho da negociação após ganhos consecutivos, realizar uma gestão de fundos mais científica.
A estratégia de negociação de retorno ao valor médio do tipo de filtragem de múltiplos osciladores é um sistema de negociação de curto prazo bem projetado que identifica efetivamente o estado de sobrevenda e venda de mercado através do canal RSI, WaveTrend e a sinergia do RSI aleatório e captura oportunidades de negociação de retorno ao valor médio. A estratégia possui múltiplos filtros, mecanismos de negociação flexíveis, gerenciamento de risco eficiente e alertas automatizados, adequados para os comerciantes de curto prazo no mercado de bitcoin.
No entanto, a estratégia também enfrenta desafios como o risco de negociação de alta frequência, o risco de falso rompimento e a adaptabilidade do mercado. A estabilidade e a lucratividade da estratégia podem ser melhoradas adicionando o julgamento do estado do mercado, a análise de múltiplos quadros temporais, a otimização do tempo de entrada, a melhoria do mecanismo de stop loss e a implementação de gerenciamento de posição dinâmico.
A estratégia fornece uma estrutura sólida para os comerciantes de quantidade que desejam negociar em curto prazo no mercado de Bitcoin, que pode ser personalizada e otimizada de acordo com o estilo de negociação individual e a percepção do mercado para atingir o objetivo de obter lucros estáveis.
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("RS BTC 1", overlay=true, max_labels_count=500, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.003, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, process_orders_on_close=false, pyramiding=0)
// ==== Inputs
// RSI Bands
rsiLen = input.int(14, "RSI Length")
obLevel = input.int(70, "RSI Overbought")
osLevel = input.int(30, "RSI Oversold")
// WT (LazyBear)
wtLen1 = input.int(11, "WT Channel Length")
wtLen2 = input.int(12, "WT Avg Length")
wtOB = input.float( 60.0, "WT Overbought (+)")
wtOS = input.float(-60.0, "WT Oversold (-)")
// Stoch RSI (sadece K filtresi)
kLen = input.int(5, "StochRSI K")
rsiLenSR = input.int(14, "StochRSI RSI Length")
stLen = input.int(10, "Stoch Length")
rsiSrc = input.source(close, "RSI Source")
stochOB = input.float(100.0, "StochRSI OB (K ≥)", step=0.1)
stochOS = input.float(0.0, "StochRSI OS (K ≤)", step=0.1)
eps = input.float(0.5, "Tolerance around 0/100", step=0.1)
// Tetik modu
triggerMode = input.string("Cross(close)", "Trigger mode", options=["Cross(close)","Touch(wick)"])
showMid = input.bool(true, "Show RSI mid band")
// Çıkış seçenekleri
useReverseExit = input.bool(true, "Exit & reverse on opposite band cross (swing)")
useTP = input.bool(true, "Enable Take Profit %")
useSL = input.bool(true, "Enable Stop Loss %")
tpPerc = input.float(1.00, "TP %", step=0.01, minval=0.01)
slPerc = input.float(1.00, "SL %", step=0.01, minval=0.01)
// ==== RSI Bands (LazyBear) – Mantık aynı, sadece ince çizgi
src = close
ep = 2 * rsiLen - 1
auc = ta.ema(math.max(src - src[1], 0), ep)
adc = ta.ema(math.max(src[1] - src, 0), ep)
x1 = (rsiLen - 1) * (adc * obLevel / (100 - obLevel) - auc)
x2 = (rsiLen - 1) * (adc * osLevel / (100 - osLevel) - auc)
ub = x1 >= 0 ? src + x1 : src + x1 * (100 - obLevel) / obLevel
lb = x2 >= 0 ? src + x2 : src + x2 * (100 - osLevel) / osLevel
mid = (ub + lb) / 2.0
plot(ub, "RSI Upper", color=color.yellow, linewidth=1)
plot(lb, "RSI Lower", color=color.aqua, linewidth=1)
plot(showMid ? mid : na, "RSI Mid", color=color.gray, linewidth=1)
// ==== WaveTrend (LazyBear WT1)
ap = hlc3
esa = ta.ema(ap, wtLen1)
d = ta.ema(math.abs(ap - esa), wtLen1)
ci = (ap - esa) / (0.015 * d)
wt1 = ta.ema(ci, wtLen2)
// ==== Stoch RSI K (0..100)
rsiVal = ta.rsi(rsiSrc, rsiLenSR)
stochRaw = ta.stoch(rsiVal, rsiVal, rsiVal, stLen)
stochK = ta.sma(stochRaw, kLen)
// ==== Sinyaller
longCrossRaw = triggerMode == "Cross(close)" ? ta.crossunder(close, lb) : ta.crossunder(low, lb)
shortCrossRaw = triggerMode == "Cross(close)" ? ta.crossover( close, ub) : ta.crossover( high, ub)
stochLongOK = stochK <= (stochOS + eps)
stochShortOK = stochK >= (stochOB - eps)
wtLongOK = wt1 < wtOS
wtShortOK = wt1 > wtOB
longSig_raw = longCrossRaw and wtLongOK and stochLongOK
shortSig_raw = shortCrossRaw and wtShortOK and stochShortOK
longSig = useReverseExit ? longSig_raw : (longSig_raw and strategy.position_size == 0)
shortSig = useReverseExit ? shortSig_raw : (shortSig_raw and strategy.position_size == 0)
// ==== İşlemler
if longSig
if useReverseExit and strategy.position_size < 0
strategy.close("S")
if strategy.position_size <= 0
strategy.entry("L", strategy.long)
if shortSig
if useReverseExit and strategy.position_size > 0
strategy.close("L")
if strategy.position_size >= 0
strategy.entry("S", strategy.short)
// ==== TP / SL
if strategy.position_size > 0 and (useTP or useSL)
longEntryPrice = strategy.position_avg_price
longTP = useTP ? longEntryPrice * (1 + tpPerc/100.0) : na
longSL = useSL ? longEntryPrice * (1 - slPerc/100.0) : na
strategy.exit(id="L-EXIT", from_entry="L", limit=longTP, stop=longSL)
if strategy.position_size < 0 and (useTP or useSL)
shortEntryPrice = strategy.position_avg_price
shortTP = useTP ? shortEntryPrice * (1 - tpPerc/100.0) : na
shortSL = useSL ? shortEntryPrice * (1 + slPerc/100.0) : na
strategy.exit(id="S-EXIT", from_entry="S", limit=shortTP, stop=shortSL)
// ==== ENTRY alert (tek bar / tek kez) ====
// TV Alert -> Condition: Any alert() function call
// Webhook -> https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage
// Message -> BOŞ (alert() JSON yolluyor)
chatId = input.string("-1002849453919", "Telegram chat_id (channel)")
lotTxt = input.string("0.20", "Lot (text)")
tpPips = input.int(10000, "TP (pip)") // SL yok
makeJson(_txt) => '{"chat_id":"' + chatId + '","text":"' + _txt + '"}'
// MT5 sembolü sabit
longTxt = 'BUY BTCUSD# ' + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'
shortTxt = 'SELL BTCUSD# ' + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'
// Giriş oldu mu? (bar içinde)
enteredLong = strategy.position_size > 0 and strategy.position_size[1] <= 0
enteredShort = strategy.position_size < 0 and strategy.position_size[1] >= 0
// --- anti-spam: aynı barda yalnızca 1 kere gönder ---
var int lastEntryBar = na
var int lastDir = 0 // +1: long, -1: short
if enteredLong and (lastEntryBar != bar_index or lastDir != 1)
alert(makeJson(longTxt), alert.freq_once_per_bar) // tek gönderim
lastEntryBar := bar_index
lastDir := 1
if enteredShort and (lastEntryBar != bar_index or lastDir != -1)
alert(makeJson(shortTxt), alert.freq_once_per_bar)
lastEntryBar := bar_index
lastDir := -1