Эта стратегия является основанной на сети многочисленных технических индикаторов. Она использует несколько технических индикаторов, таких как: скользящая средняя (EMA), средняя цена (VWAP), относительно сильный индекс (RSI) и средний трендовый индекс (ADX), чтобы отфильтровать ложные прорывы и повысить точность торговли с помощью множества сигналов.
Основная логика стратегии основана на следующих ключевых элементах:
Эта стратегия создает относительно целостную торговую систему с помощью совместной работы с несколькими техническими показателями. Ее основное преимущество заключается в том, что она повышает точность торгов с помощью многомерного подтверждения сигналов, а также использует научные методы управления рисками для защиты безопасности средств. Несмотря на определенные ограничения, благодаря постоянной оптимизации и улучшению эта стратегия может обеспечить стабильную прибыль в реальных сделках.
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend-Filtered Scalping Strategy", overlay=true, shorttitle="TFSS")
// Inputs
emaShort = input.int(9, title="EMA Short", minval=1)
emaLong = input.int(21, title="EMA Long", minval=1)
rsiLength = input.int(14, title="RSI Length", minval=1)
atrLength = input.int(14, title="ATR Length", minval=1)
adxLength = input.int(20, title="ADX Length", minval=1)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1)
volMultiplier = input.float(1.5, title="Volume Spike Multiplier", minval=1.0)
riskPercent = input.float(1, title="Risk % of Equity", minval=0.1, step=0.1)
// Higher Time Frame for Trend Filter
htfTimeframe = input.timeframe("15", title="Higher Time Frame")
ema50HTF = request.security(syminfo.tickerid, htfTimeframe, ta.ema(close, 50))
// Indicators
ema9 = ta.ema(close, emaShort)
ema21 = ta.ema(close, emaLong)
vwap = ta.vwap(close)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
volAvg = ta.sma(volume, 10)
// ADX Calculation with Smoothing
[_, _, adx] = ta.dmi(adxLength, adxSmoothing)
// Entry Conditions
longCondition = (ta.crossover(ema9, ema21) and close > vwap and rsi > 55 and adx > 25 and close > ema50HTF and volume > volAvg * volMultiplier)
shortCondition = (ta.crossunder(ema9, ema21) and close < vwap and rsi < 45 and adx > 25 and close < ema50HTF and volume > volAvg * volMultiplier)
// Position Sizing Based on Risk %
capitalPerTrade = (strategy.equity * (riskPercent / 100)) / atr
longStop = close - 1.5 * atr
longTarget = close + 3 * atr
shortStop = close + 1.5 * atr
shortTarget = close - 3 * atr
// Entry Logic
if longCondition and not strategy.opentrades
strategy.entry("Long", strategy.long, qty=capitalPerTrade)
strategy.exit("Exit Long", from_entry="Long", stop=longStop, limit=longTarget)
if shortCondition and not strategy.opentrades
strategy.entry("Short", strategy.short, qty=capitalPerTrade)
strategy.exit("Exit Short", from_entry="Short", stop=shortStop, limit=shortTarget)
// Alerts
alertcondition(longCondition, title="Long Entry Alert", message="Long Condition Triggered!")
alertcondition(shortCondition, title="Short Entry Alert", message="Short Condition Triggered!")
// Plot Indicators
plot(ema9, title="EMA 9", color=color.green)
plot(ema21, title="EMA 21", color=color.red)
plot(vwap, title="VWAP", color=color.blue)
plot(ema50HTF, title="HTF EMA 50", color=color.purple)
hline(55, "RSI Long Threshold", color=color.green)
hline(45, "RSI Short Threshold", color=color.red)