Эта стратегия называется
Показатель RSI определяет статус перекупленности/перепроданности. Пересечение RSI выше 30 означает конец перепроданности, учитывая длинный вход. Пересечение RSI ниже 70 флагов - конец перекупленности, учитывая закрытие позиций.
Индикатор ADX измеряет силу тренда. Пересечение ADX выше 25 означает вход в тренд, а пересечение ниже 25 означает окончание тренда.
MACD оценивает краткосрочную тенденцию. Пересечение DIFF выше DEA представляет собой краткосрочный восходящий тренд, учитывая длинный вход. Пересечение ниже флагов краткосрочный нисходящий тренд, учитывая закрытие позиций.
Когда RSI, ADX и MACD все показывают бычьи сигналы, длинные сделки принимаются.
Преимущество заключается в том, что использование нескольких индикаторов для подтверждения может эффективно предотвратить ложные сигналы.
В целом, интеграция индикаторов улучшает эффективность суждений, но трейдеры по-прежнему нуждаются в свободе воли для корректировки и проверки параметров стратегии на основе реальных условий.
/*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)