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


Дата создания: 2023-10-17 16:55:10 Последнее изменение: 2023-10-17 16:55:10
Копировать: 0 Количество просмотров: 719
1
Подписаться
1617
Подписчики

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

Обзор

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

Принципы

Эта стратегия использует два показателя скользящих средних, один - средний для большого периода времени, другой - средний для текущего периода. Когда средний для текущего периода пересекает средний для большого периода, делайте больше; когда средний для текущего периода пересекает средний для большого периода, делайте пустое.

В частности, в стратегии сначала определены два среднелинейных параметра:

  1. tf - большие временные циклы, по умолчанию солнечные
  2. len - продолжительность цикла средней линии, по умолчанию 3

Затем вычисляются два EMA:

  1. ma1 - 3-дневная EMA на большом циклическом солнечном круге
  2. ma2 - 3-й день текущего цикла

Наконец, логика сделки:

  • Когда ma2 > ma1, мы делаем больше.
  • Когда ma2 < ma1, пустота

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

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

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

  1. Принцип прост, легко понять и реализовать, очень подходит для начинающих.
  2. “Тренды - это то, что мы делаем, и мы делаем это, чтобы быть в тренде”.
  3. Использование индекса скользящих средних, более чувствительных к изменениям цен, позволяет своевременно улавливать переломы тенденций.
  4. Различные комбинации циклических средних линий могут использовать свои преимущества для повышения стабильности системы.
  5. Не требует большого количества параметров, легко тестировать и оптимизировать, удобство работы на твердом диске.

Риск

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

  1. По мнению экспертов, в этом случае они могут быть заключены в тюрьму из-за колебаний рынка.
  2. Например, в случае с двулинейным пересечением существует задержка, которая может привести к упущению некоторых возможностей.
  3. Невозможно эффективно отфильтровать перекрёстные деформации двух равномерных линий.
  4. На основе простой средней линии, трудно адаптироваться к сложным рынкам.

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

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

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

  1. Испытание различных макропериодических среднелинейных параметров, чтобы найти оптимальное сочетание.
  2. Повышение фильтрации по объему перевода, чтобы избежать ложных сигналов.
  3. В сочетании с трендовыми показателями, повышение устойчивости и операционной эффективности.
  4. Устанавливается адаптивная стоп-стоп, чтобы контролировать одиночные потери.
  5. Оптимизация управления позициями, изменение размеров позиций в соответствии с рынком.
  6. Включение модели машинного обучения, чтобы сделать стратегию более интеллектуальной

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

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

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

//@version=3
strategy("Noro's Singapore Strategy", shorttitle = "Singapore str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
tf = input("D", title = "Big Timeframe")
len = input(3, minval = 1, title = "MA length")
src = input(close, title = "MA Source")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
ma1 = request.security(syminfo.tickerid, tf, sma(src, len))
ma2 = sma(src, len)
plot(ma1, linewidth = 2, color = blue, title = "Big TF MA")
plot(ma2, linewidth = 2, color = red, title = "MA")

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if ma2 > ma1
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if ma2 < ma1
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()