স্টোকাস্টিক মোমেন্টাম কৌশল একটি পরিমাণগত ট্রেডিং কৌশল যা স্টোকাস্টিক মোমেন্টাম সূচক (এসএমআই) এবং আপেক্ষিক শক্তি সূচক (আরএসআই) একত্রিত করে। এটি বাজারে অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় অঞ্চলগুলি সনাক্ত করতে এসএমআই ব্যবহার করে, দ্রুত আরএসআই একটি সংকেত ফিল্টার হিসাবে কাজ করে। এটি আরও নির্ভরযোগ্য সংকেত নির্বাচনের জন্য একটি দেহ ফিল্টার বাস্তবায়ন করে।
স্টোকাস্টিক মম্পটাম ইনডেক্স (এসএমআই) একটি সাধারণ প্রযুক্তিগত সূচক যা পরিমাণগত ট্রেডিংয়ে ব্যবহৃত হয় যা মম্পটাম এবং দোলন সূচকগুলির শক্তিকে একত্রিত করে।
বিশেষ করে, এসএমআই নিম্নরূপ গণনা করা হয়ঃ
SMI = (Close - (HH + LL) /2)/(0.5*(HH - LL)) * 100
যেখানে HH হল গত N দিনের সর্বোচ্চ মূল্য এবং LL হল সর্বনিম্ন মূল্য।
সুতরাং এসএমআইতে গতির প্রবণতা অনুসরণকারী বিচার এবং দোলনের বিপরীত বিচার উভয়ই অন্তর্ভুক্ত রয়েছে। ৮০ এর উপরে মানগুলি ওভারকপ হিসাবে বিবেচিত হয়, যখন ২০ এর নীচে মানগুলি ওভারসোল্ড হয়। এসএমআই যখন এই ওভারকপ বা ওভারসোল্ড স্তরে পৌঁছে যায় তখন কৌশলটি ট্রেডিং সংকেত উত্পন্ন করে।
আপেক্ষিক শক্তি সূচক (আরএসআই) একটি স্ট্যান্ডার্ড ওভারকুপ/ওভারসোল্ড সূচক। এই কৌশলটি স্বল্পমেয়াদী ওভারকুপ/ওভারসোল্ড শর্তগুলি বিচার করার জন্য 7 সময়ের একটি দ্রুত আরএসআই ব্যবহার করে।
২০ এর নিচে পাঠ্যগুলি oversold হিসাবে বিবেচিত হয়, যখন ৮০ এর উপরে পাঠ্যগুলি দ্রুত RSI অনুসারে overbought হিসাবে বিবেচিত হয়। যখন এই প্রান্তিকগুলি লঙ্ঘন করা হয় তখন সংকেতগুলি উত্পন্ন হয়।
কৌশলটি নির্দিষ্ট সংকেতগুলি ফিল্টার করার জন্য মোমবাতি দেহের আকার পরীক্ষা করে একটি দেহ ফিল্টারও বাস্তবায়ন করে। কেবলমাত্র একটি সেট থ্রেশহোল্ড অতিক্রমকারী দেহগুলি বাণিজ্যকে ট্রিগার করবে।
এটি কিছু মিথ্যা সংকেত ফিল্টার করে এবং নির্ভরযোগ্যতা বৃদ্ধি করে।
এই পদ্ধতিটি এসএমআই, দ্রুত আরএসআই এবং বডি ফিল্টারকে একটি শক্তিশালী 3-পার্ট সিস্টেমে একত্রিত করে। একাধিক ইন্টিগ্রেটেড সংকেত ব্যবহার করে নির্ভুলতা উন্নত করে এবং স্থিতিশীলতা বাড়ায়।
SMI এবং দ্রুত RSI উভয়ই ক্লান্ত প্রবণতা সনাক্ত করার জন্য চমৎকার। এই ওভার-প্রসারিত এলাকাগুলি থেকে গড়-বিপরীতমুখী ট্রেডিংয়ের মাধ্যমে, কৌশলটি কম কিনতে এবং উচ্চ বিক্রি করতে মেনে চলে।
ডাইপ এবং শর্ট র্যালি উভয়ই কেনার ক্ষমতা বাজার পরিস্থিতিতে সুযোগকে সর্বাধিক করে তোলে।
শারীরিক ফিল্টারটি ঝাঁকুনির অবস্থার মধ্যে নিম্ন-সংকল্পের সংকেতগুলি প্রত্যাখ্যান করে whipsaws এড়ায়।
ঘন ঘন লং/শর্ট স্যুইচিং হুইপসা ঝুঁকি নিয়ে আসে। লজিক অপ্টিমাইজ করা এটিকে কমিয়ে আনতে পারে।
সিগন্যালগুলি বাজারের অংশগ্রহণকারীদের ক্লাস্টার করতে পারে এবং প্রবেশের পরে দ্রুত বিপরীতমুখী হতে পারে। সূক্ষ্ম-নিয়ন্ত্রণের পরামিতিগুলি পশুর ঝুঁকি হ্রাস করতে পারে।
চরম ঘটনা সব মডেলকে উল্টে দিতে পারে। সিস্টেমিক ঝুঁকি নিয়ন্ত্রণের জন্য বুদ্ধিমান স্টপ লস প্রয়োজন।
বিভিন্ন এসএমআই/আরএসআই সময়কাল এবং বডি ফিল্টার থ্রেশহোল্ড পরীক্ষা করে উচ্চতর রিটার্নের জন্য সর্বোত্তম মান প্রকাশ করা যেতে পারে।
ভোল্টেবিলিটি-ভিত্তিক বা এটিআর স্টপ অন্তর্ভুক্ত করা পজিশন এবং পোর্টফোলিও ঝুঁকিকে আরও ভালভাবে অন্তর্ভুক্ত করবে।
ভবিষ্যতের সূচক স্তরগুলি পূর্বাভাস দেওয়ার মডেলগুলি টার্নিং পয়েন্টগুলি আরও আগে সনাক্ত করতে পারে। এটি পূর্বাভাস ক্ষমতা বাড়িয়ে তুলবে।
সংক্ষেপে, এসএমআই, দ্রুত আরএসআই এবং বডি ফিল্টারকে একীভূত করে, এই কৌশলটি একটি মোটামুটি বিস্তৃত ওভারবয়ড / ওভারসোল্ড সিস্টেম তৈরি করেছে। মাল্টি-সিগন্যাল পদ্ধতি সঠিকতা উন্নত করে, যখন দ্বি-মুখী বাণিজ্য ক্ষমতা এবং ঝুঁকি নিয়ন্ত্রণ ভারসাম্য বজায় রাখতে অবদান রাখে। অবিচ্ছিন্ন পরামিতি এবং মডেল অপ্টিমাইজেশনের সাথে, এটি দীর্ঘমেয়াদে লাভের জন্য প্রতিশ্রুতি দেখায়।
/*backtest start: 2023-12-22 00:00:00 end: 2024-01-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Stochastic Strategy v1.1", shorttitle = "Stochastic str 1.1", 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") usemar = input(false, defval = false, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") usesmi = input(true, defval = true, title = "Use SMI Strategy") usersi = input(true, defval = true, title = "Use RSI Strategy") usebod = input(true, defval = true, title = "Use Body-Filter") a = input(5, "SMI Percent K Length") b = input(3, "SMI Percent D Length") limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit") fromyear = input(2017, defval = 2017, 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") //Fast RSI fastup = rma(max(change(close), 0), 7) fastdown = rma(-min(change(close), 0), 7) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Stochastic Momentum Index ll = lowest (low, a) hh = highest (high, a) diff = hh - ll rdiff = close - (hh+ll)/2 avgrel = ema(ema(rdiff,b),b) avgdiff = ema(ema(diff,b),b) SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0 SMIsignal = ema(SMI,b) //Lines plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index") plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line") plot(limit, color = black, title = "Over Bought") plot(-1 * limit, color = black, title = "Over Sold") plot(0, color = blue, title = "Zero Line") //Body Filter nbody = abs(close - open) abody = sma(nbody, 10) body = nbody > abody / 3 or usebod == false //Signals up1 = SMIsignal < -1 * limit and close < open and body and usesmi dn1 = SMIsignal > limit and close > open and body and usesmi up2 = fastrsi < 20 and close < open and body and usersi dn2 = fastrsi > 80 and close > open and body and usersi exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] if up1 or up2 if strategy.position_size < 0 strategy.close_all() strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()