Divergência de alta Estratégia de localização de negociações de curto prazo

Autora:ChaoZhang, Data: 2023-11-10 11:37:37
Tags:

img

Resumo

Esta estratégia tenta identificar oportunidades de curto prazo em que o Bitcoin provavelmente se recuperará procurando padrões de divergência de alta no indicador RSI e, assim, determinar bons pontos de entrada para negócios longos.

Estratégia lógica

  1. Identificar a divergência de alta com o indicador RSI

    • Defina os parâmetros do RSI (default 14 períodos)
    • Calcular o valor actual do RSI
    • Verifique se existe a seguinte divergência de alta:
      • O RSI formou um mínimo inferior
      • O preço formou um mínimo inferior ao mesmo tempo
      • O RSI então formou uma baixa mais elevada
      • O preço, em seguida, formou uma baixa mais alta
  2. Verificar se o valor do RSI está abaixo do limiar

    • Defina o limiar baixo do RSI (default 40)
    • Se o RSI actual estiver abaixo deste limiar, pode indicar um ponto de entrada longo
  3. Verifique se o preço de fechamento está abaixo do mínimo de divergência anterior

    • Se sim, validar ainda mais o sinal de compra da divergência de alta
  4. Definir as condições de saída de stop loss

    • Set stop loss percentage (default 5%)
    • Sair se o aproveitamento atingir esta percentagem
  5. Definir as condições de saída do lucro

    • Definição do limiar elevado do RSI (padrão 75)
    • Exit se o RSI ultrapassar este limiar

Análise das vantagens

  1. Usando a divergência do RSI pode efetivamente capturar oportunidades para o salto de preços a curto prazo

  2. A combinação com o limiar baixo do RSI ajuda a determinar pontos de entrada específicos

  3. As configurações de stop loss e take profit ajudam a gerir o risco e a recompensa

  4. A estratégia faz referência a muita experiência de negociação real com sinais Bitcoin RSI e é muito adequado para Bitcoin longo scalping

  5. As definições razoáveis dos parâmetros tornam a estratégia adaptável às diferentes condições de mercado e adequada para negociação em tempo real

Análise de riscos

  1. A divergência do RSI pode falhar, levando a perdas de negócios se identificada erroneamente

  2. Um único indicador tende a gerar sinais falsos, deve ser combinado com outros

  3. Precisa escolher valores de parâmetros adequados, configurações inadequadas afetam a lucratividade

  4. A negociação longa deve considerar a tendência geral, evitando a negociação contra a tendência

  5. Precisa ter cuidado com os custos de negociação, o comércio de alta frequência impacta os lucros

  6. Deverão fazer testes de retrospectiva e otimizar os parâmetros regularmente com base nos mercados em evolução

Orientações de otimização

  1. Considere a adição de outros indicadores como médias móveis para as condições do filtro para reduzir os falsos sinais

  2. Teste diferentes configurações de período em cada período de tempo para encontrar combinações ideais

  3. Incorporar uma análise de tendências de prazo mais longo para evitar compras contra uma inversão de tendência

  4. Implementar um stop loss dinâmico que aumente gradualmente as paradas à medida que o nível de lucro aumenta

  5. Ajustar a percentagem de stop loss com base no dimensionamento específico da posição

  6. Introduzir aprendizado de máquina para otimização automática de parâmetros

Conclusão

Esta estratégia visa identificar oportunidades de retorno de curto prazo do Bitcoin detectando divergências de alta do RSI e determinando bons pontos de entrada de longo. A estratégia é simples e eficaz, incorporando muita experiência prática de negociação, tornando-a muito adequada para scalping de Bitcoin. No entanto, a dependência de um único indicador tende a gerar sinais falsos, por isso deve ser combinada com outros indicadores. Também deve ser dada atenção à otimização de parâmetros, colocação de stop loss, custos de negociação, etc. Se usada corretamente, esta estratégia pode ser muito lucrativa na negociação ao vivo.


