Стратегия следования за трендом с использованием множественных скользящих средних импульсов

SMA RSI MA
Дата создания: 2024-11-12 15:05:09 Последнее изменение: 2024-11-12 15:05:09
Копировать: 0 Количество просмотров: 476
1
Подписаться
1617
Подписчики

Стратегия следования за трендом с использованием множественных скользящих средних импульсов

Обзор

Стратегия является системой торговли, которая отслеживает тенденции, основанные на множестве средних и динамических индикаторов. Стратегия использует в основном динамические отношения 20-дневных, 50-дневных, 150-дневных и 200-дневных простых скользящих средних (SMA), комбинируя перепады и RSI, чтобы улавливать сильные восходящие тенденции на уровне дневной линии и своевременно выравнивать, когда тенденция ослабевает.

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

Основная логика стратегии включает в себя следующие ключевые элементы:

  1. Система средних линий: с использованием средних линий 20/50/150/200 дней для построения системы определения тенденций, требующая много средних линий, представляющих собой многоглавый ряд.
  2. Подтверждение динамики: использование индикатора RSI и его движущейся средней для определения динамики цен, требующей RSI больше 55 или RSI SMA больше 50 и RSI вверх.
  3. Проверка количества сделок: подтверждение эффективности сигналов купли-продажи путем сравнения 20-дневного среднего количества сделок с недавними.
  4. Проверка сохранности тренда: проверка 50-дневного среднего тренда, находящегося в восходящем тренде в течение не менее 25 дней из последних 40 торговых дней.
  5. Подтверждение местоположения: цена должна быть стабильной выше 150-дневной средней линии в течение не менее 20 торговых дней.

Условия покупки:

  • За последние 10 дней было более 4 солнечных дней и по крайней мере 1 день с перебоями
  • RSI соответствует динамическим условиям
  • Однородная система представляет собой многоголовый ряд и продолжает расти
  • Цены стабильно работают над 150-дневной средней линией

Условия продажи включают:

  • Цены упали ниже 150-дневной средней
  • Последовательное снижение выбросов
  • 50-дневная средняя снизилась до 150-дневной
  • Недавнее преобладание женского пола и увеличение количества сделок

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

  1. Круговая проверка по нескольким техническим показателям снижает ошибочность
  2. Тенденционная устойчивость требует строгого фильтрации краткосрочных колебаний
  3. Комбинированный анализ трафика для повышения надежности сигнала
  4. Ясные условия для остановки убытков, эффективный контроль риска
  5. Подходит для уловить среднесрочные и долгосрочные тенденции, снижая частоту торгов
  6. Логика стратегии ясна, проста для понимания и реализации.

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

  1. Среднелинейная система является отсталой и может пропустить начальный этап тренда.
  2. Строгие условия для входа могут привести к упущению некоторых торговых возможностей
  3. На нестабильных рынках могут возникать частые ложные сигналы
  4. Определенная задержка в распознавании реверсии
  5. Для вывода требуется большая сумма.

Предложения по контролю рисков:

  • Установка разумного стоп-позиции
  • Управление финансами должно быть умеренным
  • Рассмотреть возможность увеличения показателей подтверждения тенденции
  • Параметры, адаптируемые к рыночным условиям

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

  1. Добавление параметров адаптации
  • Среднелинейный цикл, скорректированный в соответствии с динамикой рыночных колебаний
  • Оптимизировать настройки RSI Threshold
  1. Совершенствование механизма погашения убытков
  • Увеличение убытков отслеживания
  • Настройка времени остановки
  1. Введение анализа рыночной среды
  • Повышение показателя интенсивности тренда
  • Учитывайте показатели волатильности
  1. Оптимизация масштаба сделок
  • Дизайн динамического управления позициями
  • Настройка на мощность сигнала

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Micho's 150 (1D Time Frame Only)", overlay=true)

// Define the length for the SMAs and RSI
sma20Length = 20
sma50Length = 50
sma150Length = 150
sma200Length = 200
volumeMaLength = 20
rsiLength = 14
rsiSmaLength = 14
smaCheckLength = 40  // Check the last month of trading days (~20 days)
requiredRisingDays = 25  // Require SMA to rise in at least 16 of the past 20 days
sma150AboveSma200CheckDays = 1  // Require SMA150 > SMA200 for the last 10 days

