Doppelte EMA Golden Cross Breakout-Strategie


Erstellungsdatum: 2023-12-20 16:34:58 zuletzt geändert: 2023-12-20 16:34:58
Kopie: 1 Klicks: 721
1
konzentrieren Sie sich auf
1621
Anhänger

Doppelte EMA Golden Cross Breakout-Strategie

Überblick

Die Strategie basiert auf dem 5-minütigen und 34-minütigen Index Moving Average (EMA) und ist eine Trend-Tracking-Strategie für Gold-Cross- und Death-Cross-Operationen. Wenn die Schnelle von unten durch die langsame Linie geht, wird eine Long-Position eröffnet; wenn die Schnelle von oben durch die langsame Linie geht, wird eine Leer-Position eröffnet.

Strategieprinzip

  1. Die schnelle EMA5 und die langsame EMA34 bilden das Handelssignal. Die EMA5 reagiert auf die jüngsten Preisänderungen, die EMA34 auf die mittleren Preisänderungen.
  2. Wenn die schnelle Linie die langsame Linie durchquert, wird für Gold gekreuzt, um zu zeigen, dass die kurzfristige Entwicklung besser ist als die mittelfristige, und mehrere Optionen gehalten werden.
  3. Wenn die kurze Linie unter der langsamen Linie durchschreitet, kreuzen Sie für den Tod, um zu zeigen, dass die kurzfristige Entwicklung schlechter ist als die mittelfristige, und halten Sie eine Flugkarte.
  4. Setzen Sie Stop Losses, um Gewinne zu sichern und Risiken zu kontrollieren.

Analyse der Stärken

  1. Mit einem doppelten EMA-Filter wird ein falscher Durchbruch vermieden.
  2. Das ist eine sehr wichtige Aufgabe, die sich mit der Entwicklung der Medienbranche befasst.
  3. Setzen Sie Stop Loss, um das Risiko zu kontrollieren.

Risikoanalyse

  1. Die doppelte EMA ist nachlässig und kann kurzfristige Handelsmöglichkeiten verpassen.
  2. Die Stop-Loss-Punkte sind zu hoch eingestellt, die Gefahr, dass die Verluste zunehmen.
  3. Die Stop-Points sind zu klein eingestellt, um die Gewinnchancen zu maximieren.

Optimierungsrichtung

  1. Optimierung der EMA-Parameter und Suche nach der optimalen Kombination.
  2. Optimierung der Stop-Loss-Punkte, um mehr Geld zu sparen.
  3. Zusätzliche Filter für andere Indikatoren wie MACD, KDJ usw. verbessern die Signalgenauigkeit.

Zusammenfassen

Die Strategie erzeugt Handelssignale durch Gold- und Todeskreuzungen von zwei EMA-Bewegungsmittel und setzt Stopp-Stopps, um das Risiko zu kontrollieren. Sie ist eine einfache und effektive mittelfristige Trendverfolgungsstrategie. Die Optimierung der Stopp-Stopp-Stopp-Parameter und die Einführung von Filtersignalen für andere Indikatoren können die stabile Profitabilität der Strategie weiter verbessern.

Strategiequellcode
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', shorttitle='S', overlay=true, pyramiding=0, initial_capital=100000)
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
USE_TRAILINGSTOP = input(title='Use Trailing Stop?', type=bool, defval=true)
trade_session = input(title='Trade Session:',defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
trade_size = input(title='Trade Size:', type=float, defval=1)
tp = input(title='Take profit in pips:', type=float, defval=55.0) * (syminfo.mintick*10)
sl = input(title='Stop loss in pips:', type=float, defval=22.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:',  defval=5)
ma_length01 = input(title='DEMA length:',  defval=34)
price = input(title='Price source:',  defval=open)

//  ||--- NO LAG EMA, Credit LazyBear:  ---||
f_LB_zlema(_src, _length)=>
    _ema1=ema(_src, _length)
    _ema2=ema(_ema1, _length)
    _d=_ema1-_ema2
    _zlema=_ema1+_d
//  ||-------------------------------------||

ma00 = f_LB_zlema(price, ma_length00)
ma01 = f_LB_zlema(price, ma_length01)
plot(title='M0', series=ma00, color=black)
plot(title='M1', series=ma01, color=black)

isnewbuy = change(strategy.position_size)>0 and change(strategy.opentrades)>0
isnewsel = change(strategy.position_size)<0 and change(strategy.opentrades)>0

buy_entry_price = isnewbuy ? price : buy_entry_price[1]
sel_entry_price = isnewsel ? price : sel_entry_price[1]
plot(title='BE', series=buy_entry_price, style=circles, color=strategy.position_size <= 0 ? na : aqua)
plot(title='SE', series=sel_entry_price, style=circles, color=strategy.position_size >= 0 ? na : aqua)
buy_appex = na(buy_appex[1]) ? price : isnewbuy ? high : high >= buy_appex[1] ? high : buy_appex[1]
sel_appex = na(sel_appex[1]) ? price : isnewsel ? low : low <= sel_appex[1] ? low : sel_appex[1]
plot(title='BA', series=buy_appex, style=circles, color=strategy.position_size <= 0 ? na : teal)
plot(title='SA', series=sel_appex, style=circles, color=strategy.position_size >= 0 ? na : teal)
buy_ts = buy_appex - sl
sel_ts = sel_appex + sl
plot(title='Bts', series=buy_ts, style=circles, color=strategy.position_size <= 0 ? na : red)
plot(title='Sts', series=sel_ts, style=circles, color=strategy.position_size >= 0 ? na : red)

buy_cond1 = crossover(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
buy_cond0 = crossover(price, ma00) and ma00 > ma01 and (USE_TRADESESSION ? istradingsession : true)
buy_entry = buy_cond1 or buy_cond0
buy_close = (not USE_TRAILINGSTOP ? low <= buy_entry_price - sl: low <= buy_ts) or high>=buy_entry_price+tp//high>=last_traded_price + tp or low<=last_traded_price - sl //high >= hh or 
sel_cond1 = crossunder(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
sel_cond0 = crossunder(price, ma00) and ma00 < ma01 and (USE_TRADESESSION ? istradingsession : true)
sel_entry = sel_cond1 or sel_cond0
sel_close = (not USE_TRAILINGSTOP ? high >= sel_entry_price + sl : high >= sel_ts) or low<=sel_entry_price-tp//low<=last_traded_price - tp or high>=last_traded_price + sl //low <= ll or 

strategy.entry('buy', long=strategy.long, qty=trade_size, comment='buy', when=buy_entry)
strategy.close('buy', when=buy_close)
strategy.entry('sell', long=strategy.short, qty=trade_size, comment='sell', when=sel_entry)
strategy.close('sell', when=sel_close)