Strategie für den Ausbruch aus gleitenden Durchschnittsbändern


Erstellungsdatum: 2023-09-17 18:33:57 zuletzt geändert: 2023-09-17 18:33:57
Kopie: 0 Klicks: 639
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie basiert auf einem beweglichen Durchschnitt, um einen Handelskanal zu bilden, der ein Handelssignal erzeugt, wenn der Preis den Kanal durchbricht. Sie ist eine typische Trendverfolgungsstrategie, die durch Parameteroptimierung einfache und effektive langfristige Positionen ermöglicht.

Strategieprinzip

  1. Für die Berechnung von Moving Averages gibt es verschiedene Arten wie SMA/EMA/WMA/RMA.

  2. Ein bestimmter Prozentsatz der Erhöhung des gleitenden Durchschnitts auf der Bahn. Ein bestimmter Prozentsatz der Abnahme unter der Bahn.

  3. Bei einem Kursbruch übertragen; bei einem Kursbruch abbrechen. Sie können nur übertragen, nur abbrechen oder in beide Richtungen handeln.

  4. Setzen Sie einen Stop-Loss-Punkt. Der Stop-Loss-Punkt ist ein prozentualer Anstieg des Einstiegspreises. Der Stop-Loss-Punkt ist ein prozentualer Rückgang.

Analyse der Stärken

  1. Der Moving Average ist einfach zu berechnen und erlaubt es, Trends zu erkennen.

  2. Anpassbare Parameter ermöglichen unterschiedliche Haltedauer und Risikopräferenzen.

  3. Es gibt mehrere Möglichkeiten, sich an verschiedene Marktbedingungen anzupassen.

  4. Die Bremsstopp- und Verluststeuerung sind in einem festen Verhältnis und sehr kontrollierbar.

Risikoanalyse

  1. Es ist leicht zu überzeugen, wenn sich der Trend ändert.

  2. Die falsche Einstellung der Parameter kann zu zu häufigen oder verspäteten Transaktionen führen.

  3. Die Fixed-Ratio Stop Loss ist nicht flexibel genug.

  4. Zwei-Wege-Transaktionen erhöhen die Transaktionsfrequenz und die Gebühren.

Optimierungsrichtung

  1. Optimierung der Moving Average-Parameter und Ausgleich von Verzögerung und Geräusch.

  2. Optimierung der Bandbreite der Kanäle, um mit den Marktschwankungen übereinzustimmen.

  3. Verschiedene Stop-Loss-Einstellungen werden getestet.

  4. Das ist eine sehr interessante Methode, um Trends und Schwingungsindikatoren zu ermitteln.

  5. Die Zeit, in der wir uns anschließen, wird gefiltert, um die Auswirkungen von Großereignissen zu vermeiden.

Zusammenfassen

Die Strategie ermöglicht einfaches Trend-Folgen über den Moving-Average-Kanal, erfordert jedoch eine verstärkte Parameteroptimierung und Risikokontrolle. Auf dieser Grundlage können weitere technische Kennzahlen eingeführt werden, um die Strategielogik weiter zu verbessern.

Strategiequellcode
/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
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/
// © TaylorTneh
//@version=4

// strategy("Moving Average Band Taylor V1",shorttitle="MA Band+",overlay=true,default_qty_type=strategy.cash,default_qty_value=1000,initial_capital=1000,currency=currency.USD,commission_value=.1)

price = input(close, title="Source")
mabtype = input(title="Moving Average Type", defval="RMA", options=["SMA", "EMA", "RMA", "WMA"])
malen = input(10, "MA Period : 10")
magap = input(0.6, "Band Gap : 0.6", minval = -10, maxval = 10, step = 0.1)
mabup = if mabtype == "SMA"
    sma(high, malen)
else
    if mabtype == "EMA"
        ema(high, malen)
    else
        if mabtype == "WMA"
            wma(high, malen)
        else
            if mabtype == "RMA"
                rma(high, malen)
                    
mabdn = if mabtype == "SMA"
    sma(low, malen)
else
    if mabtype == "EMA"
        ema(low, malen)
    else
        if mabtype == "WMA"
            wma(low, malen)
        else
            if mabtype == "RMA"
                rma(low, malen)
                    
upex = mabup * (1 + magap/100)
dnex = mabdn * (1 - magap/100)
plot(upex, "Upper MA Band", color.orange)
plot(dnex, "Lower MA Band", color.orange)


//-------------------------------------------- (Strategy)
strategy.entry("Long", strategy.long, stop = upex)
strategy.entry("Short", strategy.short, stop = dnex)
//Long Only//strategy.entry("Long", strategy.long, stop = upex)
//Long Only//strategy.exit("Short", stop = dnex)
//Short Only//strategy.entry("Short", strategy.short, stop = dnex)
//Short Only//strategy.exit("Long", stop = upex)


//-------------------------------------------- (Take Profit & Stop Lose)
stopPer = input(500.0, title='# Stop Loss %', type=input.float) / 100
takePer = input(500.0, title='# Take Profit %', type=input.float) / 100
//Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0 
    strategy.exit(id="L-TP/SL", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="S-TP/SL", stop=shortStop, limit=shortTake)


//-------------------------------------------- (Sample Time Filter Strategy)
//fromyear = input(2018, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
//toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
//frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
//tomonth = input(10, defval = 10, minval = 01, maxval = 12, title = "To Month")
//fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
//today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//strategy.entry("Long", strategy.long, stop = upex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
//strategy.entry("Short", strategy.short, stop = dnex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
//--------------------------------------------