Динамическая стратегия пересечения скользящих средних трендов


Дата создания: 2024-02-05 12:14:12 Последнее изменение: 2024-02-05 12:14:12
Копировать: 0 Количество просмотров: 589
1
Подписаться
1617
Подписчики

Динамическая стратегия пересечения скользящих средних трендов

Обзор

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

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

Настройки параметров

Стратегия позволяет трейдеру установить следующие ключевые параметры:

  • Источник данных о ценах: цена закрытия или другие цены
  • Рассматривается ли неполная линия K
  • Методы прогнозирования SMA: прогнозирование с горизонтальным или с линейным регрессионным прогнозом
  • Длина быстрой SMA: по умолчанию 7
  • Среднескоростная длина SMA: по умолчанию 30
  • Длина медленного SMA: по умолчанию 50
  • Средства счета
  • Доля риска в каждой сделке

Расчет SMA

В зависимости от установленной пользователем длины SMA, рассчитывается быстрое SMA, среднее SMA и медленное SMA.

Торговые сигналы

Когда быстрый SMA выше проходит через средний SMA, генерируется сигнал покупать; когда быстрый SMA ниже проходит через средний SMA, генерируется сигнал продавать.

Управление рисками и позициями

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

Анализ преимуществ

  • Более эффективный подход к выявлению тенденций с использованием нескольких групп SMA
  • Прогнозные методы SMA более адаптивны
  • Торговые сигналы просты, понятны и легко реализуются
  • Интеграция управления рисками и позициями, более научная

Анализ рисков

  • Сама отсталость SMA может пропустить поворот цены
  • Только технические показатели, не включая основные
  • Не учтены последствия внезапных событий

Это можно оптимизировать путем соответствующего сокращения цикла SMA, содействия другим показателям и т. д.

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

  • В сочетании с другими показателями фильтрация ошибочного сигнала
  • Присоединяйтесь к основополагающим оценкам
  • Оптимизация параметров цикла SMA
  • Параметры оптимизации рисков и расчета позиций

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

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

Исходный код стратегии
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")