Diese Strategie zeigt die Marktstimmung an, indem Preisänderungen mit dem Volumen verglichen und in einem MACD-Format dargestellt werden, um Handelssignale zu generieren.
Die Strategie verwendet hauptsächlich folgende Methoden, um die Marktstimmung zu ermitteln:
Die Preisänderung pro Volumen jedes Barres zeigt unmittelbar die Stärke der Kauf- und Verkaufskräfte.
Die EMA der Preisänderung wird dann durch die EMA des Volumens geteilt. Dies filtert etwas Rauschen aus und führt zu einer glatteren
Wenden Sie schnelle und langsame EMAs auf
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.
Die Strategie weist folgende Vorteile auf:
Verwendet Volumeninformationen, um die Marktstimmung zu beurteilen, überzeugender.
Das MACD-Formular ist intuitiv und einfach zu bedienen.
Anpassbare Parameter für verschiedene Produkte und Zeitrahmen.
Kann Abweichungen auf dem Histogramm erkennen, um mögliche Trendumkehrungen zu finden.
Eine klare Codestruktur, leicht zu verstehen und zu optimieren.
Die Strategie birgt außerdem folgende Risiken:
Volumen spiegelt die Stimmung wider, garantiert aber nicht die richtigen Signale.
Eine unsachgemäße Einstellung der MACD-Parameter kann zu verpassten oder falschen Signalen führen.
Abweichungen können falsche Signale sein, die keine Trendumkehrungen bestätigen können, und müssen daher sorgfältig interpretiert werden.
Das Risiko eines späten Eintritts und der Gefangenschaft kann auf einen Stop-Loss warten oder mit Trends und verwandten Produkten validieren.
Die Strategie kann in folgenden Aspekten optimiert werden:
Versuche Kombinationen von Parametern auf verschiedenen Produkten und Zeitrahmen, um optimale Parameter zu finden.
Hinzufügen von Stop-Loss, um das Verlustrisiko zu reduzieren.
Kombinieren Sie diese mit den entsprechenden Produktpreistendenzen, um Signale zu validieren.
Verwenden Sie maschinelles Lernen, um Parameter dynamisch zu optimieren.
Hinzufügen von Filtern zur Verringerung falscher Signale, z. B. höherer Zeitrahmentrends, Volatilität usw.
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))