Strategie für die Dynamikentwicklung

Schriftsteller:ChaoZhang, Datum: 2024-01-26 11:45:55
Tags:

img

Übersicht

Diese Strategie kombiniert verschiedene technische Indikatoren wie gleitenden Durchschnitt, Relative Strength Index (RSI), Volumenfluktuationsindikator (VFI) und True Strength Index (TSI), um die allgemeine Dynamik und den Trend des Marktes zu bestimmen und mittelfristige und langfristige Preisbewegungen zu erfassen.

Strategie Logik

  1. Berechnen Sie gleitende Durchschnitte des Fast Line RSI (7 Tage), des Normal Line RSI (14 Tage) und des Slow Line RSI (50 Tage), um den Trend und die Dynamik des RSI zu ermitteln.

  2. Berechnung der VFI-EMA (25 Tage) und der VFI-SMA (25 Tage) und gleitender Durchschnitte zur Beurteilung des Geldzu- und -ausflusses.

  3. Berechnung des Verhältnisses zwischen dem langfristigen gleitenden Durchschnitt und dem kurzfristigen gleitenden Durchschnitt der TSI zur Bestimmung der Stärke der Marktentwicklung.

  4. Integration der Ergebnisse von RSI, VFI und TSI zur Ableitung der allgemeinen Marktdynamikrichtung.

  5. Kurze Position einnehmen, wenn eine Abwärtsbewegung erkannt wird, kurz abdecken, wenn eine Umkehrung der Bewegung erkannt wird.

Analyse der Vorteile

  1. Die Kombination mehrerer Indikatoren ermöglicht eine umfassendere und genauere Messung der allgemeinen Marktdynamik und -entwicklung.

  2. Die VFI spiegeln den Marktmittelfluss wider und vermeiden den gegen den Trend gerichteten Handel.

  3. Die TSI filtert Marktunruhen aus und macht die Signale zuverlässiger.

  4. Insgesamt hat die Strategie eine hohe Zuverlässigkeit und eine gute Gewinnrate.

Risikoanalyse

  1. Komplexe Parameter-Tuning ist für optimale Ergebnisse aus dem Multi-Indikator-Setup erforderlich.

  2. Einfache Ein- und Ausstiegsregeln, die keine vollständige Verwertung der Indikatorinformationen ermöglichen, und die kurzfristigen Umkehrverluste verursachen.

  3. Anfällig für falsche Signale und kleine Rückzugserlöse in schwankenden Märkten.

Optimierungsrichtlinien

  1. Optimieren Sie Indikatorenkombinationen, um die besten Parameter zu finden.

  2. Verbesserung der Ausstiegsregeln auf der Grundlage von Indikatorenbedingungen, um Umkehrungen zu erfassen.

  3. Aufbau von Gewinnschutzmechanismen zur Verringerung von Verlusten durch Zersplitterung.

Zusammenfassung

Diese Strategie kombiniert mehrere Indikatoren, um die Gesamtmarktdynamik zu messen, und nimmt Short-Positionen ein, wenn eine Abwärtsdynamik identifiziert wird. Sie hat eine relativ hohe Zuverlässigkeit, aber einfache Ein-/Ausgangsregeln, die die Indikatorinformationen nicht voll ausnutzen können. Weitere Verbesserungen der Parameter und der Ausgangslogik können die Stabilität und Rentabilität verbessern.

]


//@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)        

Mehr