Multi-Indikator-Kombinationshandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-26
Tags:

img

Übersicht

Diese Strategie kombiniert CCI-, ADX- und AO-Indikatoren, um Handelssignale für Long- und Short-Positionen zu generieren. CCI identifiziert Überkauf- und Überverkaufswerte, ADX bestimmt Trendstärke und -richtung und AO unterstützt bei schwankenden Märkten. Die Kombination aus mehreren Indikatoren verbessert die Stabilität und Effizienz des Handelssystems.

Strategie Logik

  1. Der CCI gibt einen Überkauf über 100 und einen Überverkauf unter -100 an. Diese Strategie geht lang, wenn der CCI unter 0 liegt.

  2. ADX misst die Trendstärke. DI+ zeigt Aufwärtstrendstärke, DI- zeigt Abwärtstrendstärke. ADX ist die durchschnittliche Trendstärke. Diese Strategie geht lang, wenn DI+ unter 25 liegt.

  3. Ein Anstieg der AO bedeutet eine Stärkung der bullischen Dynamik und ein Rückgang der AO bedeutet eine Stärkung der bärischen Dynamik.

  4. Die Handelsregeln sind: Long gehen, wenn CCI < 0 und DI+ < 25 und AO < 0; Long schließen, wenn DI+ > 25.

  5. Dynamisch berechnet die Auftragsgröße als Eigenkapital geteilt durch den Schlusskurs und nach unten gerundet, um Aufträge mit Änderungen des Eigenkapitals anzupassen.

  6. Strategie.Eintrag für lange Signale und Strategie.Schließung für Ausstiegssignale.

Vorteile

  1. Die CCI filtert Lärm aus verschiedenen Märkten und verringert damit die falschen Signale.

  2. ADX erkennt frühzeitig stärkere Trends.

  3. AO vermeidet den Handel mit unruhigen Märkten.

  4. Mehrere Indikatoren überprüfen Signale und erhöhen die Zuverlässigkeit.

  5. Die dynamische Positionsgröße verwaltet das Risiko effektiv.

  6. Einfache und klare Logik, leicht zu befolgen.

Risiken

  1. CCI hat Schwierigkeiten, Vkosd-Bereiche zu identifizieren.

  2. ADX hat bei der Aufnahme von Trendwechseln Verzögerungen.

  3. AO kämpft mit einer schwierigen Konsolidierung.

  4. Schlechte Indikator-Einstellungen führen zu einer Überfilterung und fehlenden Trades.

  5. Dynamische Größenordnung, abhängig von Volatilität und Märkten.

  6. Potenzielle große Abzüge, die ein strenges Risikomanagement erfordern.

Verbesserungen

  1. Optimierung der CCI-Parameter für verschiedene Märkte.

  2. Optimieren der ADX-Parameter, um Trendänderungen zu erfassen.

  3. Anpassung der AO-Parameter für Volatilitätsumgebungen.

  4. Testkombinationen zur Ermittlung der optimalen Indikatorgewichtung.

  5. Hinzufügen von Stop-Loss für die Rückzugskontrolle.

  6. Einfügen von Lautstärke zur Vermeidung eines falschen Ausbruchs.

  7. Anpassung der festgelegten Positionsgröße nach Instrument.

Schlussfolgerung

Diese Strategie kombiniert CCI, ADX und AO, um ziemlich zuverlässige lange Signale zu erzeugen. Dynamische Größe und Positionsmanagement-Risikokontrolle. Die Logik ist einfach und klar für Anfänger zu folgen.


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

//@version=3
strategy("Strategy Niel", shorttitle="Strategy Niel", max_bars_back=2000, initial_capital=1000)

//Input variables
buywhenadxabove = input(25)
buywhendiplusbelow = input(10)
buywhenccibelow = input(0)
buywhenawesomeoscillatorbelow = input(0)
sellwhendiplusabove = input(25)

//CCI script
numberofbarsforcci = input(20)
CCI = cci(close,numberofbarsforcci)

//+DI and ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
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 = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

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

//plot(sig, color=red, title="ADX")
//plot(up, color=blue, title="+DI")
//plot(down, color=orange, title="-DI")


//Awesome Oscillator
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? blue : red
//plot(xSMA1_SMA2, style=histogram, linewidth=1, color=cClr)

buy = sig > buywhenadxabove and up < buywhendiplusbelow  and CCI < buywhenccibelow and xSMA1_SMA2 < buywhenawesomeoscillatorbelow 

ordersize=floor(strategy.equity/close) // Floor returns largest integer, strategy.equity gives total equity remaining - allows to dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when= buy) //strategy.entry let's you enter the market variables id ("long"), strategy.long (long position entry), size of the order and when the order should happen
bought = strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
sell = up > sellwhendiplusabove 
strategy.close("long", when=sell ) //strategy.close let's you close your position with variables id ('long') and when this should happen




Mehr