
Двухлинейная регрессивная стратегия отслеживания трендов использует разницу между быстрым и медленным линейным регрессом для определения ценового тренда и использует его в качестве входного сигнала. Когда быстрый линейный регресс делает больше, когда он проходит верхнюю границу, и ниже, когда он проходит нижнюю границу. Кроме того, эта стратегия использует EMA в качестве фильтрующего условия и вступает только тогда, когда цена выше EMA.
Эта стратегия сначала рассчитывает линейную регрессионную кривую с двумя различными циклами: быстрый линейный регресс с более короткими циклами и медленный линейный регресс с более длительными циклами. Затем рассчитывается разница между двумя линейными регрессиями. Если быстрая линейная регрессия выше медленной линейной регрессии, разница больше 0, то цена находится в восходящей тенденции.
Стратегия использует дифференциальную линию, которая пересекает порог, в качестве сигнала покупки, и дифференциальную линию, которая пересекает порог, в качестве сигнала закрытия. В то же время, требуется, чтобы цена была выше 200 циклов EMA, чтобы отфильтровать нетрадиционную ситуацию.
Используйте двулинейную регрессию, чтобы зафиксировать ценовые тенденции.
Добавление фильтра EMA, который отфильтровывает некоторые не трендовые явления и предотвращает ошибочные сигналы.
Стратегическая логика проста и понятна, легко понятна и реализуема.
Неправильная настройка линейного цикла регрессии может привести к созданию большого количества шума.
При сильных тенденциях EMA-фильтр может упустить некоторые возможности.
В условиях кризиса часто происходят сделки и убытки.
Решение проблемы:
Оптимизация параметров линейного цикла регрессии, снижение шума.
В зависимости от рыночных условий можно динамично корректировать цикл EMA.
Увеличение стоп-лосса для контроля убытков
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизируйте циклические параметры быстрого и медленного линейного регрессирования, чтобы найти оптимальную комбинацию параметров.
Попробуйте использовать другие фильтрующие показатели вместо EMA, такие как Brinband, KDJ и т.д., чтобы увидеть, можно ли улучшить эффективность стратегии.
Увеличение динамического стоп-убытка для контроля риска и предотвращения расширения убытков.
Торговля акциями, связанными с механизмом выбора акций, с выбором более тенденциозных акций.
Разработка параметров с возможностью самостоятельной адаптации и автоматической корректировки параметров в зависимости от состояния рынка.
Двухлинейная стратегия отслеживания трендов регрессии в целом является более простой и прямой, используя разницу в значении двулинейной регрессии для определения ценового тренда и эффективного отслеживания тенденций с использованием EMA в качестве фильтрующего показателя. Однако эта стратегия также сопряжена с определенным риском, и для максимальной эффективности стратегии необходимо обратить внимание на оптимизацию параметров, сдерживание убытков и т. Д.
/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 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/
// © TradingAmmo
//@version=4
strategy("Linear trend", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end = timestamp(input(9999, "End Year"), input(1, "Month"), input(1, "Day"), 0, 0)
_testPeriod() =>
iff(time >= startP and time <= end, true, false)
src = close
len1 = input(defval=13, minval=1, title="Fast LR")
len2 = input(defval=55, minval=1, title="Slow LR")
lag1 = input(0, title="Lag for fast")
lag2 = input(0, title="Lag for slow")
threshold = input(0,step=0.5, title="Threshold")
fast_lr = linreg(src, len1, lag1)
slow_lr = linreg(src, len2, lag2)
lr = fast_lr - slow_lr
plot_fast = plot(lr, color = lr > 0 ? color.green : color.red)
plot(threshold, color=color.purple)
long_condition = crossover(lr, threshold) and close > ema(close, 200) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition)
short_condition = crossunder(lr, threshold)
strategy.close('BUY', when=short_condition)