Esta estratégia é chamada de
O indicador RSI determina o estado de sobrecompra/supervenda. O cruzamento do RSI acima de 30 representa o fim da sobrevenda, considerando a entrada longa. O cruzamento do RSI abaixo de 70 bandeiras termina com a sobrecompra, considerando as posições de fechamento.
O indicador ADX mede a força da tendência. ADX cruzar acima de 25 significa entrar em uma tendência, enquanto cruzar abaixo de 25 representa o fim da tendência.
O MACD julga a tendência de curto prazo. O cruzamento do DIFF acima da DEA representa uma tendência de alta de curto prazo, considerando a entrada longa. O cruzamento abaixo das bandeiras representa uma tendência de queda de curto prazo, considerando as posições de fechamento.
Quando o RSI, ADX e MACD mostram sinais de alta, as negociações longas são feitas.
A vantagem é que o uso de múltiplos indicadores para confirmação pode efetivamente prevenir sinais falsos.
Em resumo, a integração de indicadores melhora a eficácia do julgamento, mas os operadores ainda precisam de discrição para ajustar e validar os parâmetros da estratégia com base nas condições reais.
/*backtest start: 2023-09-05 00:00:00 end: 2023-09-08 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // RSI //@version=3 // strategy("Femi Strategy", overlay=true) strategy("Femi Strategy", overlay=false) RSIlength = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = rsi(price, RSIlength) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr) // ADX //@version=3 adxlen = input(14) dilen = input(14) adxThreshold = input( 25 ) dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) // MACD //@version=3 MACDZero = input(0) fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD source = close length = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev if (not na(vrsi)) if (crossover(delta, MACDZero)) strategy.entry("FEMIMACDLE", strategy.long, comment="FEMIMACDLE") else strategy.cancel(id="FEMIMACDLE") if (crossunder(vrsi, overSold)) strategy.entry("FEMIRSILE", strategy.long, comment="FEMIRSILE") else strategy.cancel(id="FEMIRSILE") // if(crossover(sig, adxThreshold)) // crossover(sig, adxThreshold) crossover(delta, MACDZero) crossunder(vrsi, overSold) // strategy.entry("FEMIADXLE", strategy.long, comment="FEMIADXLE") // else // strategy.cancel(id="FEMIADXLE") // if (crossover(source, lower)) // strategy.entry("FEMIBBLE", strategy.long, comment="FEMIBBLE") // else // strategy.cancel(id="FEMIBBLE") // if(crossunder(sig, adxThreshold)) // strategy.cancel(id="FEMILE") // strategy.exit(id="FEMILE") // if (crossunder(delta, MACDZero)) // strategy.entry("FEMIMACDSE", strategy.short, comment="FEMIMACDSE") if (crossover(vrsi, overBought)) // strategy.entry("FEMIRSISE", strategy.short, comment="FEMIRSISE") strategy.close("FEMIRSILE") strategy.close("FEMIMACDLE") strategy.close("FEMIADXLE") strategy.close("FEMIBBLE") if (crossunder(sig, adxThreshold) and crossunder(delta, MACDZero) and crossunder(source, upper)) // crossover(delta, MACDZero) crossover(vrsi, overSold) crossover(sig, adxThreshold) strategy.close("FEMIRSILE") strategy.close("FEMIMACDLE") strategy.close("FEMIADXLE") strategy.close("FEMIBBLE") // if(crossunder(source, upper)) // strategy.close("FEMIRSILE") // strategy.close("FEMIMACDLE") // strategy.close("FEMIADXLE") // strategy.close("FEMIBBLE") // strategy.entry("FEMIADXSE", strategy.short, comment="FEMIADXSE") // else // strategy.cancel(id="FEMISE") // plot(sig, color=red, title="ADX", linewidth=2, style=areabr) // plot(adxThreshold, color=blue, title="ADX") // plot(vrsi, color=green, title="RSI", linewidth=2, style=areabr) // plot(overSold, color=blue, title="RSI") // plot(overBought, color=red, title="RSI") // plot(delta, color=green, title="MACD", linewidth=2, style=areabr) // plot(MACDZero, color=blue, title="MACD") // plot(overBought, color=red, title="MACD") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)