দ্বৈত মুভিং এভারেজ ট্রেন্ড অনুসরণ কৌশল


সৃষ্টির তারিখ: 2023-09-18 21:57:00 অবশেষে সংশোধন করুন: 2023-09-18 21:57:00
অনুলিপি: 1 ক্লিকের সংখ্যা: 646
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

মূলনীতি

এই কৌশলটি একটি সংক্ষিপ্ত দৈর্ঘ্যের দ্রুত চলমান গড় এবং একটি দীর্ঘ দৈর্ঘ্যের ধীর চলমান গড় ব্যবহার করে।

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

উর্ধ্বমুখী ট্রেন্ডে, যদি দ্রুত এমএ উপর দিয়ে ধীর এমএ অতিক্রম করে, একটি কেনার সংকেত উৎপন্ন হয়; একটি নেমে যাওয়া ট্রেন্ডে, যদি দ্রুত এমএ নিচে দিয়ে ধীর এমএ অতিক্রম করে, একটি বিক্রির সংকেত উৎপন্ন হয়।

ট্রেডিং সিগন্যালের পরে, স্টপ লস ট্র্যাকিং চালিয়ে যাওয়ার জন্য স্টপ লস সেট করার বিকল্প রয়েছে।

সুবিধা

  1. দ্রুত এবং ধীরে ধীরে, এমএ সমন্বয় কার্যকরভাবে প্রবণতা সনাক্ত করতে পারে।

  2. ফাস্ট এমএ একটি সংবেদনশীল ট্রেডিং সিগন্যাল তৈরি করতে পারে।

  3. ধীরে ধীরে বাজারের গোলমাল দূর করতে এবং ভুয়া ব্রেকডাউন রোধ করতে।

  4. বিভিন্ন এমএ অ্যালগরিদম যেমন ইএমএ, ডিইএমএ ইত্যাদি নির্বাচন করা যেতে পারে।

  5. স্টপ লস ট্র্যাকিং স্টপ লস কৌশল সক্ষম করুন।

ঝুঁকি ও সমাধান

  1. এএমএ-তে লেগিং সমস্যা রয়েছে, যা সিগন্যাল লেগিংয়ের কারণ হতে পারে। আরও সংবেদনশীল পরামিতি পরীক্ষা করা যেতে পারে।

  2. স্টপ ক্ষতির পয়েন্টটি খুব কাছাকাছি হতে পারে, এটি ভেঙে ফেলার ফলে ক্ষতি হতে পারে। উপযুক্তভাবে ওঠানামা করার জন্য জায়গা ছেড়ে দেওয়া উচিত।

  3. ট্রেডিং ভলিউম বিবেচনা না করে, মূল্যের সাথে চালিত হওয়ার ঝুঁকি রয়েছে। ☞ ☞ ☞ ☞ ☞ ☞ ☞ ☞

  4. কেবলমাত্র সূচকের উপর ভিত্তি করে মিথ্যা সংকেত তৈরি করতে পারে। অন্যান্য কারণের সাথে নিশ্চিতকরণ করা যেতে পারে।

  5. প্যারামিটার অপ্টিমাইজেশনের অসুবিধা। আপনি ধাপে ধাপে অপ্টিমাইজেশন বা জেনেটিক অ্যালগরিদম ব্যবহার করে সর্বোত্তম প্যারামিটার খুঁজে পেতে পারেন।

অনুকূলিতকরণ

  1. বিভিন্ন MA অ্যালগরিদমের পরামিতি পরীক্ষা করে, সর্বোত্তম পরামিতি খুঁজুন।

  2. সেন্সরশিপ বাড়াতে চলন্ত গড়ের উপর গবেষণা করা হচ্ছে।

  3. সংকেত ফিল্টারিং অপ্টিমাইজেশনের জন্য অন্যান্য সূচক বা কারণ যোগ করুন।

  4. একটি গতিশীল ক্ষতি বন্ধ করার ব্যবস্থা তৈরি করুন যাতে ক্ষতি বন্ধ করা আরও নমনীয় হয়।

  5. তহবিল ব্যবস্থাপনা কৌশল অনুকূলিতকরণ, যেমন ATR গতিশীলতার উপর ভিত্তি করে অবস্থানের সমন্বয়।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.7", shorttitle = "Trend MAs str 1.7", 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, %")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, 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?")
needarr = input(false, defval = false, title = "Need entry arrows?")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Trend
ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[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

//Signals
min = min(open, close)
max = max(open, close)
up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)