दोहरी चलती औसत क्रॉसओवर ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-29 15:11:58
टैगः

img

अवलोकन

दोहरी चलती औसत क्रॉसओवर ट्रेडिंग रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो प्रवेश और निकास संकेतों को निर्धारित करने के लिए चलती औसत क्रॉसओवर का उपयोग करती है। यह रणनीति फ़िल्टरिंग की कई परतों को बनाने और अधिक विश्वसनीय व्यापार संकेतों के लिए झूठे संकेतों को कम करने के लिए विभिन्न समय सीमाओं से चलती औसत को जोड़ती है।

रणनीति तर्क

इस रणनीति का मुख्य तर्क 3 समय सीमाओं (180 मिनट, 60 मिनट, 120 मिनट) में 2 चलती औसत (10 दिन और 200 दिन) को ट्रैक करना है। जब तेज चलती औसत धीमी चलती औसत से ऊपर जाती है, तो एक स्वर्ण क्रॉसओवर उत्पन्न होता है, जो इंगित करता है कि साधन एक अपट्रेंड में है। जब तेज चलती औसत धीमी से नीचे जाती है, तो एक मौत क्रॉसओवर उत्पन्न होती है, जो एक डाउनट्रेंड को इंगित करती है।

सबसे पहले, 180 मिनट और 60 मिनट के टाइमफ्रेम के लिए 10 दिन और 200 दिन के मूविंग एवरेज की अलग से गणना की जाती है। जब 180 मिनट के टाइमफ्रेम पर 10 दिन का एमए 200 दिन के एमए से ऊपर जाता है, तो एक गोल्डन क्रॉसओवर सिग्नल उत्पन्न होता है। जब यह नीचे जाता है, तो एक डेथ क्रॉसओवर सिग्नल उत्पन्न होता है। यह फास्ट-साइकिल ट्रेडिंग सिग्नल प्रदान करता है।

इसके बाद, रणनीति 120 मिनट की समय सीमा पर 200-दिवसीय एमए को नियंत्रण चलती औसत के रूप में पेश करती है। केवल जब 180/60 मिनट के चक्रों पर क्रॉसओवर होते हैं, तो यह जांचकर कि 60-मिनट 200-दिवसीय एमए 120-मिनट 200-दिवसीय एमए से ऊपर या नीचे है, यह तय करेगा कि झूठे संकेतों को फ़िल्टर करने के लिए ट्रेडों को रखा जाना चाहिए या नहीं।

उदाहरण के लिए, जब 180 मिनट के चक्र पर एक गोल्डन क्रॉसओवर होता है, केवल यदि 60-मिनट 200-दिवसीय एमए 120-मिनट 200-दिवसीय एमए से ऊपर है, तो रणनीति लंबी होगी। लंबी स्थिति केवल इस शर्त को पूरा करने पर ही खोली जाएगी। इसके विपरीत, यदि 60-मिनट 200-दिवसीय एमए 120-मिनट से नीचे है, तो कोई लंबी स्थिति नहीं ली जाएगी।

संक्षेप में, विभिन्न समय सीमाओं में चलती औसत संबंधों की तुलना करके, यह रणनीति सिग्नल विश्वसनीयता में सुधार के लिए फ़िल्टरिंग की कई परतें बनाती है, जिससे यह फ़िल्टर-आधारित ट्रेडिंग रणनीति का एक सामान्य प्रकार बन जाता है।

लाभ

  • मल्टी टाइमफ्रेम कन्फर्मेशन के माध्यम से बेहतर सटीकता। एकल टाइमफ्रेम सिग्नल की तुलना में, 180/60/120 मिनट से एमए का उपयोग करने से झूठे सिग्नल में काफी कमी आती है और ट्रेड सिग्नल की गुणवत्ता में सुधार होता है।

  • उचित संचालन आवृत्ति. उच्च आवृत्ति रणनीतियों के विपरीत, यह रणनीति कम बार व्यापार करती है, जिससे बाजार की निरंतर निगरानी करने की आवश्यकता से बचा जाता है। मैनुअल ट्रेडिंग के लिए अधिक उपयुक्त है।

  • सरल और समझने में आसान है. जटिल तर्क के बिना केवल बुनियादी चलती औसत का उपयोग करके, इस रणनीति में प्रवेश के लिए एक कम बाधा है और शुरुआती लोगों के लिए समझना आसान है.

  • अवधि और मापदंडों के बीच अनुकूलन योग्य। उपयोग किए जाने वाले एमए प्रकार और अवधि समायोज्य हैं। विभिन्न उत्पादों और बाजार व्यवस्थाओं के लिए विभिन्न मापदंड सेट का परीक्षण किया जा सकता है।

जोखिम

  • देरी का संकेत और धीमी प्रतिक्रिया। कोर मूविंग एवरेज में डिजाइन से देरी होती है और अक्सर तेजी से रुझान उलटने पर कब्जा करने में विफल रहता है।

  • जब बाजार में सीमाएं होती हैं, तो एमए संबंध बहुत बार पार हो सकते हैं, जिससे अत्यधिक प्रविष्टियां और स्टॉप लॉस ट्रिगर होते हैं, जिससे लागत और हानि के जोखिम बढ़ जाते हैं।

  • पैरामीटर अनुकूलन से ओवरफिटिंग खतरा। अल्फा मुख्य रूप से सीमित डेटासेट के आधार पर पैरामीटर ट्यूनिंग से आता है। इससे अधिक अनुकूलन और ओवरफिटिंग समस्याएं हो सकती हैं।

