Расширенная количественная торговая система пересечения нескольких скользящих средних в сочетании со стратегией фильтрации объема

MA EMA SMA VOL TP SL
Дата создания: 2025-02-21 14:50:59 Последнее изменение: 2025-02-21 14:50:59
Копировать: 5 Количество просмотров: 464
2
Подписаться
319
Подписчики

Расширенная количественная торговая система пересечения нескольких скользящих средних в сочетании со стратегией фильтрации объема Расширенная количественная торговая система пересечения нескольких скользящих средних в сочетании со стратегией фильтрации объема

Обзор

Это количественная торговая стратегия, основанная на многократном перекрестке средних линий с комбинированной перегрузочной фильтрацией. Эта стратегия использует движущиеся средние за три разных периода (быстрая ЭМА, медленная ЭМА и трендовая SMA) в качестве центрального показателя и комбинирует перегрузочную фильтрацию для подтверждения эффективности торговых сигналов.

Стратегический принцип

Стратегия основана на следующих основных элементах:

  1. С помощью 9-циклической и 21-циклической индикаторных скользящих средних ((EMA) для перекрестного суждения, формирующих предварительный торговый сигнал
  2. Введение 50-циклической простой движущейся средней (SMA) в качестве фильтра тренда, чтобы обеспечить соответствие направления торгов с основными тенденциями
  3. Профильтрация объема сделок в 1,5 раза за 20 циклов обеспечивает активность торгов
  4. Комбинированный оборот увеличивает эффективность подтверждающего сигнала при ценовом прорыве
  5. Установка 1% стоп-лосса и 400% стоп-стопа для управления риско-прибылью

Стратегические преимущества

  1. Множественный механизм подтверждения: значительно повышается надежность сигнала с помощью быстрого и медленного пересечения средней линии, фильтрации линии тренда и тройного механизма подтверждения перехода
  2. Управление рисками: установка разумного стоп-стоп-процента для эффективного управления отступлением
  3. Тренд-следящий: с помощью фильтрации долгосрочных средних линий, обеспечивающий согласованность направления торговли с основными тенденциями
  4. Сигнал высокого качества: загруженность фильтрации может эффективно предотвратить ложные прорывы
  5. Гибкость параметров: параметры индикаторов могут быть оптимизированы в зависимости от особенностей рынка

Стратегический риск

  1. Риск рыночных потрясений: частота торговых сигналов может привести к увеличению стоимости торговли на рынках с горизонтальными потрясениями
  2. Риск скольжения: при недостаточной ликвидности возможны большие скольжения
  3. Риск ложных прорывов: возможность ложных прорывов, несмотря на то, что существует фильтрация объема транзакций
  4. Риск оптимизации параметров: чрезмерная оптимизация может привести к перенастройке
  5. Зависимость от рыночных условий: стратегия лучше работает на рынках с заметной тенденцией, а может работать плохо на других рынках

Направление оптимизации стратегии

  1. Введение показателя волатильности: можно рассмотреть возможность добавления показателя ATR для динамического регулирования стоп-позиции
  2. Оптимизация фильтрации загрузки: можно рассмотреть использование относительного загрузки, а не абсолютной загрузки в качестве фильтрационного условия
  3. Добавление подтверждения силы тренда: можно ввести такие показатели, как ADX, для подтверждения силы тренда
  4. Усовершенствование механизма остановки: можно разработать динамическую остановку, чтобы лучше блокировать прибыль
  5. Добавление фильтра времени: избегайте торговли в период низкой волатильности

Подвести итог

Эта стратегия, объединяя несколько технических показателей, создает относительно совершенную торговую систему. Основные преимущества стратегии заключаются в многократном механизме подтверждения и хорошем контроле риска, но все же требуется оптимизация параметров и улучшение стратегии в соответствии с реальными рыночными условиями. С разумной оптимизацией и контролем риска эта стратегия может обеспечить стабильную прибыль на трендовых рынках.

Исходный код стратегии
/*backtest
start: 2024-02-22 00:00:00
end: 2024-12-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Optimized Moving Average Crossover Strategy with Volume Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs for Moving Averages
fastLength = input.int(9, title="Fast MA Length")
slowLength = input.int(21, title="Slow MA Length")
trendFilterLength = input.int(50, title="Trend Filter Length")

// Risk Management Inputs
stopLossPercent = input.float(1, title="Stop Loss (%)", step=0.1)
takeProfitPercent = input.float(400, title="Take Profit (%)", step=0.1)

// Volume Filter Input
volumeMultiplier = input.float(1.5, title="Volume Multiplier", step=0.1)  // Multiplier for average volume

// Moving Averages
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)
trendMA = ta.sma(close, trendFilterLength)  // Long-term trend filter

// Volume Calculation
avgVolume = ta.sma(volume, 20)  // 20-period average volume
volumeCondition = volume > avgVolume * volumeMultiplier  // Volume must exceed threshold

// Plotting Moving Averages
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
plot(trendMA, color=color.green, title="Trend Filter MA")

// Entry Conditions (Filtered by Trend and Volume)
longCondition = ta.crossover(fastMA, slowMA) and close > trendMA and volumeCondition
shortCondition = ta.crossunder(fastMA, slowMA) and close < trendMA and volumeCondition

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Conditions: Stop Loss and Take Profit
if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price * (1 - stopLossPercent / 100), limit=strategy.position_avg_price * (1 + takeProfitPercent / 100))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price * (1 + stopLossPercent / 100), limit=strategy.position_avg_price * (1 - takeProfitPercent / 100))

// Additional Alerts
alertcondition(longCondition, title="Long Signal", message="Go Long!")
alertcondition(shortCondition, title="Short Signal", message="Go Short!")

// Debugging Labels
if (longCondition)
    label.new(bar_index, close, "Long", style=label.style_label_up, color=color.green, textcolor=color.white)

if (shortCondition)
    label.new(bar_index, close, "Short", style=label.style_label_down, color=color.red, textcolor=color.white)