Die Strategie nutzt zwei Arnaud Legoux Moving Averages (ALMA) für die Bewertung von Handelssignalen. ALMA ist eine Verbesserung des traditionellen Moving Averages, die die Verzögerung reduziert und die Kurve ausgleicht. Die Strategie erzeugt ein Kaufsignal durch ein langsames ALMA auf einem schnellen ALMA und ein Verkaufssignal durch ein langsames ALMA unter einem schnellen ALMA, wobei ein synthetisches Quantifizierungsfilter verwendet wird, um ein stabileres Kreuzsignal zu erzeugen.
Die Kernindikatoren und Handelsregeln der Strategie sind:
Schnelle ALMA: Kurze Perioden zur Erfassung von Durchbrüchen.
Langsamer ALMA: Die langen Perioden werden verwendet, um große Trends zu bestimmen.
Der Transaktionsfilter ist gültig, wenn der Langzeitdurchschnitt über dem Kurzzeitdurchschnitt liegt.
Mehrfachsignal: Fast-ALMA mit langsamer ALMA und der Effektivität des Übertragungsfilters.
Ponto-Signal: schnelle ALMA durch langsame ALMA.
Das Signal wird durch ein schnelles ALMA durch ein langsames ALMA gefiltert.
Flachschichtsignal: schnelle ALMA durch langsame ALMA.
Die Strategie ist einfach und intuitiv, kombiniert jedoch mehrere technische Indikatoren wie Trendbeurteilung, Durchbruch-Erfassung und Transaktionsmenge-Verifizierung, um ein relativ stabiles Handelssystem zu bilden. Die Kombination aus schnellen Durchschnittslinien kann die Richtung der Tendenz effektiv bestimmen. Die Anwendung des ALMA-Algorithmus verringert die Auswirkungen des Rückstands auf den Handel; Die Hinzufügung von Transaktionsmengen vermeidet viele unbekannte Pseudo-Breaks.
Im Vergleich zu traditionellen Mittellinien-Kreuzungsstrategien hat diese Strategie folgende Vorteile:
Die ALMA-Algorithmen reduzieren die Verzögerung und verbessern die Signalqualität.
Durch die Übertragungsfilterung können falsche Durchbrüche vermieden werden.
Der Trend wird von der Standard-Grenze ausgerichtet, um den Trend zu beurteilen und umgekehrte Trades zu vermeiden.
Die Regeln sind einfach, intuitiv und leicht zu verstehen.
Flexibel anpassbare Durchschnittsparameter für verschiedene Märkte.
Die Vermögensverwaltung ist vernünftig eingerichtet, um einzelne Verluste zu kontrollieren.
Durch die Optimierung der Mittellinienparameter kann die Effektivität der Strategie weiter verbessert werden.
Insgesamt verbessert sich die Stabilität und die Signalqualität im Vergleich zu herkömmlichen Methoden.
Obwohl diese Strategie viele Vorteile hat, sind folgende Risiken zu beachten:
Die Einheitsstrategie ist von Natur aus anfällig für Schwankungen in den Marktschwankungen und führt zu mehrfachen Verlusten.
Die Einstellungen der Parameter des ALMA-Algorithmus beeinflussen die Strategie.
Der Effekt der Transaktionsvolumenvergrößerung kann die Signalentscheidung beeinträchtigen.
Es gibt eine gewisse Verzögerung, die Verluste nicht vollständig verhindern kann.
Die Optimierung von Parametrics birgt das Risiko einer Überpassung.
Das Signal wird bei außergewöhnlichen Transaktionsverhältnissen ausfallen.
Algorithmen wie maschinelles Lernen könnten bessere Ergebnisse erzielen.
Die Kurve sollte nicht zu schräg sein.
In Anbetracht der genannten Risikofaktoren kann die Strategie in folgenden Bereichen optimiert werden:
Optimierung der ALMA-Durchschnittsparameter und erhöhte Reaktionsempfindlichkeit.
Versuchen Sie es mit anderen Methoden.
Die Einführung einer Stop-Loss-Strategie und die strikte Kontrolle von Einzelschäden.
In Verbindung mit anderen Indikatoren soll ein integriertes Handelssignalsystem aufgebaut werden.
Das neue Modul soll eine intelligentere Signalregulierung ermöglichen.
Das ist eine Strategie, die sich auf mehrere Arten und eine strategische Zerstreuung beschränkt.
Optimierung der Kapitalmanagementstrategie und Anpassung der Positionen an die verschiedenen Märkte.
Die Strategie zur Stärkung und Verhinderung von Überpassung soll untersucht werden.
Die Strategie insgesamt verbessert die Signalqualität und Stabilität durch ALMA-Algorithmen und Transaktionsmenge-Verifizierung im Vergleich zu herkömmlichen Linear-Cross-Strategien. Die Optimierung der Handelsstrategie ist jedoch ein fortlaufender Prozess, der weiterhin auf Risiken ausgerichtet ist und die Strategie in mehreren Dimensionen verbessert, um sie an kompliziertere Marktumgebungen anzupassen.
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Sarahann999
// Calculations for TP/SL based off: https://kodify.net/tradingview/orders/percentage-profit/
//@version=5
strategy("ALMA Cross", overlay=true)
//User Inputs
src= (close)
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')
//Fast Settings
ALMA1 = input(100, "ALMA Lenghth 1", group= "ALMA Fast Length Settings")
alma_offset = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma1 = ta.alma(src, ALMA1, alma_offset, alma_sigma)
//Slow Settings
ALMA2 = input(120, "ALMA Length 2", group = "ALMA Slow Length Settings")
alma_offset2 = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma2 = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma2 = ta.alma(src, ALMA2, alma_offset2, alma_sigma2)
//Volume
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
runtime.error("No volume is provided by the data vendor.")
shortlen = input.int(5, minval=1, title = "Short Length", group= "Volume Settings")
longlen = input.int(10, minval=1, title = "Long Length")
short = ta.ema(volume, shortlen)
long = ta.ema(volume, longlen)
osc = 100 * (short - long) / long
//Define Cross Conditions
buy = ta.crossover(Alma1, Alma2)
sell = ta.crossunder(Alma1, Alma2)
//Calculate Take Profit Percentage
longProfitPerc = input.float(title="Long Take Profit", group='Take Profit Percentage',
minval=0.0, step=0.1, defval=2) / 100
shortProfitPerc = input.float(title="Short Take Profit",
minval=0.0, step=0.1, defval=2) / 100
// Figure out take profit price 1
longExitPrice = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)
// Make inputs that set the stop % 1
longStopPerc = input.float(title="Long Stop Loss", group='Stop Percentage',
minval=0.0, step=0.1, defval=2.5) / 100
shortStopPerc = input.float(title="Short Stop Loss",
minval=0.0, step=0.1, defval=2.5) / 100
// Figure Out Stop Price
longStopPrice = strategy.position_avg_price * (1 - longStopPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc)
//Define Conditions
buySignal = buy and osc > 0
and strategy.position_size == 0
//sellSignal
sellSignal = sell and osc > 0
and strategy.position_size == 0
// Submit entry orders
if buySignal and long_entry
strategy.entry(id="Long", direction=strategy.long, alert_message="Enter Long")
alert(message="BUY Trade Entry Alert", freq=alert.freq_once_per_bar)
if sellSignal and short_entry
strategy.entry(id="Short", direction=strategy.short, alert_message="Enter Short")
alert(message="SELL Trade Entry Alert", freq=alert.freq_once_per_bar)
// Submit exit orders based on take profit price
if (strategy.position_size > 0)
strategy.exit(id="Long TP/SL", limit=longExitPrice, stop=longStopPrice, alert_message="Long Exit 1 at {{close}}")
if (strategy.position_size < 0)
strategy.exit(id="Short TP/SL", limit=shortExitPrice, stop=shortStopPrice, alert_message="Short Exit 1 at {{close}}")
//Draw
plot(Alma1,"Alma Fast", color=color.purple, style=plot.style_circles)
plot(Alma2,"Alma Slow", color=#acb5c2, style=plot.style_circles)