Stan The Man - Eine fortgeschrittene Aktienhandelsstrategie auf der Grundlage von doppeltem gleitendem Durchschnitt und Volatilität

Schriftsteller:ChaoZhang, Datum: 2023-12-20 14:54:41
Tags:

img

Übersicht

Diese Strategie nutzt ein doppeltes gleitendes Durchschnittssystem und einen relativen Stärkenindex, kombiniert mit der historischen Volatilität der Aktie, um Kauf- und Verkaufssignale für den Aktienhandel zu automatisieren. Der Vorteil besteht darin, dass sowohl langfristige als auch kurzfristige Techniken kombiniert werden, um Risiken effektiv zu kontrollieren. Es gibt jedoch noch Verbesserungsmöglichkeiten, zum Beispiel könnte ein Stop-Loss-Mechanismus hinzugefügt werden.

Strategie Logik

Die Strategie nutzt den 150-wöchigen gleitenden Durchschnitt und den 50-tägigen schnellen gleitenden Durchschnitt, um ein doppeltes MA-System zu bilden. Sie verwendet auch einen 20-tägigen ultra-schnellen MA. Wenn der Preis über den 150-wöchigen MA überschreitet, signalisiert er einen Aufwärtstrend. Wenn der Preis unter den 50-tägigen MA überschreitet, signalisiert er einen Abwärtstrend. Dies ermöglicht es uns, auf dem Weg nach oben zu kaufen und auf dem Weg nach unten zu verkaufen.

Darüber hinaus verwendet die Strategie auch auf Basis von Volatilität und relativer Stärke den höchsten jährlichen Preis, um spezifische Einstiegspunkte zu bestimmen.

Vorteile

  1. Das Doppel-MA-System kann Trendenveränderungen effektiv erkennen, um aufwärts zu jagen und nach unten zu stoppen.

  2. Die Volatilitätsmessung und der RSI sorgen dafür, dass wir nicht in den Nebenmärkten geschlagen werden.

  3. Der 20-tägige schnelle MA ermöglicht einen schnelleren Stop-Loss.

Risiken

  1. Es gibt etwas Verzögerung, nicht in der Lage, einen Stop-Loss schnell zu erkennen.

  2. Es gibt keinen Stop Loss, das könnte zu großen Verlusten führen.

  3. Mangelnde Parameteroptimierung, Parameter eher willkürlich eingestellt.

Um die Risiken zu mindern, können Stop Loss hinzugefügt oder ATR-Multiplikatoren als Stop-Loss-Prozentsatz verwendet werden.

Möglichkeiten zur Verbesserung

  1. Hinzufügen eines Stop-Loss-Mechanismus
  2. Finden Sie optimale Parameter durch Optimierung
  3. Erwägen Sie, weitere Filter wie Lautstärke hinzuzufügen
  4. Wir könnten es in ein Multifaktormodell mit mehr Faktoren aufbauen.

Zusammenfassung

Zusammenfassend ist dies eine eher konservative Aktienanlagestrategie. Durch die Verwendung eines Dual-MA-Systems zur Beurteilung des Gesamttrends, kombiniert mit Volatilitäts- und Stärkemessungen bis zum Zeitpunkt des Eintritts, können falsche Ausbrüche effektiv herausgefiltert werden. Der schnelle MA ermöglicht auch schnelle Ausgänge. Die Strategie kann jedoch durch Hinzufügen von Stop Loss, Parameteroptimierung usw. weiter verbessert werden.


/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Relative Strength
strategy("Stan my man", overlay=true)
comparativeTickerId = input("BTC_USDT:swap",  title="Comparative Symbol")
l = input(50, type=input.integer, minval=1, title="Period")
baseSymbol = security(syminfo.tickerid, timeframe.period, close)
comparativeSymbol = security(comparativeTickerId, timeframe.period, close)
hline(0, color=color.black, linestyle=hline.style_dotted)
res = baseSymbol / baseSymbol[l] /(comparativeSymbol / comparativeSymbol[l]) - 1
plot(res, title="RS", color=#1155CC)

//volume ma
vol1 = sma(volume,20)
// 30 week ma
ema1 = ema(close, 150)
//consolidation
h1 = highest(high[1],365)

fastPeriod = input(title="Fast MA", type=input.integer, defval=50)
slowPeriod = input(title="Slow MA", type=input.integer, defval=150)
fastestperiod = input(title="Fastest MA", type=input.integer, defval=20)

fastEMA = ema(close, fastPeriod)
slowEMA = ema(close, slowPeriod)
fastestEMA = ema(close, fastestperiod)

monitorStrategy = close < close[20]


// trade conditions
buytradecondition1 = close >ema1 and res>0 and volume> 1.5*vol1 and close > h1
buytradecondition2 = close > fastEMA  and volume> 1.5* vol1 
selltradecondition1  = close< 0.95 * fastEMA 
selltradecondition2  = close< 0.90 * open

if (buytradecondition1)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over Slow moving average",alert.freq_all)
    
if (buytradecondition2)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over fast moving average",alert.freq_all)
    
if (selltradecondition1)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down fast moving average",alert.freq_all)
    
if (selltradecondition2)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down 10% below open price  ",alert.freq_all)

//alertcondition(buytradecondition1,title ="BuySignal", message ="Price Crossed Slow Moving EMA ")

plot(fastEMA, color=color.navy)
plot(slowEMA, color=color.fuchsia)
plot(fastestEMA, color=color.green)

Mehr