Торговая стратегия Qiming Double Shift Mean Reversion


Дата создания: 2023-12-15 16:51:23 Последнее изменение: 2023-12-15 16:51:23
Копировать: 0 Количество просмотров: 671
1
Подписаться
1621
Подписчики

Торговая стратегия Qiming Double Shift Mean Reversion

Обзор

Стратегия HYE Mean Reversion SMA - это стратегия, использующая простое движущееся среднее и относительно сильный индикатор. Эта стратегия использует отклонение цены от движущейся средней на определенную величину, в сочетании с фильтрующим сигналом RSI, чтобы создать сигнал покупки и продажи, и относится к стратегии короткой линии.

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

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

  1. Когда 2-х периодов простой скользящий средний снижается на 3% по сравнению с 5-х периодов простой скользящий средний, считается, что цена акции отклоняется от средней стоимости, создавая сигнал покупки;

  2. Когда 2-х периодов простой перемещающейся средней линии проходит 5-х периодов простой перемещающейся средней линии, рассматривается как цена возвращается к среднему значению, создавая сигнал продажи;

  3. Индекс в сочетании с 5-кратным скользящим средним показателем RSI дает сигнал к покупке только тогда, когда RSI ниже 30, и сигнал к продаже только тогда, когда RSI выше 70, что позволяет избежать ненужных сделок.

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

Анализ преимуществ стратегии

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

  1. Простые операции, легкая реализация и низкая стоимость мониторинга;

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

  3. RSI эффективно отфильтровывает шумные сделки, чтобы избежать преследования высоких и низких;

  4. Гибкость в настройке параметров для различных рыночных условий;

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

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

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

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

  2. Неправильная настройка параметров может привести к слишком частым сделкам или упущенным возможностям;

  3. Стратегические показатели имеют большую связь с рынком, а в поперечных и волатильных рынках они хуже.

Ответ:

  1. Разумная установка стоп-лосса и контроль за одиночными потерями;

  2. Постепенная оптимизация параметров для оценки соотношения прибыли и убытков;

  3. Приспособность в сочетании со стратегией усиления индекса акций.

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

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

  1. Испытание различных комбинаций скользящих средних для поиска оптимальных параметров;

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

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

  4. В частности, он отметил, что в стране существуют различные виды торговли, которые могут быть связаны с различными факторами.

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

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

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

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

// @version=4

strategy("HYE Mean Reversion SMA [Strategy]", overlay = true )
  
//Strategy inputs
source = input(title = "Source", defval = close)
tradeDirection = input(title="Trade Direction", type=input.string,
     options=["Long Only", "Short Only", "Both"], defval="Long Only") 
smallMAPeriod = input(title = "Small Moving Average", defval = 2)
bigMAPeriod = input(title = "Big Moving Average", defval = 5)
percentBelowToBuy = input(title = "Percent below to buy %", defval = 3)
percentAboveToSell = input(title = "Percent above to sell %", defval = 3)
rsiPeriod = input(title = "Rsi Period", defval = 2)
rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30)
rsiLevelforSell = input(title = "Minimum Rsi Level for Sell", defval = 70)
     
longOK  = (tradeDirection == "Long Only") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short Only") or (tradeDirection == "Both")

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)
     
inDateRange = true

//Strategy calculation 
rsiValue = rsi(source, rsiPeriod)
rsiEMA   = ema(rsiValue, 5)
smallMA = sma(source, smallMAPeriod)
bigMA =  sma(source, bigMAPeriod) 
buyMA = ((100 - percentBelowToBuy) / 100) * sma(source, bigMAPeriod)[0]
sellMA = ((100 + percentAboveToSell) / 100) * sma(source, bigMAPeriod)[0]

if(crossunder(smallMA, buyMA) and rsiEMA < rsiLevelforBuy and inDateRange and longOK)
    strategy.entry("BUY", strategy.long) 

if(crossover(smallMA, bigMA) or not inDateRange)
    strategy.close("BUY")

if(crossover(smallMA, sellMA) and rsiEMA > rsiLevelforSell and inDateRange and shortOK)
    strategy.entry("SELL", strategy.short)

if(crossunder(smallMA, bigMA) or not inDateRange)
    strategy.close("SELL")