Strategie für einen brechenden gleitenden Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2023-11-28 13:50:49
Tags:

img

Übersicht

Dies ist eine Breakout-Handelsstrategie, die auf gleitenden Durchschnitten basiert. Sie berechnet den durchschnittlichen Preis über einen bestimmten Zeitraum als gleitenden Durchschnitt. Wenn der Preis den gleitenden Durchschnitt durchbricht, werden Handelssignale generiert.

Strategie Logik

Die Strategie basiert hauptsächlich auf dem gleitenden Durchschnittsindikator. Sie verwendet die SMA-Funktion, um den durchschnittlichen Schlusskurs über einen Zeitraum zu berechnen, um den gleitenden Durchschnitt zu erhalten. Wenn der letzte Schlusskurs den gleitenden Durchschnitt nach oben durchbricht, wird ein Kaufsignal generiert. Wenn der letzte Schlusskurs den gleitenden Durchschnitt nach unten durchbricht, wird ein Verkaufssignal generiert.

Speziell definiert es die Quelle (der jüngste Schlusskurs) und die Länge des gleitenden Durchschnitts in der Strategie, um die gleitende Durchschnittsdatenfolge zu erhalten. Dann setzt es zwei Bedingungen: Erstellen Sie eine lange Order, wenn der Preis über den gleitenden Durchschnitt geht; Erstellen Sie eine kurze Order, wenn der Preis unter den gleitenden Durchschnitt geht. Nach der Erstellung der Aufträge setzt es auch Profit-Take-und Stop-Loss ein: Es schließt einen Teil der Position, wenn der Auftrag eine festgelegte Gewinnquote erreicht, und schließt die gesamte Position, wenn der Auftrag den voreingestellten Take-Profit- oder Stop-Loss-Preis erreicht.

Analyse der Vorteile

Dies ist eine einfache und praktische Strategie, die folgende Vorteile hat:

  1. Die Logik ist klar und leicht verständlich und die Parameter werden angepasst.
  2. Der gleitende Durchschnitt ist ein häufig verwendeter und zuverlässiger technischer Indikator, der Marktlärm filtern und Trends erkennen kann.
  3. Die gleichzeitige Festlegung von Profit Taking und Stop Loss kann einige Gewinne einbringen und Risiken kontrollieren.
  4. Es kann nur mit einfachen Parametern laufen, geeignet für Quant-Eintrittsniveau.

Risikoanalyse

Obwohl die Strategie viele Vorteile bietet, bestehen immer noch einige Risiken:

  1. Die gleitenden Durchschnittswerte neigen dazu, zu verzögern und können kurzfristige Umkehrungen verpassen.
  2. Sie berücksichtigt nicht das allgemeine Marktumfeld und ist anfällig dafür, in die Falle zu geraten.
  3. Keine Parameteroptimierung darf die Strategieleistung beeinträchtigen.
  4. Es kann einige falsche Signale aufweisen, da keine anderen Indikatoren für die Filtration verwendet werden.

Um diese Risiken zu kontrollieren, können wir optimieren, indem wir andere Indikatoren für die Filtration kombinieren, kurzfristige Markttrendurteile einführen oder maschinelle Lernmethoden verwenden, um die optimalen Parameterkombinationen zu finden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Hinzufügen anderer technischer Indikatoren für das Urteil, um ein Handelssystem aufzubauen und die Gewinnrate zu verbessern.

  2. Fügen Sie Stop-Loss-Mechanismen hinzu. Verwenden Sie Trailing-Stop-Loss oder zeitbasierten Stop-Loss, um Gewinne zu erzielen und größere Verluste zu vermeiden.

  3. Verhalten Parameteroptimierung. Ändern Sie den gleitenden Durchschnittszeitraum Parameter, um die beste Kombination zu finden. Verschiedene Arten von gleitenden Durchschnitten können auch getestet werden.

  4. Verstärken Sie das Urteilsvermögen des maschinellen Lernens. Verwenden Sie Algorithmen wie Random Forest und LSTM in Kombination mit mehreren Faktoren, um die Trendrichtung zu bestimmen.

  5. Optimieren Sie die Ein- und Ausstiegslogik. Setzen Sie Trendfilterbedingungen, um Trades gegen den Trend in seinem Ende zu vermeiden.

Zusammenfassung

Insgesamt eignet sich diese gleitende Durchschnitts-Breakout-Strategie sehr gut als Anfänger-Quant-Handelsstrategie. Sie hat eine einfache Logik, leicht zu verstehen und zu bedienen, mit einigen praktischen Effekten. Gleichzeitig lässt sie viel Raum für weitere Tests und Optimierungen. Wir können auf dieser Grundlage mehr technische Indikatoren und Modelle einführen, um bessere Quant-Strategien zu entwickeln.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


Mehr