ডাবল মুভিং মিডিয়াম ইমপুটাম স্ট্র্যাটেজি

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-২৫ ১৭ঃ১১ঃ২৮
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশলগত যুক্তি

এই কৌশলটি বাজারে সংকোচন এবং সম্প্রসারণের পর্যায়ে সনাক্ত করার জন্য বোলিংজার ব্যান্ড এবং কেসি চ্যানেলকে একত্রে ব্যবহার করে। বিশেষত, যখন বোলিংজার ব্যান্ডগুলি কেসি চ্যানেলের মধ্যে থাকে, তখন এটি সংকোচন হিসাবে বিবেচিত হয়; যখন বোলিংজার ব্যান্ডগুলি কেসি চ্যানেলটি ভেঙে যায়, তখন এটি সম্প্রসারণ হিসাবে বিবেচিত হয়। সংকোচন তীব্রতর অস্থিরতা এবং সম্ভাব্য প্রবণতা বিপরীতের প্রতিনিধিত্ব করে এবং এই সময়ে রৈখিক রিগ্রেশন প্রাথমিক ট্রেডিং সংকেত সূচক হিসাবে ব্যবহৃত হয়।

যদি লিনিয়ার রিগ্রেশন হিস্টোগ্রামটি ইতিবাচক হয় (উপরে প্রবণতা উপস্থাপন করে) এবং বারটি একটি লাল মোমবাতি (নিম্ন বন্ধের প্রতিনিধিত্ব করে) হয়, একই সাথে মোমবাতি দেহটি গত 30 মোমবাতিগুলির গড় দেহের 1/3 এর চেয়ে বড় হয়, তবে এই জাতীয় সংমিশ্রণ সংকেত দীর্ঘ হয়। বিপরীতভাবে, যদি লিনিয়ার রিগ্রেশন হিস্টোগ্রামটি নেতিবাচক হয় তবে বারটি একটি সবুজ মোমবাতি হয় এবং দেহটিও বড় হয় তবে এটি শর্ট হয়।

কৌশলটি বাজারের পর্যায়কে বিচার করতে সহায়তা করার জন্য সংকোচন এবং সম্প্রসারণের পটভূমির একটি ভিজ্যুয়ালাইজেশনও সরবরাহ করে।

সুবিধা বিশ্লেষণ

  • সংমিশ্রণের জন্য একাধিক সূচক ব্যবহার করে কার্যকরভাবে মিথ্যা সংকেতগুলি ফিল্টার করতে পারে
  • কম্প্রেশন সম্ভাব্য বিপরীত পয়েন্ট প্রতিনিধিত্ব করে এবং কৌশল কর্মক্ষমতা উন্নত
  • শরীরের ফিল্টার মিথ্যা breakouts ছোট তরঙ্গ দ্বারা বিভ্রান্ত করা এড়াতে
  • প্যারামিটার অপ্টিমাইজেশান মাধ্যমে ভাল ফলাফল পেতে সহজ

ঝুঁকি বিশ্লেষণ

  • লিনিয়ার রিগ্রেশন সহজেই ভুল সংকেত জারি করতে পারে, যা ক্ষতি হতে পারে
  • কম্প্রেশন বিচার করার জন্য বোলিংজার ব্যান্ড এবং কেসি চ্যানেলের প্রভাব আদর্শ নয়
  • ফিল্টারিংয়ের মানদণ্ড খুব কঠোর, সম্ভবত আরও ভাল এন্ট্রি পয়েন্টগুলি অনুপস্থিত
  • ড্রাউনডাউন বেশি হতে পারে, একটি নির্দিষ্ট মাত্রার সহনশীলতা সহ্য করতে হবে

সূচকের পরামিতিগুলি সামঞ্জস্য করে, ফিল্টারিংয়ের মানদণ্ডগুলি অনুকূল করে ইত্যাদি ঝুঁকি হ্রাস করা যেতে পারে।

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

কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ

  1. অনুকূল পরামিতি খুঁজে পেতে বিভিন্ন পরামিতি সমন্বয় এবং দৈর্ঘ্য চেষ্টা করুন
  2. সর্বোত্তম ফিল্টারিং স্তর খুঁজে পেতে ফিল্টারিং শর্ত বৃদ্ধি বা হ্রাস
  3. স্বয়ংক্রিয়ভাবে সর্বোত্তম পরামিতি খুঁজে পেতে মেশিন লার্নিং পদ্ধতি ব্যবহার করুন
  4. নির্দিষ্ট জাতের পরীক্ষার প্রভাব এবং বিভিন্ন জাতের অনুযায়ী পরামিতিগুলি সামঞ্জস্য করুন
  5. একক ক্ষতি নিয়ন্ত্রণের জন্য স্টপ লস কৌশল যোগ করুন

সিদ্ধান্ত

এই কৌশলটি একাধিক সূচককে একত্রিত করে, সংকোচনের সুযোগগুলি চিহ্নিত করার সময়, এটি তুলনামূলকভাবে শক্তিশালী দক্ষ স্বল্পমেয়াদী কৌশল গঠনের জন্য ফিল্টারিং শর্তগুলি বাড়ায়। প্যারামিটার এবং ফিল্টারিং শর্ত অপ্টিমাইজেশনের মাধ্যমে আরও ভাল ফলাফল অর্জন করা যায়। এছাড়াও, কৌশল কাঠামোটি নমনীয় এবং বিভিন্ন জাতের ব্যবহারের জন্য সামঞ্জস্য করা সহজ, আরও পরীক্ষা এবং অপ্টিমাইজেশনের মূল্যবান।


/*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)

আরো