এটি একটি ব্যক্তিগতকৃত ট্রেডিং কৌশল যা গতির সূচক এবং ক্যান্ডেলস্টিক সত্তা ফিল্টারিংকে একত্রিত করে। এটি একটি গতির অগ্রগতির ভিত্তিতে কৌশল বাস্তবায়নের জন্য তিনটি প্রযুক্তিগত সূচক - স্টোকাস্টিক গতির সূচক, দ্রুত আরএসআই এবং ক্যান্ডেলস্টিক সত্তা ফিল্টারিং ব্যাপকভাবে ব্যবহার করে।
কৌশলটি ট্রেডিং সিগন্যালের মূল্যায়নের জন্য নিম্নলিখিত তিনটি সূচক ব্যবহার করেঃ
স্টোকাস্টিক মোমেন্টাম ইনডেক্স (এসএমআই): এটি মূল্য গতির শক্তি বা দুর্বলতা বিচার করার জন্য মোমবাতি সত্তা এবং বন্ধ মূল্যের আপেক্ষিক অবস্থানের মধ্যে ব্যবধানকে একত্রিত করে। এটি এসএমআই সীমানা লাইনের উপরে অতিক্রম করার সময় একটি ক্রয় সংকেত এবং সীমানা লাইনের নীচে অতিক্রম করার সময় একটি বিক্রয় সংকেত তৈরি করে।
ফাস্ট আরএসআই (৭ দিনের লাইন): এটি দামের অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় শর্তগুলি বিচার করে। ২০ এর নীচে আরএসআই একটি ক্রয় সংকেতকে অতিরিক্ত বিক্রয় হিসাবে উত্পন্ন করে এবং ৮০ এর উপরে একটি বিক্রয় সংকেতকে অতিরিক্ত বিক্রয় হিসাবে উত্পন্ন করে।
ক্যান্ডেলস্টিক সত্তা ফিল্টারঃ গত 10 দিনের গড় ক্যান্ডেলস্টিক সত্তা আকার গণনা করুন। কেবলমাত্র আজকের ক্যান্ডেলস্টিক সত্তাটি সেই গড়ের এক তৃতীয়াংশের বেশি হলে সিগন্যালটি সক্ষম করুন অবৈধ সংকেত এড়াতে।
কৌশলটি প্রথমে এসএমআই এবং আরএসআই থেকে সংকেতগুলি বিচার করে। যদি কোনও সূচক সংকেতের প্রয়োজনীয়তা পূরণ করা হয় তবে সেই সংকেতটি বৈধ কিনা তা নির্ধারণ করতে মোমবাতি সত্তা ফিল্টারটি একত্রিত করুন এবং বৈধ হলে একটি ট্রেডিং সংকেত তৈরি করুন।
এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:
একাধিক সূচকের সংমিশ্রণে বিচার আরও সুনির্দিষ্ট এবং নির্ভরযোগ্য।
মোমবাতি সত্তা ফিল্টার যোগ করা অবৈধ সংকেত এড়ায়।
অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় পরিস্থিতি একত্রিত করে, প্রবণতা বিপরীত পয়েন্টে সংকেতগুলি ধরা সহজ।
দুই দিকের লং/শর্ট ট্রেডিংয়ের মাধ্যমে লাভের সুযোগ বাড়বে।
আংশিক পজিশন ট্রেডিং অতিরিক্ত এককালীন ক্ষতি এড়ায়।
এই কৌশলের কিছু ঝুঁকিও রয়েছে:
সূচকগুলি মিথ্যা সংকেত তৈরি করতে পারে যা ক্ষতির দিকে পরিচালিত করে। প্যারামিটার অপ্টিমাইজেশান মিথ্যা সংকেতগুলি হ্রাস করতে পারে।
আংশিক পজিশন ট্রেডিং প্রতিটি দিকের প্রবণতার সুযোগগুলি পুরোপুরি ব্যবহার করতে পারে না। ট্রেডিং পজিশনের আকার বাড়িয়ে উচ্চতর রিটার্ন অর্জন করা যেতে পারে।
প্রধান সূচক হিসাবে, এসএমআই পরামিতি সেটিংসে সংবেদনশীল। ভুল কনফিগারেশন ট্রেডিং সুযোগ মিস করতে পারে বা মিথ্যা সংকেত বৃদ্ধি করতে পারে।
দ্বিমুখী কৌশল নিয়ে ঘন ঘন লেনদেন লেনদেনের খরচ বাড়ায়।
কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অনুকূলিত করা যেতে পারেঃ
সেরা প্যারামিটার সমন্বয় খুঁজে পেতে SMI এবং RSI এর জন্য পরামিতিগুলি অপ্টিমাইজ করুন।
ট্রেন্ডের সময় উচ্চতর রিটার্ন অর্জনের জন্য পজিশন সাইজিং এবং পজিশন ম্যানেজমেন্টের ব্যবস্থা বাড়ানো।
এককালীন ক্ষতির ঝুঁকি কমাতে স্টপ লস কৌশল যুক্ত করুন।
সিগন্যালের নির্ভরযোগ্যতা বিচার করতে এবং মিথ্যা সংকেত হ্রাস করতে আরও সূচক একত্রিত করুন।
লেনদেনের খরচ কমানোর জন্য দক্ষ চুক্তি গ্রহণ করা।
কৌশলটি একটি গতি-ভিত্তিক, ওভারবয়ড / ওভারসোল্ড-সচেতন ব্যক্তিগতকৃত ট্রেডিং কৌশল বাস্তবায়নের জন্য এসএমআই, দ্রুত আরএসআই এবং ক্যান্ডেলস্টিক সত্তা ফিল্টারিং সূচকগুলি ব্যাপকভাবে ব্যবহার করে। এর সুনির্দিষ্ট বিচার, বৈধ সংকেত সনাক্তকরণ, ওভারবয়ড / ওভারসোল্ড শর্তগুলির সংমিশ্রণ এবং দ্বিমুখী ট্রেডিংয়ের মতো সুবিধাগুলি রয়েছে, তবে প্যারামিটার সংবেদনশীলতা, প্রবণতা সম্পূর্ণরূপে মূলধন করতে অক্ষমতা এবং ঘন ঘন অপারেশনগুলির মতো ঝুঁকিও রয়েছে। প্যারামিটারগুলি ক্রমাগত অনুকূলিতকরণ, অবস্থান আকার বৃদ্ধি এবং স্টপ লস ম্যানেজমেন্ট, মিথ্যা সংকেতগুলি হ্রাস ইত্যাদির মাধ্যমে কৌশলটি আরও ভাল ট্রেডিং পারফরম্যান্স অর্জন করতে পারে।
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 00:00:00 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Stochastic Strategy v1.2", shorttitle = "Stochastic str 1.2", 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 = SMI < -1 * limit and close < open and body and usesmi dn1 = SMI > 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()