এই কৌশলটি চলমান গড়, বোলিংজার ব্যান্ড এবং ভলিউম ওয়েটেড গড় মূল্য (ভিডাব্লুএপি) সূচকগুলির সংমিশ্রণ করে। এটি যখন সোনার ক্রস গঠন করে এবং দ্রুত চলমান গড়টি ধীরের উপরে ভেঙে যায় তখন এটি দীর্ঘ পজিশনে প্রবেশ করে। কৌশলটি বোলিংজার ব্যান্ড চ্যানেলটিও ব্যবহার করে এবং কেবলমাত্র যখন দামটি নীচের ব্যান্ডটি স্পর্শ করে তখনই প্রবেশ করে, এইভাবে বাজারের ওঠানামা মধ্যে ঘন ঘন প্রবেশ এবং প্রস্থান এড়ানো।
মূল যুক্তিটি প্রবণতা দিক নির্ধারণের জন্য চলমান গড়ের উপর নির্ভর করে এবং ক্রয় সংকেতের জন্য ওঠানামা পরিসীমা সনাক্ত করতে বোলিংজার ব্যান্ড। বিশেষত, এর নিম্নলিখিত মূল নিয়ম রয়েছেঃ
50 দিনের EMA এবং 200 দিনের EMA ব্যবহার করে গোল্ডেন ক্রস সিস্টেম তৈরি করুন। যখন দ্রুত EMA ধীর EMA এর উপরে অতিক্রম করে তখন একটি আপ প্রবণতা সনাক্ত করা হয়।
যখন দাম VWAP এর উপরে থাকে, তখন এটি নির্দেশ করে যে দামটি একটি আপফ্রন্ট ফ্যাসে রয়েছে যা লং পজিশনের পক্ষে।
যখন মূল্য বোলিঞ্জারের নিম্ন ব্যাণ্ড স্পর্শ করে বা ভেঙে যায়, তখন এটি বোঝায় যে মূল্যটি একটি রিবাউন্ড পয়েন্টের কাছাকাছি হতে পারে, যা একটি ভাল সুযোগ প্রদান করে।
যখন দাম বোলিংজার ব্যান্ডের উপরে চলে যায় তখন মুনাফা নিয়ে লং পজিশন থেকে বেরিয়ে আসা।
এই নিয়মগুলিকে একত্রিত করে, কৌশলটি ষাঁড়ের বাজারে উপযুক্ত দীর্ঘ প্রবেশগুলি সনাক্ত করতে সক্ষম হয় এবং রিটার্নগুলি সুরক্ষিত করার জন্য স্টপ লস / মুনাফা গ্রহণ সেট করে।
গোল্ডেন ক্রস সিস্টেম মূল প্রবণতা দিক নির্ধারণ করে, সংহতকরণের মধ্যে ছোট জয় এবং ক্ষতি এড়ানো।
ভিডাব্লুএপি আরও সুনির্দিষ্ট ক্রয় সংকেতের জন্য মূল্য তরঙ্গের দিকনির্দেশনা পরিমাপ করে।
বোলিংজার ব্যান্ডগুলি ক্রয়ের অবস্থান নির্ধারণ করে স্থিতিস্থাপকতা যোগ করে এবং লাভের ক্ষেত্রে স্টপ লস/লাভ গ্রহণ লক স্থাপন করে।
একাধিক নিশ্চিতকরণ সূচক নির্ভরযোগ্যতা বৃদ্ধি করে।
গোল্ডেন ক্রস ভুল সংকেত দিতে পারে।
ভুল বোলিংজার পরামিতি কৌশলটিকে অকার্যকর করে তুলতে পারে।
একটি স্টপ লস থ্রেশহোল্ড খুব বড় ক্ষতি কার্যকরভাবে সীমাবদ্ধ করতে ব্যর্থ হয়। নিয়ন্ত্রণযোগ্য ঝুঁকি নিশ্চিত করার জন্য স্টপ লস পরিসীমা সংকীর্ণ করুন।
সেরাটি খুঁজে পেতে বিভিন্ন পরামিতি পরীক্ষা করে এমএ সমন্বয়গুলি অনুকূল করুন।
আরও ভাল ব্যান্ডউইথ এবং অস্থিরতার জন্য বোলিঞ্জার পিরিয়ড এবং প্যারামিটার সেট পরীক্ষা করুন।
ঝুঁকি নিয়ন্ত্রণের ভারসাম্য এবং অকাল ট্রিগারিং এড়ানোর জন্য স্টপ লস পরিসীমা পরীক্ষা করুন এবং সামঞ্জস্য করুন।
এই কৌশলটি এন্ট্রিগুলির জন্য এমএ, বোলিংজার এবং ভিডাব্লুএপি বিশ্লেষণকে একীভূত করে সুযোগগুলি আবিষ্কার এবং ঝুঁকি নিয়ন্ত্রণের মধ্যে ভারসাম্য বজায় রাখে। ক্রমাগত সূক্ষ্মতা এবং অপ্টিমাইজেশন এটিকে সময়ের সাথে সাথে সেক্টর এবং বাজারের প্রবণতা থেকে লাভবান হতে দেয়।
/*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)