
Die Kernidee der Strategie ist die Einführung eines flexiblen Rahmenwerks für die Auswahl der Messzeiträume, so dass der Benutzer die Startzeit der Messung automatisch oder manuell anpassen kann, je nach Bedarf.
Die Strategie bietet vier Möglichkeiten zur Auswahl des Datumsbereichs durch Eingabe von Parametern: die Verwendung der gesamten Historik, der letzten Tage, der letzten Wochen oder die manuelle Festlegung des Datumsbereichs. Die Strategie setzt die Rückmeldungsfenster dynamisch auf den gewählten Datumsbereich, während die Handelslogik unverändert bleibt, so dass die Unterschiede in der Strategie unter verschiedenen Zeitfenstern verglichen werden können.
Die Strategie besteht aus einem Modul zur Auswahl des Datumsbereichs und einem Modul zur Strategie für den Handel mit doppelter MA.
Die Strategie ist als ein allgemeiner Rahmen für die Rückmessung von Datumsräumen flexibel und anpassbar, um die unterschiedlichen Testbedürfnisse der Benutzer zu erfüllen. Mit einer einfachen und effektiven Doppel-MA-Handelslogik kann die Strategie schnell verifiziert und verglichen werden.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "How To Auto Set Date Range", shorttitle = " ", overlay = true)
// Revision: 1
// Author: @allanster
// === INPUT MA ===
fastMA = input(defval = 14, title = "FastMA", type = input.integer, minval = 1, step = 1)
slowMA = input(defval = 28, title = "SlowMA", type = input.integer, minval = 1, step = 1)
// === INPUT BACKTEST RANGE ===
useRange = input(defval = "WEEKS", title = "Date Range", type = input.string, confirm = false, options = ["ALL", "DAYS", "WEEKS", "MANUAL"])
nDaysOrWeeks = input(defval = 52, title = "# Days or Weeks", type = input.integer, minval = 1)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 15, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2014)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2014)
// === FUNCTION EXAMPLE ===
window() => true
// === LOGIC ===
buy = crossover(sma(close, fastMA), sma(close, slowMA)) // buy when fastMA crosses over slowMA
sell = crossunder(sma(close, fastMA), sma(close, slowMA)) // sell when fastMA crosses under slowMA
// === EXECUTION ===
strategy.entry("L", strategy.long, when=window() and buy) // buy long when "within window of time" AND crossover
strategy.close("L", when=window() and sell) // sell long when "within window of time" AND crossunder
// === PLOTTING ===
plot(sma(close, fastMA), title = 'FastMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot SlowMA