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

Автор:Чао Чжан, Дата: 2024-01-31 15:17:31
Тэги:

img

Обзор

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

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

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

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

Поскольку эта стратегия позволяет выявлять такие перекрестки, она следует тенденции рынка к торговле.

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

  • Использует классический и практический метод перекрестного использования MA для определения основных тенденций
  • Поддерживает комбинации различных типов разрешений, обеспечивая гибкость
  • Простая и понятная логика, легко понятная и автоматизированная
  • Конфигурируемые параметры адаптируются к различным рыночным условиям

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

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

Решения:

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

Направления к улучшению

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

Заключение

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


/*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)


Больше