A Oscillating Long-Short RSI Crypto Switching Strategy é uma estratégia quantitativa de negociação projetada para criptomoedas. Combina o indicador técnico RSI com o indicador ICHIMOKU para identificar sinais longos e curtos durante oscilações de preços e alcançar compras baixas e vendas altas. É adequado para prazos de médio a longo prazo, como 3-4 horas ou mais.
A estratégia baseia-se principalmente nos seguintes indicadores e regras:
Indicador ICHIMOKU
Indicador RSI
Regras de entrada
Entrada longa: cruz de Tenkan acima de Kijun (cruz de ouro) e quebras de preços através de linhas Senkou A & B, com RSI acima de 50 ao mesmo tempo
Entrada curta: cruz de Tenkan abaixo de Kijun (cruz da morte) e preco desmorona Linhas Senkou A&B, com RSI abaixo de 50 ao mesmo tempo
Regras de saída
Saída com sinal oposto
A estratégia leva em conta a tendência de médio a longo prazo, o fluxo de capital a curto prazo e as condições de sobrecompra/supervenda para capturar oportunidades de reversão durante oscilações.
1. O julgamento baseado em múltiplos indicadores garante uma elevada segurança
A estratégia considera a tendência e o julgamento de suporte/resistência do ICHIMOKU, as condições de sobrecompra/supervenda do RSI, bem como o fluxo de capital com base na direção do corpo da vela. Isso garante sinais confiáveis.
2. Adequado para oscilação, lucro frequente
O mercado de criptomoedas tem grandes flutuações. Esta estratégia pode capturar plenamente oportunidades de reversão durante oscilações e alcançar compras frequentes baixas e vendas altas.
Prevenção da perseguição de subidas e batidas de recuos, risco controlado
A estratégia considera de forma abrangente as tendências de médio e longo prazo e as situações de curto prazo para evitar o risco de perseguir as subidas e bater os recuos.
1. Pode perder algumas oportunidades de tendências
A estratégia centra-se principalmente na inversão, o que pode levar a frequentes quedas durante fases de tendência prolongadas.
2. Símbolo único, incapaz de diversificar o risco
A estratégia negocia apenas um único símbolo e não pode diversificar contra o risco de mercado sistemático.
3. Stop loss desencadeado durante movimentos extremos
Durante condições de mercado extremas como gap ou picos, o stop loss pode ser desencadeado forçando a saída.
1. Adicionar stop loss para perda única mais baixa
A perda de parada móvel ou a perda de parada percentual podem ser usadas para bloquear os lucros e evitar uma retração completa.
2. Correlação com índices para diversificar o risco de mercado
Procurar oportunidades de negociação entre símbolos altamente correlacionados para diversificar o risco de mercado sistemático.
3. Filtros adicionais para reduzir os negócios inválidos
Podem ser adicionados filtros como a volatilidade dos preços ou as alterações de volume para evitar sinais de reversão inválidos e melhorar a taxa de rentabilidade.
A Oscillating Long-Short RSI Crypto Switching Strategy combina os indicadores ICHIMOKU e RSI para identificar pontos de reversão para as criptomoedas, adequados para comprar baixo e vender alto lucro durante oscilações.
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1 ) UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations") // // === /INPUTS === // === BASE FUNCTIONS === haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low //Inputs ts_bars = input(20, minval=1, title="Tenkan-Sen Bars") ks_bars = input(50, minval=1, title="Kijun-Sen Bars") ssb_bars = input(120, minval=1, title="Senkou-Span B Bars") cs_offset = input(30, minval=1, title="Chikou-Span Offset") ss_offset = input(30, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") //Volatility //vollength = input(defval=1, title="VolLength") //voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target") //Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100) //MovingAverage = sma(Difference, vollength) //highvolatility = MovingAverage > voltarget //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// middle(len) => avg(lowest(len), highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = avg(tenkan, kijun) senkouB = middle(ssb_bars) //RSI change = change(haClose) gain = change >= 0 ? change : 0.0 loss = change < 0 ? (-1) * change : 0.0 avgGain = rma(gain, 14) avgLoss = rma(loss, 14) rs = avgGain / avgLoss rsi = 100 - (100 / (1 + rs)) ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1]) ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1]) // Entry/Exit Signals tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = mom(haClose, cs_offset-1) > 0 cs_cross_bear = mom(haClose, cs_offset-1) < 0 price_above_kumo = haClose > ss_high price_below_kumo = haClose < ss_low rsi_bullish = rsi > 50 rsi_bearish = rs < 50 bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond) strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond) strategy.close("Long", when=bearish and not short_entry and time_cond) strategy.close("Short", when=bullish and not long_entry and time_cond)