এই কৌশলটি ট্রেন্ডের দিকনির্দেশের জন্য দ্রুত গড় এবং ধীর গড়ের সংমিশ্রণ ব্যবহার করে, মাঝারি এবং দীর্ঘ লাইনের প্রবণতা ক্যাপচার করার জন্য ট্রেন্ড ট্রেডিংয়ের জন্য। যখন দ্রুত গড়টি ধীর গড়টি অতিক্রম করে তখন অতিরিক্ত কাজ করা হয় এবং যখন দ্রুত গড়টি ধীর গড়টি অতিক্রম করে তখন ফাঁকা করা হয়।
এই কৌশলটি মূলত ট্রেড ট্রেন্ডের মূল্যায়ন করার জন্য সমান্তরালের উপর নির্ভর করে। বিশেষত, কৌশলটি 5 চক্রের দ্রুত গড় এবং 21 চক্রের ধীর গড় ব্যবহার করে।
যখন দ্রুত গড় লাইন উপর ধীর গড় লাইন অতিক্রম করে, বাজার প্রবণতা ঘুরিয়ে দেখায়, এই কৌশল পরবর্তী কে লাইন খোলা সময় আরো করতে হবে; যখন দ্রুত গড় লাইন নীচে ধীর গড় লাইন অতিক্রম করে, বাজার প্রবণতা ঘুরিয়ে দেখায়, এই কৌশল পরবর্তী কে লাইন খোলা সময় খালি করতে হবে।
এছাড়াও, কৌশলটি মিথ্যা ব্রেকিং ফিল্টার করার জন্য একটি বার্স ব্রেকিং প্যারামিটার সেট করে। এই প্যারামিটারের ডিফল্ট মান হল ২। অর্থাৎ, দ্রুত গড়রেখার উপরে ক্রমাগত 2 টি কে লাইন প্রয়োজন যাতে ধীর গড়রেখার উপরে একাধিক সংকেত প্রেরণ করা যায়, যা কার্যকরভাবে মিথ্যা ব্রেকিং ফিল্টার করতে পারে।
ক্রিপ্টোকারেন্সির ক্ষেত্রে, কৌশলটি চূড়ান্ত মূল্য বিচার লজিক যুক্ত করেছে। শুধুমাত্র যখন দ্রুত গড় এবং ধীর গড় একই সাথে চরম অঞ্চলে থাকে তখনই একটি লেনদেনের সংকেত দেওয়া হয়। এটি আরও ভুয়া বিরতি এড়াতেও ব্যবহৃত হয়।
স্ট্র্যাটেজি এক্সট্রুডের নিয়মটি সহজ এবং সরাসরি, যখন দাম স্টপ লস পয়েন্ট ট্রিগার করে তখন বর্তমান অবস্থান থেকে বেরিয়ে আসে।
নিম্নলিখিত উপায়ে ঝুঁকি কমাতে পারেনঃ
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
আরও বেশি সমন্বয় পরীক্ষা করা যেতে পারে এবং বর্তমান বাজারের জন্য আরও উপযুক্ত গড় লাইন প্যারামিটার খুঁজে পাওয়া যায়। উদাহরণস্বরূপ, দ্রুত লাইনটি 10 চক্রের জন্য এবং ধীর লাইনটি 50 চক্রের জন্য সামঞ্জস্য করুন।
অন্য সূচক যেমন MACD, KDJ ইত্যাদি পরীক্ষা করা যেতে পারে, যাতে ভুয়া ভাঙ্গন এড়াতে আরও কঠোর শর্ত সেট করা যায়।
বর্তমান ভর্তি খুব সহজ এবং গড়-রেখার উপর নির্ভরশীল, যা নিম্নরূপ অপ্টিমাইজ করা যেতে পারেঃ
অন্যান্য স্টপ পদ্ধতি পরীক্ষা করা যেতে পারে, যেমন দামের সাথে স্টপ ট্র্যাকিং, যাতে স্টপটি খুব তাড়াতাড়ি ট্রিগার না হয়।
যখন পজিশন বন্ধ হয়ে যায়, তখন আবার প্রবেশ করা যায়, যার ফলে স্টপ আউট মিস ট্রেন্ডের ঘটনা কমিয়ে আনা যায়।
এই কৌশলটি একটি মৌলিক প্রবণতা ট্র্যাকিং কৌশল হিসাবে কাজ করে, মূল ধারণাটি সহজ এবং সরাসরি, প্রবণতার দিক নির্ধারণের জন্য দ্বৈত সমান্তরাল এবং ঝুঁকি নিয়ন্ত্রণের জন্য চলমান স্টপ ব্যবহার করে। সুবিধাগুলি সহজেই বোঝা যায় এবং বাস্তবায়ন করা যায়, প্রবণতা অনুসরণ করা যায়, ঝুঁকিও নিয়ন্ত্রণ করা যায়। তবে একই সাথে কিছু ত্রুটি রয়েছে, সংকেতটি বাজারে সঠিক নয়, এবং স্টপগুলি খুব তাড়াতাড়ি ট্রিগার করা যায়। এটি আমাদের প্রয়োজন যে আমরা ক্রমাগত অপ্টিমাইজ করতে থাকি, অন্যান্য প্রযুক্তিগত সূচকগুলিকে ফিল্টার করতে থাকি, যাতে কৌশলটি বিভিন্ন বাজারের পরিবেশে আরও উপযুক্ত হয়। সামগ্রিকভাবে, এই কৌশলটি প্রবণতা ট্র্যাকিং প্রবেশদ্বার কৌশল হিসাবে নতুনদের জন্য উপযুক্ত, শেখার এবং ব্যবহারের জন্য উপযুক্ত। তবে আমরা এর সীমাবদ্ধতা সম্পর্কেও সচেতন থাকতে হবে এবং অন্যান্য উন্নত কৌশলগুলি সম্পর্কে ক্রমাগত শিখতে হবে। কেবলমাত্র কৌশলটি ক্রমাগত অপ্টিমাইজ করা যায়, যাতে একটি জটিল পরিবর্তিত বাজারে স্থিতিশীল উপার্জন অর্জন করা যায়।
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
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")
src = close
//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2
//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2
//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]
//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0
//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)
//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0
//Lines
plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Trading
stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]
if up1 or up2 or up3
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
strategy.exit("Stop Long", "Long", stop = stoplong)
if dn1
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
strategy.exit("Stop Short", "Short", stop = stopshort)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()