Konfigurierbare Multi-Moving-Average-Voting-Handelsstrategie


Erstellungsdatum: 2023-09-23 15:52:06 zuletzt geändert: 2023-09-23 15:52:06
Kopie: 2 Klicks: 649
1
konzentrieren Sie sich auf
1621
Anhänger

Überblick

Die Strategie setzt durch Konfiguration mehrere Kombinationen von schnellen und langsamen Mittellinien ein, indem sie mehr macht, wenn alle Schnellen die langsame Linie überschreiten; wenn mindestens eine Schnelle die langsame Linie unterbricht. Die Strategie nutzt die Vorteile mehrerer Mittellinien aus, um ein stärkeres Positionsentscheidungssystem zu bilden.

Strategieprinzip

Die wichtigsten Bestandteile und Regeln der Strategie sind:

  1. Mehrere Gruppen von schnellen und langsamen Durchschnittslinien: Verwenden Sie mehrere Durchschnittsindikatoren wie SMA, WMA und VWMA.

  2. Mehr Signal: Mehr Signal bei der Überquerung der langsamen Linie auf allen Schnelllinien.

  3. Gleichgewichtssignal: Gleichgewichtssignal bei Überschreitung der langsamen Linie unter einer schnellen Linie.

  4. Stop-Loss: Setzen Sie den Stop-Loss-Punkt auf den ATR-Wert.

  5. Konfiguration: Mehrfache Mittellinienparameter können flexibel konfiguriert werden.

Durch die Eintrittswahl mit einer Kombination aus mehreren Mittellinien kann die Reliabilität des Signals verbessert werden. Mehrere Mittellinienparameter können individuell konfiguriert werden und bieten Flexibilität.

Analyse der Stärken

Im Vergleich zu einer einzigen Mittellinienstrategie hat diese folgende Vorteile:

  1. Die Mehrwertspiegel-Kombination bietet eine umfassendere Trendbeurteilung.

  2. Die Abstimmungsmethode verhindert, dass die Noise-Transaction falsch verstanden wird.

  3. Die Parameter sind frei konfigurierbar und lassen sich optimieren.

  4. Unterstützt mehrere Mittelwert-Indikatoren, flexibel zu bedienen.

  5. Ein Stop-Loss-Punkt ist ein Einzelschaden-Kontrollpunkt.

  6. Längere Anwendungszeiträume haben eine bessere Wirkung und reduzieren die Kurvenbewegungen.

  7. Die Berechnung ist einfach, intuitiv und einfach zu implementieren und zu bedienen.

  8. Insgesamt ist die Stabilität und die Dauerhaftigkeit besser als bei einer Durchschnittslinie.

Risikoanalyse

Aber diese Strategie birgt auch Risiken:

  1. Die Mehrwertsteuerung erhöht die Komplexität der Strategie.

  2. Es besteht die Gefahr einer Überoptimierung der Parameter.

  3. Die Mittellinie ist im Wesentlichen eine rückläufige Erkennung von Trendänderungen.

  4. Es ist nicht der Umsatz berücksichtigt, es kann ein Defizit auftreten.

  5. Die Stop-Loss-Einstellungen sind eher arbiträr und können zu unnötigen Ausgleichspositionen führen.

  6. Die Auswirkungen variieren stark je nach Marktumfeld.

  7. Die Gewinn-Rücknahme-Rate muss berücksichtigt werden, um zu verhindern, dass die Kurve zu steil wird.

  8. Parameter zur Überprüfung der Stabilität in mehreren Sorten.

Optimierungsrichtung

Auf der Grundlage der oben genannten Analyse kann diese Strategie verstärkt werden:

  1. Durchschnittliche Parameter zum Testen der Robustheit in verschiedenen Sorten.

  2. Erhöhung des Transaktionsvolumens oder der Volatilitätsrate.

  3. Optimierung der Stop-Loss-Parameter.

  4. Setzen Sie die maximale Rückzugstoleranz.

  5. Erstellung eines dynamischen Positionsmanagementsystems.

  6. Bewertung der Wirkung der Einführung von maschinellem Lernen.

  7. Die Konzentration der Gewinn- und Verlustkurve bei maximaler Auszahlung.

  8. Die Strategie ist immer wiederholt und verhindert Überoptimierungen.

Zusammenfassen

Diese Strategie setzt durch Konfiguration ein mehr- als-gleichmäßiges Portfolio und bildet einen stabileren Positionsentscheidungsmechanismus. Jede Strategie muss jedoch vor Überfitting bewahren und sich dynamisch an die Marktumgebung anpassen. Nur eine kontinuierlich optimierte, getestete und quantifizierte Strategie kann sich langfristig an den Markt anpassen.

Strategiequellcode
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 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/
// © levieux

//@version=5
strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config")
source= input.source(high)
maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"])
atrPeriod= input(14, title="ATR Period")
profitAtr = input(10, title="Profit ATR x")
lossAtr = input(5, title="Loss ATR x")


ma(src,length,type) => 
    float ma = switch type
	    "SMA" => ta.sma(src, length)
	    "WMA" => ta.wma(src, length)
	    "VWMA" => ta.vwma(src, length)

crossoverGroups= str.split(crossoverConfig, ",")
crossoverCount= array.size(crossoverGroups)
crossovers= array.new_string(crossoverCount)
positions= array.new_int(crossoverCount, 0)
longVotes= 0
for i= 0 to crossoverCount-1
    crossover= str.tostring(array.get(crossoverGroups, i))
    crossoverBoundaries= str.split(crossover, "x")
    int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0)))
    int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1)))
    wmaFast= ma(source,fastLength,maType)
    wmaSlow= ma(source,slowLength,maType)
    if wmaFast>wmaSlow
        longVotes:= longVotes + 1
        array.set(positions, i, 1)

longCondition= longVotes==crossoverCount and strategy.position_size==0


//profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick
//lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick
profitPrice= close+profitAtr*ta.atr(atrPeriod)
lossPrice= close-lossAtr*ta.atr(atrPeriod)

if strategy.position_size>0
    profitPrice:= profitPrice[1]
    lossPrice:= lossPrice[1]

plot(profitPrice, color=color.green)
plot(lossPrice, color=color.red)

if longCondition and profitPrice>0
    strategy.entry("Long", strategy.long)

if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice)
    strategy.close("Long")
    
longVotes:= 0