Double Moving Average Breakout-Strategie basierend auf ATR-Volatilität und HMA-Trendabweichung


Erstellungsdatum: 2024-01-17 16:37:23 zuletzt geändert: 2024-01-17 16:37:23
Kopie: 2 Klicks: 529
1
konzentrieren Sie sich auf
1617
Anhänger

Double Moving Average Breakout-Strategie basierend auf ATR-Volatilität und HMA-Trendabweichung

Überblick

Die Strategie ist eine quantitative Handelsstrategie, die ein doppelt einheitliches Breakout-Signal mit ATR-Schwankungsfilter und HMA-Trendverschiebung kombiniert. Die Strategie verwendet zwei unterschiedliche Perioden, um ein Handelssignal zu erstellen. Die Strategie filtert einen Teil des ungültigen Signals in Kombination mit dem ATR-Schwankungsindikator aus, um die Richtung des Trends zu beurteilen und einen Rückschlag zu vermeiden.

Strategieprinzip

Die Strategie verwendet eine 37-Zyklen-Länge-Gleichung als Referenz-Gleichung, um ein Kaufsignal zu erzeugen, wenn der Preis von der unteren Brechungslinie nach oben springt, und ein Verkaufssignal zu erzeugen, wenn der Preis von der oberen Brechungslinie nach unten springt. Um Fehlsignale zu filtern, setzt die Strategie eine Signal-Erstellungsanweisung, nachdem der Preis die Referenz-Gleichung überschritten hat. Die Strategie verwendet auch eine HMA mit einer Länge von 11 Zyklen, um die Richtung des großen Trends zu bestimmen.

Bei der Gewinn-Methode unterstützt die Strategie die Wahl zwischen einem Stopp oder zwei oder sogar drei Stopps mit unterschiedlichen Preisen. Bei der Verlust-Methode wird die Strategie direkt über und unter der Orbitallinie als ein langes oder kurzes Stop-Line verwendet.

Strategische Stärkenanalyse

Die Strategie erhöht die ATR-Schwankungsfilterung bei der Signalerzeugung und filtert den größten Teil der unwirksamen Signale, was im Einklang mit der visuellen K-Linie-Strategie steht und somit eine höhere Gewinnrate ermöglicht. Gleichzeitig erhöht die HMA die Trendschwäche und vermeidet die Rückschlagsposition, wodurch unnötige Verluste erheblich reduziert werden. Auf der Gewinn-Methode unterstützt die Strategie mehrere Stop-Point-Einstellungen, die zu einem gewissen Grad mehr Gewinne sichern können.

Risikoanalyse und Lösungsansätze

Die größte Gefahr dieser Strategie besteht darin, dass ATR-Volatilitätsfilter möglicherweise einen Teil der effektiven Signale auslöschen, was dazu führt, dass die Strategie nicht in der Lage ist, rechtzeitig zu lagern. Darüber hinaus ist die Wirksamkeit der HMA bei der Beurteilung des großen Trends nicht sichtbar, und manchmal sind die Preise nur eine kurzfristige Anpassung und nicht eine große Trendwende, was zu unnötigen Verlusten führen kann. Um die oben genannten Risiken zu verringern, können die Parameter des ATR-Volatilitätsfilters angemessen reduziert werden, um die Bandbreite der Volatilität zu erweitern, so dass mehr K-Linien-Form-Signale durch Validierungsrichtlinien erzeugt werden.

Richtung der Strategieoptimierung

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Es werden mehrere Arten von Parameterkombinationen getestet, um die optimale Parameterkombination zu finden. Parameter wie die Basisdurchschnittslänge, der ATR-Zyklus und der fluktuierende Filterkoeffizient können angepasst werden.

  2. Mehr Filter- oder Oszillator-Indikatoren, um die Marktlage zu beurteilen und die Strategie weiter zu stärken.

  3. Optimieren Sie die Parameter-Einstellungen für die Gewinnmethode. Testen Sie die Stop-Point-Einstellungen für verschiedene Mengen und Preise weiter.

  4. In Kombination mit maschinellen Lernmodellen erzeugen wir effizientere Handelssignale.

Zusammenfassen

Diese Strategie integriert die doppelte Breakout-Kernsignale, die ATR-Schwankungsfilterung, die Unwirksamkeitssignale, und nutzt die HMA, um die große Trenddeviation zu beurteilen, um eine Gegenposition zu vermeiden. Es ist eine sehr praktische quantitative Handelsstrategie.

Strategiequellcode
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-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/
// © sevencampbell

//@version=5
strategy(title="Baseline Cross Qualifier Volatility Strategy with HMA Trend Bias", overlay=true)

// --- User Inputs ---

// Baseline Inputs
baselineLength = input.int(title="Baseline Length", defval=20)
baseline = ta.sma(close, baselineLength)

// PBCQ Inputs
pbcqEnabled = input.bool(title="Post Baseline Cross Qualifier Enabled", defval=true)
pbcqBarsAgo = input.int(title="Post Baseline Cross Qualifier Bars Ago", defval=3)

// Volatility Inputs
atrLength = input.int(title="ATR Length", defval=14)
multiplier = input.float(title="Volatility Multiplier", defval=2.0)
rangeMultiplier = input.float(title="Volatility Range Multiplier", defval=1.0)
qualifierMultiplier = input.float(title="Volatility Qualifier Multiplier", defval=0.5)

// Take Profit Inputs
takeProfitType = input.string(title="Take Profit Type", options=["1 Take Profit", "2 Take Profits", "3 Take Profits"], defval="1 Take Profit")

// HMA Inputs
hmaLength = input.int(title="HMA Length", defval=50)

// --- Calculations ---

// ATR
atr = ta.atr(atrLength)

// Range Calculation
rangeHigh = baseline + rangeMultiplier * atr
rangeLow = baseline - rangeMultiplier * atr
rangeColor = rangeLow <= close and close <= rangeHigh ? color.yellow : na
bgcolor(rangeColor, transp=90)

// Qualifier Calculation
qualifier = qualifierMultiplier * atr

// Dot Calculation
isLong = close > baseline and (close - baseline) >= qualifier and close > ta.hma(close, hmaLength)
isShort = close < baseline and (baseline - close) >= qualifier and close < ta.hma(close, hmaLength)
colorDot = isLong ? color.green : isShort ? color.red : na
plot(isLong or isShort ? baseline : na, color=colorDot, style=plot.style_circles, linewidth=3)

// --- Strategy Logic ---

// PBCQ
pbcqValid = not pbcqEnabled or low[pbcqBarsAgo] > baseline

// Entry Logic
longCondition = isLong and pbcqValid
shortCondition = isShort and pbcqValid
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Logic
if (takeProfitType == "1 Take Profit")
    strategy.exit("TP/SL", "Long", limit=rangeHigh, stop=rangeLow)
    strategy.exit("TP/SL", "Short", limit=rangeLow, stop=rangeHigh)
else if (takeProfitType == "2 Take Profits")
    strategy.exit("TP1", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh / 2)
    strategy.exit("TP2", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh)
    strategy.exit("TP1", "Short", qty=strategy.position_size * 0.5, limit=rangeLow / 2)
    strategy.exit("TP2", "Short", qty=strategy.position_size * 0.5, limit=rangeLow)
else if (takeProfitType == "3 Take Profits")
    strategy.exit("TP1", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh / 2)
    strategy.exit("TP2", "Long", qty=strategy.position_size * 0.25, limit=rangeHigh * 0.75)
    strategy.exit("TP3", "Long", qty=strategy.position_size * 0.25, limit=rangeHigh * 1.5)