এই কৌশলটি তিনটি ভিন্ন প্রযুক্তিগত সূচককে একত্রিত করে এবং একটি তুলনামূলকভাবে স্থিতিশীল এবং কার্যকর স্বল্পমেয়াদী ট্রেডিং কৌশল তৈরির জন্য মোমবাতিগুলির রঙ এবং শরীরের উপর ভিত্তি করে অতিরিক্ত ফিল্টার সহ দ্বৈত চলমান গড় সিস্টেম ব্যবহার করে ট্রেডিং সংকেত তৈরি করে।
এই কৌশলটি বাজারে সংকোচন এবং সম্প্রসারণের পর্যায়ে সনাক্ত করার জন্য বোলিংজার ব্যান্ড এবং কেসি চ্যানেলকে একত্রে ব্যবহার করে। বিশেষত, যখন বোলিংজার ব্যান্ডগুলি কেসি চ্যানেলের মধ্যে থাকে, তখন এটি সংকোচন হিসাবে বিবেচিত হয়; যখন বোলিংজার ব্যান্ডগুলি কেসি চ্যানেলটি ভেঙে যায়, তখন এটি সম্প্রসারণ হিসাবে বিবেচিত হয়। সংকোচন তীব্রতর অস্থিরতা এবং সম্ভাব্য প্রবণতা বিপরীতের প্রতিনিধিত্ব করে এবং এই সময়ে রৈখিক রিগ্রেশন প্রাথমিক ট্রেডিং সংকেত সূচক হিসাবে ব্যবহৃত হয়।
যদি লিনিয়ার রিগ্রেশন হিস্টোগ্রামটি ইতিবাচক হয় (উপরে প্রবণতা উপস্থাপন করে) এবং বারটি একটি লাল মোমবাতি (নিম্ন বন্ধের প্রতিনিধিত্ব করে) হয়, একই সাথে মোমবাতি দেহটি গত 30 মোমবাতিগুলির গড় দেহের 1/3 এর চেয়ে বড় হয়, তবে এই জাতীয় সংমিশ্রণ সংকেত দীর্ঘ হয়। বিপরীতভাবে, যদি লিনিয়ার রিগ্রেশন হিস্টোগ্রামটি নেতিবাচক হয় তবে বারটি একটি সবুজ মোমবাতি হয় এবং দেহটিও বড় হয় তবে এটি শর্ট হয়।
কৌশলটি বাজারের পর্যায়কে বিচার করতে সহায়তা করার জন্য সংকোচন এবং সম্প্রসারণের পটভূমির একটি ভিজ্যুয়ালাইজেশনও সরবরাহ করে।
সূচকের পরামিতিগুলি সামঞ্জস্য করে, ফিল্টারিংয়ের মানদণ্ডগুলি অনুকূল করে ইত্যাদি ঝুঁকি হ্রাস করা যেতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশলটি একাধিক সূচককে একত্রিত করে, সংকোচনের সুযোগগুলি চিহ্নিত করার সময়, এটি তুলনামূলকভাবে শক্তিশালী দক্ষ স্বল্পমেয়াদী কৌশল গঠনের জন্য ফিল্টারিং শর্তগুলি বাড়ায়। প্যারামিটার এবং ফিল্টারিং শর্ত অপ্টিমাইজেশনের মাধ্যমে আরও ভাল ফলাফল অর্জন করা যায়। এছাড়াও, কৌশল কাঠামোটি নমনীয় এবং বিভিন্ন জাতের ব্যবহারের জন্য সামঞ্জস্য করা সহজ, আরও পরীক্ষা এবং অপ্টিমাইজেশনের মূল্যবান।
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2017 //@version=2 strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") length = input(20, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") useTrueRange = true usecolor = input(true, defval = true, title = "Use color of candle") usebody = input(true, defval = true, title = "Use EMA Body") needbg = input(false, defval = false, title = "Show trend background") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") // Calculate BB source = close basis = sma(source, length) dev = multKC * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0) bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon)) scolor = noSqz ? blue : sqzOn ? black : gray trend = val > 0 ? 1 : val < 0 ? -1 : 0 //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //EMA Body body = abs(close - open) emabody = ema(body, 30) / 3 //Signals bar = close > open ? 1 : close < open ? -1 : 0 up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false) dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false) if up strategy.entry("Long", strategy.long) if dn strategy.entry("Short", strategy.short)