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


Дата создания: 2024-01-31 15:17:31 Последнее изменение: 2024-01-31 15:17:31
Копировать: 1 Количество просмотров: 597
1
Подписаться
1617
Подписчики

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

Обзор

Эта стратегия определяет тенденции и отслеживает тенденции, рассчитывая различные типы средних линий (простые скользящие средние, индексные скользящие средние, EMA, Hull Moving Average, HMA и VWMA) и находя их пересечения. Более короткие средние, которые пересекают более длинные средние сверху, генерируют сигнал покупки. Более короткие средние, которые пересекают более длинные средние сверху, генерируют сигнал продажи.

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

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

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

Это означает, что вы можете вести торговлю в соответствии с рыночными тенденциями.

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

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

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

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

Решение риска:

  • Сокращение среднелинейных циклов и повышение чувствительности к изменениям рынка
  • Проверка в сочетании с другими показателями, чтобы избежать ошибочных выводов
  • Параметрические методы оптимизации: повторяемость, машинное обучение, генетические алгоритмы и т. д.
  • Надлежащее управление размером позиции и стоп-стоп

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

  • Добавление фильтров для других показателей, которые в сочетании с несколькими показателями повышают точность принятия решения
  • Автоматическая корректировка среднелинейных параметров в зависимости от рыночных условий
  • Автоматический поиск оптимальных параметров в сочетании с алгоритмами машинного обучения
  • Оптимизация стратегии по ликвидации убытков

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

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

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

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)