Linearer MACD Entdecken Sie die Magie der linearen Regression in TradingView


Erstellungsdatum: 2023-12-15 10:22:50 zuletzt geändert: 2023-12-15 10:22:50
Kopie: 0 Klicks: 928
1
konzentrieren Sie sich auf
1621
Anhänger

Linearer MACD Entdecken Sie die Magie der linearen Regression in TradingView

Strategie-Name: Lineare MACD-Strategie, die von der Dynamik bestimmt wird

Beschreibung: Eine quantitative Strategie, die eine lineare Regression nutzt, um die Aktienpreise vorherzusagen und in Verbindung mit dem MACD-Indikator. Sie nutzt die lineare Regression, um historische Preise und Handelsvolumina zu analysieren und zukünftige Preisentwicklungen vorherzusagen.

Die Strategie:

  1. Berechnung eines linearen Regressionskoeffizienten für die Preise: Eine lineare Regressionslinie wird basierend auf den historischen Transaktionsvolumen verwendet, um die zukünftigen Preise vorherzusagen.
  2. Zeichnen Sie den prognostizierten Preis: Zeichnen Sie die prognostizierte Preislinie anhand des Rückkehrkoeffizienten aus Schritt 1.
  3. Erzeugung eines Kaufsignals: Wenn der prognostizierte Preis zwischen dem Eröffnungs- und dem Schlusskurs liegt und der MACD steigt, wird ein Kaufsignal erzeugt.
  4. Erzeugung eines Verkaufssignals: Wenn der MACD sinkt und der Preis niedriger als der prognostizierte ist, wird ein Verkaufssignal erzeugt.

Die Analyse der Stärken: Es ist eine Strategie, die statistische Prognosen und technische Indikatoren kombiniert. Es nutzt die lineare Regression, um Preisprognosen zu erstellen und subjektive Spekulationen zu vermeiden. Gleichzeitig kann der MACD-Indikator die Kauf- und Verkaufsprozesse des Marktes effektiv beurteilen und die Chancen genau erfassen.

Risikoanalyse: Lineare Regression ist nur auf historische Daten angewiesen und reagiert nicht auf unvorhergesehene Ereignisse wie große Gewinn- und Verlustmeldungen und kann falsche Signale erzeugen. Darüber hinaus beeinflusst die Einstellung von Parametern wie die Länge der Regressionszyklus die Strategie. Wir empfehlen die Verwendung von VWMA, um die Prognosepreise zu glätten und die Auswirkungen von Kurvenbewegungen auf die Strategie zu verringern.

Optimierung: Wir sind der Meinung, dass diese Strategie in den folgenden Bereichen optimiert werden kann:

  1. Ein Stop-Loss-Mechanismus wird eingesetzt, um die Verluste durch einzelne Fehlsignale effektiv zu kontrollieren, wenn der Preis die Stop-Loss-Linie überschreitet.
  2. Die Einführung von maschinellen Lernmodellen. Die Verwendung von effizienteren Modellen zur Vorhersage von Preistrends und zur Steigerung der Strategiegenauigkeit.
  3. In Kombination mit Emotionsindikatoren. Einführung von Emotionsindikatoren wie dem Market Fear Index, um die Kauf- und Verkaufsstimmung des Marktes zu beurteilen und die Strategie-Siegerate zu verbessern.
  4. Die Kombination von mehreren Zeitrahmen. Die Vorhersagen für verschiedene Zeitspannen können sich gegenseitig bestätigen und eine Kombinationsstrategie bilden, die die Einschränkungen eines einzelnen Zeitrahmens verringert.

Zusammenfassung: Diese Strategie bildet eine systematische quantitative Handelsstrategie durch lineare Regressionsprognose von Preisen und MACD-Indikatoren. Es hat Vorteile wie die Klarheit der Prognose-Logik, die Risikokontrolle und die Breite des Optimierungsraums. Wir glauben, dass es durch kontinuierliche Optimierung und Wiederholung immer besser werden wird. Es bietet uns eine Idee für quantitative Handelsgeschäfte mit wissenschaftlichen Prognose-Methoden, die es wert sind, eingehend untersucht und angewendet zu werden.

Strategiequellcode
/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-14 00:00:00
period: 1m
basePeriod: 1m
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/
// © stocktechbot

//@version=5
strategy("Linear On MACD", overlay=true, margin_long=100, margin_short=100)



fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
tolerance = input.string(title="Risk tolerance", defval = "LOW", options=["LOW", "HIGH"])

chng = 0
obv = ta.cum(math.sign(ta.change(close)) * volume)
if close < close[1] and (open < close)
    chng := 1
else if close > close[1]
    chng := 1
else
    chng := -1
obvalt = ta.cum(math.sign(chng) * volume)
//src = input(title="Source", defval=close)
src = obvalt
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
//hline(0, "Zero Line", color=color.new(#787B86, 50))
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Lookback')

// Calculate linear regression for stock price based on volume
[a, b] = linregs(price, vol, len)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close


// Plot predicted stock price
plot(predicted_price, color=color.rgb(218, 27, 132), linewidth=2, title="Predicted Stock Price")
plot(ta.vwma(predicted_price,len), color=color.rgb(199, 43, 64), linewidth=2, title="Predicted Stock Price")

//BUY Signal
lincrossunder = close > predicted_price
macdrise = ta.rising(macd,2)
//macdvollong = ta.crossover(macd, signal)
//macdlong = ta.crossover(macdLine, signalLine)
macdvollong = macd > signal
macdlong = macdLine > signalLine
longCondition=false
if macdlong and macdvollong and is_between and ta.rising(predicted_price,1)
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lincrossover = close < predicted_price
macdfall = ta.falling(macd,1)
macdsell = macd < signal
shortCondition = false
risklevel = predicted_price
if (tolerance == "HIGH")
    risklevel := ta.vwma(predicted_price,len)


if macdfall and macdsell and (macdLine < signalLine) and (close < risklevel)
    shortCondition := true


if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)