Strategie für den Indikator für die Marktstimmung für Momentum

Schriftsteller:ChaoZhang, Datum: 23.11.2023
Tags:

img

Übersicht

Diese Strategie zeigt die Marktstimmung an, indem Preisänderungen mit dem Volumen verglichen und in einem MACD-Format dargestellt werden, um Handelssignale zu generieren.

Strategie Logik

Die Strategie verwendet hauptsächlich folgende Methoden, um die Marktstimmung zu ermitteln:

  1. Die Preisänderung pro Volumen jedes Barres zeigt unmittelbar die Stärke der Kauf- und Verkaufskräfte.

  2. Die EMA der Preisänderung wird dann durch die EMA des Volumens geteilt. Dies filtert etwas Rauschen aus und führt zu einer glatteren Marktstimmung-Kurve.

  3. Wenden Sie schnelle und langsame EMAs auf Marktgefühl an, um MACD-ähnliche Linien zu erhalten. Die MACD-Linie zeigt die Momentumrichtung und -stärke, die Signallinie ist ihr gleitender Durchschnitt und das Histogramm zeigt ihren Unterschied, der die Momentumänderung darstellt.

Das Histogramm, das über 0 geht, signalisiert eine zunehmende bullische Stimmung, während das Histogramm, das unter 0 geht, eine zunehmende bärische Stimmung signalisiert.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Verwendet Volumeninformationen, um die Marktstimmung zu beurteilen, überzeugender.

  2. Das MACD-Formular ist intuitiv und einfach zu bedienen.

  3. Anpassbare Parameter für verschiedene Produkte und Zeitrahmen.

  4. Kann Abweichungen auf dem Histogramm erkennen, um mögliche Trendumkehrungen zu finden.

  5. Eine klare Codestruktur, leicht zu verstehen und zu optimieren.

Risikoanalyse

Die Strategie birgt außerdem folgende Risiken:

  1. Volumen spiegelt die Stimmung wider, garantiert aber nicht die richtigen Signale.

  2. Eine unsachgemäße Einstellung der MACD-Parameter kann zu verpassten oder falschen Signalen führen.

  3. Abweichungen können falsche Signale sein, die keine Trendumkehrungen bestätigen können, und müssen daher sorgfältig interpretiert werden.

  4. Das Risiko eines späten Eintritts und der Gefangenschaft kann auf einen Stop-Loss warten oder mit Trends und verwandten Produkten validieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Versuche Kombinationen von Parametern auf verschiedenen Produkten und Zeitrahmen, um optimale Parameter zu finden.

  2. Hinzufügen von Stop-Loss, um das Verlustrisiko zu reduzieren.

  3. Kombinieren Sie diese mit den entsprechenden Produktpreistendenzen, um Signale zu validieren.

  4. Verwenden Sie maschinelles Lernen, um Parameter dynamisch zu optimieren.

  5. Hinzufügen von Filtern zur Verringerung falscher Signale, z. B. höherer Zeitrahmentrends, Volatilität usw.

Schlussfolgerung

Die Strategie beurteilt die Marktstimmung, indem sie Preisänderungen und Volumen vergleicht und Signale in einem MACD-Format erzeugt. Die Berücksichtigung von Volumen zusätzlich zum Preis kann die Stärke von Käufern und Verkäufern genauer bestimmen. Die Parameter können für verschiedene Produkte und Zeitrahmen optimiert werden, mit weiteren Optimierungspotenzialen. Insgesamt hat die Strategie eine neuartige Idee, ist einfach zu bedienen, erfasst effektiv die Marktdynamik und ist eine weitere Entwicklung wert.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 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/
// © dannylimardi

//@version=4
strategy("Sentiment Oscillator", "Sentiment", overlay=false, initial_capital=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.08)


//Inputs
msLen = input(49, type=input.integer, title="Market Sentiment Lookback Length")
emaLen1 = input(40, type=input.integer, title="Fast EMA Length")
emaLen2 = input(204, type=input.integer, title="Slow EMA Length")
signalLen = input(20, type=input.integer, title="Signal Length")
showMs = input(false, type=input.bool, title="Show Market Sentiment?")
showHist = input(true, type=input.bool, title="Show Momentum?")
showMacd = input(false, type=input.bool, title="Show MACD Line?")
showSignal = input(false, type=input.bool, title="Show Signal Line?")
showCpv = input(false, type=input.bool, title="(Show Change/Volume for Each Bar?)")
showEma1 = input(false, type=input.bool, title="(Show Fast EMA?)")
showEma2 = input(false, type=input.bool, title="(Show Slow EMA?)")

//Calculations
priceChange = close - close[1]
changePerVolume = (priceChange/volume) * 10000000  // (The 1000000 doesn't have any significance, it's just to avoid color-change errors when the values are too emall.)
priceChangeEma = ema(priceChange, msLen)
volumeEma = ema(volume, msLen)
marketSentiment = priceChangeEma/volumeEma * 100000000
msEma1 = ema(marketSentiment, emaLen1)
msEma2 = ema(marketSentiment, emaLen2)
macd = msEma1-msEma2
signal = ema(macd, signalLen)
hist = macd-signal

//Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

//Drawings
plot(showHist ? hist : na, title="Histogram", style=plot.style_area, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)), transp=0 )
plot(showMacd ? macd : na, title="MACD", color=col_macd, transp=0)
plot(showSignal ? signal : na, title="Signal", color=col_signal, transp=0)
plot(showCpv ? changePerVolume : na, color=changePerVolume > changePerVolume[1] ? color.teal : color.red)
plot(0, color=color.white, transp=80)
plot(showEma1 ? msEma1 : na, color=color.aqua)
plot(showEma2 ? msEma2 : na, color=color.yellow)
plot(showMs ? marketSentiment : na, color=color.lime)

//Strategy
strategy.entry("Buy", strategy.long, when=crossover(hist, 0))
strategy.close("Buy", when=crossunder(hist, 0))

Mehr