
Die Mean Reversion Reverse Strategy basiert auf dem Moving Average. Die Strategie basiert auf dem Gedanken, nach der kritischen Durchschnittslinie zu kaufen und nach Erreichen des vorgegebenen Gewinnziels zu stoppen.
Die Hauptprinzipien dieser Strategie sind die Nutzung von Kurzzeit-Gehaltslinie Umkehr, um eine Rebound-Gelegenheit in der Deckung zu erfassen. Insbesondere, wenn der Preis nach dem Fall der langen Periode Mittel (wie 20-Tage-Linie, 50-Tage-Linie usw.) zeigt starke Überfall Zeichen, aufgrund der Mean Reversion Eigenschaft der Marktschwankungen, die Preise oft erzeugen eine gewisse Ausmaß der Rebound.
Die spezifische Kauflogik dieser Strategie ist: Kauf einer Hand, wenn der Preis unter der 20-Tage-Linie fällt, erhöhen Sie die Position nach dem 50-Tage-Linie, erhöhen Sie die Position nach dem 100-Tage-Linie, erhöhen Sie die Position nach dem 200-Tage-Linie, erhöhen Sie die Position bis zu einer Hand und machen Sie 4 Hände mehr. Nach Erreichen des vorgegebenen Stop-Loss-Ziels wird die Position abgelöst.
Diese Strategie ist insgesamt eine eher klassische und allgemeine Smoothing-Handelsstrategie. Sie nutzt die Smooting-Funktion der Smooting-Linie richtig und kombiniert mehrere Smoothing-Linien, um kurzfristige Kaufmomente zu identifizieren. Sie kontrolliert das Risiko durch die Buchung von Lagerstätten und die rechtzeitige Einstellung.
/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)
// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true
// Profit condition
profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed
// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)
// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]
// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]
// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)
strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)