यह रणनीति चलती औसत के साथ मूल्य के क्रॉसिंग के आधार पर खरीद और बिक्री संकेत उत्पन्न करती है। यह विभिन्न प्रकार के चलती औसत और झूठे ब्रेकआउट को फ़िल्टर करने के लिए एक सहिष्णुता पैरामीटर प्रदान करती है। रणनीति का उद्देश्य प्रवृत्ति के बाद मूल्य रुझानों में मोड़ बिंदुओं को पकड़ना है।
रणनीति समापन मूल्य के आधार पर एक लंबाई N चलती औसत की गणना करती है। विशिष्ट चलती औसत प्रकारों में सरल चलती औसत (एसएमए), घातीय चलती औसत (ईएमए), भारित चलती औसत (डब्ल्यूएमए) आदि शामिल हैं। फिर एक सहिष्णुता स्तर निर्धारित किया जाता है, उदाहरण के लिए 5%, और ऊपरी बैंड (1.05 गुना चलती औसत) और निचले बैंड (0.95 गुना चलती औसत) की गणना की जाती है। जब समापन मूल्य ऊपरी बैंड से ऊपर पार करता है, तो एक खरीद संकेत उत्पन्न होता है। जब समापन मूल्य निचले बैंड से नीचे पार करता है, तो एक बिक्री संकेत उत्पन्न होता है। यह कुछ झूठे ब्रेकआउट को फ़िल्टर करने में मदद करता है। इसके अलावा, एक बुलियन पैरामीटर
कुल मिलाकर यह एक विशिष्ट प्रवृत्ति के बाद की रणनीति है। यह कुछ लचीलेपन के साथ, प्रवृत्तियों को निर्धारित करने के लिए मूल्य और चलती औसत के बीच संबंध का उपयोग करता है। पैरामीटर अनुकूलन और उचित संकेत फ़िल्टरिंग के माध्यम से, यह एक सभ्य मात्रा रणनीति बन सकती है। लेकिन अत्यधिक नुकसान से बचने के लिए शॉर्टिंग करते समय डाउनसाइड जोखिमों को नियंत्रित करना महत्वपूर्ण है।
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m 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/ // © RafaelPiccolo //@version=4 strategy("Price X MA Cross", overlay=true) typ = input("HMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"]) len = input(100, minval=1, title="Length") src = input(close, "Source", type=input.source) tol = input(0, minval=0, title="Tolerance (%)", type=input.float) shortOnly = input(false, "Short only") tema(src, len)=> ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) return = 3 * (ema1 - ema2) + ema3 getMAPoint(type, len, src)=> return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len) ma = getMAPoint(typ, len, src) upperTol = ma * (1 + tol/100) lowerTol = ma * (1 - tol/100) longCondition = crossover(close, upperTol) shortCondition = crossunder(close, lowerTol) if (shortCondition) strategy.entry("Short", strategy.short) if (longCondition) if (shortOnly) strategy.close("Short") else strategy.entry("Long", strategy.long) plot(ma, "Moving Average", close > ma ? color.green : color.red, linewidth = 2) t1 = plot(tol > 0 ? upperTol : na, transp = 70) t2 = plot(tol > 0 ? lowerTol : na, transp = 70) fill(t1, t2, color = tol > 0 ? color.blue : na)