এই কৌশলটি ট্রেডিং ট্রেডিংয়ের জন্য বোলিংজার ব্যান্ড ব্যবহার করে।
কৌশলটি মূলত দীর্ঘ বা সংক্ষিপ্ত দিক নির্ধারণের জন্য বলিংজার ব্যান্ড সূচকের উপর ভিত্তি করে। বলিংজার ব্যান্ডের মধ্যবর্তী ব্যান্ডটি বন্ধের মূল্যের এন-দিনের চলমান গড় এবং ব্যান্ডের প্রস্থটি স্ট্যান্ডার্ড বিচ্যুতি ব্যবহার করে গণনা করা হয়। নিম্ন ব্যান্ডের নীচে একটি ব্রেকআউট দীর্ঘ ব্যবসায়ের সংকেত দেয়, যখন উপরের ব্যান্ডের উপরে একটি ব্রেকআউট সংক্ষিপ্ত ব্যবসায়ের সংকেত দেয়।
অ-ট্রেন্ডিং অস্থির বাজারে অবৈধ ব্রেকআউট এবং ত্রুটিযুক্ত ট্রেডগুলি এড়ানোর জন্য, কৌশলটি কম অস্থিরতার বাজারের শর্তগুলি ফিল্টার করতে এডিএক্স সূচক অন্তর্ভুক্ত করে। যখন এডিএক্স মান একটি প্রান্তিকের নীচে থাকে তখনই ট্রেডিং সংকেত উত্পন্ন হয়। যখন এডিএক্স প্রান্তিকের উপরে যায়, তখন সমস্ত অবস্থানগুলি প্রবণতার শর্তের অপেক্ষায় বন্ধ হয়ে যায়।
কৌশলটি খোলা ব্যবসায়ের জন্য ট্রেলিং স্টপ লস এবং লাভ গ্রহণেরও সেট করে। বিশেষত, একটি অবস্থান খোলার পরে, পূর্ববর্তী এন দিনের সর্বনিম্ন মূল্য এবং সর্বোচ্চ মূল্য স্টপ লস হিসাবে রেকর্ড করা হয় এবং সেই দিকের জন্য লাভের স্তরগুলি গ্রহণ করা হয়। এটি বিপরীতমুখী থেকে ক্ষতি হ্রাস করার সময় লাভকে লক করার অনুমতি দেয়।
কোড লজিক থেকে, কৌশলটি প্রথমে বোলিংজার ব্যান্ড এবং এডিএক্স পরামিতিগুলি গণনা করে। তারপরে এটি পরীক্ষা করে যে দামটি ব্যান্ডের উপরের বা নীচের ব্যান্ডটি ভেঙে দেয় কিনা এবং যদি এডিএক্স ট্রেডিং সিগন্যাল তৈরির জন্য প্রান্তিকের নীচে থাকে। তারপরে স্টপ লস এবং লাভের স্তরগুলি গতিশীলভাবে আপডেট করা হয় এবং বর্তমান অবস্থানের দিকের উপর ভিত্তি করে ট্র্যাক করা হয়।
ভলিউমের সাথে ব্রেকআউট নিশ্চিত করার জন্য অন্যান্য সূচকগুলির সাথে একত্রিত করার বিষয়টি বিবেচনা করুন; প্রবণতা পরিবর্তন সনাক্ত করতে ঢাল ব্যবহার করে ADX ফিল্টারটি অনুকূল করুন; অকাল প্রস্থান এড়াতে স্টপ লস এবং লাভের পরিসীমা প্রসারিত করুন।
কৌশলটি একটি পরিষ্কার এবং সহজ যুক্তি রয়েছে, প্রবণতা শর্তের জন্য এডিএক্স দ্বারা ফিল্টার করা, প্রবণতার সুযোগগুলি ক্যাপচার করার জন্য সুস্পষ্ট ব্রেকআউট সংকেতগুলির জন্য বোলিংজার ব্যান্ডগুলি ব্যবহার করে। ঝুঁকি নিয়ন্ত্রণ এবং মুনাফা লক করার জন্য স্টপ লস এবং লাভ গ্রহণ ব্যবহার করা হয়। বুঝতে এবং বাস্তবায়ন করা সহজ, কৌশলটি একটি মৌলিক প্রবণতা অনুসরণকারী সিস্টেম হিসাবে আরও পরীক্ষা এবং অপ্টিমাইজেশনের মূল্যবান।
/*backtest start: 2023-10-26 00:00:00 end: 2023-11-02 00:00:00 period: 1m basePeriod: 1m 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/ // © tweakerID // This strategy uses Bollinger Bands to buy when the price // crosses over the lower band and sell when it crosses down // the upper band. It only takes trades when the ADX is // below a certain level, and exits all trades when it's above it. //@version=4 strategy("BB + ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value = 0.04, initial_capital=100) //Inputs i_reverse=input(false, title="Reverse Trades") i_ADXClose=input(true, title="ADX Close") i_SL=input(false, title="Use Swing Lo/Hi Stop Loss & Take Profit") i_SwingLookback=input(20, title="Swing Lo/Hi Lookback") i_SLExpander=input(defval=0, step=.5, title="SL Expander") i_TPExpander=input(defval=0, step=.5, title="TP Expander") //ADX Calculations adxlen = input(14, title="ADX Smoothing") dilen = input(20, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) adxlevel=input(30, step=5) //BB Calculations BBCALC=input(false, title="-----------BB Inputs-----------") length = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50) MAlen=input(defval=9) source = close basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev //Entry Logic BUY = crossover(source, lower) and sig < adxlevel SELL = crossunder(source, upper) and sig < adxlevel //SL & TP Calculations SwingLow=lowest(i_SwingLookback) SwingHigh=highest(i_SwingLookback) bought=strategy.position_size != strategy.position_size[1] LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0))*i_SLExpander) SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0))*i_SLExpander) lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))+((valuewhen(bought, atr(14), 0))*i_TPExpander)) sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0)-strategy.position_avg_price)-((valuewhen(bought, atr(14), 0))*i_TPExpander) islong=strategy.position_size > 0 isshort=strategy.position_size < 0 SL= islong ? LSL : isshort ? SSL : na TP= islong ? lTP : isshort ? sTP : na //Entries strategy.entry("long", long=i_reverse?false:true, when=BUY) strategy.entry("short", long=i_reverse?true:false, when=SELL) //EXITS if i_ADXClose strategy.close_all(when=sig > adxlevel) if i_SL strategy.exit("longexit", "long", stop=SL, limit=TP) strategy.exit("shortexit", "short", stop=SL, limit=TP) //Plots plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL") plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP") plot(upper) plot(lower)