Количественная торговая стратегия, основанная на скользящей средней


Дата создания: 2024-01-16 17:37:13 Последнее изменение: 2024-01-16 17:37:13
Копировать: 0 Количество просмотров: 711
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, основанная на скользящей средней

Обзор

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

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

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

Таким образом, ma3 отражает среднесрочную тенденцию цены, а ma4 отфильтровывает часть шума в ma3 и формирует более надежный торговый сигнал. Циклическое соотношение ma1 и ma2 устанавливается с помощью параметров maLen, и пользователь может получить оптимальную комбинацию параметров в зависимости от различных циклов корректировки рынка.

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

Эта стратегия имеет следующие преимущества:

  1. Использование адаптивных скользящих средних ALMA и весовых скользящих средних WMA позволяет лучше адаптироваться к изменениям рынка.

  2. Применение метода многоциклических средних цен делает торговые сигналы более надежными.

  3. Параметры настраиваются, пользователи могут оптимизировать их для разных рынков.

  4. Стратегическая концепция ясна, понятна и легко реализуема.

  5. Это означает, что вы можете получить хорошие результаты как в трендовых, так и в волатильных рынках.

Риски и решения

Однако эта стратегия также несет в себе некоторые риски:

  1. В условиях резкого изменения рынка, стратегия движущихся средних легко может привести к проблемам, таким как неопределенность и задержка торговых сигналов. Можно оптимизировать ее путем корректировки цикла и параметров движущихся средних.

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

  3. Неправильная настройка параметров может привести к чрезмерной торговле с очень короткими периодами. Следует тщательно выбрать подходящие параметры.

Оптимизация стратегии

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Проверяйте больше типов скользящих средних, таких как линейные скользящие средние, весовые скользящие средние и т. д.

  2. Увеличение механизма сдерживания убытков, основанного на таких показателях, как волатильность, ценовые каналы и т.д.

  3. В сочетании с анализом нескольких временных циклов используются параметры оптимизации прокрутки.

  4. Добавление алгоритмов машинного обучения для автоматической оптимизации параметров.

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

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

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

//@version=3
strategy("Oracle Move Strategy", overlay=true)

maLen = input(30, "ma period")
mode =  input(defval="wma", options=["alma", "ema", "wma"])
price = close

ma(src, len) =>
     mode=="alma"  ? alma(src, len, 0.85, 6) :
     mode=="ema"? ema(src, len) : 
     wma(src, len)
    

ma1 = ma(price, floor(maLen / 2))
ma2 = ma(price, maLen)
ma3 = 2.0 * ma1 - ma2
ma4 = ma(ma3, floor(sqrt(maLen)))

//plot(ma1, color = red)
//plot(ma2, color = green)
plot(ma3, color = blue)
plot(ma4, color = orange)


mafast = ma3
maslow = ma4

if (crossover(mafast, maslow))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(mafast, maslow))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)