Mehrere Indikatoren für eine quantitative Handelsstrategie


Erstellungsdatum: 2023-10-25 18:06:44 zuletzt geändert: 2023-10-25 18:06:44
Kopie: 0 Klicks: 645
1
konzentrieren Sie sich auf
1617
Anhänger

Mehrere Indikatoren für eine quantitative Handelsstrategie

Überblick

Diese Strategie verwendet mehrere technische Indikatoren in Kombination, um langfristige binäre Handelsentscheidungen zu treffen. Hauptsächlich sind Indikatoren wie Bolling Line, RSI, ADX und andere Indikatoren enthalten, während die Richtung der Tendenz in Kombination mit der Gleichgewichtslinie beurteilt wird.

Strategieprinzip

Die Strategie wird hauptsächlich durch die Bolling-Linie beurteilt, um die Preisschwankungen zu beurteilen, wobei die Bolling-Linie eine Verringerung der Preisschwankungen darstellt, die möglicherweise durchbrochen werden kann. In Kombination mit dem RSI wird ein Überkauf-Überverkauf beurteilt, wobei der RSI über 70 eine Überkaufzone und unter 30 eine Überverkaufzone darstellt. Wenn die Bolling-Linie eng wird und der RSI-Indikator sich der Überkauf-Überverkaufszone nähert, wird ein Umkehrhandel durchgeführt.

Die Strategie nutzt auch die ADX, um die Stärke der Kursbewegung zu bestimmen. Wenn der ADX hoch ist, bedeutet dies, dass ein Trend stark ist, und Sie können einen Kurswechsel wählen. Wenn der ADX niedrig ist, bedeutet dies, dass kein Trend sichtbar ist, und Sie können einen Umkehrschlag in Betracht ziehen.

Konkret, wenn die Burin-Band geschlossen, RSI-Indikator in der Nähe von überkaufen und überverkaufen Zone, und der Preis fiel aus der Bahn, der Meinung ist, dass die Situation möglicherweise rückwärts, in dieser Zeit zu berücksichtigen; wenn die Burin-Band geschlossen, RSI-Indikator in der Nähe von überkaufen Zone, und der Preis brach aus der Bahn, der Meinung ist, dass die Lage möglicherweise fallen, in dieser Zeit zu berücksichtigen, zu brechen. Darüber hinaus, wenn die ADX hoch ist, können die Preise in der Aufwärtstrend, um mehr zu setzen; wenn die ADX niedrig ist, können die Preise in der Abwärtstrend, um zu brechen.

Analyse der Stärken

Diese Kombination von mehreren Indikatoren hat folgende Vorteile:

  1. Durch die integrierte Berücksichtigung mehrerer technischer Indikatoren wird die Genauigkeit und Stabilität der Handelssignale erhöht. Ein einzelner Indikator ist anfällig für Fehltritte und andere Fehleinschätzungen. Eine Kombination aus mehreren Indikatoren kann das Signal verifizieren und falsche Geschäfte vermeiden.

  2. Trend-Trading ist ein Trend-Trading, bei dem sowohl Trends als auch Schwankungen berücksichtigt werden, das sich an unterschiedliche Marktbedingungen anpasst.

  3. Gleichzeitig können Sie mehr Leerlauf machen, um das Positionsrisiko in einseitigen Märkten zu verringern und gegen Extreme vorzubeugen.

  4. Ein Stop-Loss-Stopp-Punkt kann einige Gewinne und Grenzverluste verursachen, wenn Positionen falsch laufen.

  5. Durch die Optimierung von Parametern können die Effektivität der Strategie kontinuierlich verbessert und an Marktveränderungen angepasst werden.

Risikoanalyse

