Количественная стратегия, сочетающая возврат к среднему и следование тренду


Дата создания: 2023-09-14 20:45:20 Последнее изменение: 2023-09-14 20:45:20
Копировать: 0 Количество просмотров: 1109
1
Подписаться
1617
Подписчики

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

Принципы стратегии

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

  1. Если цена находится ниже 200-циклической скользящей средней, то она считается находящейся на нисходящей стадии.

  2. Торговля на обратном направлении, когда RSI ниже 20;

  3. Если цена превышает 200-циклическую скользящую среднюю, то она находится на подъемной стадии;

  4. Тренд-следящие сделки, совершаемые в ходе движения цены вверх по движущейся средней.

  5. Условия для равновесного положения RSI выше 80 или цена опускается ниже сколь угодно высокой отметки от сколь угодно высокой отметки от сколь угодно высокой отметки от сколь угодно высокой отметки от сколь угодно высокой отметки от сколь угодно высокой отметки.

  6. Позиции для торговли, которые могут быть настроены на среднее возвращение и отслеживание тенденций, соответственно.

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

Второе: стратегические преимущества

Основные преимущества этой стратегии:

  1. Сочетание двух различных технологий может повысить адаптивность стратегии.

  2. Возможности для торговли находятся как в трендовых, так и в волатильных рынках.

  3. Риск в различных режимах можно контролировать путем корректировки позиции.

  4. Настройка параметров проста и проста в использовании.

Третье, потенциальные риски

Однако эта стратегия несет в себе следующие риски:

  1. Такие показатели, как скользящие средние и RSI, подвержены ложным прорывам.

  2. Возможное затягивание смены двух моделей торговли;

  3. Для получения долгосрочной выгоды требуется определенная сумма вывода.

Четвертое содержание.

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

Исходный код стратегии
/*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)