Diese Strategie nutzt das Crossover der 20-Tage- und 55-Tage-exponentiellen gleitenden Durchschnitte (EMAs), um Handelssignale zu generieren. Ein Kaufsignal wird ausgelöst, wenn die kurzfristige EMA über die langfristige EMA überschreitet, und ein Verkaufssignal wird ausgelöst, wenn das Gegenteil auftritt. Die Strategie führt auch Hebelhandel ein, der sowohl potenzielle Renditen als auch Risiken verstärkt. Darüber hinaus enthält die Strategie eine bedingte Einschränkung, die nur eine Position einzugeben erlaubt, wenn der Preis nach dem Crossover die kurzfristige EMA berührt, um das Risiko falscher Signale zu reduzieren. Schließlich haben die Benutzer die Möglichkeit, einfache gleitende Durchschnitte (SMAs) anstelle von EMAs zu verwenden.
Diese Strategie kombiniert gleitende Durchschnitts-Crossovers und Hebelhandel, um Markttrends zu erfassen und gleichzeitig die Rendite zu amplifizieren. Hebelwirkung birgt jedoch auch hohe Risiken und muss mit Vorsicht verwendet werden. Darüber hinaus gibt es Raum für Optimierung in dieser Strategie, die durch Einführung mehrerer Indikatoren, dynamische Anpassung von Parametern usw. erreicht werden kann. Insgesamt eignet sich diese Strategie für Händler, die hohe Renditen anstreben und hohe Risiken tragen können.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy with Leverage, Conditional Entry, and MA Option", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs for backtesting period startDate = input(defval=timestamp("2023-01-01"), title="Start Date") endDate = input(defval=timestamp("2024-04-028"), title="End Date") // Input for leverage multiplier leverage = input.float(3.0, title="Leverage Multiplier", minval=1.0, maxval=10.0, step=0.1) // Input for choosing between EMA and MA useEMA = input.bool(true, title="Use EMA (true) or MA (false)?") // Input source and lengths for MAs src = close ema1_length = input.int(20, title='EMA/MA-1 Length') ema2_length = input.int(55, title='EMA/MA-2 Length') // Calculate the MAs based on user selection pema1 = useEMA ? ta.ema(src, ema1_length) : ta.sma(src, ema1_length) pema2 = useEMA ? ta.ema(src, ema2_length) : ta.sma(src, ema2_length) // Tracking the crossover condition for strategy entry crossedAbove = ta.crossover(pema1, pema2) // Define a variable to track if a valid entry condition has been met var bool readyToEnter = false // Check for MA crossover and update readyToEnter if (crossedAbove) readyToEnter := true // Entry condition: Enter when price touches MA-1 after the crossover // and (low <= pema1 and high >= pema1) entryCondition = readyToEnter // Reset readyToEnter after entry if (entryCondition) readyToEnter := false // Exit condition: Price crosses under MA-1 exitCondition = ta.crossunder(pema1, pema2) // Check if the current bar's time is within the specified period inBacktestPeriod = true // Execute trade logic only within the specified date range and apply leverage to position sizing if (inBacktestPeriod) if (entryCondition) strategy.entry("Long", strategy.long, qty=strategy.equity * leverage / close) if (exitCondition) strategy.close("Long") // Plotting the MAs for visual reference ema1_color = pema1 > pema2 ? color.red : color.green ema2_color = pema1 > pema2 ? color.red : color.green plot(pema1, color=ema1_color, style=plot.style_line, linewidth=1, title='EMA/MA-1') plot(pema2, color=ema2_color, style=plot.style_line, linewidth=1, title='EMA/MA-2')