Mehrere technische Indikatoren Momentum-Trend-Strategie


Erstellungsdatum: 2024-01-26 11:45:55 zuletzt geändert: 2024-01-26 11:45:55
Kopie: 0 Klicks: 575
1
konzentrieren Sie sich auf
1617
Anhänger

Mehrere technische Indikatoren Momentum-Trend-Strategie

Überblick

Die Strategie nutzt verschiedene technische Indikatoren wie beispielsweise einen Moving Average, einen Relativ Strong Index (RSI), einen Variablen Index (VFI) und einen True Strength Index (TSI), um die Gesamtbewegung und Trends des Marktes zu erfassen und die Preisentwicklung der mittleren und langen Linie zu erfassen.

Strategieprinzip

  1. Berechnen Sie die Moving Averages für den RSI der schnellen Linie (7 Tage), der normalen Linie (14 Tage) und der langsamen Linie (50 Tage), um den Trend und die Dynamik des RSI zu beurteilen.

  2. Berechnen Sie die EMA (25 Tage) und die SMA (25 Tage) der VFI und der VFI, um die Ein- und Ausflüsse des Marktes zu beurteilen.

  3. Berechnen Sie den Verhältnis zwischen dem langfristigen und dem kurzfristigen Durchschnitt des TSI, um die Stärke des Markttrends zu beurteilen.

  4. Die Ergebnisse der RSI, VFI und TSI werden zusammengefasst, um die allgemeine Dynamik des Marktes zu bestimmen.

  5. Wenn der Markt nach unten bewegt wird, wird kurz gemacht. Wenn der Markt nach unten bewegt wird, wird die Position aufgelöst.

Analyse der Stärken

  1. Die Kombination verschiedener Indikatoren ermöglicht eine umfassendere und genauere Beurteilung der Gesamtdynamik und -trends des Marktes.

  2. Die VFI ist ein Instrument, das die Ein- und Ausflüsse der Märkte reflektiert und die Umkehrung der Geschäfte verhindert.

  3. Die TSI-Filter haben die Schwingungsstörung verringert und die Signalsicherheit erhöht.

  4. Insgesamt ist die Strategie zuverlässiger und hat eine bessere Erfolgsquote.

Risikoanalyse

  1. Die Kombination von mehreren Indikatoren und die Einstellung von Parametern sind komplex und erfordern wiederholte Tests, um die optimalen Parameter zu erhalten.

  2. Die Ein- und Ausstiegsstrategien sind einfach und können die Informationen, die von den Indikatoren zur Verfügung gestellt werden, nicht vollständig nutzen.

  3. In der Schwankungsphase kann es zu Fehlsignalen und umgekehrten Verlusten kommen.

Optimierungsrichtung

  1. Optimieren Sie die Kombination von Kennzahlenparametern, um die besten Parameter zu finden.

  2. Hinzufügen von Exit-Regeln, die auf der Grundlage von Kennzahlen für die Umkehrung von Exits beurteilt werden.

  3. Erhöhung der Gewinnschutzmechanismen und Verringerung der Schadensersatzmaßnahmen.

Zusammenfassen

Diese Strategie verwendet verschiedene Indikatoren, um die Gesamtdynamik des Marktes zu beurteilen. Die Strategie ist sehr zuverlässig, aber die Ein- und Ausstiegsmechanismen sind einfach, und die Indikatoreninformationen werden nicht vollständig genutzt. Durch die ständige Optimierung der Parameter und die Verbesserung der Ausstiegsregeln können die Strategie-Stabilität und die Profitabilität weiter verbessert werden.

]

Strategiequellcode
//@version=2
//credit to LazyBear, Lewm444, and others for direct and indirect inputs/////////////////////////////////
//script is very rough, publishing more for collaborative input value than as a finished product/////////
strategy("Momo", overlay=true)
length = input( 50 )
overSold = input( 50 )
overBought = input( 65 )
price = ohlc4

/////////////////////////////////////////////////////macd/////////////////////////////////////////////////

fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
MACD = (fastMA - slowMA)
Msignal = (sma(MACD, 9))*40
//plot(Msignal, color=blue, linewidth=3)

/////////////////////////////////////////////////rsi spread/////////////////////////////////////////////////

source = price

RSIFast  = rsi(source, input(7))
RSINorm  = rsi(source, input(14))
RSISlow = rsi(source, input(50))

//plot(RSIFast, color=silver, style=area, histbase=50)
//plot(RSINorm, color=#98b8be, style=area, histbase=50)
//plot(RSISlow, color=#be9e98, style=area, histbase=50)

