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


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

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

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

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

Эта стратегия позволяет выбрать пять показателей скользящих средних, SMA, EMA, TEMA, WMA, HMA, и установить продолжительность цикла средней линии. Стратегия будет рисовать различные типы средней линии в зависимости от выбранной динамики.

В частности, стратегия сначала определяет период отсчета в зависимости от входных параметров. Затем вычисляется пять средних показателей:

  • SMA (простая скользящая средняя)
  • EMA - это скользящая средняя
  • TEMA Трехзначная скользящая средняя
  • WMA - весовая скользящая средняя
  • HMA Hull Moving Average (движущаяся средняя)

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

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

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

  • Комбинированное использование нескольких среднелинейных показателей, высокая надежность
  • Настраиваемый равнолинейный цикл для различных циклов
  • Динамический переключатель равнолинейного типа, гибкий параметр оптимизации
  • Простые, интуитивно понятные стратегии отслеживания тенденций, которые легко реализовать

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

  • Средняя линия отстает и может пропустить переломный момент
  • Фиксированные параметры легко пересоединяются, эффект фиксированного диска может быть слабее отслеживания
  • На многоразовом этапе активное увеличение, на пустом этапе активное освобождение, легко влияет на эффективность использования средств

Снижение риска может быть достигнуто путем оптимизации:

  • В сочетании с другими показателями, чтобы определить тенденции и определить более точные сроки поступления
  • Параметры оптимизации на твердом диске, адаптация среднелинейного цикла к различным рыночным условиям
  • Оптимизация управления позициями, адекватная корректировка позиций в зависимости от размера капитала и контроля риска

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

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

  1. Добавление фильтров на другие показатели для создания более стабильных торговых сигналов

Например, можно добавить индикатор количественной мощности, который будет генерировать торговые сигналы только в случае увеличения объема торгов, отфильтровывая некоторые ложные прорывы.

  1. Оптимизация логики выхода в игру

Можно установить канал, который будет открыт только в том случае, если цена прорвет канал; установить стоп-линию, когда цена достигнет стоп-линии. Это может уменьшить ненужные потери.

  1. Динамическая корректировка среднелинейного цикла

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

  1. Оптимизация стратегии управления капиталом

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

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

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

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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )