ডুয়াল মুভিং এভারেজ ক্রসওভার ট্রেডিং কৌশল একটি পরিমাণগত ট্রেডিং কৌশল যা প্রবেশ এবং প্রস্থান সংকেত নির্ধারণের জন্য চলমান গড় ক্রসওভার ব্যবহার করে। এই কৌশলটি ফিল্টারিংয়ের একাধিক স্তর তৈরি করতে এবং আরও নির্ভরযোগ্য বাণিজ্য সংকেতগুলির জন্য মিথ্যা সংকেত হ্রাস করতে বিভিন্ন সময়সীমার চলমান গড়কে একত্রিত করে।
এই কৌশলটির মূল যুক্তি হ'ল 3 টি টাইমফ্রেম (180 মিনিট, 60 মিনিট, 120 মিনিট) জুড়ে 2 টি চলমান গড় (10 দিন এবং 200 দিন) ট্র্যাক করা। যখন দ্রুততম চলমান গড়টি ধীর গতির গড়ের উপরে অতিক্রম করে, তখন একটি সোনার ক্রসওভার উত্পন্ন হয়, যা ইঙ্গিত করে যে যন্ত্রটি একটি আপট্রেন্ডে রয়েছে। যখন দ্রুততম চলমান গড়টি ধীর গতির নীচে অতিক্রম করে, তখন একটি মৃত্যুর ক্রসওভার উত্পন্ন হয়, যা একটি ডাউনট্রেন্ডকে নির্দেশ করে।
প্রথমত, 10 দিনের এবং 200 দিনের চলমান গড়গুলি 180 মিনিট এবং 60 মিনিটের সময়সীমার জন্য আলাদাভাবে গণনা করা হয়। যখন 180 মিনিটের সময়সীমার 10-দিনের এমএ 200 দিনের এমএ এর উপরে অতিক্রম করে, তখন একটি সোনার ক্রসওভার সংকেত উত্পন্ন হয়। যখন এটি নীচে অতিক্রম করে, তখন একটি মৃত্যু ক্রসওভার সংকেত উত্পন্ন হয়। এটি দ্রুত চক্রের ট্রেডিং সংকেত সরবরাহ করে।
পরবর্তীতে, কৌশলটি ১২০ মিনিটের সময়সীমার উপর ২০০ দিনের এমএকে একটি
উদাহরণস্বরূপ, যখন 180 মিনিটের চক্রের উপর একটি সোনার ক্রসওভার ঘটে, শুধুমাত্র যদি 60 মিনিটের 200 দিনের এমএ 120 মিনিটের 200 দিনের এমএ এর উপরে থাকে, তবে কৌশলটি দীর্ঘ হবে। এই শর্তটি পূরণ হলেই লং পজিশনটি খোলা হবে। বিপরীতভাবে, যদি 60 মিনিটের 200 দিনের এমএ 120 মিনিটের নীচে থাকে তবে কোনও লং পজিশন নেওয়া হবে না।
সংক্ষেপে, বিভিন্ন সময়সীমার মধ্যে চলমান গড় সম্পর্কগুলির তুলনা করে, এই কৌশলটি সংকেত নির্ভরযোগ্যতা উন্নত করার জন্য ফিল্টারিংয়ের একাধিক স্তর তৈরি করে, এটি ফিল্টার ভিত্তিক ট্রেডিং কৌশলটির একটি সাধারণ প্রকার করে তোলে।
মাল্টি-টাইমফ্রেম নিশ্চিতকরণের মাধ্যমে উন্নত নির্ভুলতা। একক-টাইমফ্রেম সংকেতের তুলনায়, 180/60/120 মিনিট থেকে এমএ ব্যবহার করে ভুয়া সংকেতগুলি উল্লেখযোগ্যভাবে হ্রাস করে এবং বাণিজ্য সংকেতের গুণমান উন্নত করে।
যুক্তিসঙ্গত অপারেশন ফ্রিকোয়েন্সি। উচ্চ ফ্রিকোয়েন্সি কৌশলগুলির বিপরীতে, এই কৌশলটি কম ঘন ঘন ট্রেড করে, বাজারের ক্রমাগত পর্যবেক্ষণের প্রয়োজন এড়ায়। ম্যানুয়াল ট্রেডিংয়ের জন্য আরও উপযুক্ত।
সহজ এবং সহজেই বোঝা যায়। জটিল যুক্তি ছাড়াই কেবলমাত্র মৌলিক চলমান গড় ব্যবহার করে, এই কৌশলটিতে প্রবেশের জন্য একটি কম বাধা রয়েছে এবং নতুনদের জন্য এটি সহজেই বোঝা যায়।
সময়কাল এবং পরামিতি জুড়ে অপ্টিমাইজযোগ্য। ব্যবহৃত এমএ প্রকার এবং সময়কাল সামঞ্জস্যযোগ্য। বিভিন্ন পণ্য এবং বাজার ব্যবস্থার জন্য বিভিন্ন প্যারামিটার সেট পরীক্ষা করা যেতে পারে।
লেগিং ইঙ্গিত এবং ধীর প্রতিক্রিয়া। মূল চলমান গড় নকশা দ্বারা লেগ আছে এবং প্রায়ই দ্রুত প্রবণতা বিপরীত ধরা ব্যর্থ।
বাজারে উচ্চ হুইপসো ফ্রিকোয়েন্সি। যখন বাজারটি বিস্তৃত হয়, তখন এমএ সম্পর্কগুলি খুব ঘন ঘন অতিক্রম করতে পারে, যা অত্যধিক প্রবেশ এবং স্টপ লস ট্রিগার করে, ব্যয় এবং ক্ষতির ঝুঁকি বাড়ায়।
প্যারামিটার অপ্টিমাইজেশান থেকে ওভারফিটিং বিপদ। আলফা মূলত সীমিত ডেটাসেটের উপর ভিত্তি করে প্যারামিটার টিউনিং থেকে আসে। এটি সম্ভবত ওভার-অপ্টিমাইজেশন এবং ওভারফিটিং সমস্যার দিকে পরিচালিত করে।
সমাধান:
আরও অপ্টিমাইজেশনের সুযোগ রয়েছেঃ
সময়সীমার বিভিন্ন সমন্বয় চেষ্টা করুন এবং মেশিন লার্নিং কৌশলগুলির মাধ্যমে আরও ভাল পরামিতিগুলি খুঁজে পেতে এমএ সময়কালকে সামঞ্জস্য করুন।
অতিরিক্ত সংকেত নিশ্চিতকরণের জন্য ভলিউম এবং উচ্চতর সময়সীমার প্রবণতা বিশ্লেষণ অন্তর্ভুক্ত করুন, উদাহরণস্বরূপ কম ট্রেডিং ভলিউমের সময় এন্ট্রিগুলি এড়ানো।
সিদ্ধান্ত গ্রহণে সহায়তার জন্য RNNs এর মতো গভীর শেখার মডেল ব্যবহার করে সময়ের আগে বক্ররেখা প্যাটার্নগুলি পূর্বাভাস দিন।
ফিল্টারিং লজিক উন্নত করার জন্য অভিযোজিত চলমান গড় প্রবর্তন করুন। বাজারের অনিশ্চয়তার সময় এন্ট্রি হ্রাস করার জন্য গতিশীলভাবে এমএ সময়কাল সামঞ্জস্য করুন।
ডুয়াল মুভিং এভারেজ ক্রসওভার ট্রেডিং কৌশলটি মিথ্যা সংকেতগুলি ফিল্টার করার জন্য একাধিক সময়সীমার মধ্যে চলমান গড় সম্পর্কের তুলনা করে, সংকেতের নির্ভরযোগ্যতা উন্নত করে। এই ধরণের ফিল্টার-ভিত্তিক অ্যালগরিদম কৌশলটি সাধারণ এবং নতুনদের জন্য বাস্তবায়ন করা সহজ, একই সাথে একাধিক মাত্রায় বিস্তৃত অপ্টিমাইজেশনের অনুমতি দেয়, এটি গবেষণা এবং প্রয়োগের মূল্যবান করে তোলে।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle = "ALGO 3-1-2", title="ALGO 3h, 1h, 2h", overlay=true) bool startLONGBOTandDEAL = false bool stopLONGBOTandDEAL = false bool openLONG = false bool closeLONG = false bool startSHORTBOTandDEAL = false bool stopSHORTBOTandDEAL = false bool openSHORT = false bool closeSHORT = false MA1Period = ema(close, 10) MA2Period = ema(close, 200) MA3Period = ema(close, 200) MA1 = security(syminfo.tickerid, "180", MA1Period) MA2 = security(syminfo.tickerid, "60", MA2Period) MA3 = security(syminfo.tickerid, "120", MA3Period) MA12Crossover = crossover(MA1, MA2) MA12Crossunder = crossunder(MA1, MA2) MA23Crossover = crossover(MA2, MA3) MA23Crossunder = crossunder(MA2, MA3) if MA23Crossover startLONGBOTandDEAL := true //stop shortBOT and DEAL code in the TV alert as well, probably stop first w/ a delay on startlong lblBull = label.new(bar_index, na, ' BULL Time Open LONG', color=color.blue, textcolor=color.black, style=label.style_label_up, size=size.small) label.set_y(lblBull, MA2) strategy.close("go Short") strategy.entry("go Long", strategy.long, comment="go Long") if MA23Crossunder //not sure if i should set alert for stop and start each bot, or just put start appropriate bot and stop its opposite in the same alert. startSHORTBOTandDEAL := true lblBull = label.new(bar_index, na, ' BEAR Time - Open SHORT', color=color.orange, textcolor=color.black, style=label.style_label_down, size=size.small) label.set_y(lblBull, MA2) strategy.close("go Long") strategy.entry("go Short", strategy.short, comment="go Short") if MA12Crossover if MA2 >= MA3 openLONG := true lup1 = label.new(bar_index, na, ' OPEN LONG ', color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small, yloc=yloc.belowbar) strategy.entry("go Long", strategy.long, comment="go Long") if MA2 <= MA3 closeSHORT := true lup1 = label.new(bar_index, na, ' CLOSE SHORT ', color=color.gray, textcolor=color.black, style=label.style_label_up, size=size.small, yloc=yloc.belowbar) strategy.close("go Short") if MA12Crossunder if MA2 >= MA3 closeLONG := true lun1 = label.new(bar_index, na, ' CLOSE LONG ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar) strategy.close("go Long") if MA2 <= MA3 openSHORT := true lun1 = label.new(bar_index, na, ' OPEN SHORT ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar) strategy.entry("go Short", strategy.short, comment="go Short") plot(MA1, color=color.green, linewidth=2, title="MA1") plot(MA2, color=color.yellow, linewidth=3, title="MA2") plot(MA3, color=color.red, linewidth=4, title="MA3") alertcondition(startLONGBOTandDEAL, title="Start LONG BOT and DEAL", message="Start Long Bot and Deal") alertcondition(stopLONGBOTandDEAL, title="Stop LONG BOT and DEAL", message="Stop Long Bot and Deal") alertcondition(openLONG, title="Open LONG DEAL", message="Open Long Deal") alertcondition(closeLONG, title="Close LONG DEAL", message="Close Long Deal") alertcondition(stopSHORTBOTandDEAL, title="Stop SHORT BOT and DEAL", message="Stop Short Bot and Deal") alertcondition(openSHORT, title="Open SHORT DEAL", message="Open Short Deal") alertcondition(closeSHORT, title="Close SHORT DEAL", message="Close Short Deal")