A estratégia de negociação quantitativa eficiente combinando

Autora:ChaoZhang, Data: 2024-02-01 15:09:06
Tags:

img

Resumo

Esta estratégia combina principalmente o indicador RSI de 5 dias e a média móvel de 200 dias para formar sinais de decisão de negociação, que pertence à estratégia de combinação de indicadores técnicos. Seu principal princípio de negociação é: quando o preço chega à área de sobrecompra/supervenda, ele sinaliza para vender; quando o preço cai para a área de supervenda, ele sinaliza para comprar. A maior vantagem desta estratégia é que o sinal de estratégia é relativamente claro e o risco de retração é relativamente pequeno. Mas também há limitações na formação de decisões de negociação baseadas apenas em uma única combinação de indicadores técnicos, que podem ser otimizadas por meio de modelos multifatores e algoritmos de aprendizado de máquina.

Princípio da estratégia

Esta estratégia combina principalmente o indicador de RSI de 5 dias e a média móvel de 200 dias para julgar a área de sobrecompra/supervenda em que os preços estão em curso e forma decisões de negociação:

  1. O indicador RSI de 5 dias julga a área de sobrecompra/supervenda em que os preços estão correndo. A linha de sobrecompra é definida em 72 e a área de sobrevenda é 30. Quando o indicador RSI atravessa 30 de baixo para cima, um sinal de compra é gerado; quando o indicador RSI cai de cima para baixo abaixo de 72, um sinal de venda é gerado.

  2. A média móvel de 200 dias determina a direção da tendência de médio a longo prazo. Quando o preço está abaixo da média móvel de 200 dias, é uma fase de queda do preço; quando o preço está acima da média móvel de 200 dias, é uma fase de alta do preço.

  3. Combinando julgamento 1 e 2, esta estratégia vende quando o indicador RSI de 5 dias é sobrecomprado e cai abaixo de 72, e compra quando o RSI de 5 dias cai abaixo de 30 e o preço está abaixo da média móvel de 200 dias.

Vantagens da estratégia

  1. O sinal de estratégia é relativamente claro, utilizando o indicador RSI para determinar o sinal de sobrecompra/supervenda pela área de julgamento.

  2. A média móvel de 200 dias determina a direcção da tendência principal para evitar operações contrárias.

  3. O número máximo de posições pode ser definido para ajudar a controlar os riscos.

  4. A estratégia tem um grande espaço para otimização de parâmetros, parâmetros ajustáveis do RSI e parâmetros da média móvel.

  5. O risco de retracement relativamente pequeno pode controlar eficazmente o retracement máximo da estratégia.

Riscos da Estratégia

  1. Usando apenas indicadores do RSI e da média móvel, o sinal de estratégia pode ser instável, com o risco de perdas de longo e curto prazo em mercados voláteis.

  2. Precisa de otimizar e testar parâmetros do RSI e parâmetros da média móvel para melhores resultados estratégicos.

  3. Outros indicadores ou modelos podem ser introduzidos para otimizar o sinal de estratégia, como a introdução de indicadores de volatilidade, julgamentos de aprendizado de máquina, etc.

Orientações para a otimização da estratégia

  1. Use mais combinações de indicadores para julgar, como MACD, KD, indicadores de volatilidade, etc.

  2. Aumentar os julgamentos de modelos de aprendizagem de máquina, como o LSTM para julgar a estabilidade dos sinais de negociação.

  3. Aumentar os fatores quantitativos, tais como as alterações no volume de negociação, a direção do fluxo de capital e outros julgamentos dos fatores de capital.

  4. Otimizar parâmetros de estratégia, como parâmetros do RSI, parâmetros da média móvel, etc.

  5. Otimizar mecanismos de stop loss, tais como stop loss em movimento, stop loss em tempo, etc.

Resumo

Esta estratégia usa principalmente a combinação do indicador RSI de 5 dias e do indicador médio móvel de 200 dias para julgar a área de sobrecompra / sobrevenda de preços e formar sinais de negociação. Ela pertence à estratégia de combinação de indicadores técnicos. O sinal de estratégia é relativamente claro e o risco máximo de retração é relativamente pequeno. Mas pode ser otimizado ainda mais por meio de combinações de múltiplos indicadores e julgamentos de aprendizado de máquina para melhorar os resultados da estratégia.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 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/
// ©chewyScripts.

//@version=5
strategy("96er RSI+200EMA Strategy + Alerts", overlay=true)
// This works best on a small account $100, with 50% of equity and up to 10 max open trades. 
// 96% Profitable, turns $100 into $350 in 1 month. very few losses. super happy with it.
// So far it triples the account on a 1m chart in 1 month back testing on the SEI-USD pair.
// I did not test on FX pairs or other instruments.
// had some issues with the inputs not working so had to hard code some, also the lastClose var sometimes breaks and starts following every candle, not sure why.

in_r1 = input.int(5,"5 day input or RSI1")
in_openOrders = input.int(3,"max open orders")

in_lowerRSI = input.int(30,"RSI Lower")
in_upperRSI = input.int(72,"RSI Upper ")

in_emaperiod = input.int(200,"EMA Period")

in_buybreakout = input.int(50,"Buy breakout range")

in_buyTP = input.float(1.05,"Buy TP: 1+TP %, .05 seems to work well.")
in_sellTP = input.float(0.9850, "Sell TP: 1-TP%. .025 seems to work well. ")

simple int rsi5 = in_r1

// 3 rsi strategy , when all of them are overbought we sell, and vice versa
rsi7 = ta.rsi(close,rsi5)
lastClose = request.security(syminfo.tickerid, "D", close, lookahead = barmerge.lookahead_on)
rsi3 = ta.rsi(close[5],rsi5)

ma = ta.ema(close,in_emaperiod)

plot(rsi7,"5 Day RSI",color.red)
plot(lastClose,"Yesterdays Close",color.green)
plot(rsi3,"Previous 5th candles RSI",color.purple)


// sell condition
//sell = ta.crossunder(rsi7,70) and ta.crossunder(rsi14,70) and ta.crossunder(rsi21,70)

//buy condition
//buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and rsi3 <= in_upperRSI and strategy.opentrades < in_openOrders
//sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and rsi3 >= in_lowerRSI3 and strategy.opentrades < in_openOrders

buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and close < lastClose and strategy.opentrades < in_openOrders
sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and close > lastClose and strategy.opentrades < in_openOrders


var lastBuy = close 
var lastSell = close 

if (buy)
    strategy.entry("BUY", strategy.long)
    lastBuy := close 
    alert("Buy")

if ((close >= lastBuy*in_buyTP ) or rsi7 > in_buybreakout and close >= lastClose and (close >= lastClose*in_buyTP or close >= lastBuy*in_buyTP ) )
    strategy.close("BUY", "BUY Exit")
    alert("Buy Exit")
    
if (sell)
    strategy.entry("SELL", strategy.short)
    lastSell := close 
    alert("Sell")

if ( close < ma and (close <= lastSell*in_sellTP ) or (close < lastClose*in_sellTP) )
    strategy.close("SELL", "Sell Exit")
    alert("Sell Exit")


Mais.