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


সৃষ্টির তারিখ: 2023-11-16 17:50:52 অবশেষে সংশোধন করুন: 2023-11-16 17:50:52
অনুলিপি: 0 ক্লিকের সংখ্যা: 688
1
ফোকাস
1617
অনুসারী

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

ওভারভিউ

ডাবল মুভিং মিডল লাইন ক্রস কৌশলটি বিভিন্ন পিরিয়ডের মুভিং মিডল লাইন গণনা করে, দামের প্রবণতার দিকনির্দেশনা নির্ধারণ করে এবং প্রবণতা অনুসরণ করে। যখন স্বল্প-পিরিয়ডের গড় লাইনটি দীর্ঘ-পিরিয়ডের গড় লাইনটি অতিক্রম করে তখন বেশি করে, যখন দীর্ঘ-পিরিয়ডের গড় লাইনটি অতিক্রম করে তখন শূন্য হয়, এটি একটি সাধারণ প্রবণতা অনুসরণ কৌশল।

কৌশল নীতি

এই কৌশলটি 9 চক্র, 21 চক্র এবং 50 চক্রের সূচকীয় চলমান গড় (ইএমএ) উপর ভিত্তি করে। 9 চক্রের ইএমএ স্বল্পমেয়াদী প্রবণতা, 21 চক্রের ইএমএ মধ্যমেয়াদী প্রবণতা এবং 50 চক্রের ইএমএ দীর্ঘমেয়াদী প্রবণতা প্রতিনিধিত্ব করে।

যখন 9 পিরিয়ডের ইএমএ 21 পিরিয়ডের ইএমএ অতিক্রম করে, তখন স্বল্পমেয়াদী প্রবণতাটি উত্থানের দিকে চলে যায়, আরও বেশি করে; যখন 9 পিরিয়ডের ইএমএ 21 পিরিয়ডের ইএমএ অতিক্রম করে, তখন স্বল্পমেয়াদী প্রবণতাটি পতনের দিকে চলে যায়, খালি করে দেয়। এখানে ক্রসওভার ফাংশনটি ক্রসওভার ব্যবহার করে ()) গড়রেখার ক্রসওভারটি বিচার করার জন্য।

