ओपन-क्लोज क्रॉसओवर मूविंग एवरेज ट्रेंड फॉलोइंग रणनीति


निर्माण तिथि: 2024-01-15 14:24:27 अंत में संशोधित करें: 2024-01-15 14:24:27
कॉपी: 0 क्लिक्स: 857
1
ध्यान केंद्रित करना
1617
समर्थक

ओपन-क्लोज क्रॉसओवर मूविंग एवरेज ट्रेंड फॉलोइंग रणनीति

अवलोकन

ओपन क्लोजर क्रॉस मूविंग एवरेज ट्रेंड ट्रैकिंग रणनीति एक प्रकार की ट्रेंड ट्रैकिंग रणनीति है जो मूविंग एवरेज पर आधारित है। यह रणनीति ओपन क्लोजर और क्लोजर मूविंग एवरेज की गणना करके वर्तमान बाजार की प्रवृत्ति का आकलन करती है। जब क्लोजर मूविंग एवरेज पर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के ऊपर क्लोजर मूविंग एवरेज के नीचे क्लोजर मूविंग

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

इस रणनीति का मुख्य तर्क यह है कि वर्तमान रुझानों का निर्धारण शुरुआती और समापन कीमतों के बीच के संबंधों के आधार पर किया जाता है। शुरुआती कीमतें वर्तमान बाजार की आपूर्ति और मांग के संबंधों और व्यापारिक मनोविज्ञान को दर्शाती हैं, और समापन कीमतें उस दिन के लेनदेन के परिणामों को दर्शाती हैं। आम तौर पर, यदि समापन कीमतें शुरुआती कीमतों से अधिक हैं, तो यह दर्शाता है कि उस दिन का रुझान मजबूत है, और एक अच्छा माहौल है; यदि समापन कीमतें शुरुआती कीमतों से कम हैं, तो यह दर्शाता है कि उस दिन का रुझान कमजोर है, और हवा का माहौल भारी है।

यह रणनीति इस तर्क का उपयोग करती है, जो वर्तमान रुझानों को निर्धारित करने के लिए शुरुआती और समापन की कीमतों की एक चलती औसत की गणना करती है। विशेष रूप से, इसके निर्णय नियम इस प्रकार हैंः

  1. जब समापन मूल्य की चलती औसत में समापन मूल्य की चलती औसत के साथ अधिक होता है, तो यह दर्शाता है कि वर्तमान में बहुमुखी माहौल बढ़ रहा है, बहुमुखी में प्रवेश किया जा सकता है।

  2. जब समापन मूल्य की चलती औसत के नीचे खुलने की कीमत की चलती औसत को पार किया जाता है, तो खाली कर दिया जाता है। यह दर्शाता है कि वर्तमान में हवा का माहौल बढ़ रहा है, और खाली टिकट में प्रवेश किया जा सकता है।

  3. जब रिवर्स सिग्नल आता है, तो स्थिति को रोक दिया जाता है।

इस रणनीति में लॉकिंग के लिए स्टॉप लॉस को ट्रैक करने के लिए भी सेट किया गया है। लॉकिंग के बाद, लॉकिंग मूल्य और वर्तमान मूल्य के अंक के अंतर की वास्तविक समय में गणना की जाती है। जब कीमत सेट स्टॉप लॉस से अधिक चलती है, तो लॉकिंग के लिए स्टॉप लॉस लाइन ऊपर की ओर बढ़ जाती है।

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

श्रेष्ठता विश्लेषण

इस रणनीति के कुछ फायदे हैंः

  1. निर्णय लेने के नियम स्पष्ट और सरल│ प्रवृत्तियों को ओपनिंग और क्लोजिंग संबंधों के आधार पर निर्धारित करना आसान है, इसे समझना आसान है, और पैरामीटर को अनुकूलित करना आसान है │

  2. चलती औसत के लिए लचीला विकल्पएक दर्जन से अधिक चलती औसत विकल्प उपलब्ध हैं, जिन्हें आप इष्टतम पैरामीटर खोजने के लिए लचीले ढंग से जोड़ सकते हैं।

  3. रिज़ॉल्यूशन का उपयोग करने के लिए लचीला समायोजन│ संकेतों को अधिक संवेदनशील और समय पर बनाने के लिए, रणनीति को चार्ट की तुलना में 3-4 गुना अधिक रिज़ॉल्यूशन पर सेट किया जा सकता है│

  4. रोकथाम तंत्रएकल हानि और निकासी को प्रभावी ढंग से नियंत्रित करने के लिए एक ट्रैक स्टॉप लॉस रणनीति स्थापित की गई है।

  5. अलग-अलग अवधि के लिए अनुकूलितचलती औसत मापदंडों को समायोजित करके अस्थिरता और होल्डिंग चक्र को नियंत्रित किया जा सकता है।

  6. लचीला जोखिम-लाभ समायोजनस्टॉपलॉस और विचलन को समायोजित करके जोखिम को नियंत्रित किया जा सकता है।

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

