Die Ressourcen sind geladen. Beförderung...

Strategie der MA

Schriftsteller:ChaoZhang, Datum: 2024-06-03 11:25:43
Tags:SMA- Nein.

img

Übersicht

Dieser Artikel stellt eine quantitative Handelsstrategie vor, die auf dem Prinzip des gleitenden Durchschnitts-Crossovers basiert. Die Strategie bestimmt die lange/kurze Richtung, indem der Preis mit dem gleitenden Durchschnitt verglichen wird, und setzt Profit- und Stop-Loss-Levels ein, um das Risiko zu kontrollieren.

Strategieprinzip

Der Kern dieser Strategie ist der gleitende Durchschnitt. Er berechnet den einfachen gleitenden Durchschnitt des Schlusskurses über einen bestimmten Zeitraum als Grundlage für die Beurteilung des Trends. Wenn der Preis über den gleitenden Durchschnitt überschreitet, erzeugt er ein langes Signal, und wenn er unterhalb des gleitenden Durchschnitts überschreitet, erzeugt er ein kurzes Signal. Die Exrem-Funktion wird verwendet, um kontinuierliche doppelte Signale auszufiltern und die Signalqualität zu verbessern.

Strategische Vorteile

Der gleitende Durchschnitts-Crossover ist eine einfache und einfach zu bedienende Trend-Folge-Methode, die mittelfristige bis langfristige Markttrends effektiv erfassen kann. Mit angemessenen Parameter-Einstellungen kann die Strategie stabile Renditen in Trendmärkten erzielen. Die Einstellung von Take Profit und Stop Loss hilft, Drawdowns zu kontrollieren und das Risiko-Rendite-Verhältnis zu verbessern. Die Strategie-Code-Logik ist klar, mit Funktionsmodularisierung, mit starker Lesbarkeit und Skalierbarkeit. Darüber hinaus integriert die Strategie die Dhan-Plattform-API, um eine automatisierte Auftragsausführung zu realisieren und die Ausführungseffizienz zu verbessern.

Strategische Risiken

Bewegliche Durchschnitte sind von Natur aus Rückstandsindikatoren. Während der Marktwendepunkte können Signale verzögert werden, was zu verpassten optimalen Handelsmöglichkeiten oder falschen Signalen führt. Falsche Parameter-Einstellungen beeinflussen die Strategieleistung und müssen entsprechend verschiedenen Marktmerkmalen und Zeitrahmen optimiert werden. Festes Prozentsatz-Gewinn- und Stop-Loss-Verhalten kann sich nicht an Veränderungen der Marktvolatilität anpassen, und es besteht auch ein Risiko von Verlusten aufgrund unsachgemäßer Parameter-Einstellungen.

Strategieoptimierungsrichtlinien

  1. Mehrere gleitende Durchschnitte unterschiedlicher Zeitrahmen können kombiniert werden, um die Signalzuverlässigkeit zu verbessern, z. B. doppelte oder dreifache gleitende Durchschnitts-Crossovers.
  2. Die Einstellung von Take-Profit und Stop-Loss kann weiter optimiert werden, z. B. durch dynamische Anpassung an Volatilitätsindikatoren wie ATR oder durch Annahme von Trailing-Stop-Strategien.
  3. Es können weitere Filterbedingungen hinzugefügt werden, wie z. B. Preisdurchbrüche wichtiger Unterstützungs-/Widerstandsniveaus, Änderungen des Handelsvolumens usw., um die Signalqualität zu verbessern.
  4. In der tatsächlichen Anwendung ist es notwendig, eine ordnungsgemäße Rückprüfung und Validierung der Strategie durchzuführen und Mittel zu verwalten, um das einheitliche Handelsrisiko und die Gesamtnutzung zu kontrollieren.

Zusammenfassung

Die gleitende Durchschnitts-Crossover-Strategie ist eine einfache und praktische quantitative Handelsstrategie, die durch Trendverfolgung und Stop-Loss-Kontrolle in Trending-Märkten profitieren kann. Die Strategie selbst hat jedoch bestimmte Einschränkungen und muss entsprechend den Merkmalen des Marktes und den Risikopräferenzen optimiert und verbessert werden. In der praktischen Anwendung ist es auch notwendig, auf strenge Disziplin und richtige Risikokontrolle zu achten. Strategieprogrammierung kann professionelle Sprachen wie Pine Script nutzen und Handelsplattform-APIs integrieren, um eine automatisierte Strategieausführung zu realisieren.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © syam-mohan-vs @ T7 - wwww.t7wealth.com www.t7trade.com
//This is an educational code done to describe the fundemantals of pine scritpting language and integration with Indian discount broker Dhan. This strategy is not tested or recommended for live trading. 

//@version=5
strategy("Pine & Dhan - Moving Average Crossover Strategy", overlay=true)

//Remove excess signals
exrem(condition1, condition2) =>
    temp = false
    temp := na(temp[1]) ? false : not temp[1] and condition1 ? true : temp[1] and condition2 ? false : temp[1]
    ta.change(temp) == true ? true : false

// Define MA period
ma_period = input(20, title = "MA Length")

// Define target and stop loss levels
target_percentage = input.float(title="Target Profit (%)", defval=2.0)
stop_loss_percentage = input.float(title="Stop Loss (%)", defval=1.0)

// Calculate the MA
ma = ta.sma(close, ma_period)

// Entry conditions
long_entry = close >= ma
short_entry = close < ma

// Calculate target and stop loss prices
target_price = long_entry ? strategy.position_avg_price + (close * (target_percentage / 100)) : strategy.position_avg_price - (close * (target_percentage / 100)) 
stop_loss_price = short_entry ? strategy.position_avg_price + (close * (stop_loss_percentage/ 100)) : strategy.position_avg_price - (close * (stop_loss_percentage / 100)) 

long_entry := exrem(long_entry,short_entry)
short_entry := exrem(short_entry,long_entry)

// Plot the MA
plot(ma, color=color.blue, linewidth=2, title="MA")

// Plot the entry and exit signals
plotshape(long_entry, style=shape.arrowup, color=color.green, size=size.small,location = location.belowbar)
plotshape(short_entry, style=shape.arrowdown, color=color.red, size=size.small,location = location.abovebar)

//Find absolute value of positon size to exit position properly
size = math.abs(strategy.position_size)

//Replace these four JSON strings with those generated from user Dhan account
long_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"I","sort_order":"1","price":"0"}]}'
long_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'

// Submit orders based on signals
if(strategy.position_size == 0)
    if long_entry 
        strategy.order("Long", strategy.long,alert_message=long_msg)          

    if short_entry
        strategy.order("Short", strategy.short,alert_message=short_msg)        
    
if(strategy.position_size > 0)
    
    if(short_entry)
        strategy.order("Short", strategy.short, qty = size, alert_message=short_msg)     
    else
        strategy.exit("Long Exit", from_entry="Long", qty = size, stop=stop_loss_price, limit= target_price, alert_message=long_exit_msg)

if(strategy.position_size < 0)
    
    if(long_entry)
        strategy.order("Long", strategy.long, qty = size, alert_message=long_msg)    
    else           
        strategy.exit("Short Exit", from_entry="Short", qty = size, stop=stop_loss_price, limit= target_price, alert_message=short_exit_msg) 



Verwandt

Mehr