Стратегия двойного равномерного движущегося среднего разрыва

Автор:Чао Чжан, Дата: 2023-10-17 13:54:05
Тэги:

双均线移动平均差值交易策略

Обзор

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

Первоначальное понимание

Основная логика этой стратегии состоит в том, чтобы рассчитать два движущихся средних SMA (len1) и SMA (len2), а также их диф.

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

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

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

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

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

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

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

Риски и улучшения

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

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

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

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

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


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

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



Больше информации