ডাবল মুভিং এভারেজ ক্রসওভার ট্রেডিং কৌশলের উপর ভিত্তি করে


সৃষ্টির তারিখ: 2023-11-27 15:32:57 অবশেষে সংশোধন করুন: 2023-11-27 15:32:57
অনুলিপি: 1 ক্লিকের সংখ্যা: 613
1
ফোকাস
1617
অনুসারী

ডাবল মুভিং এভারেজ ক্রসওভার ট্রেডিং কৌশলের উপর ভিত্তি করে

ওভারভিউ

এই কৌশলটি দুটি ভিন্ন প্যারামিটার সেট করা চলমান গড়ের ক্রস-এর উপর ভিত্তি করে একটি কেনা এবং বিক্রি সংকেত দেয়। যখন একটি সংক্ষিপ্ত সময়ের চলমান গড় নীচের দিক থেকে দীর্ঘ সময়ের চলমান গড়কে ভেঙে দেয় তখন একটি কেনা সংকেত দেওয়া হয়; যখন একটি সংক্ষিপ্ত সময়ের চলমান গড় উপরে থেকে নীচের দিকে দীর্ঘ সময়ের চলমান গড়কে ভেঙে দেয় তখন একটি বিক্রয় সংকেত দেওয়া হয়।

কৌশল নীতি

এই কৌশলটি পাইন স্ক্রিপ্টিং ভাষা ব্যবহার করে লেখা হয়েছে। প্রথমে ইনপুট দ্বারা দুটি মুভিং এভারেজের ধরন, দৈর্ঘ্য এবং মূল্যের উত্স সংজ্ঞায়িত করা হয়, যথাক্রমে পি 1 এবং পি 2 নামে পরিচিত। যেখানে পি 1 সংক্ষিপ্ত সময়ের জন্য গড় এবং পি 2 দীর্ঘ সময়ের জন্য গড়।

ক্রসওভার এবং ক্রসউন্ডার ফাংশন দ্বারা দুটি সমরেখার ক্রস নির্ধারণ করুন। যখন p1 নীচের দিক থেকে p2 অতিক্রম করে, তখন একটি কেনার সংকেত দেওয়া হয়; যখন p1 উপরের দিক থেকে p2 অতিক্রম করে, তখন একটি বিক্রয় সংকেত দেওয়া হয়।

লেনদেনের জন্য, কৌশলটি strategy.entry ফাংশন দ্বারা সংকেত প্রেরণ করার সময় একটি মাল্টি-হেড বা খালি-হেড পজিশন স্থাপন করে। যদি shortOnly প্যারামিটারটি সক্ষম করা হয় তবে কেবলমাত্র লেনদেনের সংকেত বিক্রি হয়।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির সুবিধাগুলো হলঃ

  1. নিয়মগুলি পরিষ্কার, সহজেই বোঝা যায় এবং বাস্তবায়িত হয়
  2. সমান্তরাল ক্রস একটি ক্লাসিক এবং সুপরিচিত ট্রেডিং সিগন্যাল
  3. উচ্চ স্বনির্ধারিত গড় রেখার ধরন, দৈর্ঘ্য এবং মূল্যের উৎস
  4. ট্রেডিং সিগন্যাল বিক্রি করে ট্রেডিং কমিয়ে দেয়

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. অস্থিরতার সময়, গড় লাইন একাধিক অকার্যকর ক্রস তৈরি করতে পারে, যার ফলে অত্যধিক লেনদেন হয়
  2. বিভিন্ন জাত এবং লেনদেনের সময়কালের জন্য প্যারামিটারগুলিকে অপ্টিমাইজ করা দরকার
  3. ট্রেন্ডের দিকনির্দেশনা জানা যায়নি, তবে বিপরীতমুখী হতে পারে

গড় রেখার দৈর্ঘ্য সামঞ্জস্য করা, ফিল্টারিংয়ের শর্তগুলি প্রবর্তন করা ইত্যাদির মাধ্যমে অকার্যকর সংকেত হ্রাস করা যেতে পারে। এটি প্রবণতা সূচকগুলির সাথে মিলিত হয়ে বড় দালালের গতিবিধি নির্ধারণ করতে পারে।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. ভলিউম ওজনের গড় বা আদর্শ মূল্যকে মূল্যের উত্স হিসাবে প্রবর্তন করা, ক্রস সিগন্যালের নির্ভরযোগ্যতা বাড়ায়

  2. ভ্যালিডেশন পিরিয়ড বাড়ান

  3. ATR বন্ধের সাথে, বাজারের অস্থিরতার উপর ভিত্তি করে সর্বাধিক গ্রহণযোগ্য ক্ষতি নির্ধারণ করুন

  4. সর্বোত্তম প্যারামিটার সমন্বয় খুঁজতে কার্ভ ফিট অপ্টিমাইজেশান প্যারামিটার ব্যবহার করুন

  5. ট্রেডিং সিগন্যালগুলিকে শুধুমাত্র মহাচক্রীয় প্রবণতা অনুসারে বিবেচনা করা উচিত

সারসংক্ষেপ

এই দ্বৈত সমান্তরাল ক্রস কৌশলটি সামগ্রিকভাবে বোঝা এবং বাস্তবায়ন করা সহজ, দুটি সমান্তরাল ক্রস দ্বারা লেনদেনের সংকেত তৈরি করা হয়, যা অত্যন্ত কাস্টমাইজযোগ্য। তবে এটি অস্থিরতার পরিস্থিতিতে আরও বেশি অকার্যকর সংকেত তৈরি করতে পারে। প্যারামিটার অপ্টিমাইজেশন এবং নিয়ম অপ্টিমাইজেশনের মাধ্যমে ঝুঁকি হ্রাস করা যেতে পারে, যার অপ্টিমাইজেশনের জায়গা আরও বড় এবং আরও গবেষণা করার যোগ্য।

কৌশল সোর্স কোড
/*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)