
Die Strategie kombiniert die Moving Average, die Bollinger Bands und den Transaktionsgewichteten Durchschnittspreis, um den Eintritt unter den Bedingungen der Goldforkenbildung und der Durchschreitung der langen Durchschnittslinie durch die kurze Durchschnittslinie zu beurteilen. Die Strategie nutzt auch den Bollinger Bands-Kanal und berücksichtigt den Eintritt nur dann, wenn der Preis die Bollinger Bands-Abwärtsbahn berührt, um häufige Eintritte bei Kursschwankungen zu vermeiden.
Die Strategie basiert hauptsächlich auf der Berechnung der Trendrichtung anhand der Mittellinien und nutzt Brines, um einen Kaufpunkt in einer positionierten Bandbreite zu wählen. Insbesondere enthält die Strategie die folgenden Schlüsselregeln:
Das Goldfork-Beschlusssystem wird mit dem 50-Tage-EMA und dem 200-Tage-EMA aufgebaut und wird als in einem mehrköpfigen Aufwärtstrend betrachtet, wenn der schnelle Moving Average über den langsamen Moving Average überschritten wird.
Wenn der Preis höher als der VWAP ist, ist es gut, mehr zu lagern, wenn der Preis in der Aufwärtsphase ist.
Wenn der Preis gerade die Bollinger Bandbreche berührt oder durchbricht, ist dies ein Hinweis darauf, dass der Aktienpreis möglicherweise in der Nähe des Aufprallpunkts ist und eine bessere Chance hat.
Nach dem Eintritt in die Mehrheits-Holding-Position überschreitet der Preis die Bremse, wenn die Bremse rechtzeitig aussteigt.
Durch die Kombination dieser Regeln ist es möglich, die richtigen Kaufpunkte für die Strategie zu wählen und eine Stop-Loss-Stopp-Einschränkung einzusetzen, um einen Gewinn zu gewährleisten.
Das Goldfork-System wird verwendet, um die Richtung der großen Trends zu bestimmen und kleine Gewinner und Verlierer unter den Erschütterungen zu vermeiden.
Der VWAP-Indikator kann die Richtung der Preisschwankungen bestimmen und die Kaufpunkte präziser auswählen.
Der Brin-Band-Indikator entscheidet über den Kaufpunkt, um die Strategie widerstandsfähiger zu machen, während ein Stop-Loss-Stopp eingerichtet wird, um den Gewinn zu sichern.
Es gibt mehrere Indikatoren, die sich gegenseitig verifizieren, um strategische Entscheidungen genauer und zuverlässiger zu machen.
Das Goldfork-System kann falsche Signale auslösen. Die Länge der Mittellinie sollte entsprechend verkürzt werden und mit anderen Kennzahlen verifiziert werden.
Eine falsche Einstellung der Brin-Band-Parameter kann die Strategie auch unwirksam machen. Die Brin-Band-Periode und die Standarddifferenz-Parameter sollten angepasst werden.
Die Stop-Loss-Punkte sind zu locker eingestellt, um die Verluste effektiv zu kontrollieren. Die Stop-Loss-Range sollte angemessen verschärft werden, um sicherzustellen, dass das Risiko kontrolliert wird.
Optimierung der Kombination von Goldforken und Gleichlinien, Test verschiedener Gleichlinienparameter und Suche nach den besten Parametern;
Verschiedene periodische Brin-Band-Parameter werden getestet, um die beste Kombination aus Amplitude und Disparität zu finden.
Test und Optimierung des Stop-Loss-Spektrums, um Risiken wirksam zu kontrollieren und nicht zu leicht auszulösen.
Die Strategie nutzt ein einheitliches Linear-System, Brin-Bands und VWAP-Indikatoren, um die Eintrittszeit zu beurteilen und die Gefahr der Entdeckung und des Risikos zu kontrollieren. Durch die Optimierung der nachfolgenden Parameter und die Änderung der Regeln wird erwartet, dass nachhaltige Chancen in der Branche und im Markt gesichert werden.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee
//@version=4
strategy(title="VWAP and BB strategy [$$]", overlay=true,pyramiding=2, default_qty_value=1, default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1300","0500-1400")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")
//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0
london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate
is_price_dipped_bb(pds,source1) =>
t_bbDipped=false
for i=1 to pds
t_bbDipped:= (t_bbDipped or close[i]<source1) ? true : false
if t_bbDipped==true
break
else
continue
t_bbDipped
is_bb_per_dipped(pds,bbrSrc) =>
t_bbDipped=false
for i=1 to pds
t_bbDipped:= (t_bbDipped or bbrSrc[i]<=0) ? true : false
if t_bbDipped==true
break
else
continue
t_bbDipped
// variables BEGIN
shortEMA = input(50, title="fast EMA", minval=1)
longEMA = input(200, title="slow EMA", minval=1)
//BB
smaLength = input(7, title="BB SMA Length", minval=1)
bbsrc = input(close, title="BB Source")
strategyCalcOption = input(title="strategy to use", type=input.string, options=["BB", "BB_percentageB"], defval="BB")
//addOnDivergence = input(true,title="Add to existing on Divergence")
//exitOption = input(title="exit on RSI or BB", type=input.string, options=["RSI", "BB"], defval="BB")
//bbSource = input(title="BB source", type=input.string, options=["close", "vwap"], defval="close")
//vwap_res = input(title="VWAP Resolution", type=input.resolution, defval="session")
stopLoss = input(title="Stop Loss%", defval=1, minval=1)
//variables END
longEMAval= ema(close, longEMA)
shortEMAval= ema(close, shortEMA)
ema200val = ema(close, 200)
vwapVal=vwap(close)
// Drawings
//plot emas
plot(shortEMAval, color = color.green, linewidth = 1, transp=0)
plot(longEMAval, color = color.orange, linewidth = 1, transp=0)
plot(ema200val, color = color.purple, linewidth = 2, style=plot.style_line ,transp=0)
//bollinger calculation
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(bbsrc, smaLength)
dev = mult * stdev(bbsrc, smaLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
bbr = (bbsrc - lowerBand)/(upperBand - lowerBand)
//bollinger calculation
//plot bb
//plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(vwapVal, color = color.purple, linewidth = 2, transp=0)
// Colour background
//barcolor(shortEMAval>longEMAval and close<=lowerBand ? color.yellow: na)
//longCondition= shortEMAval > longEMAval and close>open and close>vwapVal
longCondition= ( shortEMAval > longEMAval and close>open and close>vwapVal and close<upperBand ) //and time_cond // and close>=vwapVal
//Entry
strategy.entry(id="long", comment="VB LE" , long=true, when= longCondition and ( strategyCalcOption=="BB"? is_price_dipped_bb(10,lowerBand) : is_bb_per_dipped(10,bbr) ) and strategy.position_size<1 ) //is_price_dipped_bb(10,lowerBand)) //and strategy.position_size<1 is_bb_per_dipped(15,bbr)
//add to the existing position
strategy.entry(id="long", comment="Add" , long=true, when=strategy.position_size>=1 and close<strategy.position_avg_price and close>vwapVal) //and time_cond)
barcolor(strategy.position_size>=1 ? color.blue: na)
strategy.close(id="long", comment="TP Exit", when=crossover(close,upperBand) )
//stoploss
stopLossVal = strategy.position_avg_price * (1-(stopLoss*0.01) )
//strategy.close(id="long", comment="SL Exit", when= close < stopLossVal)
//strategy.risk.max_intraday_loss(stopLoss, strategy.percent_of_equity)