Vier-Faktor-Momentum-Tracking-Handelsstrategie auf Basis von ADX, BB %B, AO und EMA

Schriftsteller:ChaoZhang, Datum: 2023-12-11 16:24:11
Tags:

img

##Übersicht Diese Strategie wird Vier-Faktor-Momentum-Tracking-Strategie genannt. Sie integriert den Average Directional Movement Index (ADX) zur Bestimmung der Trendrichtung, Bollinger Bands Percentage B (BB %B) zur Beurteilung der relativen Stärke von Aktien, Awesome Oscillator (AO) zur Bestimmung der Dynamik und verschiedene Zyklen Exponential Moving Averages (EMA) zur Beurteilung von Long- und Short-Positionen, um eine dynamische Verfolgung der Aktienkurse zu erreichen und starke Aktien zu verfolgen und schwache zu vermeiden.

## Strategieprinzip
Die Strategie verwendet vier verschiedene technische Indikatoren zur Bestimmung der Einstiegs- und Ausstiegspunkte.

Long-Entry-Bedingung: 5-Tage-EMA überschreitet 21-Tage-EMA, 50-Tage-EMA überschreitet 200-Tage-EMA, BB %B ist größer als die festgelegte Überkauflinie, AO ist größer als der festgelegte positive Wert und ADX ist größer als der festgelegte Wert.

Kurze Einstiegsbedingung: 5-Tage-EMA überschreitet die 21-Tage-EMA, 50-Tage-EMA überschreitet die 200-Tage-EMA, BB %B ist niedriger als die festgelegte Überverkaufslinie, AO ist niedriger als der festgelegte negative Wert und ADX ist größer als der festgelegte Wert.

##Vorteilsanalyse Die Strategie kombiniert mehrere Indikatoren, um die Trendrichtung und die relative Stärke der Aktien zu bestimmen, die falsche Ausbrüche effektiv filtern können.

  1. Der ADX-Indikator kann das Vorhandensein und die Stärke des Trends effektiv bestimmen und vermeiden, dass der Markt häufig in einem Schock eröffnet wird.

  2. Der BB % B-Indikator beurteilt, ob sich die einzelnen Bestände auf einem hoch oder niedrig Niveau befinden, wodurch effektiv vermieden werden kann, Höchstwerte und Verkaufstief zu verfolgen.

  3. Der AO-Indikator bestimmt, ob bei einem Kauf eine relativ starke Dynamikunterstützung besteht, um die Wirksamkeit des Ausbruchs zu gewährleisten.

  4. Der EMA-Indikator mit seinem goldenen Kreuz/toten Kreuz und seiner Beurteilung der Hauptrichtung des Marktes verhindert, dass Positionen gegen den Trend eröffnet werden.

Zusammenfassend lässt sich mit dieser Strategie Handelsrisiken wirksam kontrollieren und starke Aktien auf dem Markt verfolgen.

##Risikoanalyse Obwohl die Strategie mehrere Indikatoren zur Risikokontrolle verwendet, bestehen nach wie vor gewisse Risiken:

  1. Die Kombination mehrerer exponentieller Indikatoren ist empfindlich gegenüber Parameteranpassungen.

  2. Der Markt kann durch eine übertriebene Dynamik die tatsächlichen Umkehrpunkte verpassen.

  3. Indikatoren wie die EMA haben einen verzögerten Charakter und können die Auswirkungen plötzlicher Ereignisse möglicherweise nicht rechtzeitig widerspiegeln.

  4. Es kann vorkommen, dass sich die Indikatoren durch plötzliche Ereignisse verschieben, wobei die Fundamentalanalyse kombiniert und die Strategie gegebenenfalls vorübergehend abgebrochen werden kann.

## Optimierung Richtung Die Strategie kann auch in mehreren Aspekten optimiert werden:

  1. Verwenden Sie maschinelles Lernen, um die optimale Parameterkombination zu finden.

  2. Hinzufügen anderer Indikatoren, die Trends bestimmen, wie CCI und MACD, um eine Indikatorenkombination zu bilden, um die Genauigkeit der Beurteilung zu verbessern.

  3. Hinzufügen von Stop-Loss-Strategien zur Kontrolle von Einzelverlusten.

  4. Stellen Sie eine Wartezeit fest, um übermäßige Gier zu vermeiden.

Zusammenfassung Diese Strategie wird Vier-Faktor-Momentum-Tracking-Strategie genannt. Sie verwendet ADX, BB %B, AO und EMA vier Indikatoren, um Ein- und Ausstiegspunkte zu bestimmen, um starke Aktien dynamisch zu verfolgen. Die Strategie kann effektiv die Trendrichtung und die relative Stärke von Aktien bestimmen, um Handelsrisiken zu kontrollieren. Als nächstes können Parameteroptimierung, Hinzufügen anderer Indikatoren, Einstellung der Haltezeit und andere Methoden verwendet werden, um die Strategie weiter zu verbessern.


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

//@version=4

//ADX + BB %B + AO + EMA

strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000)
take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100)
stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100)
bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100)
bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100)
ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2)
adx_value = input(title="ADX", type=input.integer, defval=15)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema5 = ema(close, 5)
ema21 = ema(close, 21)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

//BB %B
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)

//Awesome Oscillator
ao = sma(hl2,5) - sma(hl2,34)

// ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value
short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value

plot(ema5, color=color.blue)
plot(ema21, color=color.aqua)
plot(ema50, color=color.purple)
plot(ema200, color=color.red)
bgcolor(color=long_strategy ? color.green : na, transp=80)
bgcolor(color=short_strategy ? color.purple : na, transp=80)
    
if inDateRange and long_strategy
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100)
if inDateRange and short_strategy
    strategy.entry("short", strategy.short)
    strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)


Mehr