
Esta estratégia é chamada de estratégia de negociação quantitativa de indicadores RSI em combinação com médias móveis. Esta estratégia usa indicadores RSI e médias móveis como sinais de negociação, permitindo uma estratégia de negociação quantitativa para realizar operações de reversão no contexto de tendências.
A estratégia usa principalmente o indicador RSI e a média móvel rápida para determinar a tendência do preço das ações e o momento da reversão. Concretamente, a estratégia primeiro calcula a média móvel rápida (SMA) e a média móvel lenta, gerando um sinal de compra quando a média móvel rápida é atravessada pela média móvel lenta; e um sinal de venda quando a média móvel rápida é atravessada pela média móvel lenta.
Ao mesmo tempo, a estratégia calcula o RSI para determinar se o preço da ação está em um estado de sobrecompra ou sobrevenda. Antes de abrir uma posição, o RSI é avaliado como normal. Se o RSI exceder o limiar definido, a abertura da posição é suspensa até que o RSI volte e abra a posição.
Através da combinação do indicador RSI e da média móvel, é possível abrir posições quando o preço da ação produz um sinal de reversão; e fazer um stop-loss quando o preço da ação é sobre-comprado e sobre-vendido, permitindo uma estratégia de negociação quantitativa de reversão lucrativa no contexto da tendência do preço da ação.
A estratégia tem as seguintes vantagens:
Pode abrir posições com precisão quando o preço das ações se inverter. Utilize o forro de ouro da média móvel como sinal de compra e o forro morto como sinal de venda para capturar com precisão a oportunidade de reversão da tendência das ações.
O indicador RSI pode ser usado para avaliar a sobrevenda e a sobrevenda, evitando a criação de posições em situações de excesso de volatilidade de curto prazo e evitando perdas desnecessárias.
O controle de risco é muito bom. O RSI Stop Stop pode manter as posições dentro de uma margem de lucro razoável, controlando efetivamente o risco de negociação.
Facil de ajustar os parâmetros. O ciclo SMA, os parâmetros RSI e outros podem ser ajustados de forma flexível para se adaptar a diferentes condições de mercado.
Eficiência na utilização de fundos. Pode realizar transações frequentes durante a fase de balanço de tendência e uso eficaz de fundos.
A estratégia também apresenta os seguintes riscos:
Risco de erro de acompanhamento. A média móvel como indicador de tendência está um pouco atrasada, o que pode levar a uma hora imprecisa de abertura da posição.
Risco de negociação frequente. Em situações de turbulência, pode resultar em posições abertas e fechadas com muita frequência.
Risco de ajuste de parâmetros. O ciclo SMA e os parâmetros RSI precisam de ajustes de teste repetidos para se adaptar ao mercado, e a configuração inadequada pode afetar o desempenho da estratégia.
Risco de paralisação. A configuração inadequada da paralisação do RSI também pode levar a uma posição a sair prematuramente ou a continuar a subir após a paralisação.
A estratégia de otimização é a seguinte:
Tente usar outros indicadores, como MACD, linhas de Brin, em combinação com o RSI, para tornar o sinal mais preciso e confiável.
A adição de algoritmos de aprendizagem de máquina permite que os parâmetros sejam automaticamente ajustados com base em dados históricos, reduzindo o risco de ajuste de parâmetros.
Aumentar o mecanismo de otimização da estratégia de suspensão para tornar a suspensão mais inteligente e adaptável às mudanças do mercado.
Optimizar a estratégia de gerenciamento de posições e reduzir o risco de transações individuais, ajustando dinamicamente o tamanho das posições.
Combinação de dados de alta frequência com dados em tempo real de nível de tick para negociação de alta frequência, aumentando a frequência da estratégia.
Em geral, a estratégia utiliza o indicador RSI e a média móvel para gerar sinais de negociação, permitindo uma estratégia quantitativa de cálculo inverso durante a execução da tendência. Em comparação com o uso da média móvel isoladamente, a estratégia usa o indicador RSI para evitar a abertura de posições em momentos adversos e controlar o risco de negociação através do RSI Stop, aumentando a estabilidade da estratégia.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//1. 做多
// a. RSI在超买区间时不开单,直到RSI回落一点再开单
// b. 已经有多仓,如果RSI超买,则平多获利,当RSI回落一点之后,再次开多,直到有交叉信号反转做空
//2. 做空
// a. RSI在超卖区间时不开单,直到RSI回落一点之后再开多单
// b. 已经有空仓,如果RSI超卖,则平空获利,当RSI回落一点之后,再开空单,直到有交叉信号反转做多
//@version=4
strategy("策略_RSI+移动揉搓线_", overlay=true)
// 输入
fastLength = input(11, minval=1)
slowLength = input(82,minval=1)
length = input(title="长度", type=input.integer, defval=14, minval=1, maxval=100)
hight_rsi = input(title="rsi超过上轨平多获利", type=input.integer, defval=80, minval=1, maxval=100)
low_rsi = input(title="rsi超过下轨平空获利", type=input.integer, defval=20, minval=1, maxval=100)
open_long_rsi_threshold = input(title="rsi低于该阈值时才开多", type=input.integer, defval=75, minval=1, maxval=100)
open_short_rsi_threshold = input(title="rsi高于该阈值时才开空仓", type=input.integer, defval=25, minval=1, maxval=100)
// 均线
sma_fast = sma(close, fastLength)
sma_slow = sma(close, slowLength)
// RSI
rsi = rsi(close, length)
//**********变量*start*******//
var long_f = false // 标记是否是均线交叉多头
var short_f = false // 标记是否是均线交叉空头
var long_open_pending = false // 标记开仓时rsi是否处于超买状态
var short_open_pending = false // 标记开仓时rsi是否处于超卖
var long_rsi_over_buy = false // 标记 多仓时 是否发生超买平多获利
var short_rsi_over_sell = false // 标记 空仓时 是否发生超卖平空获利
//**********逻辑*start*******//
// 买入
longCondition = crossover(sma_fast, sma_slow)
if (longCondition)
short_rsi_over_sell := false // 清空该标记,防止再次开空仓
long_f := true
short_f := false
if (rsi < hight_rsi)
// 并且没有超买
strategy.entry("多", long=strategy.long)
if (rsi > hight_rsi)
// 开仓时发生超买,等待rsi小于hight_rsi
long_open_pending := true
// 卖出
shortCondition = crossunder(sma_fast, sma_slow)
if (shortCondition)
long_rsi_over_buy := false //清空该标记,防止再次开多仓
long_f := false
short_f := true
if (rsi > low_rsi)
strategy.entry("空", long=strategy.short)
if (rsi < low_rsi)
// 开仓时发生超卖,等待rsi大于low_rsi
short_open_pending := true
// 等待RSI合理,买入开仓
if (long_f and long_open_pending and strategy.position_size == 0 and rsi < open_long_rsi_threshold)
strategy.entry("多", long=strategy.long)
long_open_pending := false
// 等待RSI合理,卖出开仓
if (short_f and short_open_pending and strategy.position_size == 0 and rsi > open_short_rsi_threshold)
strategy.entry("空", long=strategy.short)
short_open_pending := false
//RSI止盈(RSI超买平多)
if (strategy.position_size > 0 and long_f and rsi > hight_rsi)
strategy.close_all()
long_rsi_over_buy := true
//RSI止盈(RSI超卖平空)
if (strategy.position_size < 0 and short_f and rsi < low_rsi)
strategy.close_all()
short_rsi_over_sell := true
//RSI止盈之后,再次开多
if (long_f and long_rsi_over_buy and strategy.position_size == 0 and rsi < hight_rsi)
long_rsi_over_buy := false
strategy.entry("多", long=strategy.long)
//RSI止盈之后,再次开空
if (short_f and short_rsi_over_sell and strategy.position_size == 0 and rsi > low_rsi)
short_rsi_over_sell := false
strategy.entry("空", long=strategy.short)
//**********绘图*start*******//
p1 = plot(sma_fast, linewidth=2, color=color.green)
p2 = plot(sma_slow, linewidth=2, color=color.red)
fill(p1, p2, color=color.green)
plot(cross(sma_fast, sma_slow) ? sma_fast : na, style = plot.style_circles, linewidth = 4)
// 绘制rsi线
//plot(rsi, color=color.green, editable=true, style=plot.style_circles, linewidth=2)
// 绘制上下轨
//high_ = hline(80, title="上轨")
//low_ = hline(20, title="下轨")
//fill(high_, low_, transp=80, editable=true, title="背景")