//plot(RSIFast, color=gray, style=line, linewidth=1)
//plot(RSINorm, color=purple, style=line, linewidth=2)
//plot(RSISlow, color=black, style=line, linewidth=3)

exponential = input(true, title="Exponential MA")

src = (RSIFast)

ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

exponential1 = input(true, title="Exponential MA")

src1 = (RSINorm)

ma051 = exponential1 ? ema(src1, 05) : sma(src1, 05)
ma301 = exponential1 ? ema(src1, 30) : sma(src1, 30)
ma501 = exponential1 ? ema(src1, 50) : sma(src1, 50)
ma701 = exponential1 ? ema(src1, 70) : sma(src1, 70)
ma901 = exponential1 ? ema(src1, 90) : sma(src1, 90)
ma1001 = exponential1 ? ema(src1, 100) : sma(src1, 100)


exponential2 = input(true, title="Exponential MA")

src2 = (RSINorm)

ma052 = exponential2 ? ema(src2, 05) : sma(src2, 05)
ma302 = exponential2 ? ema(src2, 30) : sma(src2, 30)
ma502 = exponential2 ? ema(src2, 50) : sma(src2, 50)
ma702 = exponential2 ? ema(src2, 70) : sma(src2, 70)
ma902 = exponential2 ? ema(src2, 90) : sma(src2, 90)
ma1002 = exponential2 ? ema(src2, 100) : sma(src2, 100)


////////////////////////////////////////////////vfi by LazyBear, modified////////////////////////////////////

VFIlength = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(10)
signalLength2 = input(100)
smoothVFI=input(false, type=bool)

ma(x,y) => smoothVFI ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, VFIlength )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , VFIlength )/vave, 3)
vfima = ema( vfi, 25 )
vfimaS = (sma(vfima, 25))
zima = ema( vfima, signalLength2 )
d=vfi-vfima
vfi_avg = avg(vfi, vfima, vfimaS)
vfi_avgS = (sma(vfi_avg,5))

plot( zima, title="EMA of vfima", color=fuchsia, linewidth=1)
plot( vfimaS, title="SMA of vfima", color=blue, linewidth=1)
plot( vfima , title="EMA of vfi", color=black, linewidth=1)
//plot( vfi, title="vfi", color=green,linewidth=1)
//plot( vfi_avg, title="vfi_avg", color=blue, linewidth=2)
//plot( vfi_avgS, title="vfi_avgS", color=maroon, linewidth=2)

/////////////////////////////////////////////////////tsi////////////////////////////////////////////////

long2 = input(title="Long Length",  defval=24)
short2 = input(title="Short Length",  defval=7)
signal2 = input(title="Signal Length",  defval=13)
pc = change(price)
double_smooth2(src, long2, short2) =>
    fist_smooth2 = ema(src, long2)
    ema(fist_smooth2, short2)
double_smoothed_pc2 = double_smooth2(pc, long2, short2)
double_smoothed_abs_pc2 = double_smooth2(abs(pc), long2, short2)
tsi_value2 = 60 * (double_smoothed_pc2 / double_smoothed_abs_pc2)
//plot( tsi_value2, title="tsi2", color=black, linewidth=1)

////////////////////////////////////////////////////////mjb////////////////////////////////////////////////

trendSignal = avg(tsi_value2, Msignal, vfi)*1.75
T1 = sma(trendSignal, 5)
T2 = ema(trendSignal, 25)
T3 = ema(T2, 25)
//plot( T1, title="Trend", color=red, linewidth=3)
plot( T3, title="Trend3", color=black, linewidth=3)

/////////////////////////////////////////////////////mjb////////////////////////////////////////////////

Momentum = avg (T3, vfimaS, vfima)
plot( Momentum, title="Momentum", color=blue, linewidth=2)
vrsi = rsi(price, length)
clearance = abs(zima - Msignal)

/////////////////////////////////////////////////////mjb////////////////////////////////////////////////

if (not na(vrsi)) 
    if (zima > T3) and (clearance > 5) and (falling(zima, 1) == 1) and (zima > vfimaS) and (zima > vfima) and (falling(T3, 1) == 1) and (zima > 6)
        strategy.entry("ss", strategy.short)
    if (T3 > zima) and (rising(zima, 1) == 1)
        strategy.entry("Zcover", strategy.long)
    if (strategy.openprofit > 750) and (rising(T2, 1) == 1) and (T2 > 10)
        strategy.entry("ProfitTake", strategy.long)
// strategy.risk.allow_entry_in(strategy.direction.short)
// strategy.risk.max_intraday_loss(2000, strategy.cash)