// Calculate the SMAs for price
sma20 = ta.sma(close, sma20Length)
sma50 = ta.sma(close, sma50Length)
sma150 = ta.sma(close, sma150Length)
sma200 = ta.sma(close, sma200Length)

// Calculate the 20-period moving average of volume
volumeMA20 = ta.sma(volume, volumeMaLength)

// Calculate the 14-period RSI
rsi = ta.rsi(close, rsiLength)

// Calculate the 14-period SMA of RSI
rsiSMA = ta.sma(rsi, rsiSmaLength)

// Check if most of the last 5 days are buyer days (close > open)
buyerDays = 0
for i = 0 to 9
    if close[i] > open[i]
        buyerDays := buyerDays + 1

// Check if at least 1 day has volume higher than the 20-period volume MA
highVolumeDays = 0
for i = 0 to 9
    if close[i] > open[i] and volume[i] > volumeMA20
        highVolumeDays := highVolumeDays + 1

// Define the new RSI condition
rsiCondition = (rsi >= 55) or (rsiSMA > 50 and rsi > rsi[1])

// Check if the 50-day SMA has been rising on at least 16 of the last 20 trading days
risingDays = 0
for i = 1 to smaCheckLength
    if sma50[i] > sma50[i + 1]
        risingDays := risingDays + 1

// Check if the SMA has risen on at least 16 of the last 20 days
sma50Rising = risingDays >= requiredRisingDays

// Check if the price has been above the SMA150 for the last 20 trading days
priceAboveSma150 = true
for i = 1 to smaCheckLength
    if close[i] < sma150[i]
        priceAboveSma150 := false

// Check if the SMA150 has been above the SMA200 for the last 10 days
sma150AboveSma200 = true
for i = 1 to sma150AboveSma200CheckDays
    if sma150[i] < sma200[i]
        sma150AboveSma200 := false

// Define the conditions for the 150-day and 200-day SMAs being rising
sma150Rising = sma150 > sma150[1]
sma200Rising = sma200 > sma200[1]

// Check if most of the last 5 days are seller days (close < open)
sellerDays = 0
for i = 0 to 9
    if close[i] < open[i]
        sellerDays := sellerDays + 1

// Check if at least 1 day has seller volume higher than the 20-period volume MA
highSellerVolumeDays = 0
for i = 0 to 9
    if close[i] < open[i] and volume[i] > volumeMA20
        highSellerVolumeDays := highSellerVolumeDays + 1

// Check in the last N days the price below 150
priceBelowSma150 = true
for i = 0 to 0
    if close[i] > sma150[i]
        priceBelowSma150 := false

// Restrict the strategy to 1D time frame
if timeframe.isdaily
    // Buy condition:
    // - Most of the last 5 days are buyer days (buyerDays > 2)
    // - At least 1 of those days has high buyer volume (highVolumeDays >= 1)
    // - RSI SMA (14-period) between 45 and 50 with RSI >= 55, or RSI SMA > 50 and RSI rising
    // - 50-day SMA > 150-day SMA and 150-day SMA > 200-day SMA
    // - 50-day SMA has been rising on at least 16 of the last 20 trading days
    // - The price hasn't been below the 150-day SMA in the last 20 days
    // - 150-day SMA has been above the 200-day SMA for the last 10 days
    // - 150-day and 200-day SMAs are rising
    buyCondition = (close > sma150 and buyerDays > 4 and highVolumeDays >= 1 and rsiCondition  and sma50 > sma150 and sma50Rising and sma150Rising and sma200Rising and priceAboveSma150)

    // Sell condition:
    // - Price crossing below SMA 150
    // - Seller volume (current volume > volume MA 20)
    // - 150-day SMA crosses below 200-day SMA
    // - Most of the last 5 days are seller days (sellerDays > 2) and at least 1 day of higher seller volume (highSellerVolumeDays >= 1)
    sellCondition = (priceBelowSma150 and (sma50 < sma150 or (sellerDays >5 and highSellerVolumeDays >= 5)))

    // Execute buy when all conditions are met
    if (buyCondition)
        strategy.entry("Buy", strategy.long)

    // Execute sell when all conditions are met
    if (sellCondition)
        strategy.close("Buy")