এই কৌশলটি একটি অভিযোজিত চলমান গড়ের সাথে মিলিত বোলিংজার ব্যান্ড সূচকের উপর ভিত্তি করে, প্রবণতা সঠিকভাবে বিচার এবং ট্র্যাক করার জন্য। গতিশীলভাবে পরামিতিগুলি সামঞ্জস্য করে, কৌশলটি শক্তিশালী স্থিতিশীলতা এবং অভিযোজনযোগ্যতার সাথে বিভিন্ন পণ্য এবং বাজারের পরিবেশে অভিযোজিত হতে পারে।
কৌশলটি নিম্নলিখিত প্রধান অংশগুলির সমন্বয়ে গঠিতঃ
অভিযোজিত চলমান গড় গণনা করুন। একটি নির্দিষ্ট সময়ের মধ্যে চলমান গড় হিসাবে রৈখিক রিগ্রেশন বক্ররেখা গণনা করতে রৈখিক রিগ্রেশন সূচক ব্যবহার করুন।
বোলিংজার ব্যান্ড গণনা করুন। উপরের এবং নিম্ন ব্যান্ড পেতে ব্যবহারকারীর নির্দিষ্ট ratio2 পরামিতির সাথে সংযুক্ত, ব্যান্ড গণনা করতে অভিযোজনশীল ATR সূচক ব্যবহার করুন।
এন্ট্রি এবং আউটপুট নির্ধারণ করুন। বোলিংজার ব্যান্ডের মাধ্যমে মূল্য ভাঙ্গনের ভিত্তিতে প্রবণতা দিক এবং এন্ট্রি / আউটপুট বিচার করুন। উপরের ব্যান্ডের সংকেতগুলি ভাঙ্গার সময় বিক্রয় এন্ট্রি এবং নিম্ন ব্যান্ডের সংকেতগুলি ক্রয় এন্ট্রি।
স্টপ লস সেট করুন এবং মুনাফা নিন। ঝুঁকি নিয়ন্ত্রণ করতে স্থির পয়েন্ট স্টপ লস এবং ট্রেন্ড মুনাফা সর্বাধিকীকরণের জন্য ট্রেলিং স্টপ মুনাফা ব্যবহার করুন।
কৌশল অপ্টিমাইজেশান এবং যাচাইয়ের জন্য ব্যাকটেস্টিং সময় উইন্ডোর সাথে একত্রিত করুন।
অভিযোজিত প্যারামিটারগুলি। অভিযোজিত চলমান গড় এবং ব্যান্ড ডিজাইন বাজারের পরিবর্তনের সাথে মানিয়ে নেয়।
বোলিংজার ব্যান্ডের ব্রেকআউট স্পষ্ট ট্রেন্ড বিপরীতের সংকেত দেয়।
যুক্তিসঙ্গত স্টপ সেটিং। স্থির স্টপ লস ঝুঁকি নিয়ন্ত্রণ করে এবং ট্রেনিং স্টপ লাভ ট্রেন্ড মুনাফা সর্বাধিকীকরণের লক্ষ্যে।
ব্যাকটেস্টিং উইন্ডো কৌশল কার্যকারিতা যাচাই করে।
সহজেই বোঝা যায় এবং বাস্তবায়ন করা যায়। যুক্তি পরিষ্কার এবং কোড সহজেই বোঝার জন্য সংক্ষিপ্ত।
বোলিংগার ব্যান্ডগুলিকে পরামিতিগুলি মিট করার প্রয়োজন হয়। ব্যান্ডের প্রস্থ এবং সময়ের বিভিন্ন পণ্যের জন্য অপ্টিমাইজেশনের প্রয়োজন হতে পারে। ভুল পরামিতিগুলি অনুপস্থিত সংকেত বা মিথ্যা ট্রিগারগুলির দিকে পরিচালিত করে।
সীমিত ব্যাকটেস্ট সময়কাল। সাম্প্রতিক ব্যাকটেস্ট ব্যাপ্তি ব্যাপক historicalতিহাসিক ডেটা জুড়ে স্থিতিশীলতা সম্পূর্ণরূপে যাচাই করার জন্য অপর্যাপ্ত হতে পারে।
অতিরিক্ত ফিটিং ঝুঁকিঃ বর্তমান অপ্টিমাইজড পরামিতি সাম্প্রতিক নির্দিষ্ট বাজারের অবস্থার সাথে অতিরিক্ত ফিট হতে পারে।
স্টপ লস স্তর মূল্যায়ন প্রয়োজন। ছোট স্টপ লস খুব সংবেদনশীল হতে পারে এবং ছোট ওঠানামা দ্বারা বন্ধ করা যেতে পারে। উপযুক্ত স্টপ লস প্রয়োজন মূল্যায়ন।
পরিমাপযোগ্য যাচাইকরণের অভাব। বর্তমানে কেবলমাত্র পরিমাপযোগ্য মেট্রিকের যাচাইকরণ ছাড়াই ট্রেড সিগন্যালের জন্য গ্রাফিকাল ব্রেকআউট ব্যবহার করুন।
আরও অভিযোজিত সূচক প্রবর্তন করুন। একটি শক্তিশালী প্রবণতা ট্র্যাকিং সিস্টেম তৈরি করতে বিভিন্ন অভিযোজিত চলমান গড় এবং চ্যানেলগুলির সমন্বয় পরীক্ষা করুন।
প্যারামিটার অপ্টিমাইজেশান. সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে জেনেটিক অ্যালগরিদমের মত আরো পদ্ধতিগত পদ্ধতি ব্যবহার করুন.
ব্যাকটেস্টের সময়কাল প্রসারিত করুন। প্যারামিটার স্থিতিশীলতা পরীক্ষা করার জন্য বৃহত্তর ঐতিহাসিক ডেটা পরীক্ষা করুন। আরও বাস্তবসম্মত ব্যাকটেস্টের জন্য লেনদেনের খরচ অন্তর্ভুক্ত করুন।
পরিমাণগত ফিল্টার প্রবর্তন করুন। ভলিউম ব্রেকআউট, MACD হিস্টোগ্রাম ফাঁক এর মত ফিল্টার সেট আপ করুন মিথ্যা ব্রেকআউট এড়াতে।
স্টপগুলি অপ্টিমাইজ করুন। সর্বোত্তম স্টপগুলি খুঁজে পেতে বিভিন্ন স্থির স্টপ লস স্তর এবং ট্রেলিং স্টপ পদ্ধতিগুলি মূল্যায়ন করুন।
লাইভ ভ্যালিডেশন. আরও উন্নতির জন্য কর্মক্ষমতা রেকর্ড করতে লাইভ অপ্টিমাইজড কৌশল চালান.
কৌশলটি ট্রেন্ডের দিকনির্দেশ নির্ধারণ এবং ব্রেকআউট সংকেতগুলি ক্যাপচার করার জন্য বোলিংজার ব্যান্ডগুলি ব্যবহার করে একটি পরিষ্কার যুক্তি রয়েছে, চলমান গড়টি সামগ্রিক প্রবণতা নির্ধারণ করে। সঠিক অপ্টিমাইজেশানগুলির সাথে, এটি কৌশল অনুসরণ করে একটি স্থিতিশীল এবং নির্ভরযোগ্য প্রবণতা হয়ে উঠতে পারে। তবে মূল বিবেচনার মধ্যে ব্যাকটেস্ট প্রতিনিধিত্ব, পরিমাণগত ফিল্টার এবং স্টপ লস টিউনিং অন্তর্ভুক্ত রয়েছে। যদি এই দিকগুলি ভালভাবে পরিচালিত হয় তবে কৌশলটি লাইভ ট্রেডিংয়ে স্থিতিশীল এবং উল্লেখযোগ্য মুনাফা অর্জন করতে পারে।
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-09 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Linear Regression (Backtest / Trailing Stop)",overlay=true) close_price = close[0] len = input(40) linear_reg = linreg(close_price, len, 0) calculationToPlotAverageMeanLine=linear_reg useUpperDeviation = input(true, "Upper Deviation", bool) useLowerDeviation = input(true, "Lower Deviation", bool) ratio2=input(defval=2,title=" Ratio 2") avg=atr(len) r2=avg*ratio2 top=linear_reg+r2 bott=linear_reg-r2 calculationToPlotUpperLine=top calculationToPlotLowerLine=bott plotUpperDeviationLine = plot(not useUpperDeviation ? na : calculationToPlotUpperLine, color=color(blue,0)) plotAverageMeanLine = plot(calculationToPlotAverageMeanLine, color=color(olive,0)) plotLowererDeviationLine = plot(not useLowerDeviation ? na : calculationToPlotLowerLine, color=color(red,0)) fill(plotUpperDeviationLine, plotAverageMeanLine, color=color(blue,85)) fill(plotLowererDeviationLine, plotAverageMeanLine, color=color(red,85)) // length = input(title="linear Length", defval=40, minval=1) multiplier = input(title="linear Deviation", type=float, defval=2, minval=1) overbought = input(title="Overbought", defval=1, minval=1) oversold = input(title="Oversold", defval=0, minval=1) custom_timeframe = input(title="Use another Timeframe?", type=bool, defval=false) highTimeFrame = input(title="Select The Timeframe", defval="60") res1 = custom_timeframe ? highTimeFrame : timeframe.period fixedSL = input(title="SL Activation", defval=70) trailSL = input(title="SL Trigger", defval=10) fixedTP = input(title="TP Activation", defval=50) trailTP = input(title="TP Trigger", defval=10) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2015) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2015) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" smabasis = linreg(close_price, length, 0) stdev = stdev(close, length) cierre = request.security(syminfo.tickerid, res1, close, false) alta = request.security(syminfo.tickerid, res1, high, false) baja = request.security(syminfo.tickerid, res1, low, false) basis1 = request.security(syminfo.tickerid, res1, smabasis, false) stdevb = request.security(syminfo.tickerid, res1, stdev, false) dev = multiplier * stdevb // stdev(cierre, length) upper = basis1 + dev lower = basis1 - dev bbr = (cierre - lower)/(upper - lower) // plot(bbr) // // MARCA LAS RESISTENCIAS pintarojo = 0.0 pintarojo := nz(pintarojo[1]) pintarojo := bbr[1] > overbought and bbr < overbought ? alta[1] : nz(pintarojo[1]) p = plot(pintarojo, color = red, style=circles, linewidth=2) // // MARCA LOS SOPORTES pintaverde = 0.0 pintaverde := nz(pintaverde[1]) pintaverde := bbr[1] < oversold and bbr > oversold ? baja[1] : nz(pintaverde[1]) g = plot(pintaverde, color = black, style=circles, linewidth=2) zz= crossover(pintaverde,pintaverde[1]) or crossunder(pintaverde,pintaverde[1]) kp= crossover(pintarojo,pintarojo[1]) or crossunder(pintarojo,pintarojo[1]) plotshape(zz, title="buy", style=shape.triangleup,location=location.belowbar, color=green, transp=0, size=size.small) plotshape(kp, title="sell", style=shape.triangledown,location=location.abovebar, color=red, transp=0, size=size.small) strategy.entry("BUY", strategy.long, qty=10, oca_name="BUY", when=zz and window()) strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.entry("SELL", strategy.short, qty=10, oca_name="SELL", when=kp and window()) strategy.exit("S.Exit", "SELL", qty_percent = 100, loss=fixedSL, trail_offset=trailSL, trail_points=fixedTP)