কোডটি লং পজিশন এবং খালি পজিশনের ওপেন, স্টপ, স্টপ লজিক সেট করে। পজিশন খোলার শর্তটি সমানভাবে পরা বা নিচে পরা। মাল্টি হেড স্টপটি প্রবেশের দাম × ((1+ ইনপুট স্টপ অনুপাত), খালি হেড স্টপটি প্রবেশের দাম × ((1- ইনপুট স্টপ অনুপাত) । মাল্টি হেড স্টপটি প্রবেশের দাম × 1- ((( ইনপুট স্টপ অনুপাত), খালি হেড স্টপটি প্রবেশের দাম × ((1+ ইনপুট স্টপ অনুপাত) ।

এছাড়াও, কোডটি কিছু ফিল্টারিং শর্ত যুক্ত করেছে, যেমন প্রবণতা ফিল্টারিং, যার অর্থ হ’ল সমান্তরাল লাইনটি অতিক্রম করার আগে কে লাইনটি কাঁপতে পারে না, এবং তহবিলের ব্যবহারের ফিল্টারিং, যার অর্থ হ’ল কৌশলগত ইক্যুইটিটিটি এন-দিনের গড়ের চেয়ে কম হওয়া উচিত নয়, যাতে ক্ষতিগ্রস্থ হওয়া এড়ানো যায়। এই ফিল্টারিং শর্তগুলি কিছুটা পরিমাণে ভুয়া সংকেত এড়াতে পারে।

সামগ্রিকভাবে, এই কৌশলটি দামের প্রবণতার দিকনির্দেশের জন্য ডাবল ইএমএ ক্রস ব্যবহার করে এবং যুক্তিসঙ্গত স্টপ-অফ-লস লজিকের সাহায্যে মাঝারি-দীর্ঘ লাইন প্রবণতা ক্যাপচার করতে পারে। তবে একক ফ্যাক্টর কৌশল হিসাবে, এর সংকেতটি সম্ভবত যথেষ্ট স্থিতিশীল নয় এবং আরও অপ্টিমাইজ করা যেতে পারে।

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

  • ডাবল-মোবাইল সমান্তরাল ক্রস ব্যবহার করে প্রবণতা দিক নির্ণয় করুন, নীতিটি সহজ, বাস্তবায়ন সহজেই বোঝা যায়।
  • দীর্ঘ ও স্বল্পমেয়াদী প্রবণতা নির্ণয় করার জন্য বিভিন্ন সময়কালের ইএমএ ব্যবহার করা হয়।
  • স্টপ লস লজিক, মুনাফা লকিং এবং ঝুঁকি নিয়ন্ত্রণ।
  • ফিল্টারিংয়ের শর্ত যুক্ত করা হয়েছে, যা কিছু পরিমাণে মিথ্যা সংকেতকে ফিল্টার করতে পারে।
  • বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নেওয়ার জন্য প্যারামিটারগুলি অবাধে সেট করতে পারেন, চক্রের সমন্বয়কে অপ্টিমাইজ করুন।

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

  • একটি একক ফ্যাক্টর কৌশল হিসাবে, ট্রেডিং সংকেতগুলি যথেষ্ট স্থিতিশীল নাও হতে পারে। দামের অস্থিরতার সময়, একাধিক অর্থহীন লেনদেন হতে পারে।
  • ইএমএ ক্রস করার সময়, দামগুলি সম্ভবত কিছু দূরত্ব চালিয়ে যেতে পারে, যার ফলে উচ্চতা এবং পতনের ঝুঁকি রয়েছে।
  • লেনদেনের খরচ ছাড়াই, রিয়েল-টাইম মুনাফা হ্রাস পেতে পারে।
  • এই ধরনের পরিস্থিতিতে, আপনি যদি আপনার ব্যবসায়ের ক্ষতির পরিমাণ নিয়ন্ত্রণ করতে না পারেন, তাহলে আপনি আপনার ব্যবসায়ের ক্ষতির পরিমাণ নিয়ন্ত্রণ করতে পারবেন না।

প্রতিকারঃ

  1. সিগন্যালকে আরো স্থিতিশীল করার জন্য এমএ-এর চক্রের প্যারামিটার অপ্টিমাইজ করা হয়েছে।
  2. অন্যান্য সূচকগুলির সাথে মিলিত ফিল্টারিং সংকেত।
  3. 👉
  4. স্টপ লস সেট করুন, সর্বোচ্চ ক্ষতি সীমাবদ্ধ করুন।

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

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

  1. চলমান গড়ের চক্রের প্যারামিটারগুলিকে অনুকূলিত করুন, সর্বোত্তম চক্রের সমন্বয় খুঁজে বের করুন। স্বনির্ধারিত অপ্টিমাইজেশান প্রযুক্তি, গতিশীল অনুকূল চক্র চালু করা যেতে পারে।

  2. অন্যান্য প্রযুক্তিগত সূচক যুক্ত করুন যেমন MACD, KD ইত্যাদি, সংকেত ফিল্টার করুন, সংকেত গুণমান উন্নত করুন। বা মেশিন লার্নিং প্রবর্তন করুন যা সংকেতকে রেট দেয় এবং স্বয়ংক্রিয়ভাবে মিথ্যা সংকেতগুলি ফিল্টার করে।

  3. ট্রেডিং ভলিউম বিশ্লেষণের সাথে মিলিতঃ গড় লাইন অতিক্রম করে কিন্তু ট্রেডিং ভলিউম কম হলে, সিগন্যাল গ্রহণ করবেন না।

  4. একটি ব্রেকআউট হওয়ার সময়, পূর্ববর্তী ওঠানামা পরীক্ষা করা হয়, যেমন ভূমিকম্পের মধ্যে একটি ব্রেকআউট, যা একটি ভুয়া ব্রেকআউট হতে পারে।

  5. গতিশীল স্টপ ব্যবস্থা স্থাপন করুন, যেমন ট্র্যাকিং টাইপ স্টপ, চ্যান্ডেলিয়ার প্রস্থান ইত্যাদি, যা স্টপ দূরত্বকে হ্রাস করে তবে স্টপ কার্যকর হয় তা নিশ্চিত করে।

  6. পজিশন ম্যানেজমেন্ট অপ্টিমাইজ করুন, যেমন ফিক্সড পজিশন, ডায়নামিক পজিশন, লিভারেজ পজিশন ইত্যাদি, যাতে লাভের হার আরও যুক্তিসঙ্গত হয়।

  7. ট্রেডিং খরচ, স্লাইড পয়েন্ট প্রভাব, অপ্টিমাইজেশন স্টপ-অফ-লস অনুপাত, এবং নিশ্চিত করুন যে কৌশলটি বাস্তব সময়ে লাভজনক রয়েছে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
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/
// © TradingMentalist

//@version=4
strategy("Initial template",initial_capital=1000, overlay=true, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////inputs
//turn on/off longs/shorts / extraneous conditions
longinc=input(true, title="include longs?")
lConSw2=input(true, title="condition two?")
lConSw3=input(true, title="condition three?")
shotinc=input(true, title="include shorts?")
sConSw2=input(true, title="condition two?")
sConSw3=input(true, title="condition three?")

//turn on/off / adjust trade filters (average range/average equity)
sidein2     = input(200, step=10, title='lookback for average range (bars)')
sidein      = input(1, title='filter trades if range is less than (%)')/100
equityIn    = input(40, title='filter trades if equity is below ema()')
sidewayssw  = input(true, title='sideways filter?')
equitysw    = input(true, title='equity filter?')
longtpin    = input(1,step=0.1, title='long TP %')/100
longslin    = input(0.4,step=0.1, title='long SL %')/100
shorttpin   = input(1,step=0.1, title='short TP %')/100
shortslin   = input(0.4,step=0.1, title='short SL %')/100

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////filters
//(leave as is)
side1       = (close[1] + close[sidein2]) / 2
side2       = close[1] - close[sidein2] 
side3       = side2 / side1
notsideways = side3 > sidein
equityMa    = equitysw ? ema(strategy.equity, equityIn) : 0
equityCon   = strategy.equity >= equityMa

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////indicators
ma1 = ema(close, 9)
ma2 = ema(close, 21)
ma3 = ema(close, 50)

plot(ma1, color=color.new(#E8B6B0,50))
plot(ma2, color=color.new(#B0E8BE,50))
plot(ma3, color=color.new(#00EEFF,50))

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////conditions
//adjust conditions
//-------------------------------------------
longCondition1  = crossover(ma2,ma3)
longCondition2  = close[5] > close[10]
longCondition3  = close[1] > close[2]

shortCondition1 = crossover(ma3,ma2)
shortCondition2 = close[5] < close[10]
shortCondition3 = close[1] < close[2]

closelong       = shortCondition1
closeshort      = longCondition1
//-------------------------------------------

//(leave as is)
longCondition1in  = longCondition1
longCondition2in  = lConSw2 ? longCondition2 : true
longCondition3in  = lConSw3 ? longCondition3 : true
shortCondition1in = shortCondition1
shortCondition2in = sConSw2 ? shortCondition2: true
shortCondition3in = sConSw3 ? shortCondition3: true
longConditions    = longCondition1in and longCondition2in and longCondition3in
shortConditions   = shortCondition1in and shortCondition2in and shortCondition3in

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////execution
//(leave as is)
long            = sidewayssw ? notsideways and equityCon and longConditions : equityCon and longConditions
short           = sidewayssw ? notsideways and equityCon and shortConditions : equityCon and shortConditions

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////risk
//(leave as is)
longtplevel     = strategy.position_avg_price * (1 + longtpin)
longsllevel     = strategy.position_avg_price * (1 - longslin)
shorttplevel    = strategy.position_avg_price * (1 - shorttpin)
shortsllevel    = strategy.position_avg_price * (1 + shortslin)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////timeframe
//adjust timeframe
//-------------------------------------------
startyear   = 2000
startmonth  = 1
startday    = 1

stopyear    = 9999
stopmonth   = 12
stopday     = 31
//-------------------------------------------

//(leave as is)
startperiod = timestamp(startyear,startmonth,startday,0,0)
periodstop  = timestamp(stopyear,stopmonth,stopday,0,0)
timeframe()    =>
    time >= startperiod and time <= periodstop ? true : false

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////orders
//comments are empty characters for clear chart
if timeframe()
    if longinc
        if strategy.position_size == 0 or strategy.position_size > 0 
            strategy.entry(id="long", long=true, when=long, comment=" ")
            strategy.exit("stop","long", limit=longtplevel, stop=longsllevel,comment=" ")
            strategy.close(id="long", when=closelong, comment = " ")
    if shotinc
        if strategy.position_size == 0 or strategy.position_size < 0 
            strategy.entry(id="short", long=false, when=short, comment = " ")
            strategy.exit("stop","short", limit=shorttplevel, stop=shortsllevel,comment = " ")
            strategy.close(id="short", when=closeshort, comment = " ")