Dual-Track-Handelsstrategie mit gleitendem Durchschnitt


Erstellungsdatum: 2024-02-29 14:54:25 zuletzt geändert: 2024-02-29 14:54:25
Kopie: 1 Klicks: 668
1
konzentrieren Sie sich auf
1617
Anhänger

Dual-Track-Handelsstrategie mit gleitendem Durchschnitt

Überblick

Die Moving-Average-Doppel-Track-Trading-Strategie ist eine Trend-Trading-Strategie, die die doppelten Moving-Average-Kreuzsignale verfolgt. Die Strategie verwendet gleichzeitig den Index-Moving-Average (EMA) und den Gewichteten Moving-Average (WMA) als Handelssignal-Indikator.

Strategieprinzip

Die Handelssignale für diese Strategie stammen aus dem Gold- und Querschnittsträger mit einem kurzfristigen EMA von 10 EMA und einem langfristigen WMA von 20 WMA. Wenn ein kurzfristiger EMA ein langfristiges WMA durchläuft, wird der Kurs von unten nach oben umgedreht und ein Plus erzielt. Wenn ein kurzfristiger EMA ein langfristiges WMA durchläuft, wird der Kurs von oben nach unten umgedreht und ein Plus erzielt.

Die Strategie ermittelt zunächst die Richtung des Handels und setzt einen Stop-Loss unterhalb oder oberhalb eines ATR-Zyklus, während gleichzeitig zwei Stop-Positionen eingerichtet werden, wobei der erste Stop-Loss oberhalb oder unterhalb eines ATR-Zyklus und der zweite Stop-Loss oberhalb oder unterhalb von 2 ATR-Zyklen liegt. Wenn der erste Stop-Loss ausgelöst wird, wird die Position nach dem Auslösen um 50% belegt. Die restlichen Positionen werden mit dem zweiten Stop-Loss und dem beweglichen Stop-Loss ausgelöst.

Die Logik des Moving Stop-Losses ist, dass der Stop-Loss zwischen dem Gewinnmaximum und dem Einstiegspreis bewegt wird, um zu verhindern, dass der Gewinn gesperrt wird.

Vorteile

Die Strategie nutzt die Doppel-Schleifen-Noise-Funktion des Moving Averages, um zufällige Schwankungen in der Marktlage zu filtern und Trendsignale in der mittleren Länge zu erkennen, um zu vermeiden, dass sie eingestellt werden. Die gleichzeitige Einrichtung von zwei Batchstopps erhöht die Gewinnspanne der Strategie und maximiert die Gewinne. Die mobile Stop-Loss-Mechanik ermöglicht es der Strategie, Gewinne zu lockern und Verluste zu reduzieren.

Die Gefahr

Bewegliche Durchschnitte selbst sind stark rückläufig und können das Risiko von Signalen verpassen. Die Kreuzung von zwei Beweglichen Durchschnitten kann in einigen Märkten zu einer großen Anzahl von Falschsignalen führen, was zu Verlusten führt. Die Stop-Loss-Einstellung ist ein wichtiger Bestandteil der Strategie, der leicht durchbrochen werden kann, wenn ein Stop-Loss zu klein ist, und wenn ein Stop-Loss zu groß ist, kann das Risiko nicht effektiv kontrolliert werden.

Außerdem kann die mobile Stop-Loss-Funktion bei starken Marktschwankungen keine gute Schutzfunktion bieten.

Optimierungsrichtung

  1. Es können EMA und WMA mit verschiedenen Parametern getestet werden, um die beste Kombination zu finden. Eine zu kurze EMA oder eine zu lange WMA können die Strategie beeinträchtigen.

  2. ATR-Multiplikatoren oder Fixed-Point-Stop-Losses können je nach Sorten-Eigenschaften und Handelsstil gewählt werden.

  3. Es ist möglich, die Wirkung von partiellen Positions- und vollständigen Stop-Losses zu testen.

  4. Durch die Einführung anderer Indikatoren kann das Filtersignal beurteilt werden, um EMA und WMA zu unterstützen und die Signalqualität zu verbessern.

Zusammenfassen

Die Mobile-Average-Doppel-Track-Trading-Strategie ist insgesamt robust und funktioniert besser im Trend. Durch Parameteroptimierung, Stop-Loss-Optimierung und Signalqualität kann die reale Performance der Strategie weiter verbessert werden. Dies ist eine potenzielle Strategieidee, die es wert ist, in die Realität eingegriffen und investiert zu werden.

Strategiequellcode
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 3h
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/
// © gpadihar

//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Date Range
start_year    = input(title='Start year'   ,defval=2020)
start_month   = input(title='Start month'  ,defval=1)
start_day     = input(title='Start day'    ,defval=1)
start_hour    = input(title='Start hour'   ,defval=0)
start_minute  = input(title='Start minute' ,defval=0)
end_time      = input(title='set end time?',defval=false)
end_year      = input(title='end year'     ,defval=3019)
end_month     = input(title='end month'    ,defval=12)
end_day       = input(title='end day'      ,defval=31)
end_hour      = input(title='end hour'     ,defval=23)
end_minute    = input(title='end minute'   ,defval=59)

// MA
ema_period = input(title='EMA period',defval=10)
wma_period = input(title='WMA period',defval=20)
ema        = ema(close,ema_period)
wma        = wma(close,wma_period)

// Entry Condition
buy =
 crossover(ema,wma) and
 nz(strategy.position_size) == 0 and Buy and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)

// Pips
pip = input(20)*10*syminfo.mintick

// Trading parameters //
var bool  LS  = na
var bool  SS  = na
var float EP  = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na

if buy or sell and strategy.position_size == 0
    EP  := close
    SL1 := EP - pip     * (sell?-1:1)
    SL2 := EP - pip     * (sell?-1:1)
    TP1 := EP + pip     * (sell?-1:1)
    TP2 := EP + pip * 2 * (sell?-1:1) 
   
// current trade direction    
LS := buy  or strategy.position_size > 0
SS := sell or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL 
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS

if LS and high > TP1
    if open <= TP1
        SL2:=min(EP,TSL)
    
if SS and low < TP1
    if open >= TP1
        SL2:=max(EP,TSS)

// Closing conditions
close_long  = LS and open < SL2
close_short = SS and open > SL2

// Buy
strategy.entry("buy"  , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=50)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)

// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=50)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)

// Plots
a=plot(strategy.position_size >  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size <  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) 
c=plot(strategy.position_size >  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
d=plot(strategy.position_size <  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
e=plot(strategy.position_size >  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
f=plot(strategy.position_size <  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
g=plot(strategy.position_size >= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 
h=plot(strategy.position_size <= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 

plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)