समाधान:

  • तेजी से प्रतिक्रिया के लिए एमए अवधि को छोटा करें
  • बाज़ार में अस्थिरता के दौरान अत्यधिक प्रविष्टियों से बचने के लिए फ़िल्टर जोड़ें
  • विभिन्न उत्पादों और समय सीमाओं में परीक्षण की मजबूती

अनुकूलन दिशाएँ

आगे के अनुकूलन के लिए अभी भी जगह हैः

  • समय सीमा के विभिन्न संयोजनों का प्रयास करें और ब्रूट फोर्स अनुकूलन और मशीन लर्निंग तकनीकों के माध्यम से बेहतर मापदंडों को खोजने के लिए एमए अवधि को समायोजित करें।

  • अतिरिक्त संकेत पुष्टि के लिए वॉल्यूम और उच्च समय सीमा रुझान विश्लेषण शामिल करें, उदाहरण के लिए कम ट्रेडिंग वॉल्यूम के दौरान प्रविष्टियों से बचें।

  • निर्णय लेने में सहायता के लिए आरएनएन जैसे डीप लर्निंग मॉडल का उपयोग करके समय से पहले वक्र पैटर्न की भविष्यवाणी करें।

  • फ़िल्टरिंग तर्क में सुधार के लिए अनुकूलनशील चलती औसत का परिचय दें। बाजार अनिश्चितता के दौरान प्रविष्टियों को कम करने के लिए MA अवधि को गतिशील रूप से समायोजित करें।

निष्कर्ष

दोहरी चलती औसत क्रॉसओवर ट्रेडिंग रणनीति झूठे संकेतों को फ़िल्टर करने के लिए कई समय सीमाओं में चलती औसत संबंधों की तुलना करती है, जिससे संकेत विश्वसनीयता में सुधार होता है। इस प्रकार की फ़िल्टर-आधारित एल्गोरिथ्म रणनीति शुरुआती लोगों के लिए आम और लागू करने में आसान है, जबकि कई आयामों में व्यापक अनुकूलन की अनुमति भी देती है, जिससे इसे शोध और आवेदन के लायक बना दिया जाता है।


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "ALGO 3-1-2", title="ALGO 3h, 1h, 2h", overlay=true)

bool startLONGBOTandDEAL = false
bool stopLONGBOTandDEAL = false
bool openLONG = false
bool closeLONG = false
bool startSHORTBOTandDEAL = false
bool stopSHORTBOTandDEAL = false
bool openSHORT = false
bool closeSHORT = false

MA1Period = ema(close, 10)
MA2Period = ema(close, 200)
MA3Period = ema(close, 200)

MA1 = security(syminfo.tickerid, "180", MA1Period)
MA2 = security(syminfo.tickerid, "60", MA2Period)
MA3 = security(syminfo.tickerid, "120", MA3Period)

MA12Crossover = crossover(MA1, MA2)
MA12Crossunder = crossunder(MA1, MA2)
MA23Crossover = crossover(MA2, MA3)
MA23Crossunder = crossunder(MA2, MA3)

if MA23Crossover
    startLONGBOTandDEAL := true //stop shortBOT and DEAL code in the TV alert as well, probably stop first w/ a delay on startlong
    lblBull = label.new(bar_index, na, ' BULL Time Open LONG', color=color.blue, textcolor=color.black, style=label.style_label_up, size=size.small)
    label.set_y(lblBull, MA2)  
    strategy.close("go Short")
    strategy.entry("go Long", strategy.long, comment="go Long")
if MA23Crossunder
    //not sure if i should set alert for stop and start each bot, or just put start appropriate bot and stop its opposite in the same alert.
    startSHORTBOTandDEAL := true
    lblBull = label.new(bar_index, na, ' BEAR Time - Open SHORT', color=color.orange, textcolor=color.black, style=label.style_label_down, size=size.small)
    label.set_y(lblBull, MA2)
    strategy.close("go Long")
    strategy.entry("go Short", strategy.short, comment="go Short")
if MA12Crossover
    if MA2 >= MA3
        openLONG := true
        lup1 = label.new(bar_index, na, ' OPEN LONG ', color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
        strategy.entry("go Long", strategy.long, comment="go Long")
    if MA2 <= MA3
        closeSHORT := true
        lup1 = label.new(bar_index, na, ' CLOSE SHORT ', color=color.gray, textcolor=color.black, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
        strategy.close("go Short")
    
if MA12Crossunder
    if MA2 >= MA3
        closeLONG := true
        lun1 = label.new(bar_index, na, ' CLOSE LONG ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
        strategy.close("go Long")
    if MA2 <= MA3
        openSHORT := true
        lun1 = label.new(bar_index, na, ' OPEN SHORT ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
        strategy.entry("go Short", strategy.short, comment="go Short")


plot(MA1, color=color.green, linewidth=2, title="MA1")
plot(MA2, color=color.yellow, linewidth=3, title="MA2")
plot(MA3, color=color.red, linewidth=4, title="MA3")


alertcondition(startLONGBOTandDEAL, title="Start LONG BOT and DEAL", message="Start Long Bot and Deal")
alertcondition(stopLONGBOTandDEAL, title="Stop LONG BOT and DEAL", message="Stop Long Bot and Deal")
alertcondition(openLONG, title="Open LONG DEAL", message="Open Long Deal")
alertcondition(closeLONG, title="Close LONG DEAL", message="Close Long Deal")
alertcondition(stopSHORTBOTandDEAL, title="Stop SHORT BOT and DEAL", message="Stop Short Bot and Deal")
alertcondition(openSHORT, title="Open SHORT DEAL", message="Open Short Deal")
alertcondition(closeSHORT, title="Close SHORT DEAL", message="Close Short Deal")

अधिक