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


Дата создания: 2023-12-07 11:08:18 Последнее изменение: 2023-12-07 11:08:18
Копировать: 2 Количество просмотров: 753
1
Подписаться
1619
Подписчики

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

Обзор

Стратегия адаптивных движущихся средних (Mala Adaptive Moving Average Strategy) - это количественная торговая стратегия, основанная на адаптивных движущихся средних показателях MESA Джона Элерса. Стратегия использует сигнала для принятия торговых решений, покупая в низких точках и продавая в высоких точках, позволяя сигналам адаптироваться к различным видам и рыночным условиям с помощью скользящих параметров регулирования.

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

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

В частности, эта стратегия сначала обрабатывает цены сглаживанием и детрендированием, а затем рассчитывает две доли сигнала: софазный I и позиционный Q. Эти две доли накладываются и смешиваются с помощью фазового планолиния, получая окончательные Re и Im. Re и Im отражают информацию о частоте сигнала, и поatanIm/Re можно вывести циклический период. В зависимости от диапазона ожидаемых циклов можно определить гладкий циклический период.

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

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

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

  2. Циклы и параметры могут динамически адаптироваться к изменениям рынка, имея сильную самостоятельную адаптацию.

  3. MAMA и FAMA кривые зависят только от характеристик самой цены, не имеют задержки и могут своевременно улавливать переход тренда.

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

  5. Логика стратегии ясна, проста, легко понятна и изменяется, подходит для исследований и преподавания.

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

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

  1. Из-за зависимости от циклов и фаз синхронной кривой, при аномальном искажении цены может возникнуть ошибочный сигнал.

  2. При определении цикла устанавливается граница жесткости, что делает изменение цикла недостаточно гладким.

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

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

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

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

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

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

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

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

  3. Оптимизация параметров и контроля скольжения, снижение затрат на транзакции и повышение устойчивости системы.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 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/
// © dongyun

//@version=4
strategy("自适应移动平均的MESA系统", overlay=true)

fastlimit = input(0.5,'')
slowlimit = input(0.05,'')

smooth = 0.0
detrender = 0.0
I1 = 0.0
Q1 = 0.0
JI = 0.0
JQ = 0.0
I2 = 0.0
Q2 = 0.0
Re = 0.0
Im = 0.0
period = 0.0
smoothperiod = 0.0
phase = 0.0
deltaphase = 0.0
alpha = 0.0
MAMA = 0.0
FAMA = 0.0
price = 0.0

price := (high + low)/2
PI = 2 * asin(1)

if (bar_index > 5)
	smooth := (4*price + 3*price[1] + 2*price[2] + price[3])/10
	detrender := (.0962*smooth + .5769*nz(smooth[2]) - .5769*nz(smooth[4]) - .0962*nz(smooth[6]))*(.075*nz(period[1]) + .54)

	// compute InPhase and Quadrature components
	Q1 := (.0962*detrender + .5769*nz(detrender[2]) - .5769*nz(detrender[4]) - .0962*nz(detrender[6]))*(.075*nz(period[1]) + .54)

	I1 := nz(detrender[3])

	// advance the pulse of i1 and q1 by 90 degrees
	JI := (.0962*I1 + .5769*nz(I1[2]) - .5769*nz(I1[4]) - .0962*nz(I1[6]))*(.075*nz(period[1]) + .54)
	JQ := (.0962*Q1 + .5769*nz(Q1[2]) - .5769*nz(Q1[4]) - .0962*nz(Q1[6]))*(.075*nz(period[1]) + .54)

	//phase addition for 3-bar averaging 
	I2 := I1 - JQ
	Q2 := Q1 + JI

	//smooth the i and q components before applying
	I2 := .2*I2 + .8*nz(I2[1])
	Q2 := .2*Q2 + .8*nz(Q2[1])

	// hymodyne discriminator
	Re := I2*I2[1] + Q2*nz(Q2[1])
	Im := I2*Q2[1] + Q2*nz(I2[1])
	Re := .2*Re + .8*nz(Re[1])
	Im := .2*Im + .8*nz(Im[1])

	if (Im != 0 and Re != 0)
		period := 2 * PI/atan(Im/Re)

	if (period > 1.5 * nz(period[1]))
		period := 1.5*nz(period[1])

	if (period < .67*nz(period[1]))
		period := .67*nz(period[1])

	if (period < 6)
		period := 6

	if (period > 50)
		period := 50

	period := .2*period + .8*nz(period[1])
	smoothperiod := .33*period + .67*nz(smoothperiod[1])

	if (I1 != 0)
		phase := (180/PI) * atan(Q1/I1)

	deltaphase := nz(phase[1]) - phase

	if (deltaphase < 1)
		deltaphase := 1

	alpha := fastlimit/deltaphase
	if(alpha < slowlimit)
		alpha := slowlimit

	MAMA := alpha*price + (1 - alpha)*nz(MAMA[1])
	FAMA := .5*alpha*MAMA + (1 - .5*alpha)*nz(FAMA[1])

	if (FAMA < MAMA)
		strategy.entry("Long", strategy.long)
	else
		if (FAMA > MAMA)
			strategy.entry("Short", strategy.short)