Estratégia de crossover de média móvel de ganho de caneta relativa


Data de criação: 2023-10-18 11:16:53 última modificação: 2023-10-18 11:16:53
cópia: 0 Cliques: 390
1
focar em
1176
Seguidores

Estratégia de crossover de média móvel de ganho de caneta relativa

Visão geral

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.

Princípio da estratégia

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.

Análise de vantagens

  • 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.

Análise de Riscos

  • 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.

Direção de otimização

  • 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.

Resumir

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.

Código-fonte da estratégia
/*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)