Билинеарная регрессионная стратегия использует разницу между быстрой и медленной линейной регрессией для определения ценовых тенденций и использует ее в качестве сигналов входа. Она длится, когда быстрая линейная регрессия пересекает порог и выходит, когда пересекает ниже. Она также использует EMA в качестве фильтра, чтобы входить только тогда, когда цена выше EMA.
Стратегия сначала рассчитывает две линейные регрессионные линии с различными периодами, одну быструю с более коротким периодом и одну медленную с более длительным периодом. Затем она рассчитывает разницу между ними, когда быстрая регрессия выше медленной регрессии, разница положительная, что указывает на восходящий тренд. Когда быстрая ниже медленной, разница отрицательная, что указывает на нисходящий тренд.
Стратегия входит в длинный, когда линия разницы пересекает порог и выходит, когда она пересекает ниже.
Двойная линейная регрессия может хорошо отражать тенденции цен.
Фильтр EMA устраняет некоторые ложные сигналы от движений, не связанных с трендом.
Простая и понятная логика, легко понятная и реализуемая.
Неправильные периоды LR могут создавать чрезмерный шум.
Фильтр EMA может упустить возможности в сильных тенденциях.
Склонны к убыткам на различных рынках.
Решения:
Оптимизировать периоды LR для уменьшения шума.
Динамически корректировать период EMA на основе рыночных условий.
Добавьте стоп-потери к контрольным потерям.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать быстрые и медленные периоды LR для поиска наилучшей комбинации.
Попробуйте другие фильтры, такие как полосы Боллинджера, KDJ вместо EMA.
Добавить динамический стоп-лосс для контроля рисков.
Соедините с выбором акций, чтобы выбрать трендовые.
Разработка адаптивных параметров на основе рыночных условий.
Стратегия двулинейной регрессии проста и прямой в захвате тенденций с двойной линейной регрессией и фильтром 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)