
Das 3-Faktor-Modell zur Beurteilung von Preisschwankungen ist eine Short-Line-Handelsstrategie, die mehrere Faktoren berücksichtigt. Die Strategie berücksichtigt mehrere Faktoren wie die Transaktionsrate, den RSI, den MACD und die Signal-Line-Indikatoren, um die Preisschwankungen zu beurteilen, um Short-Line-Handelsmöglichkeiten zu entdecken.
Die Kernlogik der Strategie lautet:
Berechnung von technischen Indikatoren wie schnellen Moving Averages, langsamen Moving Averages, MACD-Kurven und Signallinien;
Multi-Faktor-Kriterien für die Ermittlung von Handelsvolumen, RSI, MACD und Signal-Line-Kriterien;
Eine umfassende Mehrfaktor-Bewertung, die bestätigt, dass es sich um eine Phase von Preisschwankungen handelt, in der sich Kauf- und Verkaufsmöglichkeiten ergeben;
Eintritt in eine LONG- oder SHORT-Position mit Stop-Loss-Einstellung;
Eine Off-Hold-Position, wenn der Preis die Stop-Loss-Bedingung erreicht.
Die Strategie nutzt flexibel mehrere Faktoren, wie den Quotientenverhältnis, den RSI, den MACD und die Signal-Line-Indikatoren, um das Preis-Schwankungs-Verhalten zu beurteilen, um kurzfristige Handelsmöglichkeiten zu erfassen. Die Kombination von mehreren Faktoren vermeidet Fehlsignale, die durch einzelne Faktoren verursacht werden, und erhöht die Signalgenauigkeit.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch folgende Risiken:
Für die oben genannten Risiken können Optimierungen in folgenden Bereichen vorgenommen werden:
Die Strategie kann vor allem in folgenden Bereichen optimiert werden:
Optimierung der Multifaktorgewichtung, um dynamische Anpassungen zu realisieren. Die Multifaktor-Beurteilung kann entsprechend der jeweiligen Situation angepasst werden, um die Anpassungsfähigkeit zu verbessern;
In Kombination mit maschinellen Lernalgorithmen, um die Selbstadaptionsoptimierung von Multifaktoren zu erreichen. Die Verwendung von neuronalen Netzwerken, genetischen Algorithmen und anderen Algorithmen zum Training von Multifaktormodellen, um die autonome Optimierung von Parametern zu erreichen;
Optimierung der Stop-Loss-Strategie. Verschiedene Stop-Tracking- und Stop-Moving-Kombinationen können getestet werden, um die optimale Stop-Solution zu finden.
In Kombination mit hochentwickelten technischen Indikatoren. Weitere Indikatoren wie Schwankungen der Schwankungsrate, Schwingungen der Dynamik und eine reichhaltige Kombination von Faktoren können getestet werden.
Die Strategie nutzt mehrere Faktoren, wie Umsatz, RSI, MACD und Signallinien, um die besten Kauf- und Verkaufsmomente zu bestimmen. Die Mehrfaktoren-Beurteilung verbessert die Signalgenauigkeit und trägt zur Erzielung stabiler Gewinne bei. In der Folge kann die Optimierung der Mehrfaktoren-Anpassung durch Machine-Learning-Algorithmen erfolgen, um eine bessere Strategie zu erzielen.
/*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.0 Oscillator Profile Flagging", shorttitle="3 10.0 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.0)
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.0)
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.0)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)