Эта статья подробно объясняет количественную торговую стратегию, которая сочетает в себе как средний реверсионный, так и следующий за трендом методы.
I. Логика стратегии
Стратегия в основном использует простую скользящую среднюю и индикатор RSI для генерации торговых сигналов:
Когда цена ниже 200-периодного SMA, он оценивает текущий рынок как понижающийся.
Когда показатель RSI ниже 20, то требуется обратная реверсия среднего тренда.
Когда цена превышает 200-периодную SMA, она оценивает текущий рынок как восходящий тренд.
Когда цена пересекает SMA, требуются сделки, следующие тренду.
Выходы запускаются, когда RSI превышает 80 или цена падает ниже SMA на определенный процент.
Размер позиции для среднего отклонения и следования тренду может регулироваться отдельно.
Стратегия сочетает в себе методы среднего реверсии и трендоустройства и применяет их на разных этапах рынка.
II. Преимущества стратегии
Основными преимуществами являются:
Сочетание двух методов улучшает адаптивность стратегии.
Он может найти торговые возможности на трендовых и различных рынках.
Риски можно контролировать путем корректировки размеров позиций.
Простые настройки параметров облегчают реализацию.
III. Потенциальные риски
Однако риски заключаются:
Показатели, такие как SMA и RSI, подвержены ложным прорывам.
Переход между двумя режимами может задерживаться.
Некоторые изъятия должны быть выдержаны для долгосрочных выгод.
IV. Резюме
В этой статье объясняется количественная стратегия, использующая методы среднего реверсия и тренда. Она может торговать на разных этапах рынка для улучшения адаптивности. Но риски, такие как сбой индикатора и задержка переключения режима, необходимо управлять. В целом, она обеспечивает гибкий подход для объединения различных методов.
/*backtest start: 2022-09-07 00:00:00 end: 2023-04-05 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/ // © I11L //@version=5 strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for the starting date start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date") enableMeanReversion = input.bool(true) enableTrendfollowing = input.bool(true) trendPositionFactor = input.float(1) meanReversionPositionFactor = input.float(0.5) // Convert the input string to a timestamp start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0) // Check if the current bar's time is greater than or equal to the start timestamp start_condition = time >= start_ts var tradeOrigin = "" sma200 = ta.sma(close,200) rsi2 = ta.rsi(close,2) isMeanReversionMode = close < sma200 or not(enableTrendfollowing) isTrendfollowingMode = close > sma200 or not(enableMeanReversion) isRsiBuy = rsi2 < 20 and enableMeanReversion isRsiClose = rsi2 > 80 and enableMeanReversion isSmaBuy = close > sma200 and enableTrendfollowing isSmaClose = close < sma200 * 0.95 and enableTrendfollowing isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy) positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor // Only execute the strategy after the starting date if (start_condition) if (isBuy and strategy.opentrades == 0) tradeOrigin := isSmaBuy ? "SMA" : "RSI" strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor)) isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose if (isClose) strategy.exit("Exit", limit = close) plot(sma200) plot(sma200 * 0.95, color=color.orange)