Die Strategie beurteilt die Markttrends durch die Berechnung der Kreuzung der EMA-Mittellinien zweier unterschiedlicher Perioden und erzeugt entsprechend ein Handelssignal. Wenn der Markt in einem Aufwärtstrend ist, wird die Strategie mehr Positionen aufnehmen, wenn der Markt in einem Aufwärtstrend ist. Wenn der Markt in einem Abwärtstrend ist, tritt die Strategie aus.
Die Strategie verwendet hauptsächlich die Gold- und Forks-Theorie der doppelten EMA-Gewinnlinien. Die doppelte EMA-Gewinnlinie ist in eine Long- und eine Short-EMA unterteilt. Die Short-EMA-Parameter sind auf 10 Tage und die Long-EMA-Parameter auf 21 Tage eingestellt.
Wenn die kurze EMA die lange EMA durchbricht, erzeugt sie ein Kaufsignal; wenn die kurze EMA die lange EMA unter der kurzen EMA durchbricht, erzeugt sie ein Verkaufsignal. Die Strategie setzt gleichzeitig eine Wachstumsmarge ein, die nur dann erhöht wird, wenn die Wachstumsrate die Marge überschreitet, und nur dann, wenn der Rückgang die Marge überschreitet.
Konkret ist die Kaufbedingung der kurze EMA höher als die lange EMA, und die Aktienkurswachstumsrate über dem festgelegten positiven Schwellenwert; die Off-Positionbedingung der kurze EMA niedriger als die lange EMA, und die Aktienkurswachstumsrate niedriger als der festgelegten negativen Schwellenwert.
Diese Strategie ist insgesamt relativ einfach und zuverlässig, um die Preisentwicklung durch die doppelte EMA-Kreuzung zu beurteilen und die Wachstumstiefe zu setzen, um ein Handelssignal zu senden. Im Vergleich zu einer einzelnen Durchschnittslinie-Kreuzung kann ein teilweises Falschsignal gefiltert werden. Die EMA-Gleichlinie selbst hat jedoch Probleme mit der Verzögerung, die in Kombination mit anderen Indikatoren oder dynamischen Komponenten die Effektivität der Strategie weiter verbessern können.
/*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)