Стратегия перекрестного использования адаптивной скользящей средней на основе Uhl MA

Автор:Чао Чжан, Дата: 2023-09-19 22:06:42
Тэги:

Обзор

Система Uhl MA - это адаптивная система перекрестного движения скользящих средних, предназначенная для преодоления недостатков традиционных систем MA. Она использует быстрые и медленные скользящие средние для генерации торговых сигналов, причем медленный MA является скорректированным MA (CMA), первоначально предложенным Андреасом Улом, а быстрый MA является скорректированным шагом тренда (CTS), который также основан на скорректированном MA. Система адаптивно регулирует параметры MA для достижения более надежных торговых сигналов.

Принципиальный анализ

В основе этой стратегии лежит вычисление линий Uhl MA и CTS. Линия Uhl MA является улучшением по сравнению с традиционной SMA, используя вариантность (VAR) и историческое квадратное отклонение (SECMA) для адаптивной корректировки веса между SMA и предыдущей CMA. Когда VAR меньше SECMA, больше веса на SMA, в противном случае больше веса на CMA. Это помогает отфильтровать какой-то шум и генерировать более плавный MA. Линия CTS использует аналогичный адаптивный расчет на основе цены SRC.

Логика кроссовера такая же, как и в традиционных системах MA. Сигнал покупки генерируется, когда CTS пересекается выше Uhl MA, и сигнал продажи, когда пересекается ниже. Это формирует адаптивную торговую систему MA.

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

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

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

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

Советы по оптимизации

Потенциальные оптимизации включают:

  1. Улучшить расчет СМК, чтобы избежать конвергенции на различных рынках, используя, например, другие показатели.

  2. Оптимизируйте параметры с помощью алгоритмов оптимизации, таких как генетические алгоритмы.

  3. Ввести стоп-лосс для контроля одиночных потерь.

  4. Добавить фильтры, использующие другие показатели, чтобы избежать переоценки в консолидации, такие как показатели волатильности, индекс RFM и т.д.

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

Заключение

Система Uhl MA является очень инновационной адаптивной стратегией перекрестного использования MA. По сравнению с традиционными стратегиями, динамические MA помогают уменьшить ложные сигналы и лучше улавливать тенденции. Но существуют ограничения на различных рынках. Дальнейшие улучшения методологии расчета и добавление фильтров имеют большой потенциал. Между тем, настройка параметров и контроль рисков также имеют решающее значение. В целом стратегия Uhl MA имеет хороший потенциал и исследовательскую ценность, достойную дальнейшего изучения.

[/trans]


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alexgrover

//@version=4
strategy("Uhl MA System - Strategy Analysis")
length = input(100),mult = input(1.),src = input(close)
//----
out = 0., cma = 0., cts = 0.
Var = variance(src,length)           ,sma = sma(src,length)
secma = pow(nz(sma - cma[1]),2)      ,sects = pow(nz(src - cts[1]),2) 
ka = Var < secma ? 1 - Var/secma : 0 ,kb = Var < sects ? 1 - Var/sects : 0
cma := ka*sma+(1-ka)*nz(cma[1],src)  ,cts := kb*src+(1-kb)*nz(cts[1],src)
//----
if crossover(cts,cma)
    strategy.entry("Buy", strategy.long)
if crossunder(cts,cma)
    strategy.entry("Sell", strategy.short)
//----
cap = 50000
eq = strategy.equity
rmax = 0.
rmax := max(eq,nz(rmax[1]))
//----
css = eq > cap ? #0cb51a : #e65100
a = plot(eq,"Equity",#2196f3,2,transp=0)
b = plot(rmax,"Maximum",css,2,transp=0)
fill(a,b,css,80)

Больше