मूविंग एवरेज क्रॉसओवर रणनीति एक बहुत ही आम मात्रात्मक ट्रेडिंग रणनीति है। यह रुझानों और लाभ को निर्धारित करने के लिए मूविंग एवरेज के स्वर्ण क्रॉस और डेथ क्रॉस का उपयोग करती है। जब अल्पकालिक मूविंग एवरेज दीर्घकालिक मूविंग एवरेज से ऊपर जाता है, तो यह एक अपट्रेंड का संकेत देता है, और एक लंबी स्थिति ली जा सकती है। जब अल्पकालिक मूविंग एवरेज दीर्घकालिक मूविंग एवरेज से नीचे जाता है, तो यह एक डाउनट्रेंड का संकेत देता है, और एक छोटी स्थिति ली जा सकती है।
यह रणनीति प्रवेश और निकास बिंदुओं को निर्धारित करने के लिए चलती औसत के स्वर्ण क्रॉस और मृत्यु क्रॉस पर आधारित है। कोड दो बुलियन इनपुट मापदंडों का उपयोग करता हैupOrDown
औरlongOrShort
लम्बा या छोटा निर्धारित करने के लिए;percentInput
मूल्य परिवर्तन की सीमा प्रतिशत निर्धारित करने के लिए;closePositionDays
स्थिति रखने के लिए दिनों की संख्या निर्धारित करने के लिए।
मूल तर्क यह हैः कल के सापेक्ष आज की वृद्धि/घटाव की गणना करें। यदि यह इनपुट सीमा प्रतिशत तक पहुंचता है, तो एक ट्रेडिंग सिग्नल ट्रिगर किया जाता है। यदि यह एक लंबा संकेत है, तो जब आज की कीमत कल के सापेक्ष सीमा से अधिक बढ़ जाती है, तो लंबी हो जाती है। यदि यह एक छोटा संकेत है, जब आज की कीमत कल के सापेक्ष सीमा से अधिक घटती है, तो छोटी हो जाती है।
लंबे/लघु जाने के बाद, प्रवेश दिवस और अगले 4 दिनों को चार्ट पर रंगों से चिह्नित किया जाएगा। 4 दिनों के बाद स्थिति स्वचालित रूप से बंद हो जाएगी।
जोखिम प्रबंधन:
चलती औसत क्रॉसओवर रणनीति एक बहुत ही सरल और व्यावहारिक मात्रात्मक ट्रेडिंग रणनीति है। अल्पकालिक और दीर्घकालिक रुझानों के बीच संबंध का न्याय करके, यह परिसंपत्ति की कीमतों की प्रवृत्ति प्रकृति से लाभान्वित होती है। यह रणनीति स्पष्ट तर्क के साथ लागू करना आसान है, और कई मात्रात्मक ट्रेडिंग रणनीतियों की नींव है। हम पैरामीटर ट्यूनिंग और अनुकूलन के माध्यम से बेहतर प्रदर्शन प्राप्त कर सकते हैं। लेकिन हमें जोखिमों का प्रबंधन करने और दुरुपयोग से बचने की भी आवश्यकता है।
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Created by Leon Ross strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true, initial_capital=100000) //Inputs longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day percentInput = input(title="Percent", type=float, defval=4.5) closePositionDays = input(title="How Many Days to Close Position", defval=4) //Conditions //percentUpValue = (close / close[1]) - 1 //percentUp = percentUpValue >= (percentInput/100.0) //upConditions = percentUp //percentDownValue = 1- (close / close[1]) //percentDown = percentDownValue >= (percentInput/100.0) //downConditions = percentDown upValue = (close / close[1]) - 1 downValue = 1 - (close / close[1]) allConditions = if(upOrDown) upValue >= (percentInput/100.0) else downValue >= (percentInput/100.0) //Plots bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70) bgcolor(allConditions ? silver : na, transp=70, offset=1) bgcolor(allConditions ? silver : na, transp=70, offset=2) bgcolor(allConditions ? silver : na, transp=70, offset=3) bgcolor(allConditions ? silver : na, transp=70, offset=4) //bgcolor(downConditions == 1 ? red : na, transp=70) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4) //Entires if(longOrShort) strategy.entry(id = "Long", long = true, when = allConditions) else strategy.entry(id = "Short", long = false, when = allConditions) //Exits if (barssince(allConditions) == closePositionDays) if(longOrShort) strategy.close("Long") else strategy.close("Short")