
A estratégia determina o momento de compra apropriado, procurando o desvio múltiplo do indicador RSI para determinar quando o preço do bitcoin pode se rebocar em alta no curto prazo.
O indicador RSI é usado para determinar a existência de desvio múltiplo.
Determinar se o RSI está abaixo do limiar
Determine se o preço de fechamento está abaixo do ponto mais baixo do início
Definir condições de parada de perda
Definir as condições de retirada de lucro
Usando o RSI para determinar o desvio de um número de cabeças, pode-se capturar com eficácia o momento de uma reversão de curto prazo dos preços
Combinado com o julgamento de pontos baixos do RSI, é possível determinar pontos de compra específicos antes da rebelião
Estabelecer condições de stop loss e stop-loss para gerenciar riscos e ganhos de negociação
A estratégia faz referência às características do indicador RSI em uma grande quantidade de transações em Bitcoin e é muito adequada para o Bitcoin Short.
Parâmetros de estratégia de configuração razoável, adaptável a diferentes situações de mercado, favorável a aplicações em disco
O RSI pode falhar e, se for mal avaliado, pode levar a perdas de negociação
Indicadores técnicos isolados são propensos a falsos sinais e devem ser usados em combinação com outros indicadores
É necessário escolher o valor do parâmetro apropriado, pois a configuração incorreta afetará a taxa de retorno da estratégia
Para negociar em várias direções, é necessário prestar atenção às tendências de grande escala e evitar operações de contra-balanço.
Os custos de transação devem ser considerados, pois a frequência de transações pode afetar os lucros finais.
Os parâmetros de otimização devem ser avaliados periodicamente e as estratégias devem ser ajustadas de acordo com os diferentes mercados.
Considere a inclusão de outros indicadores, como a média móvel, para definir condições de filtragem e reduzir os falsos sinais
Pode testar configurações de parâmetros de diferentes períodos para encontrar a melhor combinação de parâmetros
Pode ser combinado com uma avaliação de tendências de nível maior, evitando fazer mais quando a tendência se inverte
Pode-se configurar um stop loss dinâmico, aumentando gradualmente o ponto de parada quando os lucros atingem um determinado nível
Pode-se definir um limite de perda de acordo com a situação de cada posição
Tecnologias como aprendizado de máquina podem ser introduzidas para a otimização automática dos parâmetros
A estratégia é simples e eficaz, com base em uma grande quantidade de experiência em ações reais, muito adequado para a curta linha do Bitcoin. Mas um único indicador técnico é propenso a produzir falsos sinais e precisa ser usado em combinação com outros indicadores, além de prestar atenção a otimização de parâmetros, configuração de stop loss e custo de negociação. Se usado corretamente, a estratégia pode lucrar muito em ações reais.
/*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")