
Die Strategie nutzt die Höchst-, Tiefst- und Schlusskurs der letzten Handelstage als Unterstützung und Widerstand für den Tag. Bei einem Durchbruch der Widerstandslage wird ein Plus gemacht und bei einem Rücktest der Unterstützung wird ein Minus gemacht.
Der Code definiert zunächst eine Funktion zur Berechnung der Unterstützungswiderstandsstufe, die CalculateSupportResistance, die den Höchst- und Tiefstpreis sowie den Schlusskurs des vorangegangenen Handelstages als Unterstützungswiderstand des jeweiligen Tages verwendet.
Diese Funktion wird dann in der Hauptlogik aufgerufen, um die drei Preise zu erhalten und die Karte anzuzeigen.
In der Retracement-Logik wird ein Plus getätigt, wenn der Schlusskurs unter dem Vortagsmindestpreis liegt und der aktuelle Preis über diesem Mindestpreis liegt, was einen Bruch darstellt; ein Minus wird getätigt, wenn der Schlusskurs über dem Vortagsmostpreis liegt und der aktuelle Preis unter diesem Höchstpreis ist.
Durch diese bahnbrechenden Modelle können Trends beurteilt und Handelssignale erzeugt werden.
Gegenmaßnahmen:
Die Strategie insgesamt gehört zu den typischen Breakout-Strategie, einfach und intuitiv, durch die Daten des vorherigen Handelstages zu bauen, die Unterstützung des Tages Widerstand, Rückverfolgung der Breakout-Bereich zu machen. Der Vorteil ist leicht zu verstehen, um zu sehen, direkt die Unterstützung Widerstand; der Nachteil ist die Existenz von False-Breakout-Risiko, nicht zu bestimmen, die Trend-Kontinuität. Der nächste Schritt kann von der Bestimmung der Durchbruch-Effektivität, Risikokontrolle, Optimierung der Kapitalverwaltung und so weiter optimiert werden.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)