
Die Strategie ist eine kurze Linie-Umkehr-Handelsstrategie, die auf den Brin-Band-Indikatoren basiert. Sie kombiniert die Mittellinie, die Standarddifferenz und den Brin-Band-Kanal, um nach außergewöhnlich abweichenden Gelegenheiten für den Umkehrhandel zu suchen.
Berechnen Sie die Mittellinie und die Standarddifferenz.
Auf- und Abfahrt des Brinbandes berechnet auf Basis der Mittellinie und der Standardabweichung. Die Oberbahnlinie ist Preis + Standardabweichung*1, die untere Linie ist Preis-Standarddifferenz*1。
Wenn der Preis auf oder abgeht, was auf eine außergewöhnliche Preisentwicklung hinweist, entscheiden wir uns für einen Umkehrhandel.
Wenn der Preis unterhalb der unteren Bahn liegt, handeln wir mehrköpfig; wenn der Preis über der oberen Bahn liegt, handeln wir kurzköpfig.
Die Verwendung von Brin-Band-Kanälen als Grundlage für den Umkehrhandel zur Bestimmung von Preisabweichungen.
In Kombination mit dem Gleichgewichtsfaktor kann ein teilweiser Lärmhandel effektiv gefiltert werden.
Die Einführung eines Standarddifferenz-Faktors ermöglicht dem Brin-Band-Kanal eine dynamischere und bessere Beurteilung von Preisabweichungen.
Die Strategie ist kleiner und stabiler.
Der Brin-Band-Indikator ist nicht in der Lage, eine Ausnahme zu bestimmen, wenn es zu einem falschen Preisbruch kommt.
Es ist empfehlenswert, die Parameter entsprechend anzupassen, um die Häufigkeit der Transaktionen zu kontrollieren.
Das Durchbrechen der Brin-Band auf das Abfahrtssignal kann länger dauern und erfordert eine angemessene Anpassung der Parameter für eine bessere Umkehrwirkung.
Die Einführung von Stop-Loss-Systemen ist geeignet, um das Risiko zu kontrollieren.
Die Strategie wird mit Hilfe von Brin-Band-Indikatoren für außergewöhnliche Preise beurteilt und mit Mittellinien und Standarddifferenz-Parametern umgekehrt gehandelt. Sie hat eine gewisse Stabilität. Wir müssen die maximale Rücknahme der Strategie durch Parameteroptimierung, die Einführung von Hilfsfaktoren, die Stop-Loss-Verwaltung und die Positionskontrolle weiter reduzieren und die Stabilität erhöhen.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("BCE Version of EMA, SMA Mean Reversion", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
st_yr_inp = input(defval=2017, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sma_lookback = input(defval=100, title="Lookback Period For SMA")
ema_lookback = input(defval=10, title="Lookback Period For EMA")
long_diff_perc = input(defval=6, title="Percentage Deviation From SMA to go Long")/100
short_diff_perc = input(defval=20, title="Percentage Deviation From SMA to go Short")/100
ema_filter_bars = input(defval=4, title="The number of bars the EMA must rise/fall")
lng_allwd = input(defval=true, title="Allow Longs?")
srt_allwd = input(defval=true, title="Allow Shorts?")
use_stop = input(defval=true, title="Use Stoploss?")
stop_perc = input(defval=30, title="Stop Loss Percentage")/100
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
can_trade = time >= start and time <= end
// Indicators Setup
sma = sma(close, sma_lookback)
ema = ema(close, ema_lookback)
// Strategy Calcuations
close_stdev = stdev(close, sma_lookback)
sd1_upper = close + (close_stdev * 1)
sd1_lower = close - (close_stdev * 1)
close_diff = (close - sma) / sma
// Entries and Exits
longCondition = close > sma and open > sma
if (time >= start and time <= end)
if (longCondition)
strategy.entry("Long", strategy.long)
if use_stop
stop_price = close * (1 - stop_perc)
strategy.order("Long Stoploss", false, stop=stop_price)
shortCondition = close < sma and open < sma
if (shortCondition)
// strategy.entry("Short", strategy.short)
// if use_stop
// stop_price = close * (1 + stop_perc)
// strategy.order("Short Stoploss", true, stop=stop_price)
//if (time >= start)
strategy.close("Long", when=close < sma and open < sma)
//strategy.cancel("Long Stoploss", when=sma < sma[1])
// strategy.close("Short", when=close > sma and open > sma)
//strategy.cancel("Short Stoploss", when=close_diff<=0)
// Plotting
sma_col = sma > sma[1] ? green : red
ema_fill = close_diff <= -long_diff_perc ? lime : close_diff >= short_diff_perc ? maroon : aqua
p_sma = plot(sma, color=sma_col, linewidth=3)
p_ema = plot(ema, color=black, linewidth=2)
p_sd1 = plot(sd1_upper, color=black, linewidth=1, transp=85)
p_sd2 = plot(sd1_lower, color=black, linewidth=1, transp=85)
fill(p_sd1, p_sd2, title='STDEV Fill', color=silver, transp=80)
fill(p_sma, p_ema, title='EMA > Mean Percentage', color=ema_fill, transp=80)