यह रणनीति विभिन्न समय सीमाओं में गति विश्लेषण के साथ संयुक्त दैनिक हेकेन आशी कैंडलस्टिक पर आधारित है, ताकि गतिशील रूप से वर्तमान मूल्य के पीछे अंतर्निहित समर्थन निर्धारित किया जा सके और प्रवेश और निकास बिंदुओं की पहचान की जा सके।
विभिन्न समय सीमाओं में हेकेन आशी कैंडलस्टिक के बंद होने की कीमतों की गणना करें, बाद के गति विश्लेषण के आधार के रूप में।
क्रमशः दैनिक और मासिक गति उतार-चढ़ावों के औसत लें। इससे कुछ शोर बाहर निकलता है और अधिक स्थिर गति बेंचमार्क प्राप्त होते हैं।
औसत गति के उतार-चढ़ावों के आधार पर, हम वर्तमान मूल्य में वास्तव में प्रतिबिंबित बाजार समर्थन बल की गणना कर सकते हैं, अर्थात बाजार शोर को छोड़कर गतिशील गति की सीमा।
जब बंद मूल्य गति की सीमा से ऊपर टूट जाता है, तो लंबी स्थिति मासिक आधार पर शुरू की जाती है। जब कीमत सीमा से नीचे बंद हो जाती है, तो स्थिति बंद हो जाती है।
सबसे बड़ा जोखिम यह है कि गति की गणना केवल ऐतिहासिक कीमतों पर निर्भर करती है। यदि अंतर्निहित कंपनी के मौलिक तत्व या बाजार व्यवस्था में महत्वपूर्ण परिवर्तन होते हैं, तो ऐतिहासिक कीमतों की प्रतिनिधित्वशीलता कम हो जाती है, जिससे प्रवेश और निकास की पहचान में त्रुटियां होती हैं।
इसके अलावा, रणनीति मासिक और दैनिक समय सीमाओं का लाभ उठाती है। इसका मतलब है कि वास्तविक समय का प्रदर्शन सबसे अच्छा नहीं है, कठोर मूल्य परिवर्तनों पर तेजी से प्रतिक्रिया करने की क्षमता का अभाव है। इस प्रकार कीमतों में अचानक बदलाव होने पर समय पर निकास के जोखिम हैं।
हेकेन आशी मोमबत्तियों को और बढ़ाएं यानी वजन विन्यास को अनुकूलित करें।
अधिक समय सीमाओं को शामिल करें, स्थिरता बढ़ाने के लिए एक घातीय औसत स्कोरिंग तंत्र का निर्माण करें।
कंपनी के मूलभूत आंकड़ों को जोड़ने के लिए गति गणना में लाभ चेतावनी, एम एंड ए अफवाहों को शामिल करें।
मासिक प्रविष्टियों के ऊपर दिन और सप्ताह आधारित लाभ लेने और पुनः प्रवेश तंत्र जोड़ने पर विचार करें।
संक्षेप में, रणनीति समग्र रूप से बहुत स्थिर है, गति ट्रैकिंग प्रभावी रूप से जोखिमों को नियंत्रित करती है। अगला कदम उच्च आवृत्ति और अधिक सूचनात्मक डेटा को शामिल करके बाजार के अवसरों पर बेहतर लाभ उठाने के लिए आगे सुधार करना है।
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © FrancoPassuello //@version=5 strategy("Heiken Ashi ADM", overlay=true) haClose = (open + high + low + close) / 4 // prevHaOpen = line.new(na, na, na, na, width = 1) haOpen = (open[1] + close[1]) / 2 // line.set_xy1(prevHaOpen, bar_index[1], nz(haOpen[1])) // line.set_xy2(prevHaOpen, bar_index, haClose[1]) [monopen, _1monopen, _2monopen, _3monopen, _4monopen, _5monopen, _6monopen] = request.security(syminfo.tickerid, "M", [haOpen, haOpen[1], haOpen[2], haOpen[3], haOpen[4], haOpen[5], haOpen[6]] , barmerge.gaps_off, barmerge.lookahead_on) [monclose, _1monclose, _3monclose, _6monclose] = request.security(syminfo.tickerid, "M", [haClose, haClose[1], haClose[3], haClose[6]] , barmerge.gaps_off, barmerge.lookahead_on) [dayclose1, _21dayclose, _63dayclose, _126dayclose, dayclose] = request.security(syminfo.tickerid, "1D", [haClose[1], haClose[21], haClose[63], haClose[126], haClose], barmerge.gaps_off, barmerge.lookahead_on) [dayopen1, _21dayopen, _63dayopen, _126dayopen] = request.security(syminfo.tickerid, "1D", [haOpen[1], haOpen[21], haOpen[63], haOpen[126]], barmerge.gaps_off, barmerge.lookahead_on) get_rate_of_return(price1, price2) => return_ = (price1/price2 -1)*100 return_ m0 = get_rate_of_return(monclose, monopen) m1 = get_rate_of_return(_1monclose, _1monopen) m2 = get_rate_of_return(monclose, _2monopen) m3 = get_rate_of_return(_1monclose, _3monopen) m4 = get_rate_of_return(monclose, _4monopen) m5 = get_rate_of_return(monclose, _5monopen) m6 = get_rate_of_return(_1monclose, _6monopen) MS = (m1 + m3 + m6)/100 CS = (m0 + m2 + m5)/100 d1 = get_rate_of_return(dayclose1, _21dayopen) d2 = get_rate_of_return(dayclose1, _63dayopen) d3 = get_rate_of_return(dayclose1, _126dayopen) DS = (d1 + d2 + d3)/100 //Last (DAILY) lastd_s_avg1 = DS/3 lastd_Approximate1 = dayclose1*(1-lastd_s_avg1) last_approx1_d21 = lastd_Approximate1 / _21dayopen-1 last_approx1_d63 = lastd_Approximate1 / _63dayopen-1 last_approx1_d126 = lastd_Approximate1 / _126dayopen-1 lastd_s_avg2 = (last_approx1_d21 + last_approx1_d63 + last_approx1_d126) / 3 lastd_approximate2 = (dayclose1)*(1-(lastd_s_avg1 + lastd_s_avg2)) lastd_price = lastd_approximate2 //plot(lastd_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold") //Last last_s_avg1 = MS/3 last_Approximate1 = _1monclose*(1-last_s_avg1) last_approx1_m1 = last_Approximate1 / _1monopen-1 last_approx1_m3 = last_Approximate1 / _3monopen-1 last_approx1_m6 = last_Approximate1 / _6monopen-1 last_s_avg2 = (last_approx1_m1 + last_approx1_m3 + last_approx1_m6) / 3 last_approximate2 = (_1monclose)*(1-(last_s_avg1 + last_s_avg2)) last_price = last_approximate2 Scoring_price = _1monclose*(1-CS) plot(last_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold") //plot(Scoring_price,color = color.rgb(234, 0, 255, 14), title = "Last momentum threshold") //Long based on month close and being the first trade of the month. var int lastClosedMonth = -1 limit_longCondition = _1monclose > last_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth) // Long based on day close and being the first trade of the month. limit_Dlongcondition = dayclose1 > lastd_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth) // Close trade based on day close DCloseLongCondition = dayclose1<lastd_approximate2 //Old standard Trading rules longCondition = _1monclose > Scoring_price MCloseLongCondition = _1monclose<Scoring_price shortCondition = CS < 0 if (longCondition) strategy.entry("Long", strategy.long) if (strategy.position_size > 0 and MCloseLongCondition) strategy.close("Long") lastClosedMonth := month(time)