Точная стратегия перекрестного перехода движущегося среднего

Автор:Чао Чжан, Дата: 2024-01-22 12:14:29
Тэги:

img

Обзор

Эта стратегия называется Стратегия Золотого Креста Смертного Креста. Ее основная идея заключается в том, чтобы извлечь выгоду из мощных сигналов, генерируемых золотым крестом и смертным крестом двух скользящих средних разных временных рамок, чтобы поймать изменение тренда на рынке и получить прибыль от низкой покупки / высокой продажи.

Логика стратегии

В этой стратегии мы рассчитываем 50-периодные и 200-периодные линии простой скользящей средней (SMA). Традиционно, когда 50-дневная SMA пересекается ниже 200-дневной SMA, это называется смертным крестом, который сигнализирует о медвежьем прогнозе. А когда 50-дневная SMA пересекается выше 200-дневной SMA, это золотой крест, указывающий на рост.

Логика торговли заключается в том, чтобы просто занять позиции на основе этих сигналов - короткие позиции на смертном кресте и длинные на золотом кресте. Это позволяет нам получать прибыль вокруг переломных точек, когда рыночная тенденция меняется.

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

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

  1. Эффективно отслеживает моменты изменения тренда для открытия позиций вблизи ключевых областей
  2. Комбинация двух SMA разных периодов фильтрует ложные сигналы
  3. Функция обратного тестирования рассматривает фактические показатели в различных рыночных режимах
  4. Чистые графики визуально отображают перекрестные сигналы и изменения положения

Риски

  1. Пересечения SMA отстают от экстремальных переворотов и не могут их предсказать
  2. Данные обратных испытаний могут отличаться от показателей работы в режиме реального времени из-за затрат и скольжения
  3. Выбор параметров, таких как периоды SMA, сильно влияет на результаты
  4. Необходимо включить основы и технические, а не только механическую торговлю

Для решения рисков, мы можем оптимизировать параметры, добавлять фильтры, управлять рисками, бумажной торговли стратегии и т.д., чтобы минимизировать риски.

Возможности для расширения

К основным способам оптимизации этой стратегии относятся:

  1. Испытание СВМ различных комбинаций периодов
  2. Добавление фильтров, таких как объем, волатильность, чтобы избежать ударов
  3. Включение экономических данных или новостей для фильтра
  4. Внедрять механизмы остановки потерь, такие как движение / временные остановки
  5. Оценка результатов за различные периоды хранения

Исследуя влияние параметров, мы можем обнаружить лучшие системы перекрестного движения.

Заключение

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


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[S_R__9] - Death and Golden Cross", overlay=true)

// Specific Time Date Range For Backtest
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31, group='DATE CONFIG')
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12, group='DATE CONFIG')
startYear = input.int(title='Start Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

endDate = input.int(title='End Date', defval=31, minval=1, maxval=31, group='DATE CONFIG')
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12, group='DATE CONFIG')
endYear = input.int(title='End Year', defval=2023, minval=1800, maxval=2100, group='DATE CONFIG')

SPECIFIC_DATE = input.bool(title='USE SPECIFIC DATE ?', defval=false, group='DATE CONFIG')

inDateRange = SPECIFIC_DATE ? time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0) : true

// Calculate 50 SMA and 200 SMA
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// Detect a Death Cross (50 SMA crossing below 200 SMA)
deathCross = ta.crossunder(sma50, sma200)
// Detect a Golden Cross (50 SMA crossing above 200 SMA)
goldenCross = ta.crossover(sma50, sma200)

// Strategy Execution
if (inDateRange)
    if (deathCross)
        strategy.entry("Death Cross long", strategy.short)

    if (goldenCross)
        strategy.entry("Golden Cross short", strategy.long)

// Plot SMAs
plot(sma50, color=color.red, title="50 SMA")
plot(sma200, color=color.blue, title="200 SMA")

// Plotting Death Cross signal
plotshape(series=deathCross and inDateRange, title="Death Cross Signal", location=location.belowbar, color=color.red, style=shape.labeldown, text="DEATH CROSS")

// Plotting Golden Cross signal
plotshape(series=goldenCross and inDateRange, title="Golden Cross Signal", location=location.abovebar, color=color.green, style=shape.labelup, text="GOLDEN CROSS")


Больше