Die Ressourcen sind geladen. Beförderung...

Strategie zur Vorhersage des zukünftigen Weges von MacD

Schriftsteller:ChaoZhang, Datum: 2023-12-13 17:21:44
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, Preistrends durch Analyse des zukünftigen Trends des MacD-Indikators vorherzusagen.

Strategieprinzip

  1. Berechnen Sie die Differenz (historischer Wert) des MacD-Indikators, um den Anstieg und Abstieg der MacD-Linie und der Signallinie zu bestimmen.
  2. Verwenden Sie den zukünftigen Wert des MacD-Indikators innerhalb eines Zeitrahmens von 4 Stunden, indem Sie Call-Optionen festlegen, um den zukünftigen Trend des MacD-Indikators zu beurteilen und die Preisentwicklung vorherzusagen.
  3. Gehen Sie lang, wenn die Differenz des MacD-Indikators größer als 0 ist (ein Bullenmarkt) und voraussichtlich weiter steigt; gehen Sie kurz, wenn die Differenz des MacD-Indikators kleiner als 0 ist (ein Bärenmarkt) und voraussichtlich weiter sinkt.
  4. Die Strategie kombiniert sowohl Trendfolgende als auch Trendumkehrende Handelsstile, die Trends erfassen und gleichzeitig Trendumkehrpunkte erfassen.

Analyse der Vorteile

  1. Der Vorteil der Verwendung des MacD-Indikators zur Beurteilung der Marktentwicklung ist, dass es effektiv Konsolidierungen ausfiltern und langfristige Trends erfassen kann.
  2. Mit Hilfe von Prognosen über zukünftige Trends des MacD-Indikators können Preiswendepunkte frühzeitig erkannt werden, um die zukunftsgerichtete Fähigkeit der Strategie zu verbessern.
  3. Durch die Integration von Trend-Folge- und Trendumkehrhandelsstilen kann eine zeitnahe Positionumkehr während der Trendverfolgung größere Renditen erzielen.
  4. Anpassungsfähige Strategieparameter ermöglichen es den Nutzern, auf der Grundlage verschiedener Zeitrahmen und Marktumgebungen zu optimieren, um die Stabilität der Strategie zu verbessern.

Risikoanalyse

  1. Wenn man sich auf Prognosen des zukünftigen Trends des MacD-Indikators stützt, kann dies zu fehlgeschlagenen Geschäften führen, wenn die Prognosen ungenau sind.
  2. Eine falsche Einstellung des Stop-Loss-Bereichs wirkt sich ebenfalls auf die Strategieleistung aus.
  3. Eine Verzögerung des MacD-Indikators kann Gelegenheiten für schnelle Preisumkehrungen verpassen.
  4. Die Auswirkungen der Transaktionskosten müssen überwacht werden.

Optimierungsrichtlinien

  1. Einbeziehung anderer Indikatoren für die Vorhersage, um die Abhängigkeit von einem einzigen MacD-Indikator zu reduzieren und die Vorhersagegenauigkeit zu verbessern, wie z. B. die Prüfung von Veränderungen des Handelsvolumens.
  2. Fügen Sie maschinelle Lernalgorithmen hinzu, trainieren Sie Modelle, um zukünftige Trends des MacD-Indikators vorherzusagen.
  3. Optimieren Sie die Parameter-Einstellungen, um die besten Parameterkombinationen zu finden.
  4. Verschiedene Marktumgebungen passen zu unterschiedlichen Parameterkonfigurationen, ein adaptives System kann hinzugefügt werden, um Parameter automatisch zu optimieren.

Schlussfolgerung

Während die MacD-Indikatoren den Vorteil haben, Trends zu bestimmen, beinhaltet diese Strategie auch Vorhersagen über die zukünftigen Trends des Indikators. Aufbauend auf der Erfassung von Trends greift sie auch kritische Wendepunkte ein. Im Vergleich zur einfachen Verfolgung von Trends hat diese Strategie ein größeres Weitsicht und Gewinnpotenzial. Natürlich gibt es auch bestimmte Risiken, die weiter optimiert und verbessert werden müssen. Insgesamt verdient die Strategie eine gründliche Forschung und Anwendung.


/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © x11joe
strategy(title="MacD (Future Known or Unknown) Strategy", overlay=false, precision=2,commission_value=0.26, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//OPTIONAL:: Allow only entries in the long or short position
allowOnlyLong = input(title="Allow position ONLY in LONG",type=input.bool, defval=false)
allowOnlyShort = input(title="Allow position ONLY in SHORT",type=input.bool, defval=false)


strategy.risk.allow_entry_in(allowOnlyLong ? strategy.direction.long : allowOnlyShort ? strategy.direction.short : strategy.direction.all) // There will be no short entries, only exits from long.

// Create MacD inputs
fastLen = input(title="MacD Fast Length", type=input.integer, defval=12)
slowLen = input(title="MacD Slow Length", type=input.integer, defval=26)
sigLen  = input(title="MacD Signal Length", type=input.integer, defval=9)

// Get MACD values
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)
hist = macdLine - signalLine

useFuture = input(title="Use The Future?",type=input.bool,defval=true)

macDState(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_on)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

macDStateNonFuture(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_off)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"
// === INPUT BACKTEST RANGE END ===

//Get FUTURE or NON FUTURE data
macDState240=useFuture ? macDState("240") : macDStateNonFuture("240") //1 is green up, 2 if green down, 3 is red, 4 is red up

//Fill in the GAPS
if(macDState240==0)
    macDState240:=macDState240[1]

//Plot Positions
plot(close,color= macDState240==1 ? color.green : macDState240==2 ? color.purple : macDState240==3 ? color.red : color.yellow,linewidth=4,style=plot.style_histogram,transp=50)

if(useFuture)
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)
else
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))//If we are in a red macD trending downwards MacD or in a MacD getting out of Red going upward.
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)//If the state is going upwards from red but we are predicting back to red...
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)//If we are predicting the uptrend to end soon.


Mehr