
ডুয়াল মুভিং এভারেজ ক্রসওভার ট্রেডিং কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা ইনপুট এবং এক্সট্রুডিংয়ের বিচার করার জন্য ডুয়াল মুভিং এভারেজ ক্রসওভার এবং ডুয়াল মুভিং এভারেজ ক্রসওভার ব্যবহার করে। এই কৌশলটি একই সাথে বিভিন্ন পিরিয়ডের সমান্তরালকে একত্রিত করে, একাধিক স্তরের ফিল্টার তৈরি করে, যা কার্যকরভাবে মিথ্যা সংকেত হ্রাস করতে পারে এবং ট্রেডিং সংকেতের নির্ভরযোগ্যতা বাড়িয়ে তুলতে পারে।
এই কৌশলটির কেন্দ্রীয় যুক্তি হল 3 টি সময়কালের ((180 মিনিট, 60 মিনিট, 120 মিনিট) 2 টি চলমান গড় ((10 তম লাইন এবং 200 তম লাইন)) অনুসরণ করা। যখন দ্রুত লাইনটি নীচের দিক থেকে ধীর লাইনের মধ্য দিয়ে যায়, তখন একটি গোল্ড ফর্ক সিগন্যাল উত্পন্ন হয়, যা জাতের বহু-হাইড মুডে প্রবেশের প্রতিনিধিত্ব করে; যখন দ্রুত লাইনটি উপরে থেকে নীচের দিকে ধীর লাইনের মধ্য দিয়ে যায়, তখন একটি মৃত ফর্ক সিগন্যাল উত্পন্ন হয়, যা জাতের শূন্য-হাইড মুডে প্রবেশের প্রতিনিধিত্ব করে।
কৌশলটি প্রথমে ১৮০ মিনিট এবং ৬০ মিনিটের চক্রের মধ্যে যথাক্রমে ১০ দিনের লাইন এবং ২০০ দিনের লাইন গণনা করে। ১৮০ মিনিটের ১০ দিনের লাইনটি নীচের দিক থেকে ২০০ দিনের লাইনটি অতিক্রম করলে, একটি গোল্ড ফর্ক সিগন্যাল উত্পন্ন হয়; যখন এটি উপরের দিক থেকে নীচে অতিক্রম করে, একটি ডেড ফর্ক সিগন্যাল উত্পন্ন হয়। এটি দ্রুত চক্রের লেনদেনের সংকেতের সমতুল্য।
তারপর, কৌশলটি 120-মিনিট পিরিয়ডের 200-দিনের লাইনকে নিয়ন্ত্রণের লাইন হিসাবে প্রবর্তন করে। শুধুমাত্র যখন গোল্ডেন ফর্ক বা ডেড ফর্ক ঘটে, তখন সিদ্ধান্ত নেওয়া হয় যে 60-মিনিট পিরিয়ডের 200-দিনের লাইনটি 120-মিনিট পিরিয়ডের 200-দিনের লাইনের চেয়ে বেশি বা কম কিনা তা বিচার করে ট্রেডিং শুরু করা হয়, যাতে কিছু মিথ্যা সংকেত মুছে ফেলা যায়।
উদাহরণস্বরূপ, যখন ১৮০ মিনিটের মধ্যে একটি গোল্ড ফর্ক তৈরি হয়, তখন যদি ৬০ মিনিটের ২০০ দিনের লাইনটি ১২০ মিনিটের ২০০ দিনের লাইনের চেয়ে বেশি হয়, তবে আপনি বেশি দেখেন; কেবলমাত্র এই শর্তে, আপনি একটি অতিরিক্ত শর্ত খুলবেন। বিপরীতে, যদি ৬০ মিনিটের ২০০ দিনের লাইনটি ১২০ মিনিটের ২০০ দিনের লাইনের চেয়ে কম হয়, তবে আপনি বেশি দেখবেন না এবং পজিশন খুলবেন না।
সংক্ষেপে, এই কৌশলটি বিভিন্ন সময়কালের সমান্তরাল সম্পর্কের তুলনা করে একাধিক স্তরের ফিল্টার তৈরি করে, যার ফলে সংকেতের নির্ভরযোগ্যতা বৃদ্ধি পায়, যা সাধারণ ফিল্টারযুক্ত ট্রেডিং কৌশলগুলির মধ্যে রয়েছে।
বহু-চক্র নিশ্চিতকরণ, সংকেতের নির্ভুলতা উন্নত করে। একক চক্রের বিচারের তুলনায়, এই কৌশলটি 180 মিনিট, 60 মিনিট এবং 120 মিনিটের তিনটি চক্রের গড়-লাইন সম্পর্ককে নিশ্চিত করে, যা মিথ্যা সংকেতকে ব্যাপকভাবে হ্রাস করতে পারে এবং লেনদেনের সংকেতের গুণমানকে উন্নত করতে পারে।
অপারেশন ফ্রিকোয়েন্সি মাঝারি। উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং কৌশলগুলির তুলনায়, এই কৌশলটির ট্রেডিং ফ্রিকোয়েন্সি কম, ঘন ঘন অপারেশন প্রয়োজন হয় না, ম্যানুয়াল হিসাবের জন্য আরও উপযুক্ত।
বাস্তবায়ন সহজ, সহজে বোঝা যায়। এই কৌশলটি কেবলমাত্র গড়রেখার সূচক ব্যবহার করে, জটিল যুক্তি নেই, বাস্তবায়নটি খুব সহজে বোঝা যায়, থ্রেশহোল্ডটি কম এবং এটি শিক্ষানবিস অনুশীলনকারীদের জন্য উপযুক্ত।
এই কৌশলটির মধ্যে গড়-রেখার সময়কাল এবং প্রকারগুলি সামঞ্জস্যযোগ্য, বিভিন্ন জাত এবং বাজারের পরিবেশের জন্য উপযুক্ত প্যারামিটার সমন্বয়গুলি গবেষণা করা যেতে পারে।
সমান্তরাল সিস্টেমটি পিছিয়ে আছে এবং দ্রুত বিপরীতমুখী ঘটনাগুলি সময়মতো ধরতে পারে না। এই কৌশলটি মূলত সমান্তরাল সম্পর্কের উপর নির্ভর করে, দামের পরিবর্তনের প্রতিক্রিয়া কিছুটা পিছিয়ে রয়েছে এবং দ্রুত বিপরীতমুখী ঘটনাগুলি মিস করা সহজ।
বিপুল অস্থিরতা বাজার সহজে বন্ধ হয়ে যায়। যখন বাজার বড় অস্থিরতা হয়, সমান্তরাল সম্পর্কগুলি প্রায়শই ক্রস হতে পারে, যার ফলে প্রায়শই পজিশন খোলা এবং বন্ধ হয়ে যায়। এটি লেনদেনের ব্যয় এবং ক্ষতির ঝুঁকি বাড়িয়ে তোলে।
প্যারামিটার অপ্টিমাইজেশনের উপর অত্যধিক নির্ভরশীল, ওভারফ্যাটেবল। এই কৌশলটি মূলত প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে আলফা অর্জন করে। এই একক ডেটাসেটের ফলাফলের উপর নির্ভরশীলতা ওভার অপ্টিমাইজেশান এবং ওভারফ্যাটেবল সমস্যার কারণ হতে পারে।
ঝুঁকি মোকাবেলার জন্য নিম্নলিখিত সমাধানগুলি রয়েছেঃ
গড় রেখার পরামিতিগুলি যথাযথভাবে সংক্ষিপ্ত করুন, প্রতিক্রিয়া গতি বাড়ান।
মার্কেটের উচ্চ ঘন ঘন পজিশনিং এড়ানোর জন্য ফিল্টারিং শর্ত বাড়ানো।
বিভিন্ন প্রজাতি এবং সময়কালের তথ্য পরীক্ষা করে প্যারামিটারগুলির স্থিতিশীলতা মূল্যায়ন করুন।
এই কৌশলটি আরও উন্নত করার সুযোগ রয়েছেঃ
বিভিন্ন ধারাবাহিক সমন্বয় এবং গড় লাইন প্যারামিটার চেষ্টা করুন, আরও ভাল প্যারামিটার খুঁজুন। আপনি আরও ভাল প্যারামিটার সমন্বয় খুঁজে পেতে পারেন ক্ষতিকারক অপ্টিমাইজেশন এবং মেশিন লার্নিং পদ্ধতির মাধ্যমে।
ভলিউম এবং বড় আকারের ট্রেন্ড ইন্ডিকেটরগুলির নিশ্চিতকরণ যুক্ত করুন। এটি ভুয়া সংকেতগুলিকে আরও ফিল্টার করতে পারে, যেমন ভলিউম ছাড়ের অভাবে পজিশন না খোলার জন্য।
গভীর শিক্ষণ মডেলের সাথে একত্রিত হয়ে কার্ভের আকৃতির পূর্বাভাস দেয়। ভবিষ্যতের দামের পূর্বাভাস দেওয়ার জন্য আরএনএন এবং অন্যান্য গভীর শিক্ষণ মডেল ব্যবহার করে, সিদ্ধান্ত গ্রহণে সহায়তা করে।
স্বনির্ধারিত গড় লাইন ব্যবহার করে, ফিল্টারিং লজিক উন্নত করুন। যখন বাজার একটি অস্থির অবস্থায় প্রবেশ করে, গড় লাইনের দৈর্ঘ্য গতিশীলভাবে সামঞ্জস্য করে, পোজিশন খোলার ফ্রিকোয়েন্সি হ্রাস করে।
ডাবল ইক্যুয়ালিটি গোল্ড ফর্ক ডাইফোর্ক অ্যালগরিদম ট্রেডিং কৌশলটি বিভিন্ন সময়কালের ইক্যুয়ালিটি সম্পর্কের তুলনা করে একাধিক স্তরের ফিল্টার স্থাপন করে, যা কার্যকরভাবে ট্রেডিং সিগন্যালের গুণমানকে উন্নত করতে পারে। এটি একটি সাধারণ ফিল্টারযুক্ত অ্যালগরিদম ট্রেডিং কৌশল। এই কৌশলটি সহজেই বাস্তবায়নযোগ্য, শিক্ষানবিসদের জন্য উপযুক্ত এবং এটি বহু মাত্রিক প্রসারিত এবং অপ্টিমাইজ করা যেতে পারে। এটি গভীর গবেষণা এবং প্রয়োগের জন্য উপযুক্ত।
/*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")