Eine quantitative Strategie, die Mittelwertumkehr und Trendfolge kombiniert


Erstellungsdatum: 2023-09-14 20:45:20 zuletzt geändert: 2023-09-14 20:45:20
Kopie: 0 Klicks: 1109
1
konzentrieren Sie sich auf
1617
Anhänger

In diesem Artikel wird eine quantitative Handelsstrategie beschrieben, die sowohl die Mean Return- als auch die Trend-Tracking-Technologie verwendet. Die Strategie zielt darauf ab, in Trendsituationen rückwärts zu handeln und Trend zu verfolgen, um gleichzeitig zu handeln.

  1. Strategische Grundlagen

Die Strategie erzeugt Handelssignale hauptsächlich über einfache Moving Averages und RSI-Indikatoren:

  1. Wenn der Preis unter dem 200-Perioden-Moving-Average liegt, ist er in einer Abwärtsphase.

  2. Der Rückschlag auf den Mittelwert des Gegenwertes wird getätigt, wenn der RSI unter 20 liegt.

  3. Wenn der Preis über dem 200-periodischen Moving Average liegt, ist er in der Aufwärtsphase.

  4. Wenn der Preis einen beweglichen Durchschnitt überschreitet, wird ein Trend-Tracking-Geschäft durchgeführt.

  5. Der RSI liegt über 80 oder der Kurs liegt unter dem Moving Average.

  6. Die Positionen mit Mean Return und Trend Tracking können separat eingestellt werden.

Die Strategie nutzt eine Kombination aus Mittelwertrückführung und Trend-Tracking-Techniken, um die richtigen Operationen in den verschiedenen Phasen durchzuführen.

  1. Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. Die Kombination zweier verschiedener Technologien kann die Anpassungsfähigkeit der Strategie verbessern.

  2. Es ist wichtig zu wissen, dass es sich um eine gute Handelsstrategie handelt.

  3. Risiken können in verschiedenen Modellen kontrolliert werden, indem Positionen angepasst werden.

  4. Die Parameter-Einstellungen sind einfach und leicht umzusetzen.

  5. Potenzielle Risiken

Aber diese Strategie birgt auch folgende Risiken:

  1. Indikatoren wie der Moving Average und der RSI sind anfällig für falsche Durchbrüche.

  2. Es könnte eine Verzögerung beim Wechsel zwischen den beiden Modellen geben.

  3. Es ist notwendig, eine gewisse Auszahlung zu leisten, um langfristige Vorteile zu erzielen.

Vier Inhalte, Zusammenfassung

In diesem Artikel wird eine quantitative Handelsstrategie beschrieben, die Mittelwertrückführung und Trend-Tracking-Technologien nutzt. Diese Strategie ermöglicht den Handel in verschiedenen Marktphasen und erhöht die Anpassungsfähigkeit.

Strategiequellcode
/*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)