Trendfolgestrategie für den Dreifach-Gleitenden-Durchschnitt-Kanal


Erstellungsdatum: 2023-11-06 16:58:57 zuletzt geändert: 2023-11-06 16:58:57
Kopie: 0 Klicks: 750
1
konzentrieren Sie sich auf
1621
Anhänger

Trendfolgestrategie für den Dreifach-Gleitenden-Durchschnitt-Kanal

Übersicht

Die Strategie verwendet eine dreifache Kombination von Moving Averages, um die Richtung des Trends anhand der Reihenfolge der Moving Averages zu bestimmen und die Trends zu verfolgen. Wenn ein schneller, mittlerer und langsamer Moving Average in der Reihenfolge angeordnet ist, machen Sie mehr; wenn ein langsamer, mittlerer und schneller Moving Average in der Reihenfolge angeordnet ist, machen Sie nichts.

Strategieprinzip

Die Strategie verwendet drei unterschiedliche Perioden von Moving Averages, darunter ein schneller Moving Average, ein mittlerer Moving Average und ein langsamer Moving Average.

Teilnahmebedingungen:

  1. Mehr tun: Wenn der schnelle bewegliche Durchschnitt > der mittlere bewegliche Durchschnitt > der langsame bewegliche Durchschnitt eine steigende Tendenz anzeigt, tun Sie mehr.
  2. Kurzstrecken: Wenn der langsame Moving Average < der mittlere Moving Average < der schnelle Moving Average ist, wird der Kurs als abwärtsgerichtet angesehen und kurzstrecken.

Bedingungen für die Teilnahme:

  1. Moving Averages: Die drei Moving Averages werden in der Reihenfolge der Umkehrung platziert.
  2. Stopp-Stop-Loss-Ausgang: Setzen Sie einen festen Stop-Loss-Punkt, z. B. einen Stop-Loss-Margin von 12% und einen Stop-Loss-Margin von 1% nach Erreichen des Stop- oder Stop-Loss-Preises.

Die Strategie ist einfach und unkompliziert. Sie nutzt drei bewegliche Durchschnitte, um die Richtung der Markttrends zu bestimmen, und ermöglicht Trend-Tracking-Transaktionen, die für trendige Märkte geeignet sind.

Vorteilsanalyse

  • Die drei Moving Averages werden verwendet, um Trends zu bestimmen, Marktlärm zu filtern und die Richtung der Trends zu erkennen.
  • Die Verwendung verschiedener periodischer Moving Averages ermöglicht eine genauere Bestimmung der Trendwendepunkte.
  • In Kombination mit einem Moving Average-Indikator und einem festen Stop-Loss-Management-Risiko.
  • Die Strategie ist einfach, intuitiv und leicht zu verstehen.
  • Die Periodenparameter des Moving Averages können leicht optimiert werden, um sie an unterschiedliche Periodenbedingungen anzupassen.

Risiken und Verbesserungen

  • In einem hochzyklischen Umfeld kann der Moving Average zu einem größeren Missverständnis führen, was zu unnötigen Verlusten führt.
  • Es kann in Erwägung gezogen werden, weitere Indikatoren oder Filterbedingungen hinzuzufügen, um die Gewinnquote zu erhöhen.
  • Optimierbare Kombinationen von Moving Average Period Parametern, die sich an die breiteren Marktbedingungen anpassen.
  • Der Trend-Strength-Indikator kann in Kombination mit dem Trend-Weakness-Indikator verwendet werden, um einen Rückschlag zu vermeiden.
  • Es kann ein automatisches Stop-Loss hinzugefügt werden, um die Verluste zu vermeiden.

Zusammenfassung

Die dreifache Moving Average Trend folgt der Strategie Gesamtkonzeption klar und leicht zu verstehen, die Verwendung von Moving Average Trends zu bestimmen, um eine einfache Trend zu folgen Handel. Die Strategie Vorteile sind einfach zu realisieren, durch die Anpassung der Moving Average-Periodenparameter an unterschiedliche Zyklus-Situationen. Aber es gibt auch eine gewisse Gefahr von Fehleinschätzung, kann durch die Zugabe von anderen Indikatoren oder Bedingungen optimiert werden, um unnötige Verluste zu reduzieren, die Strategie zu erhöhen Gewinnrate.

Strategiequellcode
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 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/
// © Jompatan

//@version=5
strategy('Strategy Triple Moving Average', overlay=true, initial_capital = 1000, commission_value=0.04, max_labels_count=200)

//INPUTS
mov_ave = input.string(defval="EMA", title='Moving Average type:', options= ["EMA", "SMA"])

period_1 = input.int(9,  title='Period 1', inline="1", group= "============== Moving Average Inputs ==============")
period_2 = input.int(21, title='Period 2', inline="2", group= "============== Moving Average Inputs ==============")
period_3 = input.int(50, title='Period 3', inline="3", group= "============== Moving Average Inputs ==============")

