एमएसीडी+ईएमए बहु-समय-सीमा ब्रेकआउट रणनीति

लेखक:चाओझांग, दिनांक: 2024-03-22 11:13:12
टैगः

img

अवलोकन

यह रणनीति दो समय सीमाओं से मजबूत बाजार के रुझानों को पकड़ने के लिए एमएसीडी संकेतक और कई ईएमए लाइनों को जोड़ती है - साप्ताहिक और इंट्राडे। यह समग्र प्रवृत्ति दिशा निर्धारित करने के लिए साप्ताहिक चार्ट पर एमएसीडी संकेतक का उपयोग करता है, और प्रवृत्ति की पुष्टि करने और ब्रेकआउट बिंदुओं पर ट्रेड करने के लिए इंट्राडे चार्ट पर तीन ईएमए लाइनें (5 दिन, 15 दिन, 30 दिन) । मुख्य विचार मजबूत रुझानों का पालन करना और बड़ी लहरों पर सवारी करना है, जब अल्पकालिक ईएमए दीर्घकालिक ईएमए से ऊपर टूट जाता है, तो ट्रेडों में प्रवेश करना और ईएमए वापस खींचने या स्टॉप-लॉस स्थितियों को ट्रिगर करते समय बाहर निकलना।

रणनीतिक सिद्धांत

  1. साप्ताहिक एमएसीडी समग्र प्रवृत्ति निर्धारित करता हैः साप्ताहिक एमएसीडी संकेतक की गणना करें और वर्तमान सप्ताह और पिछले सप्ताह के एमएसीडी हिस्टोग्राम मूल्यों के बीच अंतर की तुलना करें। एक सकारात्मक अंतर एक अपट्रेंड को इंगित करता है, जबकि एक नकारात्मक अंतर एक डाउनट्रेंड को इंगित करता है। बाजार खुले समय पर हर सोमवार प्रवृत्ति की दिशा को अपडेट करें।

  2. कई ईएमए लाइनें प्रवृत्ति की पुष्टि करती हैंः इंट्राडे चार्ट पर 5-दिवसीय, 15-दिवसीय और 30-दिवसीय ईएमए लाइनों को प्लॉट करें। जब अल्पकालिक ईएमए दीर्घकालिक ईएमए से ऊपर और दूर चलता है, तो प्रवृत्ति ऊपर है; इसके विपरीत, प्रवृत्ति नीचे है।

  3. ईएमए क्रॉस-पॉइंट पर व्यापारः

    • लॉन्ग एंट्रीः जब साप्ताहिक एमएसीडी ट्रेंड ऊपर होता है और इंट्राडे क्लोजर 15 दिन के ईएमए से ऊपर होता है, तो लॉन्ग करें। प्रवेश मूल्य से नीचे एक निश्चित बिंदु पर स्टॉप-लॉस सेट करें, या जब 5-दिवसीय ईएमए 15 दिन के ईएमए से नीचे जाता है तो बाहर निकलें।
    • शॉर्ट एंट्रीः जब साप्ताहिक एमएसीडी ट्रेंड नीचे है और 5-दिवसीय ईएमए 30-दिवसीय ईएमए से नीचे जाता है, तो शॉर्ट जाएं। प्रवेश मूल्य के ऊपर एक निश्चित बिंदु पर स्टॉप-लॉस सेट करें, या जब 5-दिवसीय ईएमए 15-दिवसीय ईएमए से ऊपर जाता है तो बाहर निकलें।
  4. पदों को जोड़ना: अभी के लिए कोई अतिरिक्त प्रवेश शर्तें निर्धारित नहीं की गई हैं।

लाभ विश्लेषण

  1. दो समय सीमाओं को जोड़ने से प्रवृत्ति निर्धारण अधिक विश्वसनीय हो जाता है। साप्ताहिक एमएसीडी रेंज-बाउंड बाजारों में फंसने से बचता है, जबकि इंट्राडे ईएमए क्रॉसओवर प्रवृत्ति के भीतर प्रत्येक लहर को कैप्चर करते हैं।

  2. इंट्राडे चार्ट पर 5/15/30-दिवसीय ईएमए की पसंद प्रभावी रूप से शोर को फ़िल्टर करती है और स्पष्ट रुझानों को पकड़ती है।

  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)

अधिक