এমএসিডি+ইএমএ মাল্টি-টাইমফ্রেম ব্রেকআউট কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৪-০৩-২২ ১১ঃ১৩ঃ১২
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি ম্যাকডি ইন্ডিকেটর এবং একাধিক ইএমএ লাইনকে দুটি সময়সীমার - সাপ্তাহিক এবং ইনট্রা ডে থেকে শক্তিশালী বাজারের প্রবণতা ক্যাপচার করার জন্য একত্রিত করে। এটি সামগ্রিক প্রবণতা দিক নির্ধারণের জন্য সাপ্তাহিক চার্টে ম্যাকডি সূচক এবং প্রবণতাটি নিশ্চিত করতে এবং ব্রেকআউট পয়েন্টগুলিতে বাণিজ্য করার জন্য ইনট্রা ডে চার্টে তিনটি ইএমএ লাইন (5 দিন, 15 দিন, 30 দিন) ব্যবহার করে। মূল ধারণাটি হ'ল শক্তিশালী প্রবণতা অনুসরণ করা এবং বড় তরঙ্গগুলিতে চড়ে, যখন স্বল্পমেয়াদী ইএমএ দীর্ঘমেয়া EMA এর উপরে ভঙ্গ করে তখন ট্রেডগুলিতে প্রবেশ করা এবং যখন ইএমএগুলি ট্রিগার করা হয় বা স্টপ-লস শর্তগুলি ট্রিগার করা হয়।

কৌশল নীতি

  1. সাপ্তাহিক এমএসিডি সামগ্রিক প্রবণতা নির্ধারণ করে: সাপ্তাহিক এমএসিডি সূচক গণনা করুন এবং বর্তমান সপ্তাহের এবং পূর্ববর্তী সপ্তাহের এমএসিডি হিস্টোগ্রাম মানগুলির মধ্যে পার্থক্য তুলনা করুন। একটি ইতিবাচক পার্থক্য একটি আপট্রেন্ড নির্দেশ করে, যখন একটি নেতিবাচক পার্থক্য একটি ডাউনট্রেন্ড নির্দেশ করে। প্রতি সোমবার বাজারের খোলা সময়ে প্রবণতা দিক আপডেট করুন।

  2. একাধিক ইএমএ লাইন প্রবণতা নিশ্চিত করেঃ 5 দিনের, 15 দিনের এবং 30 দিনের ইএমএ লাইনগুলি ইনট্রা-ডে চার্টে প্লট করুন। যখন স্বল্পমেয়াদী ইএমএ দীর্ঘমেয়াদী ইএমএ থেকে উপরে এবং দূরে চলে যায়, প্রবণতা আপ হয়; বিপরীতভাবে, প্রবণতা ডাউন হয়।

  3. ইএমএ ক্রসওভার পয়েন্টে ট্রেডিংঃ

    • লং এন্ট্রিঃ যখন সাপ্তাহিক এমএসিডি প্রবণতা উপরে থাকে এবং ইনট্রা-ডে ক্লোজ ১৫ দিনের ইএমএ এর উপরে ক্রস করে, তখন লং যান। এন্ট্রি মূল্যের নীচে একটি নির্দিষ্ট পয়েন্টে স্টপ-লস সেট করুন, অথবা ৫ দিনের ইএমএ ১৫ দিনের ইএমএ এর নীচে ক্রস করলে বেরিয়ে আসুন।
    • শর্ট এন্ট্রিঃ যখন সাপ্তাহিক এমএসিডি প্রবণতা নেমে আসে এবং ৫ দিনের ইএমএ ৩০ দিনের ইএমএ এর নিচে ক্রস করে, তখন শর্ট যান। এন্ট্রি মূল্যের উপরে একটি নির্দিষ্ট পয়েন্টে স্টপ-লস সেট করুন, অথবা ৫ দিনের ইএমএ ১৫ দিনের ইএমএ এর উপরে ক্রস করলে বেরিয়ে যান।
  4. পজিশন যোগ করা হচ্ছে: এ পর্যন্ত কোন অতিরিক্ত প্রবেশের শর্ত নির্ধারণ করা হয়নি।