source_1 = input.source(close, title='Source 1', inline="1", group= "============== Moving Average Inputs ==============")
source_2 = input.source(close, title='Source 2', inline="2", group= "============== Moving Average Inputs ==============")
source_3 = input.source(close, title='Source 3', inline="3", group= "============== Moving Average Inputs ==============")


//EXIT CONDITIONS
exit_ma   = input.bool(true, title= "Exit by Moving average condition", group="================ EXIT CONDITIONS ================")
exit_TPSL = input.bool(false, title= "Exit by Take Profit and StopLoss", group="================ EXIT CONDITIONS ================")
TP        = input.int(12, title='Take Profit', step=1, group="================ EXIT CONDITIONS ================")
SL        = input.int(1, title='Stop Loss', step=1, group="================ EXIT CONDITIONS ================")
plot_TPSL = input.bool(false, title='Show TP/SL lines', group="================ EXIT CONDITIONS ================")


//Date filters
desde = input(defval= timestamp("01 Jan 2023 00:00 -3000"), title="From", inline="12", group= "============= DATE FILTERS =============")
hasta = input(defval= timestamp("01 Oct 2099 00:00 -3000"), title="To  ", inline="13", group= "============= DATE FILTERS =============")
enRango = true

//COMMENTS
//entry_long_comment  = input.string(defval=" ", title="Entry Long comment: ", inline="14", group="============= COMMENTS =============")
//exit_long_comment   = input.string(defval=" ", title="Exit Long comment:  ", inline="15", group="============= COMMENTS =============")
//entry_short_comment = input.string(defval=" ", title="Entry Short comment:", inline="16", group="============= COMMENTS =============")
//exit_short_comment  = input.string(defval=" ", title="Exit Short comment: ", inline="17", group="============= COMMENTS =============")

//============================================================

//Selecting Moving average type
ma1 = mov_ave == "EMA" ? ta.ema(source_1, period_1) : ta.sma(source_1, period_1)
ma2 = mov_ave == "EMA" ? ta.ema(source_2, period_2) : ta.sma(source_2, period_2)
ma3 = mov_ave == "EMA" ? ta.ema(source_3, period_3) : ta.sma(source_3, period_3)

//============================================================
//Entry Long condition: Grouped Moving average from: (ma fast > ma middle > ma slow)
long_condition = (ma1 > ma2) and (ma2 > ma3)

//Entry Short condition: Grouped Moving average from: (ma fast < ma middle < ma slow)
short_condition = (ma1 < ma2) and (ma2 < ma3)

//============================================================

cantidad       = strategy.equity / close
comprado_long  = strategy.position_size > 0
comprado_short = strategy.position_size < 0

var long_profit_price  = 0.0
var long_stop_price    = 0.0
var short_profit_price = 0.0
var short_stop_price   = 0.0

//============================================================

//ENTRY LONG
if not comprado_long and not comprado_short and long_condition and not long_condition[1] and enRango
    strategy.entry('Long', strategy.long, qty=cantidad, comment= "Entry Long")
    if exit_TPSL
        long_profit_price := close * (1 + TP/100)
        long_stop_price   := close * (1 - SL/100)
    else
        long_profit_price := na
        long_stop_price   := na
//============================================================


//ENTRY SHORT
if not comprado_long and not comprado_short and short_condition and not short_condition[1] and enRango
    strategy.entry('Short', strategy.short, qty=cantidad, comment= "Entry Short")
    if exit_TPSL
        short_profit_price := close * (1 - TP/100)
        short_stop_price   := close * (1 + SL/100)
    else
        short_profit_price := na
        short_stop_price   := na
//============================================================


//EXIT LONG 
if comprado_long and exit_ma and long_condition[1] and not long_condition
    strategy.close('Long', comment='Exit-Long(MA)')
if comprado_long and exit_TPSL
    strategy.exit('Long', limit=long_profit_price, stop=long_stop_price, comment='Exit-Long(TP/SL)')
//============================================================


//EXIT SHORT 
if comprado_short and exit_ma and short_condition[1] and not short_condition
    strategy.close('Short', comment='Exit-Short(MA)')
if comprado_short and exit_TPSL
    strategy.exit('Short', limit=short_profit_price, stop=short_stop_price, comment='Exit-Short(TP/SL)')
//============================================================



//PLOTS
plot(ma1, linewidth=2, color=color.rgb(255, 255, 255))
plot(ma2, linewidth=2, color=color.rgb(144, 255, 252))
plot(ma3, linewidth=2, color=color.rgb(49, 167, 255))
//Plot Take Profit line
plot(plot_TPSL ? comprado_long  ? long_profit_price : comprado_short ? short_profit_price : na : na, color=color.new(color.lime, 30), style= plot.style_linebr)
//Plot StopLoss line
plot(plot_TPSL ? comprado_long ? long_stop_price : comprado_short ? short_stop_price : na : na, color=color.new(color.red, 30), style= plot.style_linebr)