Diese Strategie erzeugt Handelssignale, indem sie die Überschneidung zwischen zwei EMA-Linien verschiedener Perioden berechnet, um Markttrends zu bestimmen. Sie eröffnet Long-Positionen, wenn die kürzere Periode EMA die längere Periode EMA überschreitet, was einen Aufwärtstrend anzeigt, und schließt Positionen, wenn die kürzere Periode EMA unter die längere Periode EMA überschreitet, was einen Abwärtstrend anzeigt.
Die Strategie wendet hauptsächlich die Goldene Kreuz- und Todeskreuz-Theorie der doppelten EMA-Linien an. Die doppelten EMA-Linien bestehen aus einer langen EMA und einer kurzen EMA. Der kurze EMA-Parameter ist auf 10 Tage und der lange EMA-Parameter auf 21 Tage festgelegt.
Wenn die kurze EMA die lange EMA überschreitet, wird ein Kaufsignal generiert. Wenn die kurze EMA unter die lange EMA überschreitet, wird ein Verkaufssignal generiert. Die Strategie setzt auch Wachstumsrate-Schwellenwerte, wobei nur lange Positionen geöffnet werden, wenn das Wachstum eine positive Schwelle überschreitet, und nur geschlossene Positionen, wenn der Rückgang eine negative Schwelle überschreitet.
Im Einzelnen ist die Kaufbedingung, wenn die kurze EMA höher ist als die lange EMA und die Aktienwachstumsrate die positive Schwelle überschreitet.
Die Gesamtstrategie ist relativ einfach und zuverlässig, wobei doppelte EMA-Crossovers verwendet werden, um Preistrends zu bestimmen und Wachstumsrate-Schwellen zu setzen, um Handelssignale zu generieren. Im Vergleich zu Single-Line-Crossovers kann sie einige falsche Signale filtern. Aber EMA-Linien selbst haben Verzögerungsprobleme. Die Kombination anderer Indikatoren oder dynamischer Parameteranpassung kann die Strategieleistung weiter verbessern.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2) useTimeLimit = input(defval = false, title = "Use Start Time Limiter?") startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1) startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1) startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1) startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1) startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1) startTimeOk() => true lenght0 = input(10) lenght1 = input(21) source = close EmaShort = ema(ema(source, lenght0), lenght0) EmaLong = ema(ema(source, lenght1),lenght1) plot(EmaShort, color=red) plot(EmaLong, color=purple) growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2) thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01) thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001) if( startTimeOk() ) buy_condition = EmaShort > EmaLong and growth > thresholdUp buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown strategy.entry("buy", strategy.long, comment="buy", when=buy_condition) strategy.close(id='buy', when=buy_exit_condition)