В процессе загрузки ресурсов... загрузка...

Тенденция импульса многодвижущегося среднего по стратегии

Автор:Чао Чжан, Дата: 2024-11-12 15:05:09
Тэги:SMAРСИМ.А.

img

Обзор

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

Принципы стратегии

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

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

Условия покупки требуют:

  • Более 4 бычьих дней за последние 10 дней с по меньшей мере 1 днем с высоким объемом
  • Показатель RSI соответствует условиям импульса
  • Система скользящей средней показывает рост и непрерывный рост
  • Стабильность цены выше 150-дневного MA

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

  • Прорыв цены ниже 150-дневного MA
  • Последовательное снижение объемов
  • 50-дневный MA, превышающий 150-дневный MA
  • Недавние медвежие свечи с увеличенным объемом

Преимущества стратегии

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

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

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

Предложения по борьбе с риском:

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

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

  1. Добавить адаптивные параметры
  • Динамическая корректировка периодов MA на основе волатильности рынка
  • Оптимизировать настройки порога RSI
  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")


Связанные

Больше