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

लेखक:चाओझांग, दिनांकः 2023-11-06 16:38:22
टैगः

img

अवलोकन

यह रणनीति व्यापार करने के लिए चलती औसत के क्रॉसओवर सिद्धांत पर आधारित है। यह दो चलती औसत का उपयोग करता है, खरीद संकेत उत्पन्न करता है जब अल्पकालिक चलती औसत नीचे से लंबी अवधि के चलती औसत के ऊपर पार करता है। बिक्री संकेत उत्पन्न होते हैं जब कीमत किसी अन्य चलती औसत से नीचे टूट जाती है। यह रणनीति ट्रेंडिंग बाजारों के लिए उपयुक्त है, कुछ शोर ट्रेडों को प्रभावी ढंग से फ़िल्टर करने और मुख्य प्रवृत्ति को पकड़ने में सक्षम है।

रणनीति तर्क

यह रणनीति उपयोगकर्ता द्वारा अनुकूलित अल्पकालिक और दीर्घकालिक चलती औसत अवधि, बाहर निकलने वाली चलती औसत अवधि और चलती औसत गणना विधियों का उपयोग करती है।

जब अल्पकालिक चलती औसत नीचे से लंबी अवधि के चलती औसत से ऊपर पार करती है, तो एक खरीद संकेत उत्पन्न होता है। यह इंगित करता है कि अल्पकालिक प्रवृत्ति एक अपट्रेंड में बदल गई है, और हम खरीद सकते हैं।

जब बंद मूल्य बाहर निकलने वाले चलती औसत से नीचे टूट जाता है, तो एक बिक्री संकेत उत्पन्न होता है। यह एक प्रवृत्ति उलट का संकेत देता है, इसलिए हमें स्थिति से बाहर निकलना चाहिए।

इसलिए, रणनीति के व्यापार संकेत अल्पकालिक और दीर्घकालिक चलती औसत के क्रॉसओवर से आते हैं, और समापन मूल्य और निकास चलती औसत के बीच संबंध।

लाभ विश्लेषण

इस रणनीति के लाभ इस प्रकार हैंः

  1. सरल और लागू करने में आसान।

  2. अनुकूलन योग्य मापदंड विभिन्न बाजार स्थितियों के अनुरूप हैं।

  3. चलती औसत शोर को फ़िल्टर करती है और मुख्य प्रवृत्ति को पकड़ती है।

  4. आगे अनुकूलन के लिए प्रवृत्ति, समर्थन/प्रतिरोध जैसे अन्य तकनीकी संकेतकों को शामिल कर सकता है।

  5. नियंत्रित जोखिम-लाभ अनुपात, स्टॉप लॉस तंत्र है।

जोखिम विश्लेषण

जोखिम निम्नलिखित हैं:

  1. नॉन-ट्रेंडिंग समेकन बाजारों में झूठे संकेतों के लिए प्रवण।

  2. अनुचित पैरामीटर सेटिंग्स के कारण अनुपलब्ध रुझान या बहुत अधिक अमान्य ट्रेड हो सकते हैं।

  3. गलत स्टॉप लॉस प्लेसमेंट से नुकसान बढ़ सकता है।

  4. असफल भागने से नुकसान हो सकता है।

  5. बाजार के परिवर्तनों के अनुरूप मापदंडों को समय पर समायोजित करने की आवश्यकता है।

समाधानों में पैरामीटर अनुकूलित करना, अन्य फ़िल्टर शामिल करना, स्टॉप को समायोजित करना, ट्रेडिंग से पहले प्रवृत्ति की पुष्टि का इंतजार करना आदि शामिल हैं।

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

इस रणनीति को निम्न के द्वारा बेहतर किया जा सकता हैः

  1. प्रवृत्ति निर्धारण तंत्र विकसित करना और प्रवृत्ति की पुष्टि के बाद ही व्यापार करना।

  2. फ़िल्टर संकेतों के लिए वॉल्यूम या अस्थिरता जैसे फ़िल्टर जोड़ना।

  3. चलती औसत अवधि का गतिशील अनुकूलन।

  4. स्टॉप-लॉस तंत्र को अनुकूलित करना ताकि एक ट्रेलिंग स्टॉप का उपयोग किया जा सके।

  5. संकेतों की पुष्टि के लिए समर्थन/प्रतिरोध और अन्य संकेतकों को शामिल करना।

  6. विभिन्न उत्पादों और समय सीमाओं के आधार पर मापदंडों को समायोजित करना।

निष्कर्ष

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


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
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/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()


अधिक