
A estratégia julga a tendência do mercado e o momento de entrada através do cruzamento do indicador RSI com a média da MA de dois períodos diferentes. A estratégia só faz mais quando o RSI está acima de sua própria média de 26 períodos, e faz uma folga quando o RSI está abaixo de sua própria média de 26 períodos, para controlar o risco.
A estratégia usa duas linhas médias de MA de 12 e 26 períodos. Quando a linha rápida de 12 períodos atravessa a linha lenta de 26 períodos, o mercado entra em uma tendência ascendente; quando a linha rápida atravessa a linha lenta, o mercado entra em uma tendência descendente. A estratégia faz mais quando a linha média ocorre em um cruzamento dourado e fechado quando o cruzamento de morte.
Ao mesmo tempo, a estratégia introduz o indicador RSI para determinar as áreas de sobrecompra e sobrevenda. Apenas quando o RSI está acima de sua própria linha média de 26 ciclos, a posição de overbought ocorre em um cruzamento de ouro na linha média; apenas quando o RSI está abaixo de sua própria linha média de 26 ciclos, a posição de overbought ocorre em um cruzamento de morte na linha média. Isso evita a abertura forçada de posições em caso de sobrecompra ou sobrevenda, controlando assim o risco.
A estratégia combina a linha média e o indicador RSI para determinar a tendência e o momento de entrada, para acompanhar a tendência de forma eficaz. A introdução do indicador RSI como condição de filtragem pode reduzir a frequência de abertura de posições e evitar ser preso em situações de turbulência.
A falta de paragem pode aumentar os prejuízos se os juízos forem errados. Se houver uma grande queda no mercado, os prejuízos podem ser maiores. Além disso, as condições de filtragem do RSI podem ser mal definidas e podem perder uma boa oportunidade de entrada.
Pode-se considerar a configuração de stop loss para controlar o máximo de perdas. Pode-se ajustar adequadamente os parâmetros do RSI, em busca de melhores condições de filtragem. Se a volatilidade do mercado for maior, pode-se ajustar adequadamente os parâmetros da média, usando uma média mais lenta para julgar a tendência.
A estratégia pode ser melhorada em vários aspectos:
Testar combinações de linhas médias de MA de diferentes períodos, procurando os parâmetros de linha média que melhor correspondem às características do mercado atual.
Testar diferentes parâmetros de ciclo do RSI, diferentes condições de filtragem, otimizar o tempo de entrada.
Adicionar outros indicadores ou condições de filtragem para melhorar a estabilidade do sistema. Por exemplo, adicionar indicadores de capacidade, indicadores de volume de transação e outros indicadores relacionados ao julgamento de tendências.
Optimizar as estratégias de stop loss e controlar o risco ao mesmo tempo em que se segue a tendência. Estratégias de stop loss como stop loss de rastreamento, stop loss de porcentagem e stop loss dinâmico podem ser testadas.
A estratégia é geralmente mais simples e direta, através de um equilíbrio de tendências de julgamento cruzado, RSI evitar a abertura forçada de posições, para acompanhar a tendência de obter melhores resultados. Pode ser aperfeiçoado ainda mais a estratégia por meio de parâmetros de otimização, adição de outros indicadores, etc., para torná-lo mais adequado para o complexo e variável ambiente de mercado.
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)
window() => true
stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")
maFastSource = input(defval = open, title = "Fast MA Source")
maFastLength = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource = input(defval = open, title = "Slow MA Source")
maSlowLength = input(defval = 26, title = "Slow MA Period", minval = 1)
maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)
//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)
fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)
longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%
shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)
//if (rsi1 < ema(rsi1,7))
//rsiLong = false
//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26))) //RSI ema values optimal from 19 to 35
strategy.entry("LongId", strategy.long, when=window())
//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong)
//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
strategy.entry("ShortId", strategy.short, when=window())
if (UseStopLoss)
strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)