ডায়নামিক স্টপ লস বোলিংজার ব্যান্ডস কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-02-01 10:48:52
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি গতিশীল স্টপ লস বাস্তবায়নের জন্য বোলিংজার ব্যান্ডের উপরের এবং নীচের রেলগুলি ব্যবহার করে। যখন দাম উপরের রেলটি ভেঙে যায় তখন এটি সংক্ষিপ্ত হয় এবং যখন দাম নিম্ন রেলটি ভেঙে যায় তখন দীর্ঘ হয়। এবং এটি দামের চলাচল ট্র্যাক করতে গতিশীল স্টপ লস সেট করে।

নীতি

এই কৌশলটির মূল অংশটি বোলিংজার ব্যান্ডের উপরের এবং নীচের রেলগুলিতে রয়েছে। মধ্য রেলটি এন-দিনের চলমান গড়। উপরের রেলটি মধ্য রেল + কেএন-দিনের স্ট্যান্ডার্ড ডিভিয়েশন। নিম্ন রেল হল মাঝের রেল − kn-দিনের স্ট্যান্ডার্ড ডিভিয়েশন। যখন দাম নিম্ন রেল থেকে বাউন্স হয়, তখন দীর্ঘ যান। যখন দাম উপরের রেল থেকে ফিরে আসে, তখন সংক্ষিপ্ত যান। একই সময়ে, কৌশলটি একটি স্টপ লস পয়েন্ট সেট করে এবং মূল্য আন্দোলনের সময় এটিকে গতিশীলভাবে সামঞ্জস্য করে একটি লাভের পয়েন্ট সেট করতে সতর্ক ঝুঁকি নিয়ন্ত্রণ বাস্তবায়ন করতে।

সুবিধা

  1. মাঝারি ও দীর্ঘমেয়াদী প্রবণতা ক্যাপচার করার জন্য Bollinger Bands মধ্যম রেল বৈশিষ্ট্য শক্তিশালী রিগ্রেশন ব্যবহার করুন;
  2. পরিষ্কার দীর্ঘ এবং সংক্ষিপ্ত সংকেত, সহজ অপারেট;
  3. মুনাফা লকিং এবং নিয়ন্ত্রণ ঝুঁকি সর্বাধিক করতে গতিশীল স্লাইডিং স্টপ লস সেট করুন;
  4. বিভিন্ন বাজারের অবস্থার সাথে মানিয়ে নিতে সামঞ্জস্যযোগ্য পরামিতি।

ঝুঁকি এবং সমাধান

  1. বোলিংজার ব্যান্ডগুলি রেঞ্জ-বান্ধব বাজারের সময় একাধিক দীর্ঘ এবং সংক্ষিপ্ত সংকেত তৈরি করতে পারে, যার ফলে ব্যবহারকারীরা হুইপসাউতে আটকা পড়ে। সমাধানটি হ'ল প্রতি ব্যবসায়ের ক্ষতি নিয়ন্ত্রণের জন্য যুক্তিসঙ্গতভাবে স্টপ লস পয়েন্ট সেট করা।
  2. অনুপযুক্ত পরামিতি সেটিংগুলি কম জয় হারের দিকে পরিচালিত করতে পারে। সমাধানটি বিভিন্ন পণ্যের জন্য পরামিতিগুলিকে যুক্তিসঙ্গতভাবে অনুকূল করা।

অপ্টিমাইজেশান নির্দেশাবলী

  1. পণ্যের বৈশিষ্ট্য অনুসারে চলমান গড়ের পরামিতিগুলি অনুকূল করা;
  2. ব্যাপ্তি সীমাবদ্ধ বাজার এড়ানোর জন্য প্রবণতা ফিল্টারিং যোগ করুন;
  3. কৌশল স্থিতিশীলতা উন্নত করার জন্য ফিল্টারিং শর্ত হিসাবে অন্যান্য সূচকগুলির সাথে একত্রিত করুন।

সিদ্ধান্ত

