
Es handelt sich um eine Strategie, bei der der Bollinger Bands Indicator verwendet wird. Die Strategie soll die Bollinger Bands Indicator nutzen, um zu erkennen, wann die Preise stark schwanken, und entsprechend zu kaufen oder zu verkaufen.
Die Strategie berechnet die Oberbahn, die Mittelbahn und die Unterbahn des Brinbands, um zu beurteilen, ob der aktuelle Preis in der Schwankungsbreite ist, um zu entscheiden, ob es an der Zeit ist, eine Position aufzubauen oder zu schließen. Wenn der Preis nahe an der Oberbahn ist, wird er als Multi-Head-Hextrenzone betrachtet, und die Strategie wählt eine schlechte Position zu verkaufen. Wenn der Preis nahe an der Unterbahn ist, wird er als Leer-Head-Hextrenzone betrachtet, und die Strategie wählt einen Kauf.
Darüber hinaus führt die Strategie einen Trendumkehrfaktor ein, der bei einem Umkehrsignal auch eine entsprechende Kauf- oder Verkaufsentscheidung auslöst. Konkret ist die Strategielogik wie folgt:
Das ist die grundlegende Handelslogik der Strategie. Durch die Nutzung der Eigenschaften der Brin-Band, kombiniert mit dem Trend und den Umkehrfaktoren, versucht die Strategie, die Umkehrpunkte zu erfassen und zu handeln, wenn die Schwankungen zunehmen.
Im Vergleich zu einer gewöhnlichen Moving-Average-Strategie hat diese Strategie folgende Vorteile:
Insgesamt ist die Strategie eine gute Kombination von Brin-Band- und Preis-Einheit-Urteilen, die am vernünftigen Wendepunkt gehandelt wird, um ein gewisses Maß an Gewinn zu garantieren und das Risiko zu kontrollieren.
Allerdings ist diese Strategie mit Risiken verbunden, die sich in folgenden Punkten widerspiegeln:
In diesem Zusammenhang kann man in Zukunft Optimierungen in folgenden Bereichen vornehmen:
Diese Strategie ist im Allgemeinen eine typische Brin-Band-Handelsstrategie-Vorlage. Sie umgeht die Nachteile von ineffizienten Transaktionen, die nur mit Brin-Bändern erzeugt werden können. Durch die Einführung von Trendumkehr-Urteilen kann eine effektive Filterung von Signalen erzielt werden, die in der Theorie eine bessere Strategieleistung ermöglichen.
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")
//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//Lines
col = showbands ? black : na
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)
//Body
body = abs(close - open)
abody = ema(body, 30)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2
//Trading
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
if exit
strategy.close_all()