Die Strategie birgt auch einige Risiken, die beachtet werden müssen:

  1. Eine Kombination aus mehreren Indikatoren erhöht die Komplexität der Strategie, und die falsche Einstellung der Parameter kann die Wirksamkeit beeinträchtigen.

  2. Übermäßige Abhängigkeit von technischen Indikatoren, die die grundlegenden Informationen ignorieren, kann dazu führen, dass die Handelssignale ungenau sind.

  3. Wenn der Indikator ein Signal erzeugt, kann sich die Situation geändert haben, und es besteht die Gefahr, dass ein Auf- und Absturz auftritt. Es ist notwendig, angemessen auf die Rückmeldung zu warten.

  4. Multi-Platz-Doppelöffnung erhöht die Handelsfrequenz, erhöht die Gebührenkosten und den Gelddruck. Die Größe der Position muss kontrolliert werden.

  5. Es besteht ein gewisses Risiko einer Kurvenübereinstimmung, und es ist am besten, die Strategie in mehreren Märkten zu testen.

Die Risiken können durch strenge Stop-Loss-Methoden, vorsichtige Einlagerung und vernünftige Kontrolle der Positionen kontrolliert werden. Insgesamt ist die Strategie von großer praktischer Bedeutung.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Verschiedene Parameterkombinationen werden getestet, um optimale Parameter zu finden. Parameteroptimierungen können mit Methoden wie Schritt-in-Schritt, Zufallssuche oder genetischen Algorithmen durchgeführt werden.

  2. Hinzufügen weiterer Indikatoren wie KDJ, William-Indikatoren usw. zur Bildung von Indikatorgruppen und zur Steigerung der Strategiefestigkeit.

  3. Optimierung der Positionsverwaltung und Risikokontrolle durch dynamische Positionsanpassungen.

  4. In Kombination mit maschinellen Lern-Algorithmen nutzen sie quantitative Modelle, um Preistrends und zukünftige Entwicklungen zu bestimmen.

  5. Tests in verschiedenen Sorten, Zeitspannen und Märkten, um die Anpassungsfähigkeit der Strategie zu verbessern

  6. Optimierung der Ein- und Ausstiegszeit, um Trends zu einem frühen Stadium zu erfassen und vor der Umkehrung zu verlassen.

  7. Um Gewinne zu sichern und Risiken zu kontrollieren, werden Methoden wie Stop-Loss-Tracking und mobile Stop-Loss verwendet.

  8. Zugabe von Fundamentaldaten, Marktstrukturermittlungen zur Filterung von Signalen aus technischen Indikatoren.

Zusammenfassen

Die Strategie nutzt verschiedene Indikatoren, um die Preisentwicklung zu bestimmen und den Handel zu automatisieren. Die Strategie bietet Vorteile wie die Bestätigung von Indikatorgruppen, Zwei-Wege-Handel und Stop-Loss-Stopps, um die Handelseffizienz zu verbessern.

Strategiequellcode
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
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/
// © The_Bigger_Bull
//@version=5
strategy("Best TradingView Strategy", overlay=true, margin_long=0, margin_short=0)
//Bollinger Bands
source1 = close
length1 = input.int(15, minval=1)
mult1 = input.float(2.0, minval=0.001, maxval=50)
basis1 = ta.sma(source1, length1)
dev1 = mult1 * ta.stdev(source1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
//buyEntry = ta.crossover(source1, lower1)
//sellEntry = ta.crossunder(source1, upper1)

//RSI
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

//plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")

//ADX

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




out = ta.sma(close, 14)

sma1=ta.sma(close,55)

ema200=ta.ema(close,200)



longCondition = (out>sma1) and ta.crossover(source1, lower1)

if (longCondition )
    strategy.entry("long", strategy.long)
    
shortCondition = (out<sma1) and ta.crossunder(source1, lower1)

if (shortCondition )
    strategy.entry("short", strategy.short)
    
    
stopl=strategy.position_avg_price-50
tptgt=strategy.position_avg_price+100
stopshort=strategy.position_avg_price+50
tptgtshort=strategy.position_avg_price-100

strategy.exit("longclose","long",trail_offset=5,trail_points=45,when=ta.crossover(sma1,out))
strategy.exit("shortclose","short",trail_offset=5,trail_points=45,when=ta.crossover(out,sma1))

    
//if strategy.position_avg_price<0
    
    
plot(sma1 , color=color.blue)
plot(out, color=color.green)
//plot(ema200,color=color.red)