এই কৌশলটি ঝুঁকি নিয়ন্ত্রণের সময় মাঝারি এবং দীর্ঘমেয়াদী প্রবণতা মুনাফা অর্জনের জন্য গতিশীল স্লাইডিং স্টপ লসের সাথে বোলিংজার ব্যান্ডস রিগ্রেশন বৈশিষ্ট্যগুলি ব্যবহার করে। এটি একটি অত্যন্ত অভিযোজিত এবং স্থিতিশীল পরিমাণগত কৌশল। প্যারামিটার অপ্টিমাইজেশন এবং লজিক অপ্টিমাইজেশনের মাধ্যমে এটি আরও পণ্যগুলিতে অভিযোজিত হতে পারে এবং লাইভ ট্রেডিংয়ে স্থিতিশীল মুনাফা অর্জন করতে পারে।


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="BB Strategy", title="Bollinger Bands Strategy", overlay=true)
length = input.int(20, minval=1, group = "Bollinger Bands")
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Bollinger Bands")
src = input(close, title="Source", group = "Bollinger Bands")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev", group = "Bollinger Bands")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500, group = "Bollinger Bands")
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

lo = input.bool(true, "Long", group = "Strategy")
sh = input.bool(true, "Short", group = "Strategy")
x = input.float(3.0, "Target Multiplier (X)", group = "Strategy", minval = 1.0, step = 0.1)
token = input.string(defval = "", title = "Token", group = "AUTOMATION")
Buy_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(1) + '"}'
Buy_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(2) + '"}'
Exit_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(-1) + '"}'
Exit_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(-2) + '"}'
Exit_PE_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(2.5) + '"}'
Exit_CE_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(1.5) + '"}'
long = high < lower
short = low > upper
var sl_b = 0.0
var tar_b = 0.0
var sl_s = 0.0
var tar_s = 0.0
var static_sl = 0.0
entry = strategy.opentrades.entry_price(strategy.opentrades - 1)
if long and lo and strategy.position_size == 0
    strategy.entry("Long", strategy.long, alert_message = Buy_CE, stop = high)
    strategy.exit("LX", "Long", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = low, alert_message = Exit_CE)
    sl_b := low
    tar_b := high + (math.abs(high - low) * x)
    static_sl := math.abs(low - high)
if short and sh and strategy.position_size == 0
    strategy.entry("Short", strategy.short, alert_message = Buy_PE, stop = low)
    strategy.exit("SX", "Short", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = high, alert_message = Exit_PE)
    sl_s := high
    tar_s := low - (math.abs(high - low) * x)
    static_sl := math.abs(high - low)
// if long and strategy.position_size < 0
//     strategy.entry("Long", strategy.long, alert_message = Exit_PE_CE, stop = high)
//     strategy.exit("LX", "Long", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = low, alert_message = Exit_CE)
//     sl_b := low
//     tar_b := high + (math.abs(high - low) * x)
// if short and strategy.position_size > 0
//     strategy.entry("Short", strategy.short, alert_message = Exit_CE_PE, stop = low)
//     strategy.exit("SX", "Short", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = high, alert_message = Exit_PE)
//     sl_s := math.max(high[1], high)
//     tar_s := low - (math.abs(high - low) * x)
if ta.change(dayofmonth) or (long[1] and not long[2])
    strategy.cancel("Long")
if ta.change(dayofmonth) or (short[1] and not short[2])
    strategy.cancel("Short")
var count = 1
if strategy.position_size != 0
    if strategy.position_size > 0
        if close > (entry + (static_sl * count))
            strategy.exit("LX", "Long", limit = tar_b, stop = sl_b, alert_message = Exit_CE)
            sl_b := entry + (static_sl * (count - 1))
            count += 1
            
    else
        if close < (entry - (static_sl * count))
            strategy.exit("SX", "Short", limit = tar_s, stop = sl_s, alert_message = Exit_PE)
            sl_s := entry - (static_sl * (count - 1))
            count += 1
// label.new(bar_index, high, str.tostring(static_sl))
if strategy.position_size == 0
    count := 1
plot(strategy.position_size > 0 ? sl_b : na, "", color.red, style = plot.style_linebr)
plot(strategy.position_size < 0 ? sl_s : na, "", color.red, style = plot.style_linebr)
plot(strategy.position_size > 0 ? tar_b : na, "", color.green, style = plot.style_linebr)
plot(strategy.position_size < 0 ? tar_s : na, "", color.green, style = plot.style_linebr)

আরো