Стратегия торговли с перемещающейся средней

Автор:Чао Чжан, Дата: 2024-01-24 11:48:29
Тэги:

img

Обзор

Движущаяся средняя стратегия кроссовера генерирует сигналы покупки и продажи путем расчета кроссовера быстрой EMA (fastLength) и медленной EMA (slowLength) линий. Когда быстрая линия пересекает медленную линию, генерируется сигнал покупки. Когда быстрая линия пересекает медленную линию, генерируется сигнал продажи. Эта стратегия проста и практична, подходит для средне- и краткосрочной торговли.

Принцип стратегии

Стратегия использует две скользящие средние линии, быструю линию и медленную линию. Параметр быстрой линии EMAfastLength является по умолчанию 9-дневной линией, а параметр медленной линии EMAslowLength является по умолчанию 26-дневной линией. Вычислить перекресток двух линий EMA для определения сигналов покупки и продажи на рынке:

  1. Когда быстрая линия переходит вверх через медленную линию, генерируется сигнал покупки enterLong (().
  2. Когда быстрая линия переходит вниз через медленную линию, генерируется сигнал продажи enterShort (().

Конкретные торговые сигналы и правила стратегии следующие:

  1. Когда быстрая линия пересекает медленную линию, идет длинный; когда быстрая линия пересекает медленную линию, закрыть положение.
  2. Приобретение прибыли в долгосрочной перспективе представляет собой целевой процент (процент по умолчанию 0,15%) от цены, что означает закрытие позиции, когда прибыль достигнет 15%.
  3. Стоп-лосс для длинной позиции - это StopLosspercentage (по умолчанию 0,20%) от цены, что означает закрытие позиции, когда убыток достигает 20%.
  4. Короткая позиция работает так же.

Эта стратегия основана на золотом кресте и мертвом кресте двух скользящих средних линий.

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

  1. Стратегия проста и понятна.
  2. Применение скользящей средней фильтрует рыночный шум и делает торговые сигналы более точными.
  3. Правила торговли ясны с определенным получением прибыли и остановкой потери.
  4. Параметры испытаний могут быть гибко скорректированы в соответствии с различными условиями рынка.

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

  1. У скользящих средних есть отставание, которое может пропустить краткосрочные изменения цен, что приводит к неточным точкам покупки и продажи.
  2. Различные параметры скользящих средних циклов могут генерировать ложные сигналы и приводить к потерям.
  3. Основываясь только на нескольких параметрах, эта стратегия имеет высокие требования к оптимизации гиперпараметров для поиска наилучшей комбинации параметров.
  4. В некоторых конкретных основных тенденциях эта стратегия подвержена неудачам.

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

Руководство по оптимизации

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

  1. Изменение типа скользящей средней: помимо EMA, также проверяйте SMA, LWMA, HMA и другие типы.
  2. Добавление других индикаторов: комбинировать с RSI, MACD и другими индикаторами.
  3. Оптимизация параметров: автоматическая оптимизация двух параметров цикла EMA для поиска наилучшей комбинации параметров.
  4. Фильтрация трендов: торговать избирательно на основе основных тенденций.
  5. Оптимизация получения прибыли и остановки убытков: улучшить фиксированный процент получения прибыли и остановки убытков, чтобы сделать его более практичным.

Благодаря этим тестам оптимизации можно значительно улучшить практический эффект и стабильность стратегии.

Резюме

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)

enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)

enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)



Больше