সুবিধা বিশ্লেষণ

  1. দুটি সময়সীমা একত্রিত করা প্রবণতা নির্ধারণকে আরও নির্ভরযোগ্য করে তোলে। সাপ্তাহিক এমএসিডি ব্যাপ্তি-বান্ধব বাজারে আটকে থাকা এড়ায়, যখন ইনট্রা-ডে ইএমএ ক্রসওভারগুলি প্রবণতার মধ্যে প্রতিটি তরঙ্গ ক্যাপচার করে।

  2. ইনট্রা-ডে চার্টে 5/15/30 দিনের EMA এর পছন্দ কার্যকরভাবে গোলমাল ফিল্টার করে এবং স্পষ্ট প্রবণতা ধারণ করে।

  3. স্টপ-লস সেটিংস যুক্তিসঙ্গত, পৃথক ব্যবসায়ের ঝুঁকি নিয়ন্ত্রণ করে। স্থির পয়েন্ট স্টপ-লস এবং ইএমএ স্টপ-লসকে একত্রিত করা হ্রাস নিয়ন্ত্রণ এবং প্রবণতা অনুসরণ উভয়ই সক্ষম করে।

  4. এমএসিডি এবং ইএমএ গণনার মতো মূল উপাদানগুলির সাথে মডুলার কোড ডিজাইন অত্যন্ত পুনরায় ব্যবহারযোগ্য এবং প্রসারিত।

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

  1. এমএসিডি হিস্টোগ্রাম পার্থক্যের প্রান্তিকের ভুল নির্বাচন অত্যধিক আলগা বা কঠোর প্রবণতা মানদণ্ডের দিকে পরিচালিত করতে পারে, যা ভুল মূল্যায়নের কারণ হতে পারে। ব্যাকটেস্টিং এবং পরামিতি অপ্টিমাইজেশন সর্বোত্তম প্রান্তিক নির্বাচন করতে সহায়তা করতে পারে।

  2. ইনট্রা ডে ইএমএ পরামিতিগুলির ভুল নির্বাচন - খুব কম সময় ধরে খুব বেশি ট্রেডিং হতে পারে, যখন খুব বেশি সময় ধরে সুযোগগুলি মিস করতে পারে। ব্যাকটেস্টিং এবং পরামিতি অপ্টিমাইজেশন সর্বোত্তম পরামিতি সংমিশ্রণ নির্বাচন করতে সহায়তা করতে পারে।

  3. ভুল স্থির স্টপ-লস পয়েন্ট - এটি খুব সংকীর্ণ সেটিং ঘন ঘন স্টপ-আউট হতে পারে, যখন খুব প্রশস্ত প্রতি বাণিজ্যে অত্যধিক ক্ষতি হতে পারে। প্রতিটি যন্ত্রের অস্থিরতার বৈশিষ্ট্যগুলির উপর ভিত্তি করে কাস্টমাইজড স্টপ-লস সাহায্য করতে পারে।

  4. ইএমএগুলি প্রবণতা পাল্টা পয়েন্টগুলিতে পিছিয়ে থাকতে পারে, সম্ভাব্যভাবে সেরা প্রবেশ / প্রস্থান পয়েন্টগুলি মিস করতে পারে। তবে দীর্ঘমেয়াদে, এটি এখনও কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করতে পারে এবং ভাল সামগ্রিক কর্মক্ষমতা তৈরি করতে পারে।

অপ্টিমাইজেশান নির্দেশাবলী

  1. প্রবণতা শক্তি নিশ্চিত করতে এবং নির্ভুলতা উন্নত করতে সাপ্তাহিক এমএসিডি এর উপরে আরএসআই এর মতো অন্যান্য সূচক যুক্ত করার কথা বিবেচনা করুন।

  2. ট্রেডিং ফ্রিকোয়েন্সি এবং ঝুঁকি হ্রাস করার জন্য দিনের মধ্যে ইএমএ ক্রসওভার সংকেতগুলির জন্য অতিরিক্ত ফিল্টার হিসাবে সিসিআইয়ের মতো অন্যান্য সূচক যুক্ত করার বিষয়টি বিবেচনা করুন।

  3. প্রতিটি স্টক এর ঐতিহাসিক অস্থিরতার উপর ভিত্তি করে কাস্টমাইজড স্টপ-লস পয়েন্ট সেট করুন যাতে তার বৈশিষ্ট্যগুলি আরও ভালভাবে ফিট করে।

  4. মূলধন দক্ষতা বৃদ্ধির জন্য ধীরে ধীরে শক্তিশালী প্রবণতা যোগ করা এবং দুর্বল প্রবণতা হ্রাস করার জন্য পজিশনের স্কেলিং এবং আউট করার জন্য কৌশলগত নিয়ম যুক্ত করার কথা বিবেচনা করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// 1) 전주와 전전주의 히스토그램의 차이를 계산하여, 매주 월요일에 매매 방향을 표시하고, 
// 2) 5일, 15일, 30일 선을 호출하여 평행하게 그리고, 매매 방향에 따라 
// 3) 분봉기준의 이동평균선 매매전략  
// 4) 수익 실현은 미설정 해둠 


//@version=5
strategy('Last week MACD+ 15day, 30day break through, by Ho.J', overlay=true, initial_capital=30000, commission_value = 7.5, commission_type=strategy.commission.cash_per_order, slippage = 0)

