চলমান গড় ক্রসওভারের উপর ভিত্তি করে কৌশল অনুসরণ করে প্রবণতা

লেখক:চাওঝাং, তারিখঃ ২০২৪-০২-২৩ ১২ঃ২১ঃ৪০
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি বিভিন্ন প্যারামিটার সেটিং সহ দুটি চলমান গড় গণনা করে এবং তাদের ক্রসওভার পরিস্থিতি তুলনা করে দামের প্রবণতার দিক নির্ধারণ করে, যাতে ট্রেডিংয়ের পরে প্রবণতা বাস্তবায়ন করা যায়। যখন দ্রুত চলমান গড় নীচে থেকে ধীর চলমান গড়টি ভেঙে যায়, তখন এটি একটি উত্থান সংকেত হিসাবে বিচার করা হয়। যখন দ্রুত চলমান গড়টি উপরে থেকে ধীর চলমান গড়টি ভেঙে যায়, তখন এটি একটি হ্রাস সংকেত হিসাবে বিচার করা হয়। এই কৌশলটি প্যারামিটারগুলি সামঞ্জস্য করে বিভিন্ন চক্রের প্রবণতার বিচার অর্জন করতে পারে।

কৌশল নীতি

এই কৌশলটি তুলনা করার জন্য বিভিন্ন পরামিতি সেটিং সহ চলমান গড়ের দুটি সেট ব্যবহার করে। প্রথম চলমান গড় প্যারামিটারটি len1 এবং type1 দ্বারা সেট করা হয় এবং দ্বিতীয় চলমান গড় প্যারামিটারটি len2 এবং type2 দ্বারা সেট করা হয়। যেখানে len1 এবং len2 যথাক্রমে দুটি চলমান গড়ের চক্র দৈর্ঘ্য প্রতিনিধিত্ব করে এবং type1 এবং type2 চলমান গড়ের অ্যালগরিদম প্রকারকে প্রতিনিধিত্ব করে।

যখন দ্রুত চলমান গড়টি স্বর্ণের ক্রস গঠনের জন্য ধীর চলমান গড়ের উপরে অতিক্রম করে, তখন এটি একটি উত্থান সংকেত হিসাবে বিচার করা হয়। যখন দ্রুত চলমান গড়টি ধীর চলমান গড়ের নীচে অতিক্রম করে একটি মৃত ক্রস গঠনের জন্য, এটি একটি হ্রাস সংকেত হিসাবে বিচার করা হয়।

ক্রসওভার সিগন্যালের দিক অনুযায়ী, লং বা শর্ট পজিশনগুলি কার্যকর করা হবে। যখন একটি উত্থান সংকেত ট্রিগার করা হয়, যদি প্রয়োজনে দীর্ঘ প্যারামিটারটি সত্য হয়, তখন একটি দীর্ঘ অবস্থান ডিফল্ট_কিউটি_ভ্যালু বা শতাংশ_অফ_ইকুইটি পরিমাণের সাথে খোলা হবে। যখন একটি হ্রাস সংকেত ট্রিগার করা হয়, যদি প্রয়োজনে সংক্ষিপ্ত প্যারামিটারটি সত্য হয়, তখন একটি শর্ট অবস্থান ডিফল্ট_কিউটি_ভ্যালু বা শতাংশ_অফ_ইকুইটি পরিমাণের সাথে খোলা হবে।

সুবিধা

  1. বাজারের অবস্থার সাথে নমনীয়ভাবে মানিয়ে নিতে সাতটি ভিন্ন ধরণের চলমান গড়ের সমন্বয়কে সমর্থন করা
  2. দীর্ঘমেয়াদী এবং মাঝারি স্বল্পমেয়াদী প্রবণতা বিচার করার জন্য দুটি চলমান গড়ের পরামিতিগুলি কাস্টমাইজ করুন
  3. সহজ এবং স্পষ্ট সংকেত বিচার নিয়ম, সহজ বুঝতে এবং বাস্তবায়ন
  4. দীর্ঘ ও সংক্ষিপ্ত পজিশন সমর্থন, প্রবণতা ট্র্যাকিং লেনদেন সম্পাদন করতে পারেন

ঝুঁকি এবং সমাধান

  1. মুভিং গড়গুলির বিলম্বিত বৈশিষ্ট্য রয়েছে এবং মূল্য বিপরীত পয়েন্টগুলি মিস করতে পারে
    সমাধানঃ চলমান গড়ের চক্রগুলি যথাযথভাবে সংক্ষিপ্ত করুন, অথবা অন্যান্য সূচকের সাথে ব্যবহার করুন

  2. উচ্চ অস্থিরতা এবং ঘন ঘন বিপরীতমুখী বাজারগুলির জন্য উপযুক্ত নয়
    সমাধানঃ ওসিলেটিং মার্কেটে ট্রেডিং এড়াতে ফিল্টারিং শর্ত যুক্ত করুন

  3. মিথ্যা সংকেতগুলির কিছু ঝুঁকি রয়েছে
    সমাধানঃ সংকেত নির্ভরযোগ্যতা উন্নত করার জন্য সংমিশ্রণের জন্য অন্যান্য ফিল্টারিং সূচক যোগ করুন

অপ্টিমাইজেশান নির্দেশাবলী

  1. চলমান গড়ের চক্র সংমিশ্রণটি অনুকূল করুন এবং কৌশল রিটার্নের উপর দীর্ঘ এবং স্বল্প চক্রের পরামিতিগুলির প্রভাব পরীক্ষা করুন
  2. সর্বোত্তম চলমান গড় অ্যালগরিদম খুঁজে পেতে বিভিন্ন ধরণের চলমান গড়ের পারফরম্যান্স পরীক্ষা করুন
  3. সিগন্যালের গুণমান উন্নত করতে সংমিশ্রণের জন্য ট্রেডিং ভলিউম ভেরিয়েবল বা বোলিংজার ব্যান্ড যুক্ত করুন
  4. ফিক্সড পজিশনের %_of_equity পদ্ধতি উন্নত করার জন্য পজিশন ম্যানেজমেন্ট কৌশল অপ্টিমাইজ করুন

সংক্ষিপ্তসার

এই কৌশলটি দুটি চলমান গড়ের ক্রসওভারের তুলনা করে মূল্যের প্রবণতা বিচার করে এবং প্রবণতা ক্যাপচার এবং মুনাফা অর্জনের জন্য সংশ্লিষ্ট দীর্ঘ এবং সংক্ষিপ্ত অপারেশন করে। সুবিধাটি হ'ল সিগন্যাল নিয়মগুলি সহজ এবং পরিষ্কার, পরামিতিগুলি সামঞ্জস্যযোগ্য, প্রয়োগযোগ্যতা শক্তিশালী এবং এটি বিভিন্ন বাজারের পরিবেশের জন্য অনুকূলিত এবং সামঞ্জস্য করা যায়। চলমান গড় এবং অস্থির বাজারগুলির পিছনের ঝুঁকিগুলি রোধে মনোযোগ দিন, যা সিগন্যালের গুণমান উন্নত করতে ফিল্টারিংয়ের জন্য অন্যান্য সূচক যুক্ত করে হ্রাস করা যেতে পারে।


/*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)

আরো