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


Дата создания: 2024-02-02 11:41:34 Последнее изменение: 2024-02-02 11:41:34
Копировать: 0 Количество просмотров: 632
1
Подписаться
1617
Подписчики

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

Обзор

Стратегия генерирует торговый сигнал, рассчитывая кросс 5-дневного индекса перемещающегося среднего ((EMA) и 20-дневного простого перемещающегося среднего ((SMA)). При пересечении 20-дневного SMA на 5-дневную ЭМА, принимается позиционный вход в полиодер; при изменении цены до 5% или -5%, выходит из позиции.

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

Двухзначная скользящая средняя является широко используемым техническим индикатором. 5-дневная EMA представляет собой тенденцию к недавним изменениям цен, 20-дневная SMA представляет собой среднесрочную ценовую динамику. Когда краткосрочная средняя пересекает более длительную среднюю, это означает, что ценовая динамика изменилась в сторону падения, и можно сделать больше, чтобы войти в игру; наоборот, когда краткосрочная средняя пересекает более длительную среднюю, это означает, что цена изменилась в сторону падения, и следует учитывать выход.

Эта стратегия устанавливает 5-дневную ЭМА и 20-дневную СМА в качестве торговых сигналов. Генерация долгого сигнала, когда 5-дневная ЭМА пересекает 20-дневную СМА; прибыль или остановка, когда изменение цены позиции достигает 5% или -5%. Кроме того, в сочетании с показателем TII в качестве вспомогательного критерия.

Подробные стратегические шаги:

  1. Расчет 5-дневных ЭМА, 20-дневных SMA и TII
  2. Когда 5-дневная EMA пересекает 20-дневную SMA, в то же время TII является положительным и больше, чем в предыдущем цикле, создается сигнал покупки
  3. Вход в длинную позицию
  4. Выход из позиции, когда изменение цены достигает 5% или -5%

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

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

  1. Стратегические сигналы просты, понятны и легко реализуемы.
  2. Движущаяся средняя является основным и часто используемым техническим индикатором, а золотой крест является более классическим и надежным торговым сигналом.
  3. В сочетании с показателями TII можно отфильтровать частично неопределенные сигналы и повысить вероятность победы в стратегии.
  4. Одноразовый риск может быть эффективно контролирован путем установления стоп-лосс и стоп-стоп стандартов.

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

Стратегический риск

В этой стратегии есть определенные риски, в основном:

  1. У пересекающихся средних есть определенная задержка.
  2. Показатель TII в городе Рио-де-Жанейро оказался неэффективным.
  3. Определенные стандарты стоп-стоп могут быть слишком произвольными.

Эти риски можно уменьшить следующими способами:

  1. Оптимизация параметров скользящих средних и снижение задержки сигнала.
  2. Добавление дополнительных показателей повышает надежность сигнала.
  3. Настройка параметров динамического торможения.

Так что есть еще место для оптимизации.

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

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

  1. Оптимизируйте параметры скользящих средних. Вы можете проверить более короткие или более длительные комбинации параметров EMA и SMA, чтобы найти лучшие параметры.

  2. Добавление фильтров для других показателей. Вспомогательные суждения по показателям, таким как MACD, KDJ и т. Д., позволяют избежать частичного ошибочного сигнала.

  3. Применение алгоритмов машинного обучения. Моделирование исторических данных с использованием статистических методов или нейронных сетей для автоматического поиска наиболее оптимальных параметров.

  4. В зависимости от степени волатильности рынка и индивидуальных особенностей акций, размер стоп-лосса может быть скорректирован, чтобы лучше контролировать риск.

  5. Расширять на другие разновидности. Применить те же правила стратегии для других разновидностей, таких как иностранная валюта, цифровые валюты и т. Д.

Подобные улучшения могут значительно повысить стабильность и прибыльность стратегии.

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

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

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

//@version=5
strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true)

// Define the moving averages
ema5 = ta.ema(close, 5)
sma20 = ta.sma(close, 20)
smaVolume10 = ta.sma(volume, 50)

majorLength = input(60, title="Major Length")
minorLength = input(30, title="Minor Length")
src = input(close, title="Source")

smaValue = ta.sma(src, majorLength)

positiveSum = 0.0
negativeSum = 0.0

for i = 0 to minorLength - 1
    price = na(src[i]) ? 0 : src[i]
    avg = na(smaValue[i]) ? 0 : smaValue[i]
    positiveSum := positiveSum + (price > avg ? price - avg : 0)
    negativeSum := negativeSum + (price > avg ? 0 : avg - price)

tii = 100 * positiveSum / (positiveSum + negativeSum)

// Buy condition: 5 EMA crosses above 20 SMA
buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1]

//and volume > smaVolume10 //

// Track entry price
var entryPrice = 0.0
if (buyCondition)
    entryPrice := close

// Calculate percentage change from entry price
priceChange = close / entryPrice - 1

// Plotting the moving averages on the chart
plot(ema5, color=color.blue, title="5 EMA")
plot(sma20, color=color.red, title="20 SMA")

// Highlighting buy signals and exit signals on the chart
// plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy")

// Strategy entry and exit
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Exit conditions
if (strategy.opentrades > 0)
    if (priceChange >= 0.05 or priceChange <= -0.05)
        strategy.close("Buy")