
Strategi ini menggabungkan penunjuk purata bergerak, penunjuk Brin dan penunjuk harga purata bertimbangan dengan jumlah transaksi, untuk menilai kemasukan dalam keadaan pembentukan garpu emas, garis rata-rata pendek yang melintasi garis rata-rata panjang. Strategi ini juga menggunakan saluran Brin, hanya mempertimbangkan kemasukan apabila harga menyentuh Brin di bawah rel, untuk mengelakkan kerap masuk dalam pergerakan pasaran.
Strategi ini terutamanya menilai arah trend melalui penunjuk rata-rata, menggunakan Brin untuk memilih tempat membeli dalam julat turun naik. Secara khusus, strategi ini mengandungi beberapa peraturan utama berikut:
Menggunakan EMA 50 hari dan EMA 200 hari untuk membina sistem penghakiman garpu emas, yang dianggap berada dalam trend naik bertingkat apabila ia melintasi rata-rata bergerak perlahan di atas rata-rata bergerak cepat;
Apabila harga lebih tinggi daripada VWAP, ia dianggap sebagai tahap kenaikan harga yang baik untuk membuat lebih banyak simpanan;
Harga baru sahaja menyentuh atau menembusi garis bawah Brin, menunjukkan bahawa peluang lebih baik untuk harga saham berada di sekitar titik rebound;
Setelah memasuki pegangan berbilang, harga melebihi Brin yang membawa ke landasan dan berhenti tepat pada masanya untuk keluar.
Dengan kombinasi beberapa peraturan ini, strategi ini dapat memilih tempat pembelian yang sesuai dalam keadaan pasaran lembu, dan menetapkan halangan stop loss untuk memastikan keuntungan.
Menggunakan sistem penilaian garpu emas untuk menentukan arah trend besar dan mengelakkan kemenangan kecil dalam keadaan gegaran;
Indeks VWAP dapat menentukan arah pergerakan harga, menjadikan pilihan tempat pembelian lebih tepat;
Blinklink-link membuat strategi lebih berdaya tahan untuk menentukan titik beli, sambil menetapkan halangan stop-loss untuk mengunci keuntungan;
Pelbagai indikator saling disahkan untuk membuat keputusan strategi lebih tepat dan lebih dipercayai.
Sistem penilaian garpu emas mungkin mengeluarkan isyarat palsu, panjang kitaran garis rata-rata harus dikurangkan dengan sewajarnya, dan bekerjasama dengan pengesahan petunjuk lain;
Tetapan parameter Brinband yang tidak betul juga boleh menyebabkan strategi tidak berfungsi, dan perlu menyesuaikan kitaran Brinband dan parameter standard deviasi;
Tetapan titik hentian terlalu longgar dan tidak dapat mengawal kerugian dengan berkesan. Julat hentian harus diperketat dengan sewajarnya untuk memastikan risiko dapat dikawal.
Mengoptimumkan kombinasi garis rata garpu emas, menguji parameter garis rata yang berbeza untuk mencari parameter terbaik;
Uji parameter pita Brin yang berbeza untuk mencari kombinasi parameter terbaik untuk amplitudo dan dispersi;
Ujian dan pengoptimuman jangkauan hentian untuk mengawal risiko dengan berkesan, tetapi tidak terlalu mudah dicetuskan.
Strategi ini menggunakan sistem garis rata, Brinband dan VWAP untuk menentukan masa masuk, menyeimbangkan peluang penemuan dan risiko kawalan. Dengan pengoptimuman parameter dan pengubahsuaian peraturan seterusnya, peluang berterusan dalam industri dan pasaran dijangka dikunci.
/*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)