এই কৌশলটির নাম
কৌশলটি চলমান গড় গণনা করতে একটি দীর্ঘ সময়ের উপর উত্স মূল্য ব্যবহার করে, যেখানে উত্স মূল্য OHLC4, HLC3, বন্ধ মূল্য ইত্যাদি হতে পারে। ফলস্বরূপ চলমান গড়টি এসএমএ হিসাবে সংজ্ঞায়িত করা হয়। তারপরে দীর্ঘ লাইন এবং সংক্ষিপ্ত লাইনটি চলমান গড় মানের শতাংশের ভিত্তিতে গ্রাফ করা হয় তা নির্ধারণ করতে আমরা বর্তমানে একটি আপ বা ডাউন ট্রেন্ডে আছি কিনা।
বিশেষত, শর্ট লাইনটি গণনা করা হয়ঃ শর্টলাইন = এসএমএ * ((100 + শর্টলেভেল) / 100), যেখানে শর্টলেভেল হ'ল ব্যবহারকারীর দ্বারা সেট করা একটি ধনাত্মক সংখ্যা, যা শর্ট লাইনটি চলমান গড়ের উপরে রয়েছে এমন শতাংশকে উপস্থাপন করে। লং লাইনটি অনুরূপ, গণনা করা হয়ঃ লংলাইন = এসএমএ * ((100 + লংলেভেল) / 100), যেখানে লংলেভেল হ'ল ব্যবহারকারীর দ্বারা সেট করা একটি নেতিবাচক সংখ্যা, যা লং লাইনটি চলমান গড়ের নীচে রয়েছে এমন শতাংশকে উপস্থাপন করে।
এইভাবে, শর্ট লাইন মান সর্বদা চলমান গড়ের চেয়ে বড় এবং লং লাইন মান সর্বদা চলমান গড়ের চেয়ে কম। যখন মূল্য শর্ট লাইনের উপরে অতিক্রম করে, এটি উপরের প্রবণতা শুরু হয়। এই সময়ে যদি নেডলং দীর্ঘ সময় দেয় তবে এটি দীর্ঘ লাইনের দামের স্তরে একটি দীর্ঘ অর্ডার স্থাপন করবে। যখন দাম দীর্ঘ লাইনের নীচে অতিক্রম করে, এটি নিম্নমুখী প্রবণতা শুরু হয়। এই সময়ে যদি নেডলং শর্টকে অনুমতি দেয় তবে এটি শর্ট লাইনের দামের স্তরে একটি শর্ট অর্ডার স্থাপন করবে।
লং বা শর্ট যাই হোক না কেন, যখন দাম চলমান গড়ের দিকে ফিরে যায়, এর অর্থ হল প্রবণতা শেষ হয়। এই সময়ে এটি পূর্ববর্তী সমস্ত অবস্থান বন্ধ করবে।
সুতরাং প্রবণতা দিক এবং সংশ্লিষ্ট এন্ট্রি এবং বিদ্যমান দীর্ঘ / সংক্ষিপ্ত লাইন এবং চলমান গড় লাইন মধ্যে গতিশীল সম্পর্ক দ্বারা নির্ধারিত হয়।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল দীর্ঘ এবং সংক্ষিপ্ত লাইনগুলি গতিশীলভাবে সেট করে এটি মূল প্রবণতার দিকটি তুলনামূলকভাবে নমনীয়ভাবে ক্যাপচার করতে পারে। স্থির স্তরে প্রবেশ এবং প্রস্থানগুলি ট্রিগার করে এমন কৌশলগুলির তুলনায় এই কৌশলটি আরও উন্নত এবং বুদ্ধিমান।
দ্বিতীয়ত, চলমান গড় নিজেই একটি পরিসীমা ফিল্টারিং প্রভাব আছে, যা একটি নির্দিষ্ট পরিমাণে উচ্চ ফ্রিকোয়েন্সি ওঠানামা দ্বারা ফাঁদ এড়ানো হয়। এছাড়াও, একটি সময়মত পদ্ধতিতে প্রবণতা বিচার করা হয় যখন চলমান গড় স্তরের উপর ভিত্তি করে অতিক্রম করা হয় খুব গুরুত্বপূর্ণ।
এই কৌশলটির সবচেয়ে বড় ঝুঁকি হ'ল চলমান গড়ের পারফরম্যান্স বিভিন্ন সময়কালে পৃথক হয়। সাধারণত চলমান গড়টি প্রবণতার দিকটি উপস্থাপনের জন্য যথেষ্ট, তবে কিছু চরম বাজারের অবস্থার মধ্যে, চলমান গড়টি স্বল্পমেয়াদে অনুপ্রবেশ করতে পারে, যা ভুল এন্ট্রি বা শীর্ষ বিচ্যুতি ইত্যাদির কারণ হতে পারে। এই ক্ষেত্রে প্রবণতা বিচারের নির্ভুলতা নিশ্চিত করার জন্য দীর্ঘ সময়ের চলমান গড়ের প্রয়োজন হয়।
ঝুঁকির আরেকটি দিক হ'ল চলমান গড়গুলির নিজস্ব উচ্চ ইনার্টি রয়েছে। কিছু সংক্ষিপ্ত এবং তীব্র দামের ওঠানামা করার জন্য, চলমান গড়গুলির জন্য সময়মতো প্রতিক্রিয়া জানানো কঠিন, সুতরাং প্রবেশ বা প্রস্থান পয়েন্টগুলি মিস করা। চলমান গড়ের প্রতিক্রিয়া গতি ত্বরান্বিত করার জন্য সময়কালকে হ্রাস করা দরকার।
কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অনুকূলিত করা যেতে পারেঃ
স্টপ লস লজিক যোগ করুন। যেহেতু চলমান গড়গুলি প্রবণতা বিচার করতে বিলম্ব করে, তাই ফাঁদে পড়া সম্পূর্ণরূপে এড়ানো যায় না। তাই উপযুক্ত ট্রেলিং স্টপগুলি ঝুঁকি আরও হ্রাস করতে পারে।
দীর্ঘ / সংক্ষিপ্ত রেখাগুলির পরামিতিগুলি অনুকূল করুন। বর্তমানে চলমান গড় থেকে দীর্ঘ / সংক্ষিপ্ত রেখাগুলির শতাংশ বিচ্যুত হয়। সর্বোত্তম মানগুলি খুঁজে পেতে বিভিন্ন ডেটাসেটে এগুলি পরীক্ষা করা যেতে পারে।
প্রবণতা শক্তি বিচার যোগ করুন। দুর্বল প্রবণতা সংকেত থেকে ত্রুটি এড়াতে, দীর্ঘ / সংক্ষিপ্ত লাইন অবস্থানগুলি ছাড়াও অ্যালগরিদমগুলি প্রবণতার শক্তিও বিচার করতে পারে।
ক্রস-পণ্যের পারফরম্যান্স যাচাই করার জন্য অন্যান্য ট্রেডিং পণ্যগুলিতে চলমান গড়গুলি প্রয়োগ করার চেষ্টা করুন।
এই কৌশলটি গতিশীল গড়ের উপর ভিত্তি করে প্রবেশ এবং প্রস্থান পয়েন্টগুলি গতিশীলভাবে সেট করে প্রবণতা এবং সম্পর্কিত দীর্ঘ / সংক্ষিপ্ত ব্যবসায় নির্ধারণ করে। গতিশীল গড়ের উপর ভিত্তি করে গতিশীলভাবে ট্রেডিং সংকেত উত্পন্ন করার এই পদ্ধতিটি স্ট্যাটিক ট্রিগার স্তরের তুলনায় মূল্য প্রবণতা ক্যাপচার করতে আরও নমনীয় এবং বুদ্ধিমান। এটি গতিশীল গড়গুলির নিজস্ব সময়মতোতার অভাবের সমস্যাও সমাধান করে। পদ্ধতিগত ব্যাকটেস্টিং এবং পরামিতি অপ্টিমাইজেশনের সাথে, এই কৌশলটি ভাল মুনাফা দিতে পারে।
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ShiftMA Strategy v1.1", shorttitle = "ShiftMA str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") per = input(3, title = "Length") src = input(ohlc4, title = "Source") shortlevel = input(10.0, title = "Short line (red)") longlevel = input(-5.0, title = "Long line (lime)") 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") //SMAs sma = sma(src, per) //sma = lowest(low, per) shortline = sma * ((100 + shortlevel) / 100) longline = sma * ((100 + longlevel) / 100) plot(shortline, linewidth = 2, color = red, title = "Short line") plot(sma, linewidth = 2, color = blue, title = "SMA line") plot(longline, linewidth = 2, color = lime, title = "Long line") //plot(round(buy * 100000000), linewidth = 2, color = lime) //plot(round(sell * 100000000), linewidth = 2, color = red) //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[per])) and size == 0 and needlong strategy.entry("L", strategy.long, lot, limit = longline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[per])) and size == 0 and needshort strategy.entry("S", strategy.short, lot, limit = shortline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[per])) and size > 0 strategy.entry("Close", strategy.short, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[per])) and size < 0 strategy.entry("Close", strategy.long, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()