Die Ressourcen sind geladen. Beförderung...

Anpassungsfähige Handelsstrategie auf Basis von Momentumindikatoren

Schriftsteller:ChaoZhang, Datum: 2024-01-05 11:43:25
Tags:

img

Übersicht

Diese Strategie ist eine anpassungsfähige Aktienhandelsstrategie, die auf Dynamikindikatoren basiert. Sie integriert Bollinger-Bänder, Keltner-Kanäle und Preispress-Indikator, um Trendbeurteilung, Durchbruchspunktidentifizierung und Stop-Loss-Ausstieg für den automatisierten Handel zu erreichen.

Strategieprinzip

Der Kern dieser Strategie besteht darin, einen Preiskanal durch Bollinger-Bänder und Keltner-Kanäle zu errichten und Handelssignale zu identifizieren, wenn der Preis durch den Kanal bricht. Es wird eine Long-Position einnehmen, wenn der Preis den Kanal bricht, und eine Short-Position einnehmen, wenn der Preis den Kanal bricht. Darüber hinaus bestimmt die Strategie die Operationsrichtung, wenn der Preis im Kanal gepresst wird, basierend auf dem positiven und negativen Wert des Preisdruckindikators.

Insbesondere berechnet Bollinger Bands die Standardabweichung des Preises, um die obere und untere Schiene zu zeichnen; Keltner Channels zeichnet die obere und untere Schiene auf der Grundlage des durchschnittlichen Preises ± durchschnittlichen Volatilitätsbereichs. Wenn die Kanalfusion zwischen den beiden stattfindet, wird davon ausgegangen, dass der Markt in die Konsolidierung eintritt, während er auf den nächsten Ausbruch wartet. Der Preisdruckindikator spiegelt wider, ob der Preis zwischen den beiden Kanälen komprimiert ist. Die Strategie bestimmt die Marktrichtung auf der Grundlage des positiven und negativen Wertes des Druckindikators.

Zusammenfassend lässt sich sagen, dass diese Strategie mehrere Indikatoren integriert, um die Kursbewegung zu beurteilen und eine klare Lang- und Kurzzeitlogik zu bilden, die falsche Ausbrüche effektiv filtern und Handelsmöglichkeiten mit hoher Wahrscheinlichkeit identifizieren kann.

Vorteile der Strategie

  1. Integriert mehrere Indikatoren mit starker Urteilsfähigkeit.

  2. Die Indikatordifferenz dient als Hilfsbedingung, um unnötigen Handel zu vermeiden.

  3. Der Kanal dient als Stop-Loss-Position, die sich automatisch anhand von Marktschwankungen anpassen kann, um Verluste zu reduzieren.

  4. Einfache Parameter-Einstellungen, geeignet für die Automatisierung. Mit nur wenigen Schlüsselparametern ist es einfach zu testen, zu optimieren und in automatisierte Handelssysteme zu integrieren.

Risiken der Strategie

  1. Häufige Long-Short-Umstellung bei starken Marktschwankungen, was zu einer erhöhten Anzahl von Geschäften führt.

  2. Fehlende Indikatorparameter können gute Handelschancen verpassen.

  3. Nur für Aktien mit einer klaren Richtung, die nicht für extrem volatile Märkte geeignet sind.

Optimierungsrichtlinien

  1. Erhöhung des Positionssteuerungsmoduls zur Optimierung der Effizienz der Kapitalnutzung.

  2. Erweiterung des Modells des maschinellen Lernens zur dynamischen Anpassung der Indikatorparameter, so dass sich Indikatoren automatisch an verschiedene Zyklen und verschiedene Bestände anpassen können.

  3. Verbesserte Strategie kann die Anzahl der Stop-Losses an wichtigen Punkten reduzieren.

Schlussfolgerung

Diese Strategie integriert Bollinger-Bänder, Keltner-Kanäle und Preis-Squeeze-Indikator, um eine klare Logik für das Urteils- und Risikokontrollsystem zu bilden. Sie kombiniert Trendbeurteilung und Breakout-Operationen, kann sich automatisch an die Marktbedingungen anpassen und Handelsmöglichkeiten mit hoher Wahrscheinlichkeit identifizieren. Mit weiterer Optimierung der Parameter und Verbesserung der Hilfsbedingungen kann diese Strategie zu einem wichtigen Instrument für den quantitativen Handel weiter gestärkt werden.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")



Mehr