Strategie für einen doppelten gleitenden Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2024-02-21 14:43:26
Tags:

img

Übersicht

Diese Strategie verwendet doppelte gleitende Durchschnitte, um einen Kanal zu bilden und die Trendrichtung zu erfassen. Handelssignale werden erzeugt, wenn der Preis durch den Kanal bricht. Der RSI-Indikator wird auch verwendet, um falsche Ausbrüche zu filtern.

Strategie Logik

Die Strategie verwendet zwei gleitende Durchschnitte mit einer Länge von 5, eines berechnet aus dem höchsten Preis und das andere aus dem niedrigsten Preis, um einen Preiskanal zu bilden.

Um einen falschen Ausbruch zu vermeiden, wird der RSI-Indikator hinzugefügt, um Überkauf/Überverkauf zu messen.

Außerdem wird die Strategie nur während der Londoner Sitzung (3 Uhr - 11 Uhr) gehandelt, mit maximal 5 Aufträgen pro Tag und maximal 2% Verlust des Eigenkapitals pro Tag.

Analyse der Vorteile

Fangen Sie den Trend an

Der doppelte MA-Kanal kann die Kursentwicklungsrichtung effektiv erkennen.

Falsche Ausbrüche reduzieren

Die Verwendung eines RSI-Filters für Überkauf/Überverkauf verringert einige falsche Ausbruchssignale, die durch Preisschwankungen verursacht werden.

Wirksame Risikokontrolle

Der Handel nur während der Hauptsitzung und die maximale Anzahl der Bestellungen pro Tag begrenzen die Handelsfrequenz.

Risikoanalyse

Falscher Ausbruch mit Volatilität

Eine signifikante Kursschwankung kann zu falschen Ausbruchssignalen führen, die zu unnötigen Verlusten führen.

Festgebliches SL/TP-Risiko

Die Verwendung von festen Pips für SL/TP birgt das Risiko, dass der Gewinn in einem volatilen Markt gestoppt/verpasst wird.

Begrenztes Handelssitzungsrisiko

Die Öffnung von Positionen nur während fester Sitzungen birgt das Risiko, dass potenzielle Trades in anderen Stunden verpasst werden.

Optimierungsrichtlinien

Einstellung der Parameter

Optimieren Sie Parameter wie MA-Länge, RSI-Zahlen, feste SL/TP-Pips usw., um die beste Kombination zu finden.

Zusätzliche Filter

Hinzufügen von mehr Indikatoren oder Bedingungen zur Überprüfung von Signalen, z. B. höhere Lautstärke, verringerte BB-Breite usw., um falsche Ausbrüche zu vermeiden.

Dynamische SL/TP

Verwenden Sie prozentual basierte oder dynamische Stop-Loss-/Take-Profit-Verfahren anstelle von festen Pips, um einseitige Marktbewegungen besser zu bewältigen.

Manuelle Überprüfung

Überprüfen Sie manuell die Signale oder geben Sie nur bei bestätigtem Ausbruch ein, um nicht eingeschlossen zu werden.

Schlussfolgerung

Die Strategie ist relativ einfach und insgesamt praktisch, wobei der doppelte MA-Kanal zur Bestimmung des Trends und der RSI zum Filtern falscher Ausbrüche verwendet werden. Das Risikomanagement über Handelszeiten und Verlustlimits definiert auch die Risikotoleranz.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-16 23:59:59
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(title="Moving Average", shorttitle="MA", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
len = input(5, minval=1, title="Length")
src = input(high, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out = sma(src, len)
plot(out, color=color.white, title="MA", offset=offset)

len2 = input(5, minval=1, title="Length")
src2 = input(low, title="Source")
offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out2 = sma(src2, len2)
plot(out2, color=color.white, title="MA", offset=offset2)

length = input( 5 )
overSold = input( 10 )
overBought = input( 80 )
price = input(close, title="Source RSI")

vrsi = rsi(price, length)

longcond= close > out and close > out2 and vrsi > overBought
shortcont = close < out and close < out2 and vrsi < overSold
tp=input(150,title="tp")
sl=input(80,title="sl")


strategy.entry("long",1,when=longcond)
//strategy.close("long",when= close < out2)
strategy.exit("long_exit","long",profit=tp,loss=sl)

strategy.entry("short",1,when=shortcont)
//strategy.close("short",when=close >out)
strategy.exit("short_exit","short",profit=tp,loss=sl)

// maxOrder = input(6, title="max trades per day")
// maxRisk = input(2,type=input.float, title="maxrisk per day")
// strategy.risk.max_intraday_filled_orders(maxOrder)

// strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity)


// strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))






Mehr