
Die Strategie entwirft eine Handelsstrategie, die eine Trendwende durch die Berechnung der Unterschiede in der Kauf- und Verkaufsdruckmenge in verschiedenen Zeitfenstern in Kombination mit den Multifunktionssignalen des MACD-Indikators bewirkt. Die Strategie nutzt hauptsächlich Schwankungen der Handelsmenge als Signal, um eine Trendwende zu bestimmen, und wird durch die Multifunktionssignale des MACD überprüft, um so eine Umkehrmöglichkeit zu erfassen.
Die Kernlogik der Strategie basiert auf folgenden Punkten:
Berechnen Sie den Kaufdruck und den Verkaufdruck der Transaktionsmenge innerhalb der verschiedenen Zeitfenster. Beurteilen Sie die Richtung der zukünftigen Tendenz durch die Differenz der Kauf- und Verkaufsdruck.
Die MACD-Differenz (die Differenz zwischen der MACD- und der Signallinie) wird verwendet, um den Überlauf zu bestimmen. Die Kombination von Kauf- und Verkaufsdrucksignalen für die Menge der Umsätze bestätigt die Trendwende.
Wenn die Druckverschiebung der Kauf- und Verkaufsmenge zunimmt und die MACD-Linie durchschreitet, wird angenommen, dass ein Trendwechsel von null zu mehr auftreten kann.
Wenn die Druckverschiebung der Transaktionsmenge größer wird und die MACD-Linie durchbricht, wird angenommen, dass eine Trendwende durch mehrere Umschläge möglich ist.
Nach dem Eintritt in das Umkehrsignal wird das Risiko mit einer Stop-Stop-Loss-Strategie kontrolliert.
Die Strategie hat folgende Vorteile:
Um einen Trendwendepunkt zu ermitteln, sollten Sie die Mehrraumdifferenz der Transaktionsmenge nutzen, um zu vermeiden, dass die Rolle der Transaktionsmenge durch die Verwendung von Trendbeurteilungsindikatoren wie der Gleichheitslinie ignoriert wird.
In Kombination mit dem MACD-Kennzeichen kann die Genauigkeit der Beurteilung verbessert werden.
Die Verwendung von langen und kurzen Zeitfenstern zur Bestimmung der Divergenz der Transaktionsmenge macht das Umkehrsignal zuverlässiger.
Die durchschnittliche Gewinnrate bei der Umkehrstrategie ist höher.
Die Strategie birgt auch folgende Risiken:
Beide, der Umsatz und das MACD-Signal, können falsche Signale ausstrahlen, was zu einem Risiko von Fehlentscheidungen führt.
Es besteht die Gefahr, dass sich der Kurs nach dem Umkehrsignal erneut anpasst und nicht direkt umgedreht werden kann.
Unkorrekt eingestellte Stop-Loss-Punkte können zu einem Risiko einer Vergrößerung der Verluste führen.
Die Rücknahmequote ist hoch und nicht für Investoren geeignet, die nach stabilen Erträgen suchen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der Abstände zwischen den langen und kurzen Zeitfenstern, um eine präzisere Umkehrung zu ermöglichen.
Optimierung von MACD-Parametern zur Verbesserung der Genauigkeit von Mehrraumurteilen.
Optimierung der Stop-Loss-Algorithmen zur Verringerung des Verlustrisikos.
Es ist wichtig, mehr passives Urteilsvermögen zu entwickeln und die Umkehrungsrate zu erhöhen.
Zusätzliche Positionskontroll- und Vermögensverwaltungsmodule.
Diese Strategie ist im Allgemeinen eine typische Trendumkehr-Algorithmus-Handelsstrategie. Sie basiert hauptsächlich auf der Überprüfung der MACD-Signalverstärkung der Transaktionsmenge, um die Chance zu beurteilen und zu erfassen, dass der Preis von einem Mehrkopf in einen Leerkopf oder von einem Leerkopf in einen Mehrkopf umkehrt. Die Strategie hat hohe Beurteilungsgenauigkeit und eine bessere Rendite, aber auch einige Risiken.
/*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 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=false)
signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10)
takeProfit = input( title="Take Profit", defval=0.75)
stopLoss = input( title="Stop Loss", defval=0.5)
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")
intrabarRange = high - low
getLookBackSlope(lookBack) => signal - signal[lookBack]
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
float s = 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 - signalBiasValue )
j += 1
j
getSignalNoBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] < signalBiasValue and signal[i] > ( 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 and signalSlope[1] > 0
bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0
bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0
bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0
bool hasBearInversion = signalSlope > 0 and macdSlope < 0
bool hasBullInversion = signalSlope < 0 and macdSlope > 0
bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue )
bool hasSignalBuyerBias = hasSignalBias and signal > 0
bool hasSignalSellerBias = hasSignalBias and signal < 0
bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 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 )
// 7.48 Profit 52.5%
if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion)
strategy.entry("Short1", strategy.short, qty=10)
strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)
// 32.53 Profit 47.91%
if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias)
strategy.entry("Long1", strategy.long, qty=10)
strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)