
Die Strategie ist ein Moving Average-System, das auf 4 verschiedenen Perioden von SMMAs und einem EMA-Indikator basiert. Es kombiniert mehrere technische Analyse-Tools für Wertpapiere, um eine Handelsstrategie zu entwickeln, indem Trends ermittelt werden. Die Strategie ist hauptsächlich für den Tageshandel mit 15-Minuten-EURUSD-Anleihen in hochlevierten Konten geeignet.
Die Strategie verwendet 4 verschiedene Parameter SMMA ((3, 6, 9, 50) und 1 EMA ((200), um ein mehrschichtiges System von Moving Averages zu erstellen. Der SMMA-Indikator filtert effektiv Marktlärm und beurteilt die Richtung des Trends. Der EMA-Indikator erkennt langfristige Trends.
Ein Kaufsignal wird erzeugt, wenn ein kurzfristiger Moving Average (z. B. ein 3-Zyklus-SMMA) über einen längerfristigen Moving Average (z. B. ein 200-Zyklus-EMA) überschritten wird. Ein Verkaufssignal wird erzeugt, wenn ein langerfristiger Moving Average unter einem kurzfristigen Moving Average überschritten wird.
Darüber hinaus wird ein Stop-Loss-Punkt festgelegt, um das Risiko zu kontrollieren.
Diese Strategie hat folgende Vorteile:
Eine mehrschichtige Moving-Average-Struktur kann die Richtung des Trends bestimmen und falsche Signale reduzieren.
Der SMMA-Indikator filtert Marktgeräusche und der EMA-Indikator erkennt langfristige Trends.
Das Konto ist für Leverage-Konten geeignet, um die Gewinne aus dem Handel zu steigern.
Ein Stop-Loss-Punkt wurde eingerichtet, um das Risiko effektiv zu kontrollieren.
Optimierte Handelsvarianten (EURUSD) und Perioden (EUR/USD) (z. B. 15 Minuten) haben einen größeren Vorteil.
Die Strategie birgt auch folgende Risiken:
Die Nutzung von Moving Averages könnte eine kurzfristige Umkehr verpassen.
Das heißt, dass ein hoher Leverage den Verlust erhöht und gleichzeitig auch den Gewinn.
Wenn der Moving Average ein Signal erzeugt, könnte sich die kurzfristige Entwicklung bereits umgekehrt haben.
Der EUR/USD-Kurs kann stark schwanken, was zu einem größeren Risiko führt.
Für diese Risiken kann der Leverage-Prozessor angepasst werden, die Parameter des Moving Averages optimiert werden, andere Indikatoren eingeführt werden, um den Trend umzukehren.
Die wichtigsten Optimierungsmöglichkeiten der Strategie sind:
Beurteilung der Leistung der verschiedenen Sorten und Zyklen und Auswahl der optimalen Parameter.
Verschiedene Kombinationen von Parametern und eine Anzahl von Moving Averages werden getestet.
Erhöhung des Umsatz- oder Schwankungsgrades für kurzfristige Wendepunkte.
Dynamische Anpassung zur Erhöhung der Stop-Loss-Werte.
Ein weiterer wichtiger Punkt in der Bewertung der ENU-Indikatoren.
Durch die vielseitige Prüfung und Optimierung kann die Stabilität und Profitabilität der Strategie erheblich verbessert werden.
Die Moving Average-Strategie integriert die Vorteile der Average-Indikatoren zu einem robusten Trendscheidungssystem. Sie optimiert die Handelsvarianten und -perioden und eignet sich hervorragend für den Handel an hochlevierten Tagen. Durch die Anpassung der Parameter und die Optimierung der Tests kann die Strategie zu einer effizienten und zuverlässigen algorithmischen Handelsstrategie werden.
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
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/
// © SoftKill21
//@version=4
strategy("Money maker EURUSD 15min" )
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
len = input(3, minval=1, title="Length")
src = input(hl2, title="Source")
smma = 0.0
sma1 = sma(src, len)
smma := na(smma[1]) ? sma1 : (smma[1] * (len - 1) + src) / len
len2 = input(6, minval=1, title="Length")
src2 = input(hl2, title="Source")
smma2 = 0.0
sma2 = sma(src2, len2)
smma2 := na(smma2[1]) ? sma2 : (smma2[1] * (len2 - 1) + src2) / len2
len3 = input(9, minval=1, title="Length")
src3 = input(hl2, title="Source")
smma3 = 0.0
sma3 = sma(src3, len3)
smma3 := na(smma3[1]) ? sma3 : (smma3[1] * (len3 - 1) + src3) / len3
len4 = input(50, minval=1, title="Length")
src4 = input(close, title="Source")
smma4 = 0.0
sma4 = sma(src4, len4)
smma4 := na(smma4[1]) ? sma4 : (smma4[1] * (len4 - 1) + src4) / len4
len5 = input(200, minval=1, title="Length")
src5 = input(close, title="Source")
out5 = ema(src5, len5)
timeinrange(res, sess) => time(res, sess) != 0
london=timeinrange(timeframe.period, "0300-1045")
londonEntry=timeinrange(timeframe.period, "0300-0845")
extraEntry =timeinrange(timeframe.period, "0745-1030")
time_cond = true
//time_cond2 = time >= startDate and time <= finishDate and extraEntry
//
longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond
shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond
//longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond2
//shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond2
//longCond2 = crossover(close,out5) and crossover(close,smma4) and crossover(close,smma3) and crossover(close,smma2) and crossover(close,smma) and time_cond
//shortCond2 = crossunder(close,out5) and crossunder(close,smma4) and crossunder(close,smma3) and crossunder(close,smma2) and crossunder(close,smma) and time_cond
tp=input(300,title="tp")
sl=input(300,title="sl")
strategy.initial_capital = 50000
//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(1,type=input.float,title="Risk %")/100 //risk % per trade
//Calculate the size of the next trade
temp01 = balance * risk //Risk in USD
temp02 = temp01/sl //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
size := 1000 //Set min. lot size
dataL = (close-out5)*100000
dataS = (out5-close)*100000
minDistanceL = (smma4 - out5)*100000
minDistanceS= (out5 - smma4)*100000
strategy.entry("long",1,1,when=longCond )
strategy.exit("closelong","long", profit=tp,loss=sl)
strategy.entry("short",0,1,when=shortCond )
strategy.exit("closeshort","short", profit=tp,loss=sl)
strategy.close_all(when = not london, comment="london finish")
//strategy.close_all(when = not extraEntry, comment="london finish")
// maxEntry=input(2,title="max entries")
// strategy.risk.max_intraday_filled_orders(maxEntry)