यह रणनीति स्टॉक के लिए लंबी और छोटी स्थिति को लागू करने के लिए सरल चलती औसत के स्वर्ण क्रॉस और मृत्यु क्रॉस सिद्धांतों का उपयोग करती है। जब तेज एमए धीमी एमए के ऊपर पार करता है, तो यह लंबा हो जाता है, और जब तेज एमए धीमी एमए के नीचे पार करता है तो यह छोटा हो जाता है।
रणनीति पहले बैकटेस्टिंग समय सीमा को परिभाषित करती है, फिर दो चलती औसत के लिए गणना मापदंडों को निर्धारित करती है, जिसमें एमए प्रकार और अवधि की लंबाई शामिल है।
getMAType))) फ़ंक्शन दो एमए के मानों की गणना करता है. fastMA छोटी अवधि का एमए है, और slowMA लंबी अवधि का एमए है.
मूल तर्कः
जब fastMA slowMA के ऊपर से गुजरता है, तो एक लंबा संकेत ट्रिगर होता है।
जब fastMA slowMA से नीचे जाता है, तो एक छोटा संकेत ट्रिगर होता है।
अंत में, बैकटेस्टिंग के दौरान, लंबे संकेत देखने पर लंबी स्थिति लें, और लघु संकेत देखने पर छोटी स्थिति लें।
जोखिमों के विरुद्ध संभावित अनुकूलन:
प्रवृत्ति की पहचान के लिए अन्य तकनीकी संकेतकों को जोड़ें।
स्टॉप लॉस को प्रति ट्रेड लॉस की राशि के लिए नियंत्रण में जोड़ें।
व्हीपसा बाजारों से बचने के लिए वॉल्यूम संकेतक जोड़ें।
स्वचालित रूप से इष्टतम पैरामीटर सेट खोजने के लिए पैरामीटर अनुकूलन तंत्र का निर्माण करें।
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
हानि को नियंत्रित करने के लिए निश्चित स्टॉप लॉस पॉइंट या ट्रेलिंग स्टॉप लॉस जैसी स्टॉप लॉस रणनीतियों को जोड़ें।
ट्रेडिंग जोखिमों को नियंत्रित करने के लिए निश्चित या गतिशील स्थिति आकार जैसी स्थिति आकार रणनीति जोड़ें।
प्रवृत्तियों की पहचान करने और जीत दर में सुधार करने के लिए अन्य तकनीकी संकेतकों के साथ संयोजन करके फ़िल्टर जोड़ें।
इष्टतम मानों को खोजने के लिए ग्रिड खोज और रैखिक प्रतिगमन जैसे तरीकों से मापदंडों का अनुकूलन करें।
प्रवेश रणनीतियों का विस्तार करें जैसे कि ब्रेकआउट पॉलबैक, व्यापारिक रणनीति को समृद्ध करने के लिए आदेशों में स्केल करें।
व्हीपसा बाजारों से बचने के लिए वॉल्यूम संकेतक जोड़ें।
शेयर सूचकांक, विदेशी मुद्रा, क्रिप्टोकरेंसी आदि के लिए उत्पादों का विस्तार करें।
यह रणनीति एमए क्रॉसओवर सिद्धांतों के आधार पर लंबी / छोटी स्टॉक चयन को लागू करती है। रणनीति विचार सरल और स्पष्ट है, व्यापक रूप से उपयोग किया जाता है, अत्यधिक अनुकूलन योग्य और व्यावहारिक रूप से मूल्यवान है। लेकिन इसमें कुछ पिछड़ने और व्हिपसा फिल्टरिंग मुद्दे भी हैं। भविष्य के अनुकूलन इसे अधिक फायदेमंद बनाने के लिए स्टॉप लॉस, पैरामीटर अनुकूलन, फिल्टर आदि जोड़ने में सुधार पर ध्यान केंद्रित कर सकते हैं।
/*backtest start: 2023-09-10 00:00:00 end: 2023-10-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2010, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// MA Params ///////////// source1 = input(title="MA Source 1", defval=close) maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"]) length1 = input(title="MA Length 1", defval=50) source2 = input(title="MA Source 2", defval=close) maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"]) length2 = input(title="MA Length 2", defval=200) ///////////// Get MA Function ///////////// getMAType(maType, sourceType, maLen) => res = sma(close, 1) if maType == "ema" res := ema(sourceType, maLen) if maType == "sma" res := sma(sourceType, maLen) if maType == "swma" res := swma(sourceType) if maType == "wma" res := wma(sourceType, maLen) res ///////////// MA ///////////// fastMA = getMAType(maType1, source1, length1) slowMA = getMAType(maType2, source2, length2) long = crossover(fastMA, slowMA) short = crossunder(fastMA, slowMA) /////////////// Plotting /////////////// checkColor() => fastMA > slowMA colCheck = checkColor() ? color.lime : color.red p1 = plot(fastMA, color = colCheck, linewidth=1) p2 = plot(slowMA, color = colCheck, linewidth=1) fill(p1, p2, color = checkColor() ? color.lime : color.red) bgcolor(long ? color.lime : short ? color.red : na, transp=20) /////////////// Execution /////////////// if testPeriod() strategy.entry("Long", strategy.long, when=long) strategy.entry("Short", strategy.short, when=short)