Drei-Faktoren-Modell zur Hilfsbeurteilung von Preisschocks


Erstellungsdatum: 2024-02-26 15:32:27 zuletzt geändert: 2024-02-26 15:32:27
Kopie: 0 Klicks: 591
1
konzentrieren Sie sich auf
1617
Anhänger

Drei-Faktoren-Modell zur Hilfsbeurteilung von Preisschocks

Überblick

Das 3-Faktor-Modell zur Beurteilung von Preisschwankungen ist eine Short-Line-Handelsstrategie, die mehrere Faktoren berücksichtigt. Die Strategie berücksichtigt mehrere Faktoren wie die Transaktionsrate, den RSI, den MACD und die Signal-Line-Indikatoren, um die Preisschwankungen zu beurteilen, um Short-Line-Handelsmöglichkeiten zu entdecken.

Strategieprinzip

Die Kernlogik der Strategie lautet:

  1. Berechnung von technischen Indikatoren wie schnellen Moving Averages, langsamen Moving Averages, MACD-Kurven und Signallinien;

  2. Multi-Faktor-Kriterien für die Ermittlung von Handelsvolumen, RSI, MACD und Signal-Line-Kriterien;

  3. Eine umfassende Mehrfaktor-Bewertung, die bestätigt, dass es sich um eine Phase von Preisschwankungen handelt, in der sich Kauf- und Verkaufsmöglichkeiten ergeben;

  4. Eintritt in eine LONG- oder SHORT-Position mit Stop-Loss-Einstellung;

  5. Eine Off-Hold-Position, wenn der Preis die Stop-Loss-Bedingung erreicht.

Die Strategie nutzt flexibel mehrere Faktoren, wie den Quotientenverhältnis, den RSI, den MACD und die Signal-Line-Indikatoren, um das Preis-Schwankungs-Verhalten zu beurteilen, um kurzfristige Handelsmöglichkeiten zu erfassen. Die Kombination von mehreren Faktoren vermeidet Fehlsignale, die durch einzelne Faktoren verursacht werden, und erhöht die Signalgenauigkeit.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Mehrfache Urteilsvermögen zur Verbesserung der Signalgenauigkeit und zur Vermeidung von Fehlsignalen;
  2. Der Markt ist ein sehr dynamischer Markt, in dem es sich um einen Markt mit hohen Preisen handelt.
  3. Automatische Einstellungen zum Stoppen von Verlusten und zur Risikokontrolle;
  4. Einfach zu verstehen, leicht umzusetzen.

Risikoanalyse

Die Strategie birgt auch folgende Risiken:

  1. Die Algorithmen sind zu sehr auf historische Daten angewiesen und sind sehr sensibel für Marktveränderungen.
  2. Die Mehrfaktor-Kombinationsmethode könnte noch weiter optimiert werden, und es besteht die Möglichkeit von Fehleinschätzungen.
  3. Die Einstellung eines Stop-Loss-Punktes hat einen angemessenen und direkten Einfluss auf die Strategie-Stabilität.

Für die oben genannten Risiken können Optimierungen in folgenden Bereichen vorgenommen werden:

  1. Erhöhung der Datensammlungsdauer, um die Auswirkungen von Marktdatenänderungen zu reduzieren;
  2. Die Anpassung der Multifaktorgewichte zur Optimierung der Anpassung;
  3. Versuchen Sie, verschiedene Stop-Points zu testen, um die optimale Stop-Position zu finden.

Optimierungsrichtung

Die Strategie kann vor allem in folgenden Bereichen optimiert werden:

  1. Optimierung der Multifaktorgewichtung, um dynamische Anpassungen zu realisieren. Die Multifaktor-Beurteilung kann entsprechend der jeweiligen Situation angepasst werden, um die Anpassungsfähigkeit zu verbessern;

  2. In Kombination mit maschinellen Lernalgorithmen, um die Selbstadaptionsoptimierung von Multifaktoren zu erreichen. Die Verwendung von neuronalen Netzwerken, genetischen Algorithmen und anderen Algorithmen zum Training von Multifaktormodellen, um die autonome Optimierung von Parametern zu erreichen;

  3. Optimierung der Stop-Loss-Strategie. Verschiedene Stop-Tracking- und Stop-Moving-Kombinationen können getestet werden, um die optimale Stop-Solution zu finden.

  4. In Kombination mit hochentwickelten technischen Indikatoren. Weitere Indikatoren wie Schwankungen der Schwankungsrate, Schwingungen der Dynamik und eine reichhaltige Kombination von Faktoren können getestet werden.

Zusammenfassen

Die Strategie nutzt mehrere Faktoren, wie Umsatz, RSI, MACD und Signallinien, um die besten Kauf- und Verkaufsmomente zu bestimmen. Die Mehrfaktoren-Beurteilung verbessert die Signalgenauigkeit und trägt zur Erzielung stabiler Gewinne bei. In der Folge kann die Optimierung der Mehrfaktoren-Anpassung durch Machine-Learning-Algorithmen erfolgen, um eine bessere Strategie zu erzielen.

Strategiequellcode
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.7)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=6)
takeProfit = input( title="Take Profit", defval=2)
stopLoss = input( title="Stop Loss", defval=0.7)

fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)

buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
plot(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, title="Total Volume")
plot(macdSlope, color=color.green, title="MACD Slope")
plot(signalSlope, color=color.red, title="Signal Slope")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
plot(rsiSlope, color=color.black, title="RSI Slope")

getRSISlopeChange(lookBack) =>
    j = 0
    for i = 0 to lookBack
        if ( rsi[i] - rsi[ i + 1 ] ) > -5
            j += 1
    j

getBuyerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if buyVolume[i] > sellVolume[i]
            j += 1
    j

getSellerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if sellVolume[i] > buyVolume[i]
            j += 1
    j

getVolBias(lookBack) =>
    float b = 0.0
    float s = 0.0
    for i = 1 to lookBack
        b += buyVolume[i]
        s += sellVolume[i]
    b > s

getSignalBuyerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] > signalBiasValue
            j += 1
    j

getSignalSellerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < ( 0.0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue )
            j += 1
    j

getPriceRising(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] > close[i + 1]
            j += 1
    j


getPriceFalling(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] < close[i + 1] 
            j += 1
    j

getRangeNarrowing(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] < intrabarRange[i + 1] 
            j+= 1
    j

getRangeBroadening(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] > intrabarRange[i + 1] 
            j+= 1
    j

bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0

bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0
bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0

bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0
bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0.0
bool hasSignalSellerBias = hasSignalBias and signal < 0.0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue )

bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)

bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )


// 202.30 Profit 55.29% 5m
if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open)
    strategy.entry("5C1", strategy.long, qty=1.0)
strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 171.70 Profit 50.22% 5m
if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0)
    strategy.entry("5C2", strategy.long, qty=1.0)
strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades
if ( macd > macdBiasValue and macdSlope > 0)
    strategy.entry("5P1", strategy.short, qty=1.0)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)