Einfache Momentum-Strategie basierend auf SMA, EMA und Volumen


Erstellungsdatum: 2023-12-08 11:15:30 zuletzt geändert: 2023-12-08 11:15:30
Kopie: 8 Klicks: 709
1
konzentrieren Sie sich auf
1621
Anhänger

Einfache Momentum-Strategie basierend auf SMA, EMA und Volumen

Überblick

Die Strategie ist eine einfache intraday-Strategie, die nicht ungeschädigt ist. Sie nutzt SMA, EMA und Transaktionsvolumen-Indikatoren, um zu versuchen, zu den besten Zeiten in den Markt zu gelangen, wenn die Preise und die Dynamik gleichzeitig steigen. Die Vorteile sind einfach zu realisieren und die Fähigkeit, Trends zu erkennen.

Strategieprinzip

Die Logik der Einty-Signalerzeugung für diese Strategie lautet: Ein Entry-Signal wird erzeugt, wenn gleichzeitig der SMA-Wert über dem EMA-Wert liegt und drei aufeinanderfolgende K-Linien oder vier aufeinanderfolgende K-Linien einen Aufwärtstrend bilden, und der mittlere K-Line-Tiefstpreis über dem Startpreis der aufsteigenden K-Line liegt.

Die Logik der Exit-Signalerzeugung lautet wie folgt: Exit-Signal wird erzeugt, wenn der EMA-Zeichen unter dem SMA-Indikator durchschritten wird.

Die Strategie arbeitet nur mit Überkopf, nicht mit Leerkopf. Ihre Entry- und Exit-Logik hat eine gewisse Fähigkeit, einen anhaltenden Aufwärtstrend zu erkennen.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Logik der Strategie ist einfach, leicht zu verstehen und umzusetzen.

  2. Flexible Anpassung der Parameter an die üblichen technischen Indikatoren wie SMA, EMA und Transaktionsvolumen;

  3. Es gibt eine gewisse Fähigkeit, eine anhaltend steigende Tendenz zu erkennen, und man kann einige der Chancen in der Tendenz nutzen.

Risikoanalyse

Die Strategie birgt auch folgende Risiken:

  1. Es ist unmöglich zu erkennen, in welchen Märkten es nach unten geht oder wo es zu einer Bilanzierung kommt, was zu einem größeren Rückzug führen könnte.

  2. Es gibt keine Chancen, dass sich das Unternehmen von der Rezession abschirmt, und es könnte gute Gewinnchancen verpassen.

  3. Die Transaktionsmenge-Indikatoren wirken nicht gut auf Hochfrequenzdaten und müssen die Parameter anpassen.

  4. Das Risiko kann mit Stop Loss kontrolliert werden.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Erhöhung der Leerlauf- und Mehrleerlauf-Zweisexportmöglichkeiten und Ausnutzung von Rezession-Streuung;

  2. Die Benutzung von Kombinationsstrategien mit fortgeschrittenen Indikatoren wie MACD, RSI und anderen, um Trends besser zu beurteilen;

  3. Die Optimierung der Stop-Loss-Logik und die Verringerung des Rücknahmerisikos;

  4. Anpassung der Parameter, Prüfung der Daten für verschiedene Perioden und Suche nach der optimalen Kombination der Parameter.

Zusammenfassen

Die Strategie ist insgesamt eine sehr einfache Trendverfolgung, bei der der Einstieg anhand von SMA, EMA und Umsatzindikatoren beurteilt wird. Sie hat den Vorteil, dass sie einfach und leicht zu implementieren ist und für den Einstieg geeignet ist. Es besteht jedoch ein gewisses Risiko, dass sie keine Auf- und Abwärtstrends identifizieren kann.

Strategiequellcode
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-02 00:00:00
period: 2h
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/
// © slip_stream

//@version=4

// Simple strategy for riding the momentum and optimising the timings of truer/longer price moves upwards for an long posistions on a daily basis (can be used, but with less effect
// on other time frames. Volume settings would have to be adjusted by the user accordingly. (short positions are not used).
// This strategy has default settings of a short(er) SMA of 10, a long(er) EMA of 20, and Volume trigger of 10 units and above. All these settings can be changed by the user
// using the GUI settings and not having to change the script.

// The strategy will only open a long position when there is a clear indication that price momentum is upwards through the SMA moving and remaining above the EMA (mandatory) and price period indicators
// of either 1) a standard 3 bar movement upwards, 2) a standard but "aggressive" 3 or 4 bar play where the low of the middle resting bars can be equal to or higher than (i.e. not
// the more standard low of about half) of the opening of the ignition bar. The "aggression" of the 3/4 bar play was done in order to counteract the conservatisme of having a mandatory
// SMA remaining higher than the EMA (this would have to be changed in the script by the user if they want to optimise to their own specifications. However, be warned, all programmatic
// settings for the maximum acceptable low of the middle resting bars runs a risk of ignoring good entry points due to the low being minutely e.g. 0.01%, lower than the user defined setting)


strategy(title = "Simple Momentum Strategy Based on SMA, EMA and Volume", overlay = true, pyramiding = 1, initial_capital = 100000, currency = currency.USD)


// Obtain inputs
sma_length = input(defval = 10, minval=1, type = input.integer, title = "SMA (small length)")
ema_length = input(defval = 20,minval=1, type = input.integer, title = "EMA (large length)")
volume_trigger = input(defval = 10, title = "Volume Trigger", type = input.integer)
sma_line = sma(close, sma_length)
ema_line = ema(close, ema_length)


// plot SMA and EMA lines with a cross for when they intersect
plot(sma_line, color = #8b0000, title = "SMA")
plot(ema_line, color = #e3d024, title = "EMA")
plot(cross(sma_line, ema_line) ? sma_line : na, style = plot.style_cross, linewidth = 4, color = color.white)


// Create variables
// variables to check if trade should be entered
//three consecutive bar bar moves upwards and volume of at least one bar is more than 10
enter_trade_3_bar_up = sma_line > ema_line and close[1] >= close [2] and close[3] >= close[4] and close[2] >= close[3] and (volume[1] >= volume_trigger or volume[2] >= volume_trigger or volume[3] >= volume_trigger)
// aggressive three bar play that ensures the low of the middle bar is equal to or greater than the open of the instigator bar. Volume is not taken into consideration (i.e. aggressive/risky)
enter_3_bar_play = sma_line > ema_line and close[1] > close[3] and low[2] >= open[3]
// aggressive four bar play similar to the 3 bar play above
enter_4_bar_play = sma_line > ema_line and close[1] > close[4] and low[2] >= open[4]
trade_entry_criteria = enter_trade_3_bar_up or enter_3_bar_play or enter_4_bar_play // has one of the trade entry criterias returned true?

// exit criteria for the trade: when the sma line goes under the ema line
trade_exit_criteria = crossunder (sma_line, ema_line)


if (year >= 2019)
    strategy.entry(id = "long", long = true, qty = 1, when = trade_entry_criteria)
    strategy.close(id = "long", when = trade_exit_criteria, qty = 1)
    // for when you want to brute force close all open positions: strategy.close_all (when = trade_exit_criteria)