इस रणनीति में कुछ जोखिम भी हैं, जो मुख्य रूप से निम्नलिखित पर केंद्रित हैंः

  1. रुझान में कोई बदलाव नहींइस रणनीति के लिए आउटपुट सिग्नल कीमतों के पलटाव से थोड़ा देर से हो सकता है, जिसके कारण पूंछ को बंद कर दिया जाता है। इसे उचित रूप से कम करने के लिए चलती औसत चक्र को कम किया जा सकता है।

  2. यह शहर के लिए उपयुक्त नहीं है।❚ तीव्र उतार-चढ़ाव की स्थितियों में, यह रणनीति बार-बार पोजीशन खोलेगी और प्रसंस्करण शुल्क पर बोझ डालेगी। ❚ इस समय स्टॉप लॉस पॉइंट्स को उचित रूप से ढीला किया जा सकता है, या चलती औसत चक्र को बढ़ाया जा सकता है।

  3. एकल सूचक निर्णय。 यह रणनीति केवल एक सूचक समूह पर आधारित है, जो विफलता के लिए अतिसंवेदनशील है。 अन्य सूचकांकों जैसे कि MACD को शामिल करने पर विचार किया जा सकता है, जो रणनीति तर्क को समृद्ध करता है。

  4. पैरामीटर अति-अनुकूलित│ चलती औसत और स्टॉप लॉस पैरामीटर दोनों ही अति-अनुकूलित होने के लिए आसान हैं और वास्तविक प्रदर्शन प्रतिक्रिया से कमजोर हो सकता है │ पैरामीटर चयन पर सावधानी से विचार किया जाना चाहिए │

अनुकूलन दिशा

इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः

  1. अन्य सूचकांकों का संयोजन◯ वृद्धि सूचक, उतार-चढ़ाव सूचक आदि को लागू करने का प्रयास करें, जो रणनीति तर्क को समृद्ध करता है और स्थिरता को बढ़ाता है ◯

  2. पैरामीटर समायोजन आवधिक│ बाजार के प्रकार के साथ, गतिशील रूप से चलती औसत मापदंडों को समायोजित करने के लिए, रुझान में चक्र को लंबा करने के लिए, उतार-चढ़ाव में चक्र को छोटा करने के लिए │

  3. जोखिम माप में परिवर्तनस्टॉप पॉइंट्स और विचलन को हाल के समय के वास्तविक उतार-चढ़ाव के आधार पर गतिशील रूप से समायोजित किया जा सकता है।

  4. स्टॉप लॉजिक में सुधार│ मौजूदा रोक केवल कीमत और अंक के आधार पर है, और अधिक समृद्ध रोक जैसे एटीआर को शामिल करने पर विचार किया जा सकता है │

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title = "Open Close Cross Strategy (PineScript=v4)", shorttitle = "OCC Strategy", overlay = true )

// Revision:        1
// Author:          @JayRogers
//
// Description:
//  - Strategy based around Open-Close Crossovers.
// Setup:
//  - I have generally found that setting the strategy resolution to 3-4x that of the chart you are viewing
//    tends to yield the best results, regardless of which MA option you may choose (if any)
//  - Don't aim for perfection. Just aim to get a reasonably snug fit with the O-C band, with good runs of
//    green and red.
//  - Option to either use basic open and close series data, or pick your poison with a wide array of MA types.
//  - Optional trailing stop for damage mitigation if desired (can be toggled on/off)
//  - Positions get taken automagically following a crossover - which is why it's better to set the resolution
//    of the script greater than that of your chart, so that the trades get taken sooner rather than later.
//  - If you make use of the trailing stops, be sure to take your time tweaking the values. Cutting it too fine
//    will cost you profits but keep you safer, while letting them loose could lead to more drawdown than you
//    can handle.

