ডুয়াল এমএ ট্রেন্ড ব্রেকআউট কৌশল একটি পরিমাণগত ট্রেডিং কৌশল যা প্রবণতা নির্ধারণ এবং এন্ট্রি সংকেত তৈরির জন্য বিভিন্ন সময়ের দুটি চলমান গড় ব্যবহার করে। এটি মূলত ধীর এমএ এর মাধ্যমে সামগ্রিক প্রবণতার দিক বিচার করে এবং এন্ট্রি ফিল্টারিংয়ের জন্য দ্রুত এমএ ব্যবহার করে। যখন বৃহত্তর সময়সীমার প্রবণতার দিকটি ধারাবাহিক হয়, তখন এটি উচ্চতর জয় হার এবং লাভজনকতা অর্জনের জন্য প্রবেশের জন্য বিপরীত বারগুলি নির্বাচন করে।
কৌশলটি নিম্নলিখিত প্রধান অংশগুলির সমন্বয়ে গঠিতঃ
প্রবণতা বিচার: 21 পিরিয়ডের এমএ গণনা করে, যা ধীর এমএ হিসাবে সংজ্ঞায়িত করা হয়। এর অবস্থানটি তুলনামূলকভাবে স্থিতিশীল এবং সামগ্রিক প্রবণতার দিক বিচার করতে ব্যবহার করা যেতে পারে। যখন এই এমএ এর কাছাকাছি দাম বেড়ে যায়, এটি একটি উত্থান প্রবণতা। যখন দাম এই এমএ এর কাছাকাছি পড়ে, এটি একটি হ্রাস প্রবণতা।
এন্ট্রি ফিল্টারিং: 5 পিরিয়ডের এমএ গণনা করে, যা দ্রুত এমএ হিসাবে সংজ্ঞায়িত করা হয়। কেবলমাত্র যখন দাম ধীর এমএ এবং দ্রুত এমএ উভয়ই ভেঙে যায়, তখন ট্রেডিং সিগন্যালটি ট্রিগার হয়। এই নকশাটি মূলত মিথ্যা ব্রেকআউটের সম্ভাবনাকে আরও ফিল্টার করে।
মোমবাতি ফিল্টারিং: বর্তমান মোমবাতিটি হ্রাসের সময় কেবল দীর্ঘ হয়, বা বর্তমান মোমবাতিটি উত্থানের সময় শর্ট হয়। এটি বিবেচনা করে যে প্রবেশের জন্য বিপরীত বারগুলি ব্যবহার করে উচ্চতর সাফল্যের হার অর্জন করা যায়। এটি অতিরিক্ত ক্রয় বা oversold অঞ্চলে প্রবেশ এড়ানোর জন্য দ্রুত আরএসআই সূচকটিও একত্রিত করে।
পিরামিড ফিল্টার: ক্রিপ্টোকারেন্সি বাজারের জন্য, কৌশলটিতে উল্লেখযোগ্য হ্রাসের প্রবণতার ক্ষেত্রে অতিরিক্ত বিক্রির সুযোগগুলি ক্যাপচার করার জন্য তিনগুণ অস্থিরতা ব্রেকআউট শর্ত অন্তর্ভুক্ত রয়েছে।
হারানো বন্ধ করুন: কৌশলটি চলমান স্টপ লসকে সমর্থন করে। পজিশন খোলার পরে, স্টপ লস সেট শতাংশের ভিত্তিতে রিয়েল-টাইমে আপডেট করা হবে।
এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ
এই কৌশলের কিছু ঝুঁকিও রয়েছে:
এই ঝুঁকিগুলি মোকাবেলা করার জন্য নিম্নলিখিত দিকগুলিতে অপ্টিমাইজেশন করা যেতে পারেঃ
এই কৌশলটি অপ্টিমাইজ করার জন্য প্রধান দিকগুলির মধ্যে রয়েছেঃ
প্যারামিটার অপ্টিমাইজেশন: ঝুঁকি-সমন্বিত রিটার্ন উন্নত করার জন্য সর্বোত্তম দ্রুত এবং ধীর এমএ সময়ের সমন্বয় খুঁজে পেতে পদ্ধতিগতভাবে ব্যাকটেস্ট।
প্যাটার্ন স্বীকৃতি: আরও নির্ভরযোগ্য বিপরীতমুখী সংকেত চিহ্নিত করতে KDJ, MACD এর মতো অন্যান্য সূচক যুক্ত করুন।
স্টপ লস অপ্টিমাইজেশন: থামার সম্ভাবনা কমাতে ফ্লোটিং বা ট্রেলিং স্টপ লস অ্যালগরিদম তৈরি করুন।
মেশিন লার্নিং: মেশিন মেশিন ব্যবহার করে স্বয়ংক্রিয়ভাবে ট্রেডিং নিয়ম তৈরি করার জন্য আরো ঐতিহাসিক তথ্য সংগ্রহ এবং লেবেল করুন।
অবস্থান আকার: বাজারের অবস্থার উপর ভিত্তি করে অবস্থানের আকারকে গতিশীলভাবে সামঞ্জস্য করুন।
ডুয়াল এমএ ট্রেন্ড ব্রেকআউট কৌশলটি সাধারণত একটি সহজ এবং ব্যবহারিক ট্রেন্ড অনুসরণকারী কৌশল। জটিল মেশিন লার্নিং অ্যালগরিদমের তুলনায়, এই কৌশলটি ব্যাখ্যা করা এবং আয়ত্ত করা সহজ, উচ্চতর নির্ভরযোগ্যতার সাথে। প্যারামিটার টিউনিং, বৈশিষ্ট্য সম্প্রসারণ এবং এমএল অগমেন্টেশনের সাথে, এই কৌশলটির উন্নতির জন্য দুর্দান্ত সম্ভাবনা রয়েছে এবং এটি পরিমাণগত ব্যবসায়ের জন্য একটি দুর্দান্ত সূচনা পয়েন্ট।
/*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)