
Die Strategie beurteilt die Richtung der Markttrends durch die Berechnung von Index-Moving Averages (EMA) für zwei verschiedene Perioden. In Kombination mit der Selbstanpassung an Brin wird die Überkauf-Überverkauf-Gelegenheit erkannt, um Trend-Tracking-Transaktionen zu realisieren, vorausgesetzt, dass die Trendrichtung festgelegt ist.
Berechnen Sie die 200- und 30-Zyklen-EMA. 200 EMAs, die größer als 30 EMAs sind, werden als langfristige Aufwärtstrends beurteilt, ansonsten als langfristige Abwärtstrends.
Nach der Bestimmung der Trendrichtung berechnen wir die Basislinie, die Oberbahn und die Unterbahn des Brin-Bandes. Die Basislinie ist ein SMA mit konfigurierbaren Perioden (z. B. 8 Perioden), die Bandbreite ist ein konfigurierbares Vielfaches der unterschiedlichsten Höchst- und Tiefstpreise (z. B. 1.3 und 1.1) in derselben Periode.
Bei einer langen Linie nach oben, wenn der Preis von unten nach oben brechen Unterbahn, als Kaufpunkt beurteilt; bei einer langen Linie nach unten, wenn der Preis von oben nach unten brechen Unterbahn, als Verkaufspunkt beurteilt.
Um einen falschen Durchbruch zu filtern, überprüfen Sie bei einem Durchbruch, ob die Veränderungsrate der vorherigen K-Linie kleiner als ein konfigurierbarer Wert ist (z. B. 3%), und überprüfen Sie, ob die Bahnstrecke zwischen den Brin-Bändern größer als die konfigurierbare Entfernung ist (z. B. 2,2%).
Nach dem Börsengang können konfigurierbare Stop-Losses (z.B. 3%) und Stop-Ops (z.B. 10%) eingerichtet werden, um Gewinne zu sichern.
Die doppelte EMA beurteilt die Haupttrends und vermeidet unordentliche Positionen, wenn die Haupttrends unklar sind.
Die Anpassung an die Brin-Band setzt die Positionöffnungsstelle ein und passt die Bandbreitenparameter automatisch an den Trend an, um den Trend weiter zu sperren.
Die Veränderungsrate und die Mindestbandbreiten-Prüfung filtern wirksam falsche Durchbrüche aus.
Die Stop-Loss-Stopp-Systeme sind vernünftig eingestellt, die Gewinne werden kontrolliert.
Die doppelte EMA ist nicht in der Lage, die Wendepunkte genau zu beurteilen und könnte eine Trendwende verpassen.
Eine falsche Einstellung der Brin-Band-Parameter kann zu einem falschen Signal führen.
Die Fix-Stop-Loss-Schaltfläche ist schwer an Marktschwankungen anzupassen.
In Kombination mit anderen Indikatoren treten die wichtigsten Trendwendepunkte ein.
Die Methode der dynamischen Anpassung der Brin-Band-Parameter.
Setzen Sie ein einmaliges Stop-Loss-System, das die Stop-Line an die spezifischen Bedingungen anpasst.
Die Strategie nutzt die Kombination von zwei EMA-Methoden, um die Haupttrends zu beurteilen, und die Möglichkeit, die Brin-Band zu entdecken, um den Trend zu verfolgen. Der Vorteil der Strategie besteht darin, dass die Eröffnungs- und Stop-Loss-Bedingungen vernünftigerweise festgelegt werden, um die Trendgewinnung effektiv zu sperren. Es besteht jedoch ein gewisses Risiko, wie z. B. die Unfähigkeit, den Wendepunkt zu beurteilen und die Brin-Band-Parameter falsch einzustellen.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2039, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
strategy("Custom Band Strategy", overlay=true)
source = close //종가 기준
//추세 조건 설정
emaLong = ema(source, input(200, minval=0))
emaShort = ema(source, input(30, minval=0))
trend = if emaShort>=emaLong
1
else
-1
plot(emaLong, color=red, transp=0)
plot(emaShort, color=blue, transp=0)
//BB 계산(default 14/3.2)
length = input(8, minval=1)
basis = sma(source, length)
plot(basis, color=green, transp=0)
max=highest(abs(source-basis), length)
factor1 = input(1.3, minval=0.5)
factor2 = input(1.1, minval=0.5)
upper = if trend==1
basis + max*factor1
else
basis + max*factor2
lower = if trend==-1
basis - max*factor1
else
basis - max*factor2
plot1 = plot(upper)
plot2 = plot(lower)
fill(plot1, plot2, transp=80, color=green)
//밴드 이탈 후 재진입 조건 설정
cross_over = (low<=lower and close>=lower) or crossover(close,lower)
cross_under = (high>=upper and close<=upper) or crossunder(close,upper)
//변동율 계산
maxCandle=highest(abs(open-close), length)
roc = abs(open-close)/open*100
changerate = input(3, minval=0.0)
//수익률 계산
value = abs(strategy.position_size)*strategy.position_avg_price
roe = strategy.openprofit/value * 100
expRoeL = (upper-lower)/lower*100
expRoeS = (upper-lower)/upper*100
exp = input(2.2, minval=0.0)
target = input(10, minval=0.0)
stop = input(-3, minval=-10.0)
strategy.close_all(when=roc>=changerate and testPeriod())
strategy.close_all(when=roe>=target and testPeriod())
strategy.close_all(when=roe<=stop and testPeriod())
plotchar(crossover(close,lower) and crossunder(close,upper),color=blue, transp=0, text="cross")
plotchar(roc>=changerate,color=red, transp=0, text="roc")
plotchar(roe>=target,color=blue, transp=0, text="target")
plotchar(roe<=stop,color=green, transp=0, text="stop")
minroe = input(2, minval=0.0)
strategy.close_all(when=cross_under and roe>minroe and testPeriod())
strategy.entry("BBandLE", strategy.long, stop=source, oca_name="BollingerBands", comment="BBandLE", when=(cross_over) and trend==1 and roc<changerate and expRoeL>exp and source>emaLong and strategy.position_size==0 and testPeriod()) //trend==1 and
//else
strategy.close_all(when=cross_over and roe>minroe and testPeriod())
strategy.entry("BBandSE", strategy.short, stop=source, oca_name="BollingerBands", comment="BBandSE", when=(cross_under) and trend==-1 and roc<changerate and expRoeS>exp and source<emaLong and strategy.position_size==0 and testPeriod()) //trend==-1 and