
यह रणनीति दो चलती औसत का उपयोग करती है, और जब एक छोटी चलती औसत नीचे से लंबी चलती औसत को तोड़ती है, तो एक खरीद संकेत उत्पन्न करती है। जब कीमत एक और चलती औसत से नीचे गिरती है, तो एक बेचने का संकेत उत्पन्न होती है। यह रणनीति ट्रेंडिंग बाजारों के लिए उपयुक्त है, जो कुछ शोर ट्रेडों को प्रभावी ढंग से फ़िल्टर करने में सक्षम है और मुख्य प्रवृत्ति को पकड़ने के लिए व्यापार करती है।
यह रणनीति उपयोगकर्ता द्वारा अनुकूलित अल्पकालिक चलती औसत अवधि, दीर्घकालिक चलती औसत अवधि, बाहर निकलने वाली चलती औसत अवधि और प्रत्येक चलती औसत की गणना के तरीके का उपयोग करती है।
एक खरीद संकेत तब उत्पन्न होता है जब अल्पकालिक चलती औसत दीर्घकालिक चलती औसत को नीचे से तोड़ता है। यह संकेत देता है कि अल्पकालिक रुझान ऊपर की ओर बढ़ रहा है और खरीदा जा सकता है।
जब समापन मूल्य एक चलती औसत से बाहर निकलता है, तो एक बेचने का संकेत होता है। यह एक प्रवृत्ति उलट है और स्थिति से बाहर निकलना चाहिए।
इसलिए इस रणनीति के लिए ट्रेडिंग सिग्नल अल्पकालिक चलती औसत और दीर्घकालिक चलती औसत के क्रॉसिंग और समापन मूल्य के संबंध से बाहर निकलने वाले चलती औसत से उत्पन्न होते हैं।
इस रणनीति के निम्नलिखित फायदे हैं:
यह आसान है और इसे लागू करना आसान है।
विभिन्न बाजार स्थितियों के लिए अनुकूलन योग्य पैरामीटर
मूविंग एवरेज के माध्यम से शोर को फ़िल्टर करें और प्रमुख रुझानों को पकड़ें।
प्रवृत्ति, समर्थन और प्रतिरोध जैसे तकनीकी संकेतकों को और अनुकूलित किया जा सकता है।
लाभ-हानि अनुपात नियंत्रण योग्य है और इसमें रोकथाम तंत्र है।
इस रणनीति के साथ निम्नलिखित जोखिम भी हैं:
यह गलत संकेतों को उत्पन्न करने के लिए एक कमजोर प्रवृत्ति वाले बाजार में है।
गलत पैरामीटर सेट करने से रुझानों को याद किया जा सकता है या बहुत अधिक अमान्य ट्रेडों का उत्पादन हो सकता है।
स्टॉप लॉस स्थिति की अनुचित सेटिंग से नुकसान बढ़ सकता है।
इस तरह की विफलता से नुकसान हो सकता है।
बाजार में बदलाव के लिए समय पर पैरामीटर को समायोजित करने की आवश्यकता होती है
जोखिम के लिए समाधान में शामिल हैंः पैरामीटर सेटिंग को अनुकूलित करना, अन्य संकेतकों के साथ फ़िल्टर सिग्नल को संयोजित करना, स्टॉप-लॉस स्थिति को समायोजित करना, प्रवृत्ति की पहचान करने के बाद भाग लेना आदि।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
ट्रेड सिग्नल के लिए ट्रेंड डिसाइड करने के लिए ट्रेडिंग मैकेनिज्म विकसित करना
ट्रेडिंग वॉल्यूम या अस्थिरता संकेतकों के साथ सिग्नल फ़िल्टर करें।
गतिशील रूप से अनुकूलित चलती औसत चक्र पैरामीटर
मोबाइल स्टॉप लॉस के लिए स्टॉप लॉस को अनुकूलित करें
समर्थन और प्रतिरोध के साथ अन्य संकेतकों के संयोजन में व्यापारिक संकेतों की और पुष्टि की जाती है।
विभिन्न किस्मों के अनुसार पैरामीटर को समायोजित करें।
यह एक सरल और व्यावहारिक ट्रेंड ट्रैकिंग रणनीति है। यह बाजार की स्थिति के अनुसार मापदंडों को समायोजित कर सकता है और प्रवृत्ति के दौरान मुख्य प्रवृत्ति की दिशा को पकड़ सकता है। लेकिन ध्यान रखें कि प्रवृत्ति के आकलन में त्रुटि जैसे जोखिमों से बचने के लिए, बाजार में बदलाव के अनुकूल होने के लिए लगातार अनुकूलन की आवश्यकता है। कुल मिलाकर, यह रणनीति अच्छी व्यावहारिकता है।
/*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()