
এই কৌশলটি মূল্য চ্যানেলের সূচকের উপর ভিত্তি করে, গতিশীলতার প্যারামিটার সেট করে, বিভিন্ন চক্রের সর্বোচ্চ এবং সর্বনিম্ন দামের গড় গণনা করে মূল্য চ্যানেলের মাঝারি লাইন তৈরি করে, এটিকে একটি বেঞ্চমার্ক হিসাবে ব্যবহার করে, দীর্ঘ এবং সংক্ষিপ্ত লাইন সেট করে। যখন দাম দীর্ঘ লাইনটি ভেঙে যায়, তখন আরও বেশি করে; যখন দাম সংক্ষিপ্ত লাইনটি ভেঙে যায়, তখন খালি করে। সমতল অবস্থানের শর্তটি হল দামের চ্যানেলের মাঝারি লাইনে ফিরে আসা।
এই কৌশলটি মূল্য চ্যানেলের সূচক ব্যবহার করে বিভিন্ন সময়ের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন দামের গড় গণনা করে, মূল্য চ্যানেলের মাঝারি লাইন গঠন করে। মাঝারি লাইনটি বেঞ্চমার্ক হিসাবে, শিফট প্যারামিটারগুলির মাধ্যমে দীর্ঘ লাইন এবং সংক্ষিপ্ত লাইন সেট করুন। বিশেষত, দীর্ঘ লাইন গণনা করার সূত্রটি হলঃ মাঝারি লাইন + ((মধ্য লাইন × দীর্ঘ লাইন প্যারামিটার%); সংক্ষিপ্ত লাইন গণনা করার সূত্রটি হলঃ মাঝারি লাইন + ((মধ্য লাইন × সংক্ষিপ্ত লাইন প্যারামিটার%) ।
যখন দাম লম্বা লাইনের নিচে থাকে, তখন সীমিত মূল্যের একক কার্ড ব্যবহার করে একাধিক কার্ড খুলুন; যখন দাম সংক্ষিপ্ত লাইনের উপরে থাকে, তখন সীমিত মূল্যের একক কার্ড ব্যবহার করে একটি খালি কার্ড খুলুন। মাল্টি খালি কার্ডের ক্ষতি বন্ধ করার উপায় হল দামের মধ্যবর্তী লাইনে ফিরে আসা।
এই কৌশলটির সুবিধাগুলো হলঃ
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
এই ঝুঁকি কমানোর জন্য, প্যারামিটারগুলিকে অপ্টিমাইজ করুন, স্টপ লস অর্ডার সেট করুন বা অন্যান্য সূচকগুলির সাথে একত্রিত করুন।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
এই কৌশলটি মূল্যের চ্যানেলের সূচকগুলির উপর ভিত্তি করে ডিজাইন করা হয়েছে। এটির ব্যবহারের মাধ্যমে ঝুঁকিগুলি কার্যকরভাবে নিয়ন্ত্রণ করা যায়। তবে প্যারামিটার অপ্টিমাইজেশনের জন্য প্রচুর জায়গা রয়েছে এবং ক্ষতির ব্যবস্থাটি উন্নত করা দরকার। সামগ্রিকভাবে, এই কৌশলটির কিছু ব্যবহারিক মূল্য রয়েছে যা আরও পরীক্ষা এবং অপ্টিমাইজেশনের জন্য উপযুক্ত।
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Noro's PCMA Strategy v1.0", shorttitle = "PCMA 1.0", overlay = true, 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")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
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")
//Price Channel
h = highest(high, per)
l = lowest(low, per)
c = (h + l) / 2
ll = c + ((c / 100) * longlevel)
sl = c + ((c / 100) * shortlevel)
//Lines
shortcolor = needshort ? red : na
longcolor = needlong ? lime : na
plot(sl, linewidth = 2, color = shortcolor, title = "Short line")
plot(c, linewidth = 2, color = blue, title = "SMA line")
plot(ll, linewidth = 2, color = longcolor, title = "Long line")
//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 = ll, 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 = sl, 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 = c, 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 = c, 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()