/*backtest
start: 2023-11-02 00:00:00
end: 2023-11-09 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bullish Divergence Short-term Long Trade Finder", overlay=false)

max_range = 50 
min_range = 5
///pivot_left = 25
pivot_right = 5

//Inputs
src = input(close, title="Source")
rsiBearCondMin = input.int(50, title="RSI Bearish Condition Minimum")
rsiBearCondSellMin = input.int(60, title="RSI Bearish Condition Sell Min")
rsiBullCondMin = input.int(40, title="RSI Bull Condition Minimum")
pivot_left = input.int(25, title="Look Back this many candles")
SellWhenRSI = input.int(75, title="RSI Sell Value")
StopLossPercent = input.int(5, title="Stop loss Percentage")
rsiPeriod = input.int(14, title="RSI Length")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiOverbought = input.int(70, title="RSI Overbought Level")

//RSI Function/ value 
rsi_value = ta.rsi(src, rsiPeriod)
rsi_hour = request.security(syminfo.tickerid,'60',rsi_value)
rsi_4hour = request.security(syminfo.tickerid,'240',rsi_value)
rsi_Day = request.security(syminfo.tickerid,'D',rsi_value)
plot(rsi_value, title="RSI", linewidth = 2, color = color.black, display =display.all)
hline(50, linestyle = hline.style_dotted)
rsi_ob = hline(70, linestyle=hline.style_dotted)
rsi_os = hline(30, linestyle=hline.style_dotted)
fill(rsi_ob, rsi_os, color.white)
SL_percent = (100-StopLossPercent)/100 

pivot_low_true = na(ta.pivotlow(rsi_value, pivot_left, pivot_right)) ? false : true

//create a function that returns truee/false
confirm_range(x) => 
    bars = ta.barssince(x == true) //counts the number of bars since thee last time condition was true
    min_range <= bars and bars <= max_range // makees sure bars is less than max_range(50) and greater than min_range(5) 


// RSI higher check / low check
RSI_HL_check = rsi_value<rsiBullCondMin and rsi_value > ta.valuewhen(pivot_low_true and rsi_value<rsiBullCondMin, rsi_value,1) and confirm_range(pivot_low_true[1]) 

// price check for lower low
price_ll_check = low < ta.valuewhen(pivot_low_true, low, 1)

bullCond = price_ll_check and RSI_HL_check and pivot_low_true

//pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))  ? false : true
pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))   ? false : true

// RSI Lower check / high check ensuring that the RSI dips below 30 to start divergence 
RSI_LH_check = rsi_value < ta.valuewhen(pivot_high_true and rsi_value>rsiBearCondMin, rsi_value,1) and confirm_range(pivot_high_true[1]) //and rsi_value[pivot_right] >= 65

// price check for lower low
price_hh_check = high > ta.valuewhen(pivot_high_true, high, 1)

bearCond = price_hh_check and RSI_LH_check and pivot_high_true and rsi_value[3] > rsiBearCondSellMin

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bullCond ? color.green : color.new(color.white, 100)))

plotshape(bullCond ? rsi_value : na , text = "BUY", style =  shape.labelup, location = location.absolute, color = color.green, offset =0, textcolor = color.white )

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bearCond ? color.red : color.new(color.white, 100)))

plotshape(bearCond ? rsi_value : na , text = "Sell", style =  shape.labelup, location = location.absolute, color = color.red, offset =0, textcolor = color.white )
//[bbUpperBand, bbMiddleBand, bbLowerBand] = ta.bb(src, bbPeriod, bbDev)

//Entry Condition
longCondition = false

//bullEntry = bullCond and RSI_HL_check and confirm_range(pivot_low_true[1])
if bullCond and close < ta.valuewhen(pivot_low_true, low, 1) and rsi_hour <40 ///and rsi_4hour<40 //and rsi_Day<50
    strategy.entry("Long", strategy.long)
    
//Exit Condition
if (strategy.position_size > 0 and close < strategy.position_avg_price*SL_percent)
    strategy.close("Long")
if (strategy.position_size > 0 and (rsi_value > SellWhenRSI or bearCond))
    strategy.close("Long")


Mais.