
এই কৌশলটি দুটি ভিন্ন প্যারামিটার সেটের চলমান গড় গণনা করে এবং তাদের ক্রস-সংশ্লিষ্টতার সাথে তুলনা করে মূল্যের প্রবণতার দিক নির্ধারণ করে ট্রেন্ড ট্র্যাকিংয়ের জন্য ট্রেডিংয়ের অনুমতি দেয়। যখন দ্রুত চলমান গড় নীচে থেকে ধীর চলমান গড়কে ভেঙে দেয়, তখন এটি একটি উর্ধ্বমুখী সংকেত হিসাবে বিচার করা হয়। যখন দ্রুত চলমান গড় নীচে থেকে ধীর চলমান গড়কে ভেঙে দেয়, তখন এটি একটি নেতিবাচক সংকেত হিসাবে বিচার করা হয়। এই কৌশলটি বিভিন্ন চক্রের জন্য প্রবণতা নির্ধারণ করতে পারে।
এই কৌশলটি দুটি ভিন্ন প্যারামিটার সেট ব্যবহার করে চলমান গড়ের তুলনা করে, প্রথম চলমান গড় প্যারামিটারটি len1 এবং type1 দ্বারা সেট করা হয় এবং দ্বিতীয় চলমান গড় প্যারামিটারটি len2 এবং type2 দ্বারা সেট করা হয়। len1 এবং len2 যথাক্রমে দুটি চলমান গড়ের সময়কালের দৈর্ঘ্য এবং type1 এবং type2 চলমান গড়ের অ্যালগরিদমের ধরণকে প্রতিনিধিত্ব করে।
যখন দ্রুত চলমান গড় নীচে থেকে ধীর চলমান গড় বিরতি গল্ড ফর্ক গঠন করে, একটি bullish সংকেত হিসাবে বিচার; যখন দ্রুত চলমান গড় নীচে থেকে ধীর চলমান গড় বিরতি একটি মৃত ফর্ক গঠন করে, একটি bearish সংকেত হিসাবে বিচার।
ক্রস সিগন্যালের দিকনির্দেশের উপর ভিত্তি করে, অতিরিক্ত বা স্বল্প ক্রিয়াকলাপ সম্পাদন করুন। যখন একটি উত্সাহী সংকেত ট্রিগার হয়, যদি needlong প্যারামিটারটি সত্য হয় তবে ডিফল্ট_কিউটি_ভ্যালুয়ের পরিমাণ বা পজিশনের শতাংশ_অফ_ইকুইটি অনুসারে অতিরিক্ত করুন; যখন একটি পরাজয়ী সংকেত ট্রিগার হয়, যদি প্রয়োজনশর্ট প্যারামিটারটি সত্য হয় তবে ডিফল্ট_কিউটি_ভ্যালুয়ের পরিমাণ বা পজিশনের শতাংশ_অফ_ইকুইটির শতাংশ অনুসারে শূন্য করুন।
মুভিং এভারেজ পিছিয়ে আছে, দামের বিপরীত দিকটি মিস করতে পারে সমাধানঃ যথাযথভাবে মুভিং এভারেজ চক্র সংক্ষিপ্ত করা, অথবা অন্যান্য সূচক সমন্বয়ে ব্যবহার করা
উচ্চ অস্থিরতা এবং ঘন ঘন বিপরীতমুখী বাজারে প্রযোজ্য নয় সমাধানঃ ঝড়ের সময় ট্রেডিং এড়াতে ফিল্টারিং বাড়ানো
ভুয়া সংকেতের ঝুঁকি রয়েছে সমাধানঃ অন্যান্য পরিস্রাবণ সূচক যোগ করে সংমিশ্রণ করা, সংকেতের নির্ভরযোগ্যতা বাড়ানো
এই কৌশলটি দুটি চলমান গড়ের ক্রস পরিস্থিতির তুলনা করে মূল্যের প্রবণতা নির্ধারণ করে এবং সংশ্লিষ্ট মুনাফা-মুনাফা অপারেশন করে, যাতে প্রবণতা ক্যাপচার এবং ট্র্যাকিংয়ের জন্য লাভ করা যায়। কৌশলটির সুবিধাগুলি হ’ল সংকেত নিয়মগুলি সহজ এবং স্পষ্ট, প্যারামিটারগুলি নিয়ন্ত্রণযোগ্য, প্রয়োগযোগ্যতা শক্তিশালী, একাধিক বাজার পরিবেশের জন্য অনুকূলিতকরণ করা যায়। চলমান গড়ের পিছনে এবং অস্থিরতার ঝুঁকি প্রতিরোধে মনোযোগ দেওয়া প্রয়োজন, অন্যান্য সূচক যুক্ত করে সংকেতের গুণমান উন্নত করতে ফিল্টার করা যেতে পারে।
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Cross Tests v1.0", shorttitle = "MAs Cross tests 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)
needlong = input(true, "long")
needshort = input(true, "short")
len2 = input(15, defval = 15, minval = 2, maxval = 1000, title = "Fast MA length")
type2 = input(1, defval = 1, minval = 1, maxval = 7, title = "Fast MA Type")
src2 = input(close, defval = close, title = "Fast MA Source")
len1 = input(30, defval = 30, minval = 2, maxval = 1000, title = "Slow MA length")
type1 = input(1, defval = 1, minval = 1, maxval = 7, title = "Slow MA Type")
src1 = input(close, defval = close, title = "Slow MA Source")
col = input(false, defval = false, title = "Color of bar")
o = input(false, title = "1 SMA, 2 EMA, 3 VWMA, 4 DEMA, 5 TEMA, 6 KAMA, 7 Price Channel")
//DEMA 1
dema1 = 2 * ema(src1, len1) - ema(ema(close, len1), len1)
//TEMA 1
xEMA1 = ema(src1, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
tema1 = 3 * xEMA1 - 3 * xEMA2 + xEMA3
//KAMA 1
xvnoise = abs(src1 - src1[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src1 - src1[len1])
nnoise = sum(xvnoise, len1)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
kama1 = nz(kama1[1]) + nsmooth * (src1 - nz(kama1[1]))
//PriceChannel 1
lasthigh1 = highest(src1, len1)
lastlow1 = lowest(src1, len1)
center1 = (lasthigh1 + lastlow1) / 2
//DEMA 2
dema2 = 2 * ema(src2, len2) - ema(ema(close, len2), len2)
//TEMA 2
xEMA12 = ema(src2, len2)
xEMA22 = ema(xEMA12, len2)
xEMA32 = ema(xEMA22, len2)
tema2 = 3 * xEMA12 - 3 * xEMA22 + xEMA32
//KAMA 2
xvnoise2 = abs(src2 - src2[1])
nfastend2 = 0.20
nslowend2 = 0.05
nsignal2 = abs(src2 - src2[len2])
nnoise2 = sum(xvnoise2, len2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2)
kama2 = nz(kama2[1]) + nsmooth2 * (src2 - nz(kama2[1]))
//PriceChannel 2
lasthigh2 = highest(src2, len2)
lastlow2 = lowest(src2, len2)
center2 = (lasthigh2 + lastlow2) / 2
//MAs
ma1 = type1 == 1 ? sma(src1, len1) : type1 == 2 ? ema(src1, len1) : type1 == 3 ? vwma(src1, len1) : type1 == 4 ? dema1 : type1 == 5 ? tema1 : type1 == 6 ? kama1 : type1 == 7 ? center1 : 0
ma2 = type2 == 1 ? sma(src2, len2) : type2 == 2 ? ema(src2, len2) : type2 == 3 ? vwma(src2, len2) : type2 == 4 ? dema2 : type2 == 5 ? tema2 : type2 == 6 ? kama2 : type2 == 7 ? center2 : 0
plot(ma1, color = blue, linewidth = 3, transp = 0)
plot(ma2, color = red, linewidth = 3, transp = 0)
//Signals
trend = ma2 > ma1 ? 1 : ma2 < ma1 ? -1 : trend[1]
up = trend == 1 and ((close < open and close[1] < open[1]) or col == false)
dn = trend == -1 and ((close > open and close[1] > open[1]) or col == false)
if up
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if dn
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)