Динамическая стратегия перекрестного тренда SMA

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

img

Обзор

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

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

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

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

  • Источник цен: цена закрытия или другие цены
  • Рассматривать неполные или нет
  • Метод прогнозирования 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")


Больше