
ডাবল এমএ ট্রেডিং কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা দুটি ভিন্ন চক্রের চলমান গড় ব্যবহার করে প্রবণতা নির্ধারণ এবং প্রবেশের জন্য। কৌশলটি মূলত ধীর গতির এমএ দ্বারা সামগ্রিক প্রবণতা দিক নির্ধারণ করে এবং দ্রুত এমএ ব্যবহার করে প্রবেশের জন্য ফিল্টার করে। বড় স্তরের প্রবণতা দিকটি সামঞ্জস্যপূর্ণ হলে, উচ্চতর জয় এবং মুনাফা অর্জনের জন্য প্রবেশের জন্য বিপরীত কে লাইনটি বেছে নিন।
এই কৌশলটি নিম্নলিখিত অংশগুলি নিয়ে গঠিতঃ
প্রবণতা মূল্যায়নঃ21 চক্রের এমএ গণনা করে, এটি একটি ধীর গতির এমএ হিসাবে সংজ্ঞায়িত করা হয়, এর অবস্থান তুলনামূলকভাবে স্থিতিশীল, এটি সামগ্রিক প্রবণতার দিকনির্দেশের জন্য ব্যবহার করা যেতে পারে। যখন দাম বেড়ে যায় তখন এই এমএ মানের কাছাকাছি যাওয়ার অর্থ উত্থান, যখন দাম কমে যায় তখন এই এমএ মানের কাছাকাছি যাওয়ার অর্থ পতন।
প্রবেশের ফিল্টারঃ5 চক্রের এমএ গণনা করা হয়, যা দ্রুত এমএ হিসাবে সংজ্ঞায়িত করা হয়। শুধুমাত্র যখন দাম একটি ধীর এমএ অতিক্রম করে এবং একই সাথে একটি দ্রুত এমএ অতিক্রম করে তখনই একটি ট্রেডিং সংকেত তৈরি করা হয়। এই নকশাটি মূলত আরও ছদ্মবেশী ব্রেকিংয়ের সম্ভাবনাকে ফিল্টার করে।
K-লাইন ফিল্টারঃকৌশলটি কেবল তখনই বেশি হয় যখন K লাইনটি ঋণাত্মক হয় বা K লাইনটি শূন্য হয়। এটি বিবেচনা করে যে বিপরীত K লাইনটি ব্যবহার করে প্রবেশের উচ্চতর সাফল্যের হার পাওয়া যায়। একই সাথে একটি দ্রুত আরএসআই সূচক যুক্ত করে অতিরিক্ত ওভারবয় বা ওভারসোল্ড অঞ্চলে প্রবেশ করা এড়ানো যায়।
গুদাম ফিল্টারঃক্রিপ্টোকারেন্সি বাজারের জন্য, কৌশলটি অতিরিক্তভাবে তিনগুণ ওভারব্রিজিং বিপর্যয়ের জন্য পজিশনিং শর্ত যুক্ত করে, বড় আকারের পতনের সময় ওভারব্রিজিংয়ের সুযোগগুলি ফিল্টার করে।
ক্ষতি প্রতিরোধক ডিজাইনঃকৌশলটি মোবাইল স্টপ সমর্থন করে। পজিশন খোলার পরে, স্টপ শতাংশের উপর ভিত্তি করে রিয়েল-টাইমে স্টপ আপডেট করা হবে।
এই কৌশলটির সুবিধাগুলো হলঃ
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
এই ঝুঁকির জন্য, নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যায়ঃ
প্যারামিটার অপ্টিমাইজেশান: আরও পদ্ধতিগত পুনরাবৃত্তির মাধ্যমে, দ্রুত এবং ধীর এমএ এর চক্রের প্যারামিটার সমন্বয়কে অপ্টিমাইজ করা, সামগ্রিক রিটার্ন-ঝুঁকি অনুপাতকে উন্নত করা।
মডেল সনাক্তকরণ: কেডিজে, এমএসিডি ইত্যাদির মতো অন্যান্য সূচক যুক্ত করুন, আরও নির্ভরযোগ্য বিপরীত সিগন্যাল সনাক্ত করুন।
স্টপ লস অপ্টিমাইজেশান: ফ্লোটিং স্টপ, স্টপ ট্র্যাকিং ইত্যাদির জন্য অ্যালগরিদম তৈরি করা, যাতে স্টপ ট্রিগার হওয়ার সম্ভাবনা কম থাকে।
মেশিন শিক্ষা: আরও ঐতিহাসিক তথ্য সংগ্রহ ও ট্যাগ করা, মেশিন লার্নিং পদ্ধতি ব্যবহার করে স্বয়ংক্রিয়ভাবে ট্রেডিং নিয়ম তৈরি করা।
কোয়ান্টাম পজিশন: বাজার পরিস্থিতি অনুযায়ী পজিশন ম্যানেজমেন্ট কৌশল স্বয়ংক্রিয়ভাবে সামঞ্জস্য করুন।
ডাবল এমএ ক্রমানুসারে ব্রেকআউট কৌশলটি সামগ্রিকভাবে একটি তুলনামূলকভাবে সহজ এবং ব্যবহারিক প্রবণতা ট্র্যাকিং কৌশল। জটিল মেশিন লার্নিং অ্যালগরিদমের তুলনায় এই কৌশলটি ব্যাখ্যা করা এবং আয়ত্ত করা সহজ এবং এটির নির্ভরযোগ্যতাও বেশি। প্যারামিটার অপ্টিমাইজেশন, ফাংশন এক্সটেনশন এবং মেশিন লার্নিং প্রবর্তনের সাথে সাথে এই কৌশলটি আরও উন্নত হওয়ার সম্ভাবনা রয়েছে। এটি একটি ভাল শুরুতে পরিমাণগত ব্যবসায়ের জন্য।
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", 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, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
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?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
src = useohlc4 == true ? ohlc4 : 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)
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0
//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0
up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0
//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")
//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 or (up2 == 1 and needex == true) or up3 == 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)