ডাবল EMA চলমান গড় ট্র্যাকিং কৌশল


সৃষ্টির তারিখ: 2024-02-02 17:11:29 অবশেষে সংশোধন করুন: 2024-02-02 17:11:29
অনুলিপি: 0 ক্লিকের সংখ্যা: 575
1
ফোকাস
1617
অনুসারী

ডাবল EMA চলমান গড় ট্র্যাকিং কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির মূল যুক্তিটি হ’ল দুটি পৃথক পিরিয়ডের ইএমএ গড়ের গণনা করা, একটি শূন্যরেখা হিসাবে এবং অন্যটি মাল্টি-হেড লাইন হিসাবে। বিশেষত, কৌশলটি তালিব সূচকের মাধ্যমে একটি 8 পিরিয়ডের দ্রুত ইএমএ গড়ের গণনা করে, একটি মাল্টি-হেড লাইন হিসাবে; অন্যটি একটি 21 পিরিয়ডের ধীর ইএমএ গড়ের গণনা করে, একটি শূন্যরেখা হিসাবে। তারপরে দ্রুত ইএমএ লাইন এবং ধীর ইএমএ লাইনের ক্রস সম্পর্কটি বিচার করুন, যখন দ্রুত লাইনটি ধীর লাইনটি অতিক্রম করে, তখন এটি লাভজনক হিসাবে বিচার করা যেতে পারে; যখন দ্রুত লাইনটি ধীর লাইনটি অতিক্রম করে, তখন এটি নেতিবাচক হিসাবে বিচার করা যেতে পারে।

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

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

ডাবল ইএমএ সমান্তরাল ট্র্যাকিং কৌশলগুলির সর্বাধিক সুবিধা হ’ল সমান্তরাল ক্রসগুলির শক্তিশালী প্রবণতা বিচার ক্ষমতা ব্যবহার করা। ইএমএ সমান্তরালগুলি একটি সাধারণ প্রবণতা বিচারক সরঞ্জাম হিসাবে ব্যবহৃত হয়, দামের পরিবর্তনের প্রবণতা এবং পরিবর্তনের সময়গুলি সনাক্ত করার জন্য সমান্তরাল ক্রসগুলির মাধ্যমে, সংক্ষিপ্ত লাইন বাজারের শব্দ দ্বারা বিভ্রান্ত হওয়া এড়ানো যায় এবং মূল প্রবণতার দিকটি ধরে রাখা যায়।

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

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

ডাবল ইএমএ সমান্তরাল ট্র্যাকিং কৌশলটির সবচেয়ে বড় ঝুঁকি হ’ল ঘন ঘন ক্রস-সিগন্যাল এবং মিথ্যা সংকেত সৃষ্টি করে। এই ক্ষেত্রে, ইএমএ চক্রটি যথাযথভাবে বাড়ানো যেতে পারে যাতে ক্রস-বার এবং মিথ্যা সংকেত হওয়ার সম্ভাবনা হ্রাস পায়।

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

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

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

  1. গতিশীলভাবে EMA গড় লাইন চক্রটি সামঞ্জস্য করুন। আপনি বাজারের ওঠানামা এবং সর্বোত্তম প্যারামিটার রিটেস্টের ফলাফলের উপর ভিত্তি করে EMA চক্রের গতিশীলতা পরিবর্তন করতে পারেন, যাতে নির্দিষ্ট চক্রের অধীনে ওভারফিট সমস্যা এড়ানো যায়।

  2. অতিরিক্ত ফিল্টারিং শর্তগুলি মিথ্যা সংকেতগুলি ফিল্টার করতে পারে। উদাহরণস্বরূপ, এটি লেনদেনের পরিমাণের সাথে মিলিত হতে পারে, ছোট্ট ঝাঁকুনির সময় উত্পন্ন মিথ্যা ক্রসগুলি ফিল্টার করতে পারে। এটি অন্যান্য সূচক যেমন এমএসিডি, কেডিজে ইত্যাদির সাথে মিলিত হতে পারে, যাতে অনিশ্চিত সময়ে সংকেত তৈরি না হয়।

  3. অপ্টিমাইজড স্টপ লস স্টপ কৌশল, এটিআর এবং অন্যান্য সূচকগুলির সাথে মিলিত, স্টপ লস স্টপের গতিশীল ট্র্যাকিং অর্জন করতে পারে। অল্প পরিমাণে ক্ষতি এবং অকাল বন্ধের সমস্যা এড়ানো।

  4. বিভিন্ন পজিশন ধরে রাখার সময় পরীক্ষা করুন। পজিশন ধরে রাখার সময় খুব দীর্ঘ, আকস্মিক ঘটনা দ্বারা প্রভাবিত হতে পারে; পজিশন ধরে রাখার সময় খুব ছোট, লেনদেনের ব্যয় এবং স্লাইড পয়েন্টের ব্যয় বেশি। সর্বোত্তম পজিশন রাখার দিনগুলি খুঁজে বের করা, কৌশলটির লাভজনকতা বাড়িয়ে তুলতে পারে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
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/
// © TradersPostInc