// === INPUTS ===
useRes = input(defval=true, title="Use Alternate Resolution? ( recommended )")
stratRes = input(defval="120", title="Set Resolution ( should not be lower than chart )", type=input.resolution)
useMA = input(defval=true, title="Use MA? ( otherwise use simple Open/Close data )")
basisType = input(defval="DEMA", title="MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA, SMMA, HullMA, LSMA, ALMA ( case sensitive )", type=input.string)
basisLen = input(defval=14, title="MA Period", minval=1)
offsetSigma = input(defval=6, title="Offset for LSMA / Sigma for ALMA", minval=0)
offsetALMA = input(defval=0.85, title="Offset for ALMA", minval=0, step=0.01)
useStop = input(defval=true, title="Use Trailing Stop?")
slPoints = input(defval=200, title="Stop Loss Trail Points", minval=1)
slOffset = input(defval=400, title="Stop Loss Trail Offset", minval=1)
// === /INPUTS ===

// === BASE FUNCTIONS ===
// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len, offSig, offALMA) =>
    v1 = sma(src, len)  // Simple
    v2 = ema(src, len)  // Exponential
    v3 = 2 * v2 - ema(v2, len)  // Double Exponential
    v4 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)  // Triple Exponential
    v5 = wma(src, len)  // Weighted
    v6 = vwma(src, len)  // Volume Weighted
    sma_1 = sma(src, len)  // Smoothed
    v7 = na(v5[1]) ? sma_1 : (v5[1] * (len - 1) + src) / len
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))  // Hull
    v9 = linreg(src, len, offSig)  // Least Squares
    v10 = alma(src, len, offALMA, offSig)  // Arnaud Legoux
    type == "EMA" ? v2 : type == "DEMA" ? v3 : type == "TEMA" ? v4 : 
       type == "WMA" ? v5 : type == "VWMA" ? v6 : type == "SMMA" ? v7 : 
       type == "HullMA" ? v8 : type == "LSMA" ? v9 : type == "ALMA" ? v10 : v1
// security wrapper for repeat calls
reso(exp, use, res) =>
    security_1 = security(syminfo.tickerid, res, exp)
    use ? security_1 : exp
// === /BASE FUNCTIONS ===

// === SERIES SETUP ===
// open/close
variant__1 = variant(basisType, close, basisLen, offsetSigma, offsetALMA)
reso__1 = reso(variant__1, useRes, stratRes)
reso__2 = reso(close, useRes, stratRes)
closeSeries = useMA ? reso__1 : reso__2
variant__2 = variant(basisType, open, basisLen, offsetSigma, offsetALMA)
reso__3 = reso(variant__2, useRes, stratRes)
reso__4 = reso(open, useRes, stratRes)
openSeries = useMA ? reso__3 : reso__4
trendState = bool(na)
trendState := closeSeries > openSeries ? true : 
   closeSeries < openSeries ? false : trendState[1]
// === /SERIES ===

// === PLOTTING ===
barcolor(color=closeSeries > openSeries ? #006600 : #990000, title="Bar Colours")
// channel outline
closePlot = plot(closeSeries, title="Close Line", color=#009900, linewidth=2, style=plot.style_line, transp=90)
openPlot = plot(openSeries, title="Open Line", color=#CC0000, linewidth=2, style=plot.style_line, transp=90)
// channel fill
closePlotU = plot(trendState ? closeSeries : na, transp=100, editable=false)
openPlotU = plot(trendState ? openSeries : na, transp=100, editable=false)
closePlotD = plot(trendState ? na : closeSeries, transp=100, editable=false)
openPlotD = plot(trendState ? na : openSeries, transp=100, editable=false)
fill(openPlotU, closePlotU, title="Up Trend Fill", color=#009900, transp=40)
fill(openPlotD, closePlotD, title="Down Trend Fill", color=#CC0000, transp=40)
// === /PLOTTING ===

// === STRATEGY ===
// conditions
longCond = crossover(closeSeries, openSeries)
shortCond = crossunder(closeSeries, openSeries)
// entries and base exit
strategy.entry("long", strategy.long, when=longCond)
strategy.entry("short", strategy.short, when=shortCond)
// if we're using the trailing stop
if useStop
    strategy.exit("XL", from_entry="long", trail_points=slPoints, trail_offset=slOffset)
    strategy.exit("XS", from_entry="short", trail_points=slPoints, trail_offset=slOffset)
// not sure needed, but just incase..
strategy.exit("XL", from_entry="long", when=shortCond)
strategy.exit("XS", from_entry="short", when=longCond)
// === /STRATEGY ===