
Die Strategie zeigt die Stimmung der Marktteilnehmer an, indem sie Preisbewegungen und Handelsvolumen vergleicht und in Form von MACDs dargestellt und Handelssignale ausgesendet wird.
Die Strategie zeigt die Stimmung der Märkte anhand folgender Berechnungen:
Der Preiswechsel pro K-Linie dividiert sich durch die Transaktionsmenge. Dies zeigt direkt die Stärke der Kauf- und Verkaufskraft.
Der Index wird jeweils auf die Preis- und die Handelsmenge angewendet und die EMA der Preisänderung wird dann durch die EMA der Handelsmenge dividiert. So kann ein Teil des Rausches herausgefiltert werden, um eine relativ glatte Kurve für die Stimmungswellen zu erhalten.
Die MACD-Linie zeigt die Richtung und die Intensität der Dynamik an, die Signallinie ist der gleitende Durchschnitt, und die Säulenkarte zeigt die Differenz zwischen den beiden Kurven, die die Dynamik verändern.
Wenn der Pfeiler 0 auf der Oberseite trägt, ist dies ein Signal für die Stärkung der Stimmung des Mehrkopfmarktes, wenn der Pfeiler 0 unterhalb trägt, ist dies ein Signal für die Stärkung der Stimmung des Leerkopfmarktes. Es kann auch beobachtet werden, dass der Pfeiler abweicht.
Diese Strategie hat folgende Vorteile:
Es ist viel überzeugender, die Stimmung der Marktteilnehmer anhand von Umsatzdaten zu beurteilen.
Die MACD-Form ist intuitiv und benutzerfreundlich.
Die Parameter sind für verschiedene Sorten und Perioden einstellbar.
Die Abweichungen in der Kolonnagraphik können als potentielle Trendwendepunkte erkannt werden.
Der Code ist klar strukturiert, leicht zu verstehen und zu optimieren.
Die Gefahren dieser Strategie sind:
Der Umsatz kann die Stimmung des Marktes widerspiegeln, aber nicht garantieren, dass die Handelssignale korrekt sind.
Die falsche Einstellung der MACD-Parameter kann zu Fehlsignalen oder Falschsignalen führen. Die Parameter müssen für Sorten und Perioden optimiert werden.
Abweichungen von den Signalen können Falschsignale sein, und es ist unmöglich, eine Trendwende zu bestimmen.
Es besteht die Gefahr, dass ein späterer Einstieg eingeschlossen wird. Es ist angemessen, auf die Verfolgung von Stopps zu warten, oder sich mit Trends und relevanten Sorten vernünftigerweise zu bestätigen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Testing Kombinationen von Parametern für verschiedene Sorten und Perioden, um die optimale Parameter zu finden.
Ein Stop-Loss-Strategie, um das Risiko von Verlusten zu verringern.
Die Kombination mit den Preisentwicklungen der relevanten Sorten und die Bestätigung von Handelssignalen.
Parameter für die dynamische Optimierung mit Hilfe von maschinellen Lernverfahren.
Erhöhen Sie die Filterbedingungen, um falsche Signale zu reduzieren, z. B. große Trends, Schwankungen usw.
Diese Strategie nutzt die Preisänderungen und das Verhältnis zwischen dem Transaktionsvolumen, um die Marktstimmung zu beurteilen und Handelssignale in Form von MACD zu erzeugen. Im Vergleich zu nur der Preisinformation kann die Transaktionsmenge die Konversation der positiven Kräfte und die Marktherztheit genauer beurteilen. Die Parameter können nach verschiedenen Sorten und Perioden optimiert werden, und es gibt Raum für weitere Optimierungen.
/*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))