Die Dual Moving Average Channel Trading Strategie ist eine Trend-Trading-Strategie, die Crossovers zwischen Doppel Moving Averages verfolgt. Die Strategie verwendet den Exponential Moving Average (EMA) und den Weighted Moving Average (WMA) als Handelssignalindikatoren. Wenn die kurzfristige EMA über die langfristige WMA überschreitet, geht die Strategie lang.
Die Handelssignale dieser Strategie stammen aus dem goldenen Kreuz und dem Todeskreuz zwischen der 10-Perioden-kurzfristigen EMA und der 20-Perioden-langfristigen WMA. Wenn die kurzfristige EMA über die langfristige WMA überschreitet, bedeutet dies, dass sich der Markt umkehrt und somit lang geht. Wenn die kurzfristige EMA unter die langfristige WMA überschreitet, bedeutet dies, dass der Markt umkehrt und somit kurz geht.
Nach der Bestimmung der Handelsrichtung setzt die Strategie den Stop-Loss um 1 ATR-Periode unter oder über dem Einstiegspreis mit zwei Take-Profits - der erste Take-Profit wird um 1 ATR über oder unter dem Einstiegspreis und der zweite Take-Profit um 2 ATRs über oder unter dem Einstiegspreis festgelegt.
Die Trailing Stop Loss Logik - wird aktiviert, sobald der höchste Preis oder der niedrigste Preis die erste Gewinnspanne erreicht hat.
Die Strategie nutzt die doppelte Glättungsgeräuschreduktionsfunktion von gleitenden Durchschnitten, um zufällige Schwankungen auf dem Markt effektiv auszufiltern und mittelfristige bis langfristige Trendsignale zu identifizieren, um so zu vermeiden, in Whipsaws gefangen zu werden. Darüber hinaus erhöhen die zweistufigen Take-Gewinne die Gewinnzone der Strategie und maximieren den Gewinn. Der Trailing-Stop-Mechanismus ermöglicht es der Strategie auch, Gewinne zu erzielen und Verluste zu reduzieren.
Bei den gleitenden Durchschnitten selbst besteht eine größere Verzögerung, wodurch die Gefahr besteht, dass Signale fehlen.
Die Stop-Loss-Einstellung ist ein wichtiger Bestandteil der Strategie. Wenn der Stop-Loss zu klein ist, ist er anfällig für Marktlärm. Wenn der Stop-Loss zu groß ist, kann es nicht gelingen, Risiken effektiv zu kontrollieren.
Wenn der Markt zudem heftig schwankt, kann der Trailing-Stop möglicherweise nicht sehr gut zum Schutz dienen.
Test EMAs und WMAs mit verschiedenen Parametern, um die optimale Parameterkombination zu finden.
Bei der Auswahl von Fixpunkten oder ATR-Mehrfach-Stop-Loss wird auf der Grundlage verschiedener Produktmerkmale und Handelsstile gedacht.
Prüfung der Wirkung des Teilstands und des Vollstands.
Einführung anderer Indikatoren für die Signalfilterung zur Unterstützung der EMA und der WMA, um die Signalqualität zu verbessern.
Im Allgemeinen ist die Dual Moving Average Channel-Handelsstrategie relativ robust und funktioniert gut in Trending-Märkten. Durch die Optimierung von Parametern, Stop-Loss-Mechanismen und die Verbesserung der Signalqualität kann die tatsächliche Handelsleistung dieser Strategie weiter verbessert werden. Dies ist eine vielversprechende Strategieidee, die eine eingehende Forschung und Anwendung im tatsächlichen Handel wert ist.
/*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)