//@version=5
strategy('TradersPost Example MOMO Strategy', overlay=true, default_qty_value=100, initial_capital=100000, default_qty_type=strategy.percent_of_equity, pyramiding=0)

startTime = input(defval = timestamp('01 Jan 2021 00:00 +0000'), title = 'Start Time', group = 'Date Range')
endTime = input(defval = timestamp('31 Dec 2023 23:59 +0000'), title = 'End Time', group = 'Date Range')
timeCondition = true
timeConditionEnd = timeCondition[1] and not timeCondition

fastEmaLength = input.int(defval = 8, title = 'Fast EMA Length')
slowEmaLength = input.int(defval = 21, title = 'Slow EMA Length')
sides = input.string(defval = 'Both', title = 'Sides', options = ['Long', 'Short', 'Both', 'None'])

fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)

isUptrend = fastEma >= slowEma
isDowntrend = fastEma <= slowEma
trendChanging = ta.cross(fastEma, slowEma)

ema105 = request.security(syminfo.tickerid, '30', ta.ema(close, 105)[1], barmerge.gaps_off, barmerge.lookahead_on)
ema205 = request.security(syminfo.tickerid, '30', ta.ema(close, 20)[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(ema105, linewidth=4, color=color.new(color.purple, 0), editable=true)
plot(ema205, linewidth=2, color=color.new(color.purple, 0), editable=true)

aa = plot(fastEma, linewidth=3, color=color.new(color.green, 0), editable=true)
bb = plot(slowEma, linewidth=3, color=color.new(color.red, 0), editable=true)
fill(aa, bb, color=isUptrend ? color.green : color.red, transp=90)

tradersPostBuy = trendChanging and isUptrend and timeCondition
tradersPostSell = trendChanging and isDowntrend and timeCondition

pips = syminfo.pointvalue / syminfo.mintick

percentOrPipsInput = input.string('Percent', title='Percent or Pips', options=['Percent', 'Pips'])

stopLossLongInput = input.float(defval=0, step=0.01, title='Stop Loss Long', minval=0)
stopLossShortInput = input.float(defval=0, step=0.01, title='Stop Loss Short', minval=0)

takeProfitLongInput = input.float(defval=0, step=0.01, title='Target Profit Long', minval=0)
takeProfitShortInput = input.float(defval=0, step=0.01, title='Target Profit Short', minval=0)

stopLossPriceLong = ta.valuewhen(tradersPostBuy, close, 0) * (stopLossLongInput / 100) * pips
stopLossPriceShort = ta.valuewhen(tradersPostSell, close, 0) * (stopLossShortInput / 100) * pips

takeProfitPriceLong = ta.valuewhen(tradersPostBuy, close, 0) * (takeProfitLongInput / 100) * pips
takeProfitPriceShort = ta.valuewhen(tradersPostSell, close, 0) * (takeProfitShortInput / 100) * pips

takeProfitALong = takeProfitLongInput > 0 ? takeProfitLongInput : na
takeProfitBLong = takeProfitPriceLong > 0 ? takeProfitPriceLong : na

takeProfitAShort = takeProfitShortInput > 0 ? takeProfitShortInput : na
takeProfitBShort = takeProfitPriceShort > 0 ? takeProfitPriceShort : na

stopLossALong = stopLossLongInput > 0 ? stopLossLongInput : na
stopLossBLong = stopLossPriceLong > 0 ? stopLossPriceLong : na

stopLossAShort = stopLossShortInput > 0 ? stopLossShortInput : na
stopLossBShort = stopLossPriceShort > 0 ? stopLossPriceShort : na

takeProfitLong = percentOrPipsInput == 'Pips' ? takeProfitALong : takeProfitBLong
stopLossLong = percentOrPipsInput == 'Pips' ? stopLossALong : stopLossBLong
takeProfitShort = percentOrPipsInput == 'Pips' ? takeProfitAShort : takeProfitBShort
stopLossShort = percentOrPipsInput == 'Pips' ? stopLossAShort : stopLossBShort

buyAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "buy", "price": ' + str.tostring(close) + '}'
sellAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "sell", "price": ' + str.tostring(close) + '}'

exitLongAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit", "price": ' + str.tostring(close) + '}'
exitShortAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit", "price": ' + str.tostring(close) + '}'

if (sides != "None")
    if tradersPostBuy
        strategy.entry('Long', strategy.long, when = sides != 'Short', alert_message = buyAlertMessage)
        strategy.close('Short', when = sides == "Short" and timeCondition, alert_message = exitShortAlertMessage)

    if tradersPostSell
        strategy.entry('Short', strategy.short, when = sides != 'Long', alert_message = sellAlertMessage)
        strategy.close('Long', when = sides == 'Long', alert_message = exitLongAlertMessage)

exitAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit"}'

strategy.exit('Exit Long', from_entry = "Long", profit = takeProfitLong, loss = stopLossLong, alert_message = exitAlertMessage)
strategy.exit('Exit Short', from_entry = "Short", profit = takeProfitShort, loss = stopLossShort, alert_message = exitAlertMessage)

strategy.close_all(when = timeConditionEnd)