এই কৌশলটি বিভিন্ন প্যারামিটার সেটিং সহ দুটি চলমান গড়ের ক্রসওভারের উপর ভিত্তি করে ক্রয় এবং বিক্রয় সংকেত উত্পন্ন করে। যখন স্বল্প সময়ের চলমান গড় নীচে থেকে দীর্ঘ সময়ের চলমান গড়ের উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন স্বল্প সময়ের চলমান গড় উপরে থেকে দীর্ঘ সময়ের চলমান গড়ের নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
কৌশলটি পাইন স্ক্রিপ্টে লেখা হয়। এটি প্রথমে দুটি চলমান গড়, p1 এবং p2 নামে পরিচিত, ইনপুটের মাধ্যমে কাস্টমাইজযোগ্য প্রকার, দৈর্ঘ্য এবং মূল্য উত্সের সাথে সংজ্ঞায়িত করে। এখানে p1 স্বল্প সময়ের MA এবং p2 দীর্ঘ সময়ের MA প্রতিনিধিত্ব করে।
ক্রসওভার এবং ক্রসওন্ডার ফাংশন দুটি এমএ এর মধ্যে ক্রসওভার সনাক্ত করতে ব্যবহৃত হয়। যখন p1 নীচে থেকে p2 এর উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন p1 উপরে থেকে p2 এর নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
ট্রেডগুলি সম্পাদন করার জন্য, কৌশলটি সংকেতগুলি ট্রিগার করার সময় strategy.entry ব্যবহার করে দীর্ঘ বা সংক্ষিপ্ত অবস্থানে প্রবেশ করে। যদি shortOnly ইনপুট সক্ষম করা হয়, তবে কেবল বিক্রয় সংকেতগুলি বাণিজ্য করা হবে।
এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ
এই কৌশলটির সাথে কিছু ঝুঁকিও রয়েছেঃ
এমএ দৈর্ঘ্য সামঞ্জস্য করে, ফিল্টার শর্ত ইত্যাদি যোগ করে ঝুঁকি হ্রাস করা যেতে পারে। বাজারের পক্ষপাত নির্ধারণের জন্য প্রবণতা সূচকও যোগ করা যেতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
ক্রসওভার সিগন্যালগুলিকে আরও নির্ভরযোগ্য করার জন্য মূল্য উত্স হিসাবে ভিডাব্লুএপি বা সাধারণ মূল্য ব্যবহার করুন।
স্বল্পমেয়াদী ভুল ক্রসিং এড়াতে একটি বৈধতা সময় যোগ করুন।
বাজার অস্থিরতা অনুযায়ী সর্বোচ্চ গ্রহণযোগ্য ক্ষতির উপর ভিত্তি করে ATR স্টপ অন্তর্ভুক্ত করুন।
অনুকূল সমন্বয় খুঁজে পেতে বক্ররেখা ফিটিং মাধ্যমে পরামিতি অপ্টিমাইজেশান।
শুধুমাত্র উচ্চতর সময়সীমার প্রবণতার দিকের সংকেত বিবেচনা করুন।
ডাবল এমএ ক্রসওভার কৌশলটি বোঝা এবং বাস্তবায়ন করা সহজ, উচ্চ কাস্টমাইজযোগ্যতার সাথে দুটি এমএ ক্রসওভার থেকে ট্রেড সংকেত উত্পন্ন করে। তবে এটি অস্থির বাজারের সময় অত্যধিক অবৈধ সংকেতও তৈরি করতে পারে। পরামিতি এবং যৌক্তিক অপ্টিমাইজেশনের মাধ্যমে ঝুঁকি হ্রাস করা যেতে পারে প্রচুর বর্ধনের সুযোগ সহ, আরও গবেষণার মূল্য।
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © RafaelPiccolo //@version=4 strategy("Double MA Cross", overlay=true) type1 = input("SMA", "MA Type 1", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"]) len1 = input(10, minval=1, title="Length 1") src1 = input(close, "Source 1", type=input.source) type2 = input("SMA", "MA Type 2", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"]) len2 = input(50, minval=2, title="Length 2") src2 = input(close, "Source 2", type=input.source) shortOnly = input(false, "Short only") tema(src, len)=> ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) return = 3 * (ema1 - ema2) + ema3 getPoint(type, len, src)=> return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len) p1 = getPoint(type1, len1, src1) p2 = getPoint(type2, len2, src2) shortCondition = crossunder(p1, p2) longCondition = crossover(p1, p2) if (shortCondition) strategy.entry("Short", strategy.short) if (longCondition) if (shortOnly) strategy.close("Short") else strategy.entry("Long", strategy.long) plot(p1, "MA 1", p1 < p2 ? color.red : color.green) plot(p2, "MA 2", color.blue)