यह रणनीति दो अलग-अलग पैरामीटर सेट के चलती औसत के क्रॉसिंग पर आधारित है, जो खरीद और बेचने के संकेत देता है। जब छोटी अवधि की चलती औसत लंबी अवधि की चलती औसत को नीचे से तोड़ती है, तो एक खरीद संकेत दिया जाता है; जब छोटी अवधि की चलती औसत लंबी अवधि की चलती औसत को ऊपर से नीचे से तोड़ती है, तो एक बेचने का संकेत दिया जाता है।
इस रणनीति को पाइन स्क्रिप्ट भाषा का उपयोग करके लिखा गया है। सबसे पहले इनपुट के माध्यम से दो चलती औसत के प्रकार, लंबाई और मूल्य स्रोत को परिभाषित किया गया है, जिन्हें क्रमशः p1 और p2 नाम दिया गया है। p1 कम अवधि के लिए औसत दर्शाता है, p2 लंबी अवधि के लिए औसत दर्शाता है।
क्रॉसओवर और क्रॉसअंडर फ़ंक्शंस के माध्यम से दो समरेखाओं के क्रॉसिंग का न्याय करें। जब p1 नीचे की ओर से p2 को तोड़ता है, तो यह एक खरीद संकेत है; जब p1 ऊपर की ओर से p2 को तोड़ता है, तो यह एक बेच संकेत है।
ट्रेडों को निष्पादित करने के लिए, रणनीति ने strategy.entry फ़ंक्शन के माध्यम से सिग्नल जारी करते समय बहु-हेड या खाली-हेड स्थिति स्थापित की। यदि ShortOnly पैरामीटर सक्षम है, तो केवल ट्रेडों ने सिग्नल बेचा।
इस रणनीति के निम्नलिखित फायदे हैं:
इस रणनीति के कुछ जोखिम भी हैं:
अमान्य संकेतों को कम करने के लिए औसत रेखा की लंबाई को समायोजित करें, फ़िल्टर शर्तों को लागू करें, आदि। बड़े शेयरों की चाल को ट्रेंड इंडिकेटर के साथ जोड़ा जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
मूल्य स्रोत के रूप में वॉल्यूम भारित औसत या विशिष्ट मूल्य को शामिल करना, क्रॉस सिग्नल की विश्वसनीयता में सुधार करना
वैलिडेशन पीरियड बढ़ाएं
एटीआर रोक के साथ, बाजार में उतार-चढ़ाव के आधार पर अधिकतम स्वीकार्य हानि
वक्र मिलान ऑप्टिमाइज़ेशन पैरामीटर का उपयोग करके इष्टतम पैरामीटर संयोजन ढूंढें
महाचक्र प्रवृत्ति के अनुरूप होने पर ही व्यापारिक संकेतों पर विचार करें
यह द्वि-समान रेखा क्रॉसिंग रणनीति समग्र रूप से समझने और लागू करने में आसान है, यह दो समान रेखाओं के क्रॉसिंग के माध्यम से ट्रेडिंग सिग्नल बनाता है, और अत्यधिक अनुकूलन योग्य है। लेकिन यह अस्थिरता की स्थिति में अधिक निष्क्रिय सिग्नल भी उत्पन्न कर सकता है। पैरामीटर अनुकूलन और नियम अनुकूलन के माध्यम से जोखिम को कम किया जा सकता है, जिसका अनुकूलन स्थान अधिक है और आगे की जांच के लायक है।
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 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/
// © RafaelPiccolo
//@version=4
strategy("Double MA Cross", overlay=true)
type1 = input("SMA", "MA Type 1", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len1 = input(10, minval=1, title="Length 1")
src1 = input(close, "Source 1", type=input.source)
type2 = input("SMA", "MA Type 2", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len2 = input(50, minval=2, title="Length 2")
src2 = input(close, "Source 2", type=input.source)
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
getPoint(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)
p1 = getPoint(type1, len1, src1)
p2 = getPoint(type2, len2, src2)
shortCondition = crossunder(p1, p2)
longCondition = crossover(p1, p2)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (longCondition)
if (shortOnly)
strategy.close("Short")
else
strategy.entry("Long", strategy.long)
plot(p1, "MA 1", p1 < p2 ? color.red : color.green)
plot(p2, "MA 2", color.blue)