
Это многонаправленная трендовая торговая стратегия, которая сочетает в себе двойные прорывы средних линий и анализ объема торгов. Стратегия принимает торговые решения, сравнивая перекрестные сигналы краткосрочных и долгосрочных движущихся средних, а также комбинируя показатели объема торгов. Когда краткосрочные средние линии пересекают долгосрочные средние линии вверх, и объем торгов значительно увеличивается, система посылает многосигналы.
Основная логика стратегии основана на следующих ключевых элементах:
Риск рыночных потрясений: в рыночных потрясениях с поперечным диапазоном частое пересечение равновесия может привести к многократным ложным прорывам. Решение: можно добавить индикаторы подтверждения тренда, такие как ADX или индикатор силы тренда.
Риск скольжения: при резком увеличении объемов сделок может возникнуть значительная потеря скольжения. Решение: Рекомендуется установить разумную толерантность скольжения и использовать лимитную линию при открытии позиции.
Риск возникновения стоп-лома: фиксированный стоп-лома может быть слишком чувствительным при усилении рыночных колебаний. Решение: можно рассмотреть возможность использования ATR для динамического остановки или регулирования волатильности.
Стратегия создает относительно целостную торговую систему, объединяя ценовые тенденции и изменения объема торгов. Преимущества стратегии заключаются в наличии многочисленных механизмов подтверждения и хорошего контроля риска, но в условиях волатильности рынка возможен риск ложного прорыва.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Crossover with Volume (Long Only) + Stop Loss", overlay=true)
// Input settings for Moving Averages
shortMaLength = input.int(9, title="Short MA Length", minval=1)
longMaLength = input.int(21, title="Long MA Length", minval=1)
// Input settings for Volume
volumeMaLength = input.int(20, title="Volume MA Length", minval=1)
volumeThresholdMultiplier = input.float(1.5, title="Volume Multiplier (x times the average)", step=0.1)
// Input settings for Stop Loss
stopLossPercent = input.float(2.0, title="Stop Loss (%)", minval=0.1, step=0.1) / 100 // Stop loss in percentage
// Calculating Moving Averages
shortMa = ta.sma(close, shortMaLength)
longMa = ta.sma(close, longMaLength)
// Calculating Volume Metrics
volumeMa = ta.sma(volume, volumeMaLength) // Average volume
isVolumeAboveAverage = volume > (volumeMa * volumeThresholdMultiplier) // Volume above threshold
isVolumeIncreasing = volume > volume[1] // Volume increasing compared to the previous bar
// Plotting Moving Averages
plot(shortMa, color=color.blue, title="Short MA")
plot(longMa, color=color.orange, title="Long MA")
// Buy Condition with Volume
longCondition = ta.crossover(shortMa, longMa) and isVolumeAboveAverage and isVolumeIncreasing
exitCondition = ta.crossunder(shortMa, longMa) // Exit when the MAs cross downward
// Calculate Stop Loss Level
var float entryPrice = na // Variable to store entry price
if (strategy.position_size > 0 and na(entryPrice)) // Update entry price only when entering a new trade
entryPrice := strategy.position_avg_price
stopLossLevel = entryPrice * (1 - stopLossPercent) // Stop-loss level based on entry price
// Strategy Entry (Long Only)
if (longCondition)
strategy.entry("Long", strategy.long)
// Close position on Stop Loss or Exit Condition
if (strategy.position_size > 0)
if (low < stopLossLevel) // If the price drops below the stop-loss level
strategy.close("Long", comment="Stop Loss Hit")
if (exitCondition)
strategy.close("Long", comment="Exit Signal Hit")
// Debugging Plots
plot(volumeMa, color=color.purple, title="Volume MA", style=plot.style_area, transp=80)
hline(0, "Zero Line", color=color.gray)