Estratégia de negociação de grelhas de indicadores RSI

Autora:ChaoZhang, Data: 2024-01-29 11:42:46
Tags:

img

Resumo

A RSI Indicator Grid Trading Strategy integra os indicadores técnicos RSI e CCI com uma abordagem de negociação de rede fixa. Ele usa os valores dos indicadores RSI e CCI para determinar os sinais de entrada, e define ordens de lucro e ordens de rede adicionais com base em um rácio de lucro fixo e número de redes. A estratégia também incorpora um mecanismo de cobertura contra movimentos voláteis de preços.

Estratégia lógica

Condições de entrada

Os sinais longos são gerados quando o RSI de 5 minutos e 30 minutos estão abaixo dos valores de limiar e o CCI de 1 hora está abaixo do limiar.

Assuma condições de lucro

O nível do preço de take profit é calculado utilizando o preço de entrada e o índice de lucro-alvo.

Condições de entrada na rede

Após a primeira encomenda, as encomendas de rede de tamanho fixo restantes são colocadas uma a uma até que seja atingido o número especificado de redes.

Mecanismo de cobertura

Se o preço aumentar para além da percentagem de limiar de cobertura estabelecida a partir da entrada, todas as posições abertas são cobertas por encerramento.

Mecanismo de reversão

Se o preço cair para além da percentagem de limiar de reversão estabelecida a partir da entrada, todas as ordens pendentes são canceladas para aguardar novas oportunidades de entrada.

Análise das vantagens

  • Combina os indicadores RSI e CCI para melhorar a rendibilidade
  • Objetivos de rede fixa de bloqueio de lucros para aumentar a certeza
  • Garantias de cobertura integradas contra oscilações voláteis de preços
  • O mecanismo de reversão reduz as perdas

Análise de riscos

  • Falsos sinais dos indicadores
  • Os picos de preços ultrapassam os limiares de cobertura
  • Incumprimento de um pedido de reinscrição

Estes podem ser atenuados através do ajustamento dos parâmetros do indicador, da ampliação do intervalo de cobertura, da redução do intervalo de reversão.

Áreas de melhoria

  • Teste mais combinações de indicadores
  • Profitagem adaptativa da investigação
  • Otimize a lógica da grade

Conclusão

A estratégia de rede de RSI determina entradas com indicadores e bloqueia lucros estáveis usando rede fixa para obter lucros e entradas.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom RSI/CCI Strategy with Fixed Grid", shorttitle="INVESTCOIN_RSI_CCI_Fixed_Grid", overlay=true)

// Input parameters
input_rsi_5min_value = 55
input_rsi_30min_value = 65
input_cci_1hr_value = 85
input_profit_target_percent = 0.6 // Target profit in percentage
input_grid_size = 15 // Number of orders in grid
input_hedging_percent = 20 // Percentage price change for hedging
input_first_order_offset = 0.2 // Offset for the first order in percentage
input_reversal_percent = 0.4 // Percentage price change for reversal

// Calculating the RSI and CCI values
rsi_5min = ta.rsi(close, 5)
rsi_30min = ta.rsi(close, 30)
cci_1hr = ta.cci(close, 60)

// Define strategy conditions based on the provided screenshot
long_condition = (rsi_5min < input_rsi_5min_value) and (rsi_30min < input_rsi_30min_value) and (cci_1hr < input_cci_1hr_value)

// Plot signals
plotshape(series=long_condition, title="Long Entry Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// Initialize a variable to store the entry price
var float entry_price = na

// Initialize a variable to store the profit target
var float profit_target = na

// Hedge condition based on price change percentage
var float hedge_price = na

// Initialize a variable to count the total number of orders
var int total_orders = 0

// Calculate the initial order size based on account equity and grid size
var float initial_order_size = 1 / input_grid_size / 100

// Entry orders with fixed size
if (long_condition and total_orders < 9000)
    // Place first order with an offset
    if total_orders == 0
        strategy.order("First Long", strategy.long, qty=initial_order_size, limit=close * (1 - input_first_order_offset / 100))
    total_orders := total_orders + 1
    
    // Place remaining grid orders
    for i = 1 to input_grid_size - 1
        if (total_orders >= 9000)
            break // Stop if max orders reached
        strategy.entry("Long_" + str.tostring(i), strategy.long, qty=initial_order_size)
        total_orders := total_orders + 1

// Calculate the profit target in currency
if (long_condition)
    entry_price := close // Store the entry price when the condition is true

if (not na(entry_price))
    profit_target := entry_price * input_profit_target_percent / 100 // Calculate the profit target

// Setting up the profit target
if (not na(profit_target))
    strategy.exit("Take Profit", "Long", limit=entry_price + profit_target)

// Hedge by closing all positions if the price increases by the hedging percentage
if (strategy.position_size > 0)
    hedge_price := close * (1 + input_hedging_percent / 100)

if (not na(hedge_price) and close >= hedge_price)
    strategy.close_all(comment="Hedging")


// Reversal condition based on the price change percentage
var float reversal_price = na

if (strategy.position_size > 0 and total_orders > 1) // Check if at least one grid order has been placed
    reversal_price := entry_price * (1 - input_reversal_percent / 100)

// Cancel trades and wait for a new entry point if the price reverses by the specified percentage
if (not na(reversal_price) and close <= reversal_price)
    strategy.cancel_all()
    total_orders := 0 // Reset the total orders count after cancellation

Mais.