
Die Strategie verwendet 3 Tage schnelle Moving Averages, 10 Tage schleppende Moving Averages und 16 Tage Signal Smooth Moving Averages, um MACD-Indikatoren zu erstellen, die mit RSI-Indikatoren und Transaktionsvolumen-Charakteristiken unterstützt werden, um multidimensionale K-Line-Charakteristiken zu setzen, die zu überschwänglich sind und einen zwischenstaatlichen Schwankungenstrend bilden, um die Einträge zu umkehren.
Der Code verwendet hauptsächlich 3 Tage schnelle Moving Averages minus 10 Tage langsame Moving Averages, um einen MACD-Indikator zu bilden, 16 Tage Signallinien, um eine Standard-MACD-Strategie zu bilden. Gleichzeitig wird eine synthetische Umsatzanalyse mit Kauf- und Verkaufsmengen kombiniert, um Kraftmerkmale zu bestimmen.
Insbesondere durch die Beobachtung der Beziehung zwischen MACD-Linie und Signal-Linie, die Veränderung der Schiebe, die Verdauung der Hyperloop-Kraft zu beurteilen, um eine Reversionsmöglichkeit zu suchen. Gleichzeitig spiegelt sich die Veränderung der Kauf- und Verkaufsmenge in der Transaktionsmenge die Verdauung der Hyperloop-Kraft wider.
Die Strategie setzt insgesamt drei Entry-Signale ein:
Wenn der RSI unter 41 liegt und steigt, und der MACD-Signal nicht deutlich abweicht, wird mehr gemacht.
Wenn der RSI zwischen 45-55 liegt und steigt, und der MACD und die Signallinie gleichzeitig steigen, dann wird mehr gemacht.
Wenn der MACD über der eingestellten Schwelle liegt und steigt, wird eine Leerstellung vorgenommen.
Diese drei Situationen spiegeln regionale Erschütterungen und eine übermäßige Ausweitung in eine Richtung in kurzer Zeit wider und sind daher als gute Zeitpunkte für eine Umkehrung zu beurteilen und umgekehrte Maßnahmen zu ergreifen.
Exit ist ein Stop-Loss- und Stop-Stop-Modus, der die Kontrolle zurückzieht und die Gewinne auszahlt.
Die Strategie kombiniert mehrere Indikatoren, um die Schwingungsbreite und die Überkauf-Überverkauf-Phänomene zu beurteilen. Die Gewinn-Gewinn-Strategie ist klar. Die Verwendung der Transaktionsvolumenanalyse ist tiefer und erhöht die Basis für die Operation.
Die Vorzüge sind:
Der MACD als quantitative Preis-Test-Indikator, der die Beziehung zwischen Preis und Volumen beurteilt, um die Subjektivität einer einzigen technischen Analyse zu vermeiden;
Die Luftwaffe hat die Entries bestätigt, um den Status der Lieferungen zu beurteilen.
Der RSI beurteilt Überkaufe und Überverkäufe und hilft bei der Suche nach Umkehrungen.
Die Stop-Loss-Sperre verhindert übermäßige Verluste und sperrt einen Teil der Gewinne ein.
Obwohl die Kombination von mehreren Indikatoren die Gewinnchancen erhöht, ist jede Strategie mit einem gewissen Risiko verbunden, das hauptsächlich darauf zurückzuführen ist:
die Wahrscheinlichkeit, dass der Indikator falsche Signale sendet, wie etwa die Fortsetzung des ursprünglichen Trends nach einer Umkehr;
Die Stop-Loss-Stop-Limite ist falsch eingestellt, es gibt eine Möglichkeit, dass die Rücknahme zu groß ist und die Gewinne nicht gut gesperrt werden können.
Die Parameter-Einstellungen erfordern möglicherweise weitere Testoptimierungen, z. B. die Kombination der Mittellinienparameter, die RSI-Periode, die Stop-Loss-Stopp-Multiplier und so weiter.
Diese Risiken können durch weitere Optimierungen verringert werden.
Die Strategie bietet noch Raum für weitere Optimierungen und konzentriert sich hauptsächlich auf folgende Bereiche:
Verschiedene Parameter-Sätze der Gleichlinie werden getestet, um die optimale Kombination zu finden.
Testen Sie die RSI-Parameter-Einstellungen, um eine Periode zu ermitteln, die besser geeignet ist, um überkauft zu sein;
Optimierung der Stop-Loss-Multiplier, um eine Balance zwischen maximaler Rücknahme und Gewinnverriegelung zu finden;
Die Einführung von maschinellen Lernmodellen, das Trainieren mit größeren Datenmengen, die Verringerung der Wahrscheinlichkeit von Fehlinformationen und die Erhöhung der Gewinnquote.
Diese Optimierungsmethoden können durch systematischere Rückmessungen erreicht werden. Mit der Erweiterung der Parameterspace-Tests und dem Anstieg der Stichprobenmenge werden die Erfolgsraten und die Gewinnindikatoren der Strategien verbessert.
Die Strategie verwendet die drei Hauptindikatoren MACD, RSI und Transaktionsvolumen, um die Schokagecharakteristiken zwischen den Marktbereichen zu beurteilen. Sie richtet sich an die Wendepunkte, um die Aufschwungsteigerungen zu nutzen. Die Strategie ist klar konzipiert, berücksichtigt Trends und Umkehrungen und hat nach der Optimierung einen guten Gewinnraum. Durch die Anpassung der Parameter und die Einführung von Modellen wird erwartet, dass sie eine effiziente und stabile quantitative Strategie wird.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("3 1 Oscillator Profile Flagging", shorttitle="3 1 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)
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)
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)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)