
Diese Strategie kombiniert den RSI, den Moving Average SMA und den Weighted Moving Average WMA, um ein Kauf- und Verkaufssignal zu finden. Sie beurteilt die Richtung des Trends in einem 5-Minuten- und 1-Stunden-Zeitrahmen gleichzeitig. Bei einem stabilen Trend erzeugt sie ein Handelssignal, wenn der RSI-Schnelllinie über oder unter der langsamen Linie fällt.
Die Strategie berechnet zunächst den 144-Zyklus-Wert-Moving-Average WMA und den 5-Zyklus-Simple-Moving-Average SMA in den Zeiträumen 1 Stunde und 5 Minuten. Es wird nur dann als Mehrkopfmarkt betrachtet, wenn der 5-Minuten-SMA über dem WMA liegt. Dann berechnet die Strategie den Polysomen des RSI sowie die entsprechenden K- und D-Linien.
Es ist eine sehr effektive Trend-Tracking-Strategie. Es kombiniert zwei Zeiträume, um die Trends zu beurteilen, und reduziert so die Fehlsignale sehr effektiv. Darüber hinaus kombiniert es mehrere Indikatoren zu filtern, einschließlich RSI, SMA und WMA, um die Signale zuverlässiger zu machen.
Das größte Risiko dieser Strategie besteht darin, dass Trends falsch beurteilt werden. In einem Wendepunkt können sich die kurz- und langfristigen Durchschnitte gleichzeitig auf- und abwälzen, was zu falschen Signalen führt. Außerdem kann der RSI in einem wackligen Zustand mehr verwickelte Handelssignale erzeugen. Diese Risiken können jedoch durch eine angemessene Anpassung der SMA- und WMA-Perioden und der RSI-Parameter gemindert werden.
Diese Strategie kann in folgenden Bereichen optimiert werden: 1) Testen Sie SMA, WMA und RSI unterschiedlicher Länge, um die beste Kombination von Parametern zu finden 2) Hinzufügen anderer Indikatoren, wie MACD, Brinline, etc., um die Signalsicherheit zu überprüfen 3) Optimierung von Stop-Loss-Stopp-Strategien, Tests für Fixed-Ratio-Stopps, Balance-Slide-Point-Stopps und Stopp-Tracking-Methoden 4) Einzug in das Modul für die Vermögensverwaltung, um die Größe der einzelnen Investitionen und die Gesamtrisikolocke zu kontrollieren 5) Erhöhung der Maschinenlern-Algorithmen, um die Parameter mit der besten Leistung durch eine große Anzahl von Rückprüfungen zu finden
Die Strategie nutzt die Vorteile von Moving Averages und Random Indicators, um ein zuverlässiges Trend-Tracking-System zu schaffen. Durch die Verifizierung von mehreren Zeitrahmen und Indikatoren kann sie die Richtung der mittleren und langen Trends problemlos erfassen. Die Stop-Loss-Einstellung erlaubt ihr gleichzeitig eine gewisse Marktschwankung.
/*backtest
start: 2023-12-22 00:00:00
end: 2024-01-21 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/
// © bufirolas
// Works well with a wide stop with 20 bars lookback
// for the SL level and a 2:1 reward ratio Take Profit .
// These parameters can be modified in the Inputs section of the strategy panel.
// "an entry signal it's a cross down or up on
// the stochastics. if you're in a downtrend
// on the hourly time frame you
// must also be in a downtrend on the five
// minute so the five period has to be below the 144
// as long as the five period is still trading below
// the 144 period on both the hourly and the five minutes
// we are looking for these short signals crosses down
// in the overbought region of the stochastic. Viceversa for longs"
//@version=4
strategy("Stoch + WMA + SMA strat", overlay=true)
//SL & TP Inputs
i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=10, step=1, title="SL Expander")
i_TPExpander=input(defval=30, step=1, title="TP Expander")
i_reverse=input(false, title="Reverse Trades")
i_TStop =input(false, title="Use Trailing Stop")
//Strategy Inputs
src4 = input(close, title="RSI Source")
stochOS=input(defval=20, step=5, title="Stochastics Oversold Level")
stochOB=input(defval=80, step=5, title="Stochastics Overbought Level")
//Stoch rsi Calculations
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
rsi1 = rsi(src4, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
h0 = hline(80, linestyle=hline.style_dotted)
h1 = hline(20, linestyle=hline.style_dotted)
//MA
wmalen=input(defval=144, title="WMA Length")
WMA = security(syminfo.tickerid, "60", wma(close, wmalen))
SMA = security(syminfo.tickerid, "60", sma(close, 5))
minWMA = wma(close, wmalen)
minSMA = sma(close, 5)
//Entry Logic
stobuy = crossover(k, d) and k < stochOS
stosell = crossunder(k, d) and k > stochOB
mabuy = minSMA > minWMA
daymabuy = SMA > WMA
//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
lTP=(strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0)))+((valuewhen(bought, atr(14), 0)/5)*i_TPExpander))
sTP=(strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0) - strategy.position_avg_price))-((valuewhen(bought, atr(14), 0)/5)*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
//TrailingStop
dif=(valuewhen(strategy.position_size>0 and strategy.position_size[1]<=0, high,0))
-strategy.position_avg_price
trailOffset = strategy.position_avg_price - LSL
var tstop = float(na)
if strategy.position_size > 0
tstop := high- trailOffset - dif
if tstop<tstop[1]
tstop:=tstop[1]
else
tstop := na
StrailOffset = SSL - strategy.position_avg_price
var Ststop = float(na)
Sdif=strategy.position_avg_price-(valuewhen(strategy.position_size<0
and strategy.position_size[1]>=0, low,0))
if strategy.position_size < 0
Ststop := low+ StrailOffset + Sdif
if Ststop>Ststop[1]
Ststop:=Ststop[1]
else
Ststop := na
//Stop Selector
SL= islong ? LSL : isshort ? SSL : na
if i_TStop
SL:= islong ? tstop : isshort ? Ststop : na
TP= islong ? lTP : isshort ? sTP : na
//Entries
if stobuy and mabuy and daymabuy
strategy.entry("long", long=not i_reverse?true:false)
if stosell and not mabuy and not daymabuy
strategy.entry("short", long=not i_reverse?false:true)
//Exit
if i_SL
strategy.exit("longexit", "long", stop=SL, limit=TP)
strategy.exit("shortexit", "short", stop=SL, limit=TP)
//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross)
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross)
plot(minWMA)
plot(minSMA, color=color.green)