
এই কৌশলটি বুলিন-ব্যান্ড সূচক ব্যবহার করে পলিফোরিড ব্রেকপয়েন্টগুলি খুঁজে বের করে এবং ADX সূচকগুলির সাথে মিলিত হয় যা নিম্নমুখী অস্থিরতা থেকে প্রতিকূল আচরণগুলি ফিল্টার করে এবং ট্রেন্ড ট্র্যাকিংয়ের জন্য ব্যবহার করা হয়।
এই কৌশলটি মূলত বুলিন ব্যান্ডের সূচকের উপর ভিত্তি করে বহুমুখী দিকের বিচার করে। বুলিন ব্যান্ডের কেন্দ্রীয় লাইনটি N দিনের সমাপ্তির দামের চলমান গড়, ব্যান্ডউইথটি স্ট্যান্ডার্ড ডিফারেনশিয়ালের মাধ্যমে গণনা করা হয়। যখন দামটি অবরুদ্ধ হয়, তখন এটি একটি বহুমুখী সংকেত হিসাবে বিচার করা হয়; যখন দামটি অবরুদ্ধ হয়, তখন এটি একটি ফাঁকা সংকেত হিসাবে বিচার করা হয়।
প্রবণতা ছাড়াই অকার্যকর বিরতির কারণে ভুল ট্রেডিং এড়ানোর জন্য, এই কৌশলটি ADX সূচকগুলিকে সংযুক্ত করে এবং নিম্ন ওঠানামা চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান চলমান
এই কৌশলটি একটি রিটার্ন স্টপ এবং একটি আপট্রেসিং স্টপও সেট করে। বিশেষত, প্রতিবার পজিশন খোলার পরে, পূর্ববর্তী N দিনের সর্বনিম্ন মূল্যটি সেই দিকের রিটার্ন স্টপ হিসাবে রেকর্ড করা হবে এবং সর্বোচ্চ মূল্যটি আপট্রেসিং স্টপ হিসাবে রেকর্ড করা হবে। এটি মুনাফা লক করতে পারে, তবে যতটা সম্ভব বিপরীতের ক্ষতি হ্রাস করতে পারে।
কোড লজিকের দিক থেকে, এই কৌশলটি প্রথমে বুলিনের বেন্ড এবং এডিএক্স সূচক প্যারামিটার গণনা করে। তারপরে সিদ্ধান্ত নেওয়া হয় যে দামটি বুলিনের বেন্ডটি ভেঙে ফেলেছে কিনা এবং এডিএক্স মানটি প্রান্তিকের নীচে রয়েছে কিনা, যদি তা পূরণ হয় তবে এটি একটি ক্রয়-বিক্রয় সংকেত দেয়। তারপরে, রিয়েল-টাইমে আপডেট এবং স্টপ-ড্রপ অবস্থানগুলি ট্র্যাক করুন।
VALID; ADX পরিস্রাবণ পরিস্থিতির অপ্টিমাইজেশন, 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)