Diese Strategie verwendet das goldene Kreuz der EMA, um Handelssignale zu generieren, dh ein Kaufsignal wird generiert, wenn die schnelle EMA-Linie über die langsame EMA-Linie überschreitet, und ein Verkaufssignal wird generiert, wenn die schnelle EMA-Linie unter die langsame EMA-Linie überschreitet. Sie gehört zu einer typischen Trendfolgestrategie. Gleichzeitig verwendet die Strategie den ATR-Indikator, um einen dynamischen Stop-Loss zu setzen, um Risiken zu kontrollieren und gleichzeitig Gewinne zu erzielen.
Lösungen:
Die Strategie ist relativ einfach und einfach zu bedienen. Sie erzeugt Signale auf der Grundlage von EMA-Crossovers, folgt dem Trend und verwendet ATR-Trailing-Stop-Loss, um Risiken effektiv zu kontrollieren. Obwohl es einige falsche Signale geben kann, verfügt sie über starke Fähigkeiten zur Erfassung der wichtigsten Trends und die Renditen sind relativ stabil. Sie eignet sich als grundlegende quantitative Handelsstrategie. Es gibt auch ein großes Potenzial für Verbesserungen durch Parameteroptimierung und Funktionsausweiterungen.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © byee322 /// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss //@version=5 strategy("EMA Strategy with ATR Stop Loss", overlay=true) // Define the EMA lengths as input parameters emaLength1 = input(13, "EMA Length 1") emaLength2 = input(48, "EMA Length 2") // Define the moving averages ema1 = ta.ema(close, emaLength1) ema2 = ta.ema(close, emaLength2) // Buy signal: EMA 1 crosses above EMA 2 buy = ta.crossover(ema1, ema2) // Sell signal: EMA 1 crosses below EMA 2 sell = ta.crossunder(ema1, ema2) // Define the state variable state = 0 state := buy ? 1 : sell ? -1 : nz(state[1]) // Change the color of the candles color = state == 1 ? color.green : state == -1 ? color.red : na // Plot the colored candles plotcandle(open, high, low, close, color=color) // Plot the signals on the chart with text labels plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy") plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell") // Calculate the ATR atrVal = ta.atr(14) // Calculate the stop loss level for buy stopLossBuy = buy ? close[1] - 1.5 * atrVal : na // Calculate the stop loss level for sell stopLossSell = sell ? close[1] + 1.5 * atrVal : na // Plot the stop loss level for buy plot(stopLossBuy, color=color.new(color.green, 50), linewidth=3) // Plot the stop loss level for sell plot(stopLossSell, color=color.new(color.red, 50), linewidth=3) if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)