
এই কৌশলটি তিনটি পৃথক প্রযুক্তিগত সূচককে একত্রিত করে, একটি দ্বি-সমান লাইন সিস্টেম ব্যবহার করে ট্রেডিং সংকেত তৈরি করে এবং কে লাইনের রঙ এবং সত্তা অতিরিক্ত ফিল্টারিং শর্ত হিসাবে ব্যবহার করে, যার ফলে একটি তুলনামূলকভাবে স্থিতিশীল এবং কার্যকর সংক্ষিপ্ত লাইন ট্রেডিং কৌশল তৈরি হয়।
সমগ্র কৌশলটি বাজার সংকোচন এবং সম্প্রসারণের পর্যায়ে চিহ্নিত করার জন্য বুলিন বন্ড এবং কেসি চ্যানেলের সমন্বয় ব্যবহার করে। বিশেষত, যখন বুলিন বন্ডটি কেসি চ্যানেলের অভ্যন্তরে থাকে তখন এটি সংকোচন হিসাবে বিবেচিত হয় এবং যখন বুলিন বন্ডটি কেসি চ্যানেলটি অতিক্রম করে তখন এটি সম্প্রসারণ হিসাবে বিবেচিত হয়। সংকোচনটি অস্থিরতা বৃদ্ধির এবং প্রবণতা বিপরীত হওয়ার সম্ভাবনাকে প্রতিনিধিত্ব করে, যখন লিনিয়ার রিগ্রেশনকে মূল ট্রেডিং সিগন্যাল হিসাবে ব্যবহার করা হয়।
যদি লিনিয়ার রিগ্রেশন হিস্টোগ্রামটি ইতিবাচক হয় (উপরে) এবং বারটি লাল K লাইন (নীচে) এবং K লাইনটি গত 30 টি K লাইনের গড়ের চেয়ে 1⁄3 এরও বেশি বড় হয়, তবে এই সংমিশ্রণ সংকেতটি বেশি হয়। বিপরীতভাবে, যদি লিনিয়ার রিগ্রেশন হিস্টোগ্রামটি নেতিবাচক হয়, তবে বারটি সবুজ K লাইনের জন্য, এবং সত্তাটিও বড়, তবে এটি খালি।
এই কৌশলটি একই সময়ে সংকোচন এবং সম্প্রসারণের একটি দৃশ্যমান পটভূমি সরবরাহ করে যা বাজারের পর্যায়গুলি বিচার করতে সহায়তা করে।
পরিমাপ প্যারামিটারগুলি সামঞ্জস্য করা, ফিল্টারিংয়ের অবস্থার অপ্টিমাইজেশান এবং আরও অনেক কিছুর মাধ্যমে ঝুঁকি হ্রাস করা যেতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
এই কৌশলটি একাধিক সূচককে সংহত করে, সংকোচনের সুযোগগুলি সনাক্ত করার সাথে সাথে ফিল্টারিং শর্তগুলি বাড়িয়ে একটি আরও শক্তিশালী এবং কার্যকর শর্ট লাইন কৌশল তৈরি করে। প্যারামিটার এবং ফিল্টারিং শর্তগুলির অপ্টিমাইজেশনের মাধ্যমে আরও ভাল ফলাফল পাওয়া যায়। এবং এই কৌশলটির কাঠামোটি নমনীয়, বিভিন্ন জাতের মধ্যে ব্যবহারের জন্য সহজেই সামঞ্জস্য করা যায়, যা আরও পরীক্ষা এবং অপ্টিমাইজেশনের জন্য উপযুক্ত।
/*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)