মোমেন্টাম মুভিং এভারেজ ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2024-01-24 11:09:58 অবশেষে সংশোধন করুন: 2024-01-24 11:09:58
অনুলিপি: 0 ক্লিকের সংখ্যা: 614
1
ফোকাস
1617
অনুসারী

মোমেন্টাম মুভিং এভারেজ ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি দ্রুত EMA (৮ দিনের লাইন) এবং ধীর EMA (২১ দিনের লাইন) এর ক্রস ব্যবহার করে বাজার প্রবণতা নির্ধারণ করে। নির্দিষ্ট যুক্তি হলঃ

  1. EMA 8 এবং EMA 21 গণনা করুন
  2. যখন ৮ তারিখের ইএমএ ২১ তারিখের ইএমএ অতিক্রম করে, বাজারটি পরিবর্তিত হয় এবং একটি উত্থান শুরু হয়
  3. যখন ৮ তারিখের ইএমএ ২১ তারিখের ইএমএ অতিক্রম করে, বাজারটি পরিবর্তিত হয় এবং নিম্নমুখী প্রবণতা শুরু হয়
  4. যখন ট্রেন্ড বাড়ছে, তখন এটি একটি কেনার সংকেত দেয়; যখন ট্রেন্ড কমছে, তখন এটি একটি বিক্রির সংকেত দেয়
  5. প্রতিটি অর্ডারের ঝুঁকি পরিচালনার জন্য স্টপ লস এবং স্টপস্টপ মূল্য সেট করুন

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

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

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

  1. দ্রুত ইএমএ এবং ধীর ইএমএ ক্রস মার্কেটের প্রবণতা এবং ক্রয়-বিক্রয় পয়েন্টগুলি কার্যকরভাবে বিচার করতে পারে
  2. কৌশলগত প্যারামিটার অপ্টিমাইজ করার জন্য অনেক জায়গা রয়েছে, EMA চক্র আরও সামঞ্জস্যপূর্ণ
  3. গতির পরিমাপের সাথে মিলিত, শব্দ সংকেতগুলি কার্যকরভাবে ফিল্টার করা যায়
  4. স্টপ লস স্টপ লজিক সেট করুন, যা ঝুঁকি নিয়ন্ত্রণ করতে পারে

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

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

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

  1. অস্থিরতার সময়, EMA ক্রস-সিগন্যালগুলি ঘন ঘন হয়, যার ফলে আরও বেশি ভুল লেনদেন হয়
  2. উড়োজাহাজে ফাঁক থাকলে তা কার্যকরভাবে মোকাবেলা করা যায় না
  3. দীর্ঘমেয়াদী প্রবণতা বিবেচনা না করে

এই ঝুঁকির জন্য, আমরা নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করতে পারিঃ

  1. অন্যান্য সূচক ফিল্টার যুক্ত করুন, যেমন ব্রিন ব্যান্ড, কেডিজে ইত্যাদি, যা ভুল সংকেতের সম্ভাবনা হ্রাস করে
  2. দীর্ঘমেয়াদী প্রবণতা নির্ধারণের জন্য বৃহত্তর পর্যায়ের চক্রীয় সূচকগুলির সাথে মিলিত
  3. অপ্টিমাইজেশান প্যারামিটার, EMA দৈর্ঘ্য সমন্বয়, বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নিতে
  4. মানবিক হস্তক্ষেপের মাধ্যমে ব্যবসায়ের ফাঁক এড়ানো, যার ফলে ক্ষতির মাত্রা অতিক্রম করা যায়

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

এই কৌশলটি আরও উন্নত করার জন্য অনেক জায়গা রয়েছে, বিশেষ করে নিম্নলিখিত দিকগুলি থেকেঃ

  1. EMA চক্রের প্যারামিটারগুলিকে অপ্টিমাইজ করুন, ঐতিহাসিক তথ্যের উপর বিভিন্ন প্যারামিটারগুলির রিটার্নের পরীক্ষা করুন
  2. অন্যান্য প্রযুক্তিগত সূচক যেমন কেডিজে, এমএসিডি ইত্যাদি যুক্ত করুন, যা কৌশলগত নির্ভুলতা বাড়ায়
  3. অপ্টিমাইজড স্টপ-ড্যাম্প সেটিং, যা পরিস্থিতির জন্য আরও উপযুক্ত
  4. মেশিন লার্নিং পদ্ধতির মাধ্যমে প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করুন

এই অপ্টিমাইজেশানগুলি কৌশলগুলির স্থিতিশীলতা, অভিযোজনযোগ্যতা এবং লাভজনকতাকে ব্যাপকভাবে উন্নত করতে পারে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © TradersPostInc

//@version=5
strategy('TradersPost Example MOMO Strategy', overlay=true)

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)