
Die Strategie verwendet die EMA-Evenline golden cross, um ein Handelssignal zu erzeugen, das ein Kaufsignal erzeugt, wenn die schnelle EMA-Linie die langsame EMA-Linie durchquert, und ein Verkaufssignal erzeugt, wenn die schnelle EMA-Linie die langsame EMA-Linie durchquert. Die Strategie gehört zu einer typischen Trendverfolgungsstrategie. Die Strategie nutzt gleichzeitig die ATR-Anzeige, um einen dynamischen Stop-Loss-Bereich einzurichten und gleichzeitig das Risiko zu kontrollieren, um einen Gewinn zu garantieren.
Die Lösung:
Die Strategie ist insgesamt relativ einfach zu bedienen, basierend auf der EMA-Gleichgewicht-Signal erzeugt, die Folge, ergänzt mit ATR-Indikator zu verfolgen Stop-Loss, kann die Risiken effektiv zu kontrollieren. Obwohl es eine gewisse Falschsignale, aber die Fähigkeit, die wichtigsten Trends zu erfassen ist stark, die Erträge sind stabil, geeignet als eine der grundlegenden Strategien für quantitative Handel. Durch Parameter-Optimierung und Funktionserweiterung hat auch viel Raum für Verbesserung, ist es wert, in die Tiefe der Studie.
/*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)