Esta estratégia usa principalmente o sinal de cruzamento de linha de equilíbrio do rácio de massa relativa do dia (RB) para avaliar a tendência e opera negociações automáticas em combinação com paradas e paradas. A linha de equilíbrio de aumento de massa relativa do dia (RB) no nome da estratégia é a linha de equilíbrio de aumento de massa relativa do dia.
A estratégia baseia-se no indicador RBI de Vitelot, que é calculado como a média móvel da taxa de massa relativa da linha K {\displaystyle \mathbb {R} _{B} _{K} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{A} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{B} _{A} _{B} _{B} _B}
Na fórmula, RB é igual à razão entre o comprimento do eixo Y e o comprimento do eixo K inteiro, para um valor positivo; RB para o eixo Y, para um valor negativo. O valor de RB varia entre -1 e 1 [2].
O indicador RBI filtra o ruído através da média móvel do RB, capturando as características essenciais do mercado. Quando o indicador RBI atravessa sua linha de sinal, gera um sinal de compra; Quando o indicador RBI atravessa sua linha de sinal, gera um sinal de venda.
Para filtrar os falsos sinais de incerteza em fases de múltiplas cabeças, a estratégia também determina se o preço de fechamento está acima da linha média do EMA de 13 ciclos quando atravessa a linha de sinal no indicador RBI. Se for acima, a estratégia de múltiplas cabeças é executada.
A estratégia também estabelece um mecanismo de stop loss e de stop-loss para controlar o risco e bloquear os lucros. Após a abertura da posição, o trail rastreia o número de pontos de stop-loss definidos, além de estabelecer o número de pontos de stop-loss fixos.
Os indicadores do RBI filtram a maior parte do ruído, captando as características das tendências do mercado e evitando que sejam enganados por falsos sinais de um mercado em turbulência.
Combinado com filtragem uniforme, pode efetivamente evitar sinais falsos de períodos de incerteza de múltiplos cabeçalhos, reduzindo a perda de cabeçalho.
A configuração de stop loss ajuda a reduzir o risco de perda de posições individuais, ao mesmo tempo em que bloqueia os lucros e aumenta a taxa de ganho geral.
A estratégia tem poucos parâmetros, é fácil de entender e é adequada para negociação automática.
A estratégia baseia-se apenas nos indicadores do RBI, e se os próprios indicadores produzirem um sinal errado, a estratégia em geral também falhará.
A configuração inadequada dos parâmetros do indicador também pode causar uma diminuição da qualidade do sinal de negociação.
Qualquer indicador técnico pode falhar em determinadas condições de mercado e não é possível evitar completamente os prejuízos.
A configuração de um ponto de parada muito pequeno pode levar a um ponto de parada muito freqüente; um ponto de parada muito grande pode expandir o prejuízo individual.
A retirada de um controle insuficiente pode levar a um risco de quebra de posição na conta.
Pode testar diferentes combinações de parâmetros para otimizar os parâmetros do indicador RBI.
Pode ser adicionado a outros indicadores auxiliares para filtragem, melhorando a qualidade do sinal.
Os parâmetros de parada de danos podem ser otimizados por treinamento de aprendizado de máquina.
Pode ser incorporado em estratégias de gestão de fundos, controle de posições globais e de risco.
Pode-se experimentar estratégias diferentes para manter as posições durante o dia, tais como a manutenção de posições durante a noite ou a negociação a curto prazo.
A estratégia é, em geral, uma estratégia de acompanhamento de tendências mais simples e direta. Ela julga a direção da tendência através do cálculo do cruzamento equilátero do índice de massa do dia em relação ao pen, e, ao mesmo tempo, adiciona filtros equiláteros e stop loss para controlar o risco, evitando efetivamente os falsos sinais do mercado de turbulência.
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("RBI Backtest /w TSSL", shorttitle="RBI Strategy", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
// RBI:
// The EMA of the relative body (RB) of Japanese candles is evaluated.
// The RB of a candle (my definition) is simply the ratio of the body with respect to its full length
// and taken positive for bull candles and negative for bear candles:
// e.g. a bull "marubozo" has RB=1 a bear "marubozo" has RB=-1;
// a "doji" has RB=0.
// This simple indicator grasps the essence of the market by filtering out a great deal of noise.
//
// A flag can be selected to calculate its very basic binary version, where a bull candle counts as a one
// and a bear candle counts as a minus one.
//
// Enter (or exit) the market when the signal line crosses the base line.
// When the market is choppy we have a kind of alternating bear and bull candles so that
// RBI is FLAT and usually close to zero.
// Therefore avoid entering the market when RBI is FLAT and INSIDE the Exclusion level.
// The exclusion level is to be set by hand: go back in history and check when market was choppy; a good
// way to set it is to frame the oscillations of RBI whe price was choppy.
//
// RBI is more effective when an EMA of price is used as filtering. I found EMA(13) to be
// a decent filter: go long when base crosses signal upwards AND closing price is above EMA(13);
// same concept for going short.
//
// As any other indicator, use it with responsibility: THERE CAN'T BE A SINGLE MAGIC INDICATOR winning
// all trades.
//
// Above all, have fun.
//
// Vitelot/Yanez/Vts March 31, 2019
par1 = input(5, title="MA1 Period")
par2 = input(5, title="Signal Period")
exclusion = input(0.2, title="Exclusion level")
useBin = input(false, title="Calculate the binary version")
treshold_long = input(0, title="Treshold Long")
treshold_short = input(0, title="Treshold Short")
fixedSL = input(title="SL Activation", defval=300)
trailSL = input(title="SL Trigger", defval=1)
fixedTP = input(title="TP Activation", defval=120)
trailTP = input(title="TP Trigger", defval=1)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 19, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2020, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
startTimeOk() => true // create function "within window of time" if statement true
ynSimple(t) =>
s = (close>open)? 1: -1
ema(sum(s,t),t)
ynRel(t) =>
s = (close-open)/(high-low)
ema(sum(s,t),t)
yn = useBin? ynSimple(par1): ynRel(par1)
sig = ema(yn,par2)
plot(yn, color=aqua, title="RBI", linewidth=3, transp=0)
plot(sig, color=orange, title="Signal", linewidth=2, transp=0)
hline(0, color=white, title="Zero level", editable=false)
hline(exclusion, color=yellow, title="Exclusion level +", editable=true, linestyle=line)
hline( 0-exclusion, color=yellow, title="Exclusion level -", editable=true, linestyle=line)
long = crossover(yn,sig) and yn < treshold_long
short = crossover(sig,yn) and yn > treshold_short
// === STRATEGY - LONG POSITION EXECUTION ===
strategy.entry("Long", strategy.long, when= long and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= short)
// === STRATEGY - SHORT POSITION EXECUTION ===
strategy.entry("Short", strategy.short, when= short and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= long)