Doppelte EMA Golden Cross Death Cross Trendstrategie


Erstellungsdatum: 2023-12-29 15:46:15 zuletzt geändert: 2023-12-29 15:46:15
Kopie: 1 Klicks: 701
1
konzentrieren Sie sich auf
1621
Anhänger

Doppelte EMA Golden Cross Death Cross Trendstrategie

Überblick

Die Strategie verwendet die Gold- und die Todesforke der beiden EMA-Indikatoren, um die Richtung des aktuellen Trends zu bestimmen, und in Kombination mit dem RSI-Indikator vermeidet es, Kauf- und Verkaufsmöglichkeiten zu verpassen.

Strategieprinzip

  1. Berechnung der EMA-Mittellinie für die Perioden 10 und 20 mit den Namen ma00 und ma01
  2. Wenn ma00 auf ma01 getragen wird, erzeugt es ein Kaufsignal
  3. Wenn Ma00 unter Ma01 ein Verkaufsignal erzeugt
  4. Gleichzeitig erzeugt ein Kaufsignal, wenn der Preis ma00 überschreitet, wenn ma00 höher als ma01 ist
  5. Wenn der Preis unter ma00 liegt, wird ein Verkaufssignal erzeugt, wenn ma00 unter ma01 liegt.
  6. Durch diese Doppelbeurteilung kann vermieden werden, dass man einen Teil des Kauf- und Verkaufsplatzes verpasst.
  7. Setzen Sie Stop-Loss- und Stop-Stop-Preise, um Risiken zu kontrollieren

Analyse der Stärken

  1. Mit doppelten EMA-Urteilen kann ein falscher Durchbruch wirksam gefiltert werden
  2. Doppelbesteuerung
  3. Die Stop-Loss-Stopp-Einstellung ist für die Risikokontrolle geeignet

Risikoanalyse

  1. Die Doppel-EMA-Gleichgewichtsstrategie ist eine Trendverfolgungsstrategie, die häufig bei Erschütterungen gekauft und verkauft wird und leicht zu verlieren ist.
  2. Es ist nicht möglich, den Trendwendepunkt genau zu bestimmen, was zu Verlusten führen kann.
  3. Unkorrekt eingestellte Stop-Loss-Punkte können Verluste ausweiten

Optimierungsrichtung

  1. EMA-Zyklen können entsprechend optimiert werden, um die optimale Kombination von Parametern zu finden
  2. Die Strategie kann mit anderen Indikatoren beurteilt werden, um die Stabilität der Strategie zu verbessern.
  3. Dynamische Stop-Loss-Einstellungen, die den Stop-Loss in Echtzeit an Marktbewegungen anpassen
Strategiequellcode
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title='[STRATEGY][RS]MicuRobert EMA cross V1', 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?color.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=11.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:',  defval=10)
ma_length01 = input(title='DEMA length:',  defval=20)
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 ? false : 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 ? false : 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)

//What i add .!
pos = iff(ma01 < ma00 , 1,
	    iff(ma01 > ma00 , -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue)
plot(ma00, color=red, title="MA")
plot(ma01, color=blue, title="EMA")