Esta estratégia utiliza o indicador RSI para medir o ímpeto do preço e determina os horários de entrada, calculando o desvio padrão das mudanças no RSI. Ele entra em uma posição longa quando o ímpeto do RSI excede o limiar do desvio padrão e é menor do que o ímpeto anterior multiplicado por um fator de exaustão, e entra em uma posição curta sob as condições opostas. A estratégia usa ordens de limite para saída, controlando o risco, definindo o objetivo de lucro e tiques de stop loss. A estratégia é executada em cada tique de preço para capturar todos os movimentos de preços potenciais.
Esta estratégia utiliza o ímpeto do RSI e os limiares de desvio padrão para executar negociações de reversão em um ambiente de alta frequência. Ao introduzir um fator de exaustão e saída de ordem de limite, a estratégia é capaz de capturar oportunidades de negociação trazidas pelos movimentos de preços enquanto controla o risco. No entanto, a estratégia ainda precisa de mais otimização na aplicação real, como a introdução de mais indicadores, otimização de configurações de parâmetros, introdução de gerenciamento de posição e filtragem de tendências, etc., para melhorar a estabilidade e lucratividade da estratégia.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MCOTs Intuition Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=50000, calc_on_every_tick=true) // Input for RSI period rsiPeriod = input(14, title="RSI Period") // Input for standard deviation multiplier stdDevMultiplier = input(1.0, title="Standard Deviation Multiplier") // Input for exhaustion detection exhaustionMultiplier = input(1.5, title="Exhaustion Multiplier") // Input for profit target and stop loss in ticks profitTargetTicks = input(8, title="Profit Target (ticks)") stopLossTicks = input(32, title="Stop Loss (ticks)") // Calculate RSI rsiValue = ta.rsi(close, rsiPeriod) // Calculate standard deviation of RSI changes rsiStdDev = ta.stdev(ta.change(rsiValue), rsiPeriod) // Calculate momentum momentum = ta.change(rsiValue) // Conditions for entering a long position longCondition = momentum > rsiStdDev * stdDevMultiplier and momentum < momentum[1] * exhaustionMultiplier if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit Long", "Long", limit=close + profitTargetTicks * syminfo.mintick) strategy.exit("Stop Loss Long", "Long", stop=close - stopLossTicks * syminfo.mintick) // Conditions for entering a short position shortCondition = momentum < -rsiStdDev * stdDevMultiplier and momentum > momentum[1] * exhaustionMultiplier if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit Short", "Short", limit=close - profitTargetTicks * syminfo.mintick) strategy.exit("Stop Loss Short", "Short", stop=close + stopLossTicks * syminfo.mintick) // Plotting RSI value for reference plot(rsiValue, title="RSI", color=color.blue)