// 백테스팅 기간 설정
start_time = input(timestamp("Jan 19 2024 00:00:01"), confirm = true)
end_time = input(timestamp("MAR 19 2024 23:59:59"), confirm = true)
is_in_time = true
stopLoss = input.int(100, title="손절 수준")


// 지난주 값 불러오기 입력 매개변수, 1은 5일, 3은 15일, 6은 30일 이동평균선을 구하는 변수임
emaLength1 = input(1, title="EMA Length")
emaLength2 = input(3, title="EMA Length")
emaLength3 = input(6, title="EMA Length")
timeframePeriod = "W" // 'D'는 일간 데이터를 의미


// 분봉기준 EMA 계산
shortEMA = ta.ema(close, 50)
mediumEMA = ta.ema(close, 60)
longEMA = ta.ema(close, 150)


// 분봉기준 EMA 그리기
plot(shortEMA, color=color.blue, title="5일 EMA")
plot(mediumEMA, color=color.orange, title="15일 EMA")
plot(longEMA, color=color.red, title="30일 EMA")



// 주간 MACD 계산, 전주와 전전주 히스토그램을 계산하여 상대적인 상승, 하락을 계산 
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
histogram = macdLine - signalLine
histLastWeek = request.security(syminfo.tickerid, timeframePeriod, histogram[1], lookahead=barmerge.lookahead_on)
histWeekBeforeLast = request.security(syminfo.tickerid, timeframePeriod, histogram[2], lookahead=barmerge.lookahead_on)
histDiff = histLastWeek - histWeekBeforeLast


// 현재 주의 월요일 첫 봉인지 확인
isMondayFirstBar = (dayofweek == dayofweek.monday) and (hour == 09) and (minute == 00) // 여기서 시간은 시장 개장 시간에 따라 조정해야 함


// 월요일 첫봉에, 주간 MACD 히스토그램이 상승하면 '매수', 하락하면 '매도' 표시
var label myLabel = na
if (isMondayFirstBar)
    if (histDiff > 0)
        myLabel := label.new(bar_index, high, "이번주는 매수만", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.large)
    else if (histDiff < 0)
        myLabel := label.new(bar_index, low, "이번주는 매도만", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.large)


// 지난주 EMA 값 요청
// 'lookahead'를 사용하여 지난 데이터를 기준으로 계산
lastWeekEMA1 = request.security(syminfo.tickerid, timeframePeriod, ta.ema(close[1], emaLength1), lookahead=barmerge.lookahead_on)
lastWeekEMA2 = request.security(syminfo.tickerid, timeframePeriod, ta.ema(close[1], emaLength2), lookahead=barmerge.lookahead_on)
lastWeekEMA3 = request.security(syminfo.tickerid, timeframePeriod, ta.ema(close[1], emaLength3), lookahead=barmerge.lookahead_on)

// 지난주 EMA 그리기
plot(lastWeekEMA1, color=color.red, title="Last Week EMA1")
plot(lastWeekEMA2, color=color.rgb(157, 126, 126), title="Last Week EMA2")
plot(lastWeekEMA3, color=color.rgb(199, 192, 192), title="Last Week EMA3")


// 매수/매도 조건
buySignal = ta.crossover(close, lastWeekEMA2) and histDiff > 0
// addbuySignal = ta.crossover(close, lastWeekEMA3) and histDiff > 0

sellSignal = ta.crossunder(shortEMA, longEMA) and histDiff < 0
// addSellSignal = ta.crossunder(close, lastWeekEMA3) and histDiff < 0


// 매수 조건
if (buySignal)
    strategy.entry('Buy', strategy.long)
    alert('Buy Signal', alert.freq_once_per_bar_close)
	
// if (addbuySignal)
   // strategy.entry('Buy', strategy.long)
   // alert('add Buy Signal', alert.freq_once_per_bar_close)

if (strategy.position_size > 0 and ((strategy.position_avg_price - close) >= stopLoss) or ta.crossunder(close, mediumEMA))
    strategy.close('Buy')
    alert('Close Buy Signal', alert.freq_once_per_bar_close)

// 매도 조건
if (sellSignal)
    strategy.entry('Sell', strategy.short)
    alert('Sell Signal', alert.freq_once_per_bar_close)
	
//if (addSellSignal)
   // strategy.entry('Sell', strategy.short)
   // alert('add Sell Signal', alert.freq_once_per_bar_close)

if (strategy.position_size < 0 and ((close - strategy.position_avg_price) >= stopLoss) or ta.crossover(shortEMA, mediumEMA))
    strategy.close('Sell')
    alert('Close Sell Signal', alert.freq_once_